def spawn(monster_id, map_id, x, y): error = None monster = general.get_monster(monster_id) if not monster: error = "spawn: monster_id %s not exist."%monster_id general.log_error(error) return error map_obj = general.get_map(map_id) if not map_obj: error = "spawn: map_id %s not exist."%map_id general.log_error(error) return error monster.reset() with monster_list_lock and monster.lock: monster_id = general.make_id(monster_id_list, MIN_MONSTER_ID) if monster_id >= MAX_MONSTER_ID: error = "[monster] ERROR: monster_id [%s] >= MAX_MONSTER_ID"%monster_id general.log_error(error) return error monster.id = monster_id monster.set_map(map_id) monster.set_coord(x, y) monster_list.append(monster) monster_id_list.append(monster.id) script.send_map_obj(map_obj, (), "122a", (monster.id,)) #モンスターID通知 if error: delete(monster) return error general.log("[monster] spawn monster id %s"%(monster.id)) script.send_map_obj(map_obj, (), "1220", monster) #モンスター情報 script.send_map_obj(map_obj, (), "157c", monster) #キャラの状態
def spawn(monster_id, map_id, x, y): error = None monster = general.get_monster(monster_id) if not monster: error = "spawn: monster_id %s not exist." % monster_id general.log_error(error) return error map_obj = general.get_map(map_id) if not map_obj: error = "spawn: map_id %s not exist." % map_id general.log_error(error) return error monster.reset() with monster_list_lock and monster.lock: monster_id = general.make_id(monster_id_list, MIN_MONSTER_ID) if monster_id >= MAX_MONSTER_ID: error = "[monster] ERROR: monster_id [%s] >= MAX_MONSTER_ID" % monster_id general.log_error(error) return error monster.id = monster_id monster.set_map(map_id) monster.set_coord(x, y) monster_list.append(monster) monster_id_list.append(monster.id) script.send_map_obj(map_obj, (), "122a", (monster.id, )) #モンスターID通知 if error: delete(monster) return error general.log("[monster] spawn monster id %s" % (monster.id)) script.send_map_obj(map_obj, (), "1220", monster) #モンスター情報 script.send_map_obj(map_obj, (), "157c", monster) #キャラの状態
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))
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))
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))
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))
def set_usermap(pc, usermap_type, x, y): unset_usermap(pc) with pc.lock: with usermap_list_lock: i = general.make_id(usermap_list, MIN_USERMAP_ID) usermap_obj = obj_usermap.UserMap(usermap_type) usermap_obj.id = i usermap_obj.master = pc usermap_obj.map_id = MIN_FLYGARDEN_ID+i-MIN_USERMAP_ID usermap_obj.entrance_map_id = pc.map_obj.map_id usermap_obj.entrance_x = x usermap_obj.entrance_y = y usermap_obj.entrance_event_id = usermap_obj.map_id usermap_obj.entrance_title = "%sさんの飛空庭"%pc.name usermap_obj.set_flygarden() pc.usermap_obj = usermap_obj usermap_list[i] = usermap_obj general.log("[umaps] set usermap id", i) pc.map_send_map("0bb8", pc) #飛空庭のひも・テント表示 script.unlock_move(pc)
def set_pet(pc): with pc.lock: if pc.pet: #general.log("[ pet ] set_pet failed: pc.pet exist") return if not pc.equip.pet: #general.log("[ pet ] set_pet failed: pc.equip.pet not exist") return False item = pc.item.get(pc.equip.pet) if not item: #general.log("[ pet ] set_pet failed: item not exist") return False pet = general.get_pet(item.pet_id) if not pet: #general.log("[ pet ] set_pet failed: pet not exist") return False pet = obj_pet.PetObject(pet) pet.reset(item) with pet_list_lock: pet_id = general.make_id(pet_id_list, MIN_PET_ID) if pet_id >= MAX_PET_ID: general.log_error("[ pet ] ERROR: pet_id [%s] >= MAX_PET_ID" % pet_id) return False pet.id = pet_id pet_list.append(pet) pet_id_list.append(pet.id) with pc.user.lock and pet.lock: pc.pet = pet pet.master = pc if pc.item.get(pc.equip.pet).check_type(general.PET_TYPE_LIST): pet.set_map(pc.map_id) pet.set_coord_from_master() pet.set_dir(pc.dir) pet.start() pc.map_send_map("122f", pet) #pet info else: pet.start() general.log("[ pet ] set pet id %s" % (pc.pet.id)) return True
def set_pet(pc): with pc.lock: if pc.pet: #general.log("[ pet ] set_pet failed: pc.pet exist") return if not pc.equip.pet: #general.log("[ pet ] set_pet failed: pc.equip.pet not exist") return False item = pc.item.get(pc.equip.pet) if not item: #general.log("[ pet ] set_pet failed: item not exist") return False pet = general.get_pet(item.pet_id) if not pet: #general.log("[ pet ] set_pet failed: pet not exist") return False pet = obj_pet.PetObject(pet) pet.reset(item) with pet_list_lock: pet_id = general.make_id(pet_id_list, MIN_PET_ID) if pet_id >= MAX_PET_ID: general.log_error("[ pet ] ERROR: pet_id [%s] >= MAX_PET_ID"%pet_id) return False pet.id = pet_id pet_list.append(pet) pet_id_list.append(pet.id) with pc.user.lock and pet.lock: pc.pet = pet pet.master = pc pet.set_map(pc.map_id) pet.set_coord_from_master() pet.set_dir(pc.dir) pet.start() pc.map_send_map("122f", pet) #pet info general.log("[ pet ] set pet id %s"%(pc.pet.id)) return True
def mapitem_append(self, item, x, y, id_from): with self.lock: mapitem_id = general.make_id(mi.id for mi in self.mapitem_list) mapitem_obj = mapitem.MapItem(item, x, y, id_from, mapitem_id) self.mapitem_list.append(mapitem_obj) script.send_map_obj(self, (), "07d5", mapitem_obj) #drop item info