def do_09fd(self, data_io):
		#倉庫に預ける
		item_iid = io_unpack_int(data_io)
		item_count = io_unpack_short(data_io)
		general.log("[ map ] store item to warehouse", item_iid, item_count)
		with self.pc.lock:
			if len(self.pc.warehouse) >= env.MAX_WAREHOURSE_STOCK:
				#倉庫に預けた時の結果 倉庫のアイテム数が上限を超えてしまうためキャンセルされました
				self.send("09fe", -4)
				return
			if self.pc.warehouse_open is None:
				#倉庫に預けた時の結果 #倉庫を開けていません
				self.send("09fe", -1)
				return
			if item_iid not in self.pc.item:
				#倉庫に預けた時の結果 #指定されたアイテムは存在しません
				self.send("09fe", -2)
				return
			item = self.pc.item[item_iid]
			if item.count < item_count:
				#倉庫に預けた時の結果 #指定された数量が不正です
				self.send("09fe", -3)
			elif item.count == item_count:
				self.pc.item_pop(item_iid)
			else:
				item.count -= item_count
				self.send("09cf", item, item_iid) #アイテム個数変化
				script.msg(self.pc, "%sを%s個失いました"%(item.name, item_count))
			item_store = general.copy(item)
			item_store.count = item_count
			item_store.warehouse = self.pc.warehouse_open
			self.pc.warehouse_append(item_store)
			#倉庫に預けた時の結果 #成功
			self.send("09fe", 0)
		self.pc.update_item_status()
Example #2
0
 def do_09fd(self, data_io):
     #倉庫に預ける
     item_iid = io_unpack_int(data_io)
     item_count = io_unpack_short(data_io)
     general.log("[ map ] store item to warehouse", item_iid, item_count)
     with self.pc.lock:
         if len(self.pc.warehouse) >= env.MAX_WAREHOURSE_STOCK:
             #倉庫に預けた時の結果 倉庫のアイテム数が上限を超えてしまうためキャンセルされました
             self.send("09fe", -4)
             return
         if self.pc.warehouse_open is None:
             #倉庫に預けた時の結果 #倉庫を開けていません
             self.send("09fe", -1)
             return
         if item_iid not in self.pc.item:
             #倉庫に預けた時の結果 #指定されたアイテムは存在しません
             self.send("09fe", -2)
             return
         item = self.pc.item[item_iid]
         if item.count < item_count:
             #倉庫に預けた時の結果 #指定された数量が不正です
             self.send("09fe", -3)
         elif item.count == item_count:
             self.pc.item_pop(item_iid)
         else:
             item.count -= item_count
             self.send("09cf", item, item_iid)  #アイテム個数変化
             script.msg(self.pc, "%sを%s個失いました" % (item.name, item_count))
         item_store = general.copy(item)
         item_store.count = item_count
         item_store.warehouse = self.pc.warehouse_open
         self.pc.warehouse_append(item_store)
         #倉庫に預けた時の結果 #成功
         self.send("09fe", 0)
     self.pc.update_item_status()
Example #3
0
 def do_07e4(self, data_io):
     #pick up item request
     mapitem_id = io_unpack_int(data_io)
     general.log("[ map ] pick up item: mapitem_id", mapitem_id)
     if len(self.pc.item) >= env.MAX_ITEM_STOCK:
         script.msg(self.pc, "pick up item error: stock limit")
         return
     with self.pc.lock:
         if self.pc.trade:
             #pick up item error, トレード中はアイテムを拾うことが出来ません
             self.send("07e6", -8)
             return
         if self.pc.event_id:
             #pick up item error, イベント中はアイテムを拾うことが出来ません
             self.send("07e6", -9)
             return
         mapitem_obj = self.pc.map_obj.mapitem_pop(mapitem_id)
         if not mapitem_obj:
             #pick up item error, 存在しないアイテムです
             self.send("07e6", -1)
             return
         self.send_map("07df", mapitem_obj)  #pick up item
         item = mapitem_obj.item
         if item.stock:
             script.item(self.pc, item.item_id, item.count)
         else:
             self.pc.item_append(mapitem_obj.item)
     self.pc.update_item_status()
	def do_07e4(self, data_io):
		#pick up item request
		mapitem_id = io_unpack_int(data_io)
		general.log("[ map ] pick up item: mapitem_id", mapitem_id)
		if len(self.pc.item) >= env.MAX_ITEM_STOCK:
			script.msg(self.pc, "pick up item error: stock limit")
			return
		with self.pc.lock:
			if self.pc.trade:
				#pick up item error, トレード中はアイテムを拾うことが出来ません
				self.send("07e6", -8)
				return
			if self.pc.event_id:
				#pick up item error, イベント中はアイテムを拾うことが出来ません
				self.send("07e6", -9)
				return
			mapitem_obj = self.pc.map_obj.mapitem_pop(mapitem_id)
			if not mapitem_obj:
				#pick up item error, 存在しないアイテムです
				self.send("07e6", -1)
				return
			self.send_map("07df", mapitem_obj) #pick up item
			item = mapitem_obj.item
			if item.stock:
				script.item(self.pc, item.item_id, item.count)
			else:
				self.pc.item_append(mapitem_obj.item)
		self.pc.update_item_status()
Example #5
0
def main(pc):
	usermap_obj = usermaps.get_usermap_from_map_id(pc.map_obj.map_id)
	if not usermap_obj:
		script.msg(pc, "rope error: usermap id %s not exist"%pc.map_obj.map_id)
		return
	general.log(usermap_obj.master, pc)
	if usermap_obj.master == pc:
		master_event(pc, usermap_obj)
	else:
		guest_event(pc, usermap_obj)
Example #6
0
def main(pc):
    usermap_obj = usermaps.get_usermap_from_map_id(pc.event_id)
    if not usermap_obj:
        script.msg(pc, "rope error: usermap id %s not exist" % pc.event_id)
        return
    general.log(usermap_obj.master, pc)
    if usermap_obj.master == pc:
        master_event(pc)
    else:
        guest_event(pc)
Example #7
0
 def warehouse_pop(self, iid):
     with self.lock:
         try:
             item = self.warehouse.pop(iid)
             self.sort.warehouse.remove(iid)
         except KeyError:
             general.log_error(traceback.format_exc())
             return None
         if self.online:
             script.msg(self, "%sを%s個取り出しました" % (item.name, item.count))
     return item
Example #8
0
	def warehouse_pop(self, iid):
		with self.lock:
			try:
				item = self.warehouse.pop(iid)
				self.sort.warehouse.remove(iid)
			except KeyError:
				general.log_error(traceback.format_exc())
				return None
			if self.online:
				script.msg(self, "%sを%s個取り出しました"%(item.name, item.count))
		return item
Example #9
0
 def warehouse_append(self, item):
     if len(self.warehouse) >= env.MAX_WAREHOURSE_STOCK:
         script.msg(self, "warehouse_append error: stock limit")
         return item
     with self.lock:
         item_iid = general.make_id(self.sort.item + self.sort.warehouse)
         self.warehouse[item_iid] = item
         self.sort.warehouse.append(item_iid)
         if self.online:
             #倉庫インベントリーデータ
             self.map_send("09f9", item, item_iid, 30)
             script.msg(self, "%sを%s個預りました" % (item.name, item.count))
Example #10
0
	def warehouse_append(self, item):
		if len(self.warehouse) >= env.MAX_WAREHOURSE_STOCK:
			script.msg(self, "warehouse_append error: stock limit")
			return item
		with self.lock:
			item_iid = general.make_id(self.sort.item+self.sort.warehouse)
			self.warehouse[item_iid] = item
			self.sort.warehouse.append(item_iid)
			if self.online:
				#倉庫インベントリーデータ
				self.map_send("09f9", item, item_iid, 30)
				script.msg(self, "%sを%s個預りました"%(item.name, item.count))
Example #11
0
 def item_append(self, item, place=0x02):
     if len(self.item) >= env.MAX_ITEM_STOCK:
         script.msg(self, "item_append error: stock limit")
         return item
     #0x02: body
     with self.lock:
         item_iid = general.make_id(self.sort.item + self.sort.warehouse)
         self.item[item_iid] = item
         self.sort.item.append(item_iid)
         if self.online:
             #アイテム取得
             self.map_send("09d4", item, item_iid, place)
             script.msg(self, "%sを%s個入手しました" % (item.name, item.count))
Example #12
0
 def item_pop(self, iid):
     with self.lock:
         try:
             item = self.item.pop(iid)
             self.sort.item.remove(iid)
         except KeyError:
             general.log_error(traceback.format_exc())
             return None
         if self.online:
             #インベントリからアイテム消去
             self.map_send("09ce", iid)
             script.msg(self, "%sを%s個失いました" % (item.name, item.count))
     return item
Example #13
0
	def item_pop(self, iid):
		with self.lock:
			try:
				item = self.item.pop(iid)
				self.sort.item.remove(iid)
			except KeyError:
				general.log_error(traceback.format_exc())
				return None
			if self.online:
				#インベントリからアイテム消去
				self.map_send("09ce", iid)
				script.msg(self, "%sを%s個失いました"%(item.name, item.count))
		return item
Example #14
0
	def item_append(self, item, place=0x02):
		if len(self.item) >= env.MAX_ITEM_STOCK:
			script.msg(self, "item_append error: stock limit")
			return item
		#0x02: body
		with self.lock:
			item_iid = general.make_id(self.sort.item+self.sort.warehouse)
			self.item[item_iid] = item
			self.sort.item.append(item_iid)
			if self.online:
				#アイテム取得
				self.map_send("09d4", item, item_iid, place)
				script.msg(self, "%sを%s個入手しました"%(item.name, item.count))
Example #15
0
def use(pc, target_id, x, y, skill_id, skill_lv):
	general.log("[skill] use skill (%s, %s) -> (%s, %s, %s)"%(
		skill_id, skill_lv, target_id, x, y,
	))
	mod = name_map.get(str(skill_id))
	if mod is None:
		skill_obj = db.skill.get(skill_id)
		skill_name = skill_obj.name if skill_obj else "unknow"
		script.msg(pc, "skill %s %s not define"%(skill_id, skill_name))
		#スキル使用 #スキルを使用できません
		pc.map_send("1389", pc, -1, x, y, skill_id, skill_lv, 13, -1)
		#スキル使用通知 #スキルを使用できません
		pc.map_send("138a", pc, 13)
		return
	general.start_thread(use_thread, (mod, pc, target_id, x, y, skill_id, skill_lv))
	return True
Example #16
0
def use(pc, target_id, x, y, skill_id, skill_lv):
    general.log("[skill] use skill (%s, %s) -> (%s, %s, %s)" % (
        skill_id,
        skill_lv,
        target_id,
        x,
        y,
    ))
    mod = name_map.get(str(skill_id))
    if mod is None:
        skill_obj = db.skill.get(skill_id)
        skill_name = skill_obj.name if skill_obj else "unknow"
        script.msg(pc, "skill %s %s not define" % (skill_id, skill_name))
        #スキル使用 #スキルを使用できません
        pc.map_send("1389", pc, -1, x, y, skill_id, skill_lv, 13, -1)
        #スキル使用通知 #スキルを使用できません
        pc.map_send("138a", pc, 13)
        return
    general.start_thread(use_thread,
                         (mod, pc, target_id, x, y, skill_id, skill_lv))
    return True
Example #17
0
 def do_0614(self, data_io):
     #NPCショップのアイテム購入
     general.log("[ map ] npcshop")
     with self.pc.lock:
         if self.pc.shop_open is None:
             general.log_error("do_0614: shop_open is None")
             return
         if hasattr(self.pc.shop_open, "__iter__"):
             shop_item_list = self.pc.shop_open
         else:
             shop = db.shop.get(self.pc.shop_open)
             if not shop:
                 general.log_error("do_0614 error: shop_id not exist",
                                   self.pc.shop_open)
                 return
             shop_item_list = shop.item
     item_id_list = io_unpack_array(io_unpack_int, data_io)
     item_count_list = io_unpack_array(io_unpack_int, data_io)
     item_buy_list = zip(item_id_list, item_count_list)
     general.log("[ map ] item_buy_list", item_buy_list)
     if len(self.pc.item) + len(item_buy_list) > env.MAX_ITEM_STOCK:
         script.msg(self.pc, "npcshop buy error: stock limit")
         return
     for item_id, item_count in item_buy_list:
         if not item_count:
             general.log_error("do_0614 error: item_count is 0", item_count)
             continue
         if item_id not in shop_item_list:
             general.log_error(
                 "do_0614 error: item_id not in shop_item_list", item_id,
                 shop_item_list)
             continue
         item = db.item.get(item_id)
         if not item:
             general.log_error("do_0614 error: item_id not exist", item_id)
             continue
         if script.takegold(self.pc,
                            (int(item.price / 10.0) or 1) * item_count):
             script.item(self.pc, item_id, item_count)
     self.pc.update_item_status()
Example #18
0
 def set_trade_return(self):
     #move item and gold to trade_return_list and trade_return_gold
     #must check_trade_list before
     with self.lock and self.user.lock:
         if not self.online:
             return
         general.log("[ pc  ] set_trade_return")
         script.takegold(self, self.trade_gold)
         self.trade_return_gold = self.trade_gold
         for iid, count in self.trade_list:
             item = self.item.get(iid)
             if item.count > count:
                 item.count -= count
                 item_return = general.copy(item)
                 item_return.count = count
                 self.trade_return_list.append(item_return)
                 #self.map_send("09cf", item, iid) #アイテム個数変化
                 script.msg(self, "%sを%s個失いました" % (item.name, count))
             else:
                 item_return = self.item_pop(iid)
                 item_return.count = count
                 self.trade_return_list.append(item_return)
Example #19
0
	def set_trade_return(self):
		#move item and gold to trade_return_list and trade_return_gold
		#must check_trade_list before
		with self.lock and self.user.lock:
			if not self.online:
				return
			general.log("[ pc  ] set_trade_return")
			script.takegold(self, self.trade_gold)
			self.trade_return_gold = self.trade_gold
			for iid, count in self.trade_list:
				item = self.item.get(iid)
				if item.count > count:
					item.count -= count
					item_return = general.copy(item)
					item_return.count = count
					self.trade_return_list.append(item_return)
					#self.map_send("09cf", item, iid) #アイテム個数変化
					script.msg(self, "%sを%s個失いました"%(item.name, count))
				else:
					item_return = self.item_pop(iid)
					item_return.count = count
					self.trade_return_list.append(item_return)
	def do_0614(self, data_io):
		#NPCショップのアイテム購入
		general.log("[ map ] npcshop")
		with self.pc.lock:
			if self.pc.shop_open is None:
				general.log_error("do_0614: shop_open is None")
				return
			if hasattr(self.pc.shop_open, "__iter__"):
				shop_item_list = self.pc.shop_open
			else:
				shop = db.shop.get(self.pc.shop_open)
				if not shop:
					general.log_error(
						"do_0614 error: shop_id not exist", self.pc.shop_open)
					return
				shop_item_list = shop.item
		item_id_list = io_unpack_array(io_unpack_int, data_io)
		item_count_list = io_unpack_array(io_unpack_int, data_io)
		item_buy_list = zip(item_id_list, item_count_list)
		general.log("[ map ] item_buy_list", item_buy_list)
		if len(self.pc.item)+len(item_buy_list) > env.MAX_ITEM_STOCK:
			script.msg(self.pc, "npcshop buy error: stock limit")
			return
		for item_id, item_count in item_buy_list:
			if not item_count:
				general.log_error("do_0614 error: item_count is 0", item_count)
				continue
			if item_id not in shop_item_list:
				general.log_error("do_0614 error: item_id not in shop_item_list", 
					item_id, shop_item_list)
				continue
			item = db.item.get(item_id)
			if not item:
				general.log_error("do_0614 error: item_id not exist", item_id)
				continue
			if script.takegold(self.pc, (int(item.price/10.0) or 1)*item_count):
				script.item(self.pc, item_id, item_count)
		self.pc.update_item_status()
Example #21
0
 def do_09fb(self, data_io):
     #倉庫から取り出す
     if len(self.pc.item) >= env.MAX_ITEM_STOCK:
         #倉庫から取り出した時の結果 #キャラのアイテム数が100個を超えてしまうためキャンセルされました
         self.send("09fc", -5)
         return
     item_iid = io_unpack_int(data_io)
     item_count = io_unpack_short(data_io)
     general.log("[ map ] take item from warehouse", item_iid, item_count)
     with self.pc.lock:
         if self.pc.warehouse_open is None:
             #倉庫から取り出した時の結果 #倉庫を開けていません
             self.send("09fc", -1)
             return
         if item_iid not in self.pc.warehouse:
             #倉庫から取り出した時の結果 #指定されたアイテムは存在しません
             self.send("09fc", -2)
             return
         item = self.pc.warehouse[item_iid]
         if item.count < item_count:
             #倉庫から取り出した時の結果 #指定された数量が不正です
             self.send("09fc", -3)
             return
         elif item.count == item_count:
             self.pc.warehouse_pop(item_iid)
         else:
             item.count -= item_count
             script.msg(self.pc, "%sを%s個取り出しました" % (item.name, item_count))
         if item.stock:
             script.item(self.pc, item.item_id, item_count)
         else:
             item_take = general.copy(item)
             item_take.count = item_count
             item_take.warehouse = 0
             self.pc.item_append(item_take)
         #倉庫から取り出した時の結果 #成功
         self.send("09fc", 0)
     self.pc.update_item_status()
	def do_09fb(self, data_io):
		#倉庫から取り出す
		if len(self.pc.item) >= env.MAX_ITEM_STOCK:
			#倉庫から取り出した時の結果 #キャラのアイテム数が100個を超えてしまうためキャンセルされました
			self.send("09fc", -5)
			return
		item_iid = io_unpack_int(data_io)
		item_count = io_unpack_short(data_io)
		general.log("[ map ] take item from warehouse", item_iid, item_count)
		with self.pc.lock:
			if self.pc.warehouse_open is None:
				#倉庫から取り出した時の結果 #倉庫を開けていません
				self.send("09fc", -1)
				return
			if item_iid not in self.pc.warehouse:
				#倉庫から取り出した時の結果 #指定されたアイテムは存在しません
				self.send("09fc", -2)
				return
			item = self.pc.warehouse[item_iid]
			if item.count < item_count:
				#倉庫から取り出した時の結果 #指定された数量が不正です
				self.send("09fc", -3)
				return
			elif item.count == item_count:
				self.pc.warehouse_pop(item_iid)
			else:
				item.count -= item_count
				script.msg(self.pc, "%sを%s個取り出しました"%(item.name, item_count))
			if item.stock:
				script.item(self.pc, item.item_id, item_count)
			else:
				item_take = general.copy(item)
				item_take.count = item_count
				item_take.warehouse = 0
				self.pc.item_append(item_take)
			#倉庫から取り出した時の結果 #成功
			self.send("09fc", 0)
		self.pc.update_item_status()
Example #23
0
 def do_0616(self, data_io):
     #ショップで売却
     general.log("[ map ] npcsell")
     with self.pc.lock:
         if self.pc.shop_open != 65535:
             general.log_error("do_0616: shop_open != 65535",
                               self.pc.shop_open)
             return
     item_iid_list = io_unpack_array(io_unpack_int, data_io)
     item_count_list = io_unpack_array(io_unpack_int, data_io)
     item_sell_list = zip(item_iid_list, item_count_list)
     general.log("[ map ] item_sell_list", item_sell_list)
     with self.pc.lock:
         for item_iid, item_count in item_sell_list:
             if not item_count:
                 general.log_error("do_0616: not item_count", item_count)
                 continue
             if self.pc.in_equip(item_iid):
                 general.log_error("do_0616: in_equip(item_iid)", item_iid)
                 continue
             item = self.pc.item.get(item_iid)
             if not item:
                 general.log_error("do_0616: not item", item_iid)
                 continue
             if item.count < item_count:
                 general.log_error("do_0616: item.count < item_count")
                 continue
             if script.gold(self.pc,
                            (int(item.price / 100.0) or 1) * item_count):
                 if item.count <= item_count:
                     self.pc.item_pop(item_iid)
                 else:
                     item.count -= item_count
                     script.msg(self.pc,
                                "%sを%s個失いました" % (item.name, item_count))
                     self.send("09cf", item, item_iid)  #アイテム個数変化
     self.pc.update_item_status()
	def do_0616(self, data_io):
		#ショップで売却
		general.log("[ map ] npcsell")
		with self.pc.lock:
			if self.pc.shop_open != 65535:
				general.log_error("do_0616: shop_open != 65535", self.pc.shop_open)
				return
		item_iid_list = io_unpack_array(io_unpack_int, data_io)
		item_count_list = io_unpack_array(io_unpack_int, data_io)
		item_sell_list = zip(item_iid_list, item_count_list)
		general.log("[ map ] item_sell_list", item_sell_list)
		with self.pc.lock:
			for item_iid, item_count in item_sell_list:
				if not item_count:
					general.log_error("do_0616: not item_count", item_count)
					continue
				if self.pc.in_equip(item_iid):
					general.log_error("do_0616: in_equip(item_iid)", item_iid)
					continue
				item = self.pc.item.get(item_iid)
				if not item:
					general.log_error("do_0616: not item", item_iid)
					continue
				if item.count < item_count:
					general.log_error("do_0616: item.count < item_count")
					continue
				if script.gold(self.pc, (int(item.price/100.0) or 1)*item_count):
					if item.count <= item_count:
						self.pc.item_pop(item_iid)
					else:
						item.count -= item_count
						script.msg(self.pc, "%sを%s個失いました"%(
							item.name, item_count
						))
						self.send("09cf", item, item_iid) #アイテム個数変化
		self.pc.update_item_status()
Example #25
0
def main(pc):
	nekomata_info = ITEM_EVENT_ID[pc.item_event_id]
	if not pc.pet:
		script.msg(pc, "error: not pet")
		return
	with pc.lock and pc.pet.lock:
		pet_item = pc.item.get(pc.equip.pet)
		if not pet_item:
			script.msg(pc, "error: not pet equip")
			return
		if pet_item.pet_id != nekomata_info[0]:
			script.msg(pc, "error: pet id != %s"%nekomata_info[0])
			return
		if pc.pet.item[1].pict_id == nekomata_info[1]:
			pet_pict_id = nekomata_info[0]
		else:
			pet_pict_id = nekomata_info[1]
		pet_item.pet_pict_id = pet_pict_id
		pc.pet.item[1].pict_id = pet_pict_id
		script.update_pet(pc)
Example #26
0
def main(pc):
    nekomata_info = ITEM_EVENT_ID[pc.item_event_id]
    if not pc.pet:
        script.msg(pc, "error: not pet")
        return
    with pc.lock and pc.pet.lock:
        pet_item = pc.item.get(pc.equip.pet)
        if not pet_item:
            script.msg(pc, "error: not pet equip")
            return
        if pet_item.pet_id != nekomata_info[0]:
            script.msg(pc, "error: pet id != %s" % nekomata_info[0])
            return
        if pc.pet.item[1].pict_id == nekomata_info[1]:
            pet_pict_id = nekomata_info[0]
        else:
            pet_pict_id = nekomata_info[1]
        pet_item.pet_pict_id = pet_pict_id
        pc.pet.item[1].pict_id = pet_pict_id
        script.update_pet(pc)
Example #27
0
 def exp_add(self, exp, job_exp):
     #self.exp += exp
     #self.job_exp += job_exp
     script.msg(self, "基本経験値 %s、職業経験値 %sを取得しました" % (exp, job_exp))
Example #28
0
 def _set_trade_finish(self):
     if not self.check_trade_list():
         self.cancel_trade()
         return
     if not self.trade:
         return
     self.trade_state = 1  #トレード完了してる状態
     p = self.get_trade_target()
     if p:
         with p.lock and p.user.lock:
             if not p.trade:
                 return
             if len(self.item) + len(p.trade_list) > env.MAX_ITEM_STOCK:
                 script.msg(self, "trade error: self stock limit")
                 script.msg(p, "trade error: target stock limit")
                 self.cancel_trade()
                 p.cancel_trade()
                 return
             if len(p.item) + len(self.trade_list) > env.MAX_ITEM_STOCK:
                 script.msg(self, "trade error: target stock limit")
                 script.msg(p, "trade error: self stock limit")
                 self.cancel_trade()
                 p.cancel_trade()
                 return
             if p.trade_state == 1:  #exchange item and gold
                 if not p.check_trade_list():
                     self.cancel_trade()
                     return
                 self.set_trade_return()
                 p.set_trade_return()
                 if self.trade_return_gold:
                     script.gold(p, self.trade_return_gold)
                 for item in self.trade_return_list:
                     if item.stock:
                         script.item(p, item.item_id, item.count)
                     else:
                         p.item_append(item)
                 if p.trade_return_gold:
                     script.gold(self, p.trade_return_gold)
                 for item in p.trade_return_list:
                     if item.stock:
                         script.item(self, item.item_id, item.count)
                     else:
                         self.item_append(item)
                 self.reset_trade()
                 p.reset_trade()
                 self.map_send("0a1c")  #トレード終了通知
                 p.map_send("0a1c")  #トレード終了通知
                 self.update_item_status()
                 p.update_item_status()
                 script.update_item(self)
                 script.update_item(p)
             else:  #send trade status
                 #自分・相手がOKやキャンセルを押した際に双方に送信される
                 self.map_send("0a19", self, p)
                 #自分・相手がOKやキャンセルを押した際に双方に送信される
                 p.map_send("0a19", p, self)
     elif p is False:
         #target offline or map changed
         self.cancel_trade()
     else:  #p is None: npctrade
         self.set_trade_return()
         self.reset_trade(False)  #don't clear return list
         self.map_send("0a1c")  #トレード終了通知
         self.update_item_status()
         script.update_item(self)
Example #29
0
	def _set_trade_finish(self):
		if not self.check_trade_list():
			self.cancel_trade()
			return
		if not self.trade:
			return
		self.trade_state = 1 #トレード完了してる状態
		p = self.get_trade_target()
		if p:
			with p.lock and p.user.lock:
				if not p.trade:
					return
				if len(self.item)+len(p.trade_list) > env.MAX_ITEM_STOCK:
					script.msg(self, "trade error: self stock limit")
					script.msg(p, "trade error: target stock limit")
					self.cancel_trade()
					p.cancel_trade()
					return
				if len(p.item)+len(self.trade_list) > env.MAX_ITEM_STOCK:
					script.msg(self, "trade error: target stock limit")
					script.msg(p, "trade error: self stock limit")
					self.cancel_trade()
					p.cancel_trade()
					return
				if p.trade_state == 1: #exchange item and gold
					if not p.check_trade_list():
						self.cancel_trade()
						return
					self.set_trade_return()
					p.set_trade_return()
					if self.trade_return_gold:
						script.gold(p, self.trade_return_gold)
					for item in self.trade_return_list:
						if item.stock:
							script.item(p, item.item_id, item.count)
						else:
							p.item_append(item)
					if p.trade_return_gold:
						script.gold(self, p.trade_return_gold)
					for item in p.trade_return_list:
						if item.stock:
							script.item(self, item.item_id, item.count)
						else:
							self.item_append(item)
					self.reset_trade()
					p.reset_trade()
					self.map_send("0a1c") #トレード終了通知
					p.map_send("0a1c") #トレード終了通知
					self.update_item_status()
					p.update_item_status()
					script.update_item(self)
					script.update_item(p)
				else: #send trade status
					#自分・相手がOKやキャンセルを押した際に双方に送信される
					self.map_send("0a19", self, p)
					#自分・相手がOKやキャンセルを押した際に双方に送信される
					p.map_send("0a19", p, self)
		elif p is False:
			#target offline or map changed
			self.cancel_trade()
		else: #p is None: npctrade
			self.set_trade_return()
			self.reset_trade(False) #don't clear return list
			self.map_send("0a1c") #トレード終了通知
			self.update_item_status()
			script.update_item(self)
Example #30
0
	def exp_add(self, exp, job_exp):
		#self.exp += exp
		#self.job_exp += job_exp
		script.msg(self, "基本経験値 %s、職業経験値 %sを取得しました"%(exp, job_exp))
Example #31
0
def main(pc):
	script.msg(pc, "-"*30)
	script.msg(pc, "%s %s"%(env.NAME, env.LAST_UPDATE))
	script.msg(pc, "%s"%env.RUNTIME_VERSION_ALL)
	script.msg(pc, "-"*30)