Example #1
0
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) #キャラの状態
Example #2
0
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)  #キャラの状態
Example #3
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 #4
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 #5
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 #6
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 #7
0
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)
Example #8
0
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
Example #9
0
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
Example #10
0
	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
Example #11
0
 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