def reset(self, item=None): self.id = 0 self.lock = threading.RLock() self.master = None # PC() self.map_id = 0 self.map_obj = None self.x = 0 self.y = 0 self.dir = 0 self.rawx = 0 self.rawy = 0 self.rawdir = 0 self.speed = 310 #410 self.motion_id = 111 self.motion_loop = False self.standby = False self.lv_base = 1 #packet.make_020d self.race = -1 self.form = -1 self.gender = -1 self.hair = -1 self.haircolor = -1 self.wig = -1 self.face = -1 self.base_lv = -1 self.ex = -1 self.wing = -1 self.wingcolor = -1 self.wrprank = -1 self.size = 1000 #packet.make_09e9 if not item: return self.item = { 1: data_item.Item({ "item_id": -1, "pict_id": item.__dict__.get("pet_pict_id") or self.pict_id, "type": "HELM", }) } self.equip = obj_pc.PC.Equip() self.equip.head = 1 i = item.__dict__.get("pet_weapon_id") if i: self.item[7] = general.get_item(i) self.equip.right = 7
def reset(self, item=None): self.id = 0 self.lock = threading.RLock() self.master = None # PC() self.map_id = 0 self.map_obj = None self.x = 0 self.y = 0 self.dir = 0 self.rawx = 0 self.rawy = 0 self.rawdir = 0 self.speed = 310 #410 self.motion_id = 111 self.motion_loop = False self.standby = False self.lv_base = 1 #packet.make_020d self.race = -1 self.form = -1 self.gender = -1 self.hair = -1 self.haircolor = -1 self.wig = -1 self.face = -1 self.base_lv = -1 self.ex = -1 self.wing = -1 self.wingcolor = -1 self.wrprank = -1 self.size = 1000 #packet.make_09e9 if not item: return self.item = {1: data_item.Item({ "item_id": -1, "pict_id": item.__dict__.get("pet_pict_id") or self.pict_id, "type": "HELM", })} self.equip = obj_pc.PC.Equip() self.equip.head = 1 i = item.__dict__.get("pet_weapon_id") if i: self.item[7] = general.get_item(i) self.equip.right = 7
def _item(pc, item_id, item_count): general.assert_value_range("item_count", item_count, general.RANGE_UNSIGNED_SHORT) general.assert_value_range("item_id", item_id, general.RANGE_UNSIGNED_INT) if len(pc.item) >= env.MAX_ITEM_STOCK: msg(pc, "script.item error: stock limit") return False while item_count: item = general.get_item(item_id) item_stock_exist = False if item.stock: for iid in pc.sort.item: item_exist = pc.item[iid] if item_exist.count >= 999: continue if item_exist.item_id != item_id: continue if item_exist.count+item_count > 999: item_count_add = 999-item_exist.count item_count -= item_count_add item_exist.count += item_count_add else: item_count_add = item_count item_count = 0 item_exist.count += item_count_add pc.map_send("09cf", item_exist, iid) #アイテム個数変化 msg(pc, "%sを%s個入手しました"%( item_exist.name, item_count_add )) item_stock_exist = True break if item_stock_exist: continue if item_count > 999: item.count = 999 item_count -= 999 else: item.count = item_count item_count = 0 pc.item_append(item) pc.update_item_status() return True
def _item(pc, item_id, item_count): general.assert_value_range("item_count", item_count, general.RANGE_UNSIGNED_SHORT) general.assert_value_range("item_id", item_id, general.RANGE_UNSIGNED_INT) if len(pc.item) >= env.MAX_ITEM_STOCK: msg(pc, "script.item error: stock limit") return False while item_count: item = general.get_item(item_id) item_stock_exist = False if item.stock: for iid in pc.sort.item: item_exist = pc.item[iid] if item_exist.count >= 999: continue if item_exist.item_id != item_id: continue if item_exist.count + item_count > 999: item_count_add = 999 - item_exist.count item_count -= item_count_add item_exist.count += item_count_add else: item_count_add = item_count item_count = 0 item_exist.count += item_count_add pc.map_send("09cf", item_exist, iid) #アイテム個数変化 msg(pc, "%sを%s個入手しました" % (item_exist.name, item_count_add)) item_stock_exist = True break if item_stock_exist: continue if item_count > 999: item.count = 999 item_count -= 999 else: item.count = item_count item_count = 0 pc.item_append(item) pc.update_item_status() return True
def item_loads(s): l = dumpobj.loads(s) i = general.get_item(l["item_id"]) i.__dict__.update(l) return i
def load_1_0_0(self, data): self.id = data.getint("main", "id") self.name = data.get("main", "name") self.gmlevel = data.getint("main", "gmlevel") self.race = data.getint("main", "race") self.race_motion = 0 self.form = data.getint("main", "form") self.gender = data.getint("main", "gender") self.hair = data.getint("main", "hair") self.haircolor = data.getint("main", "haircolor") self.wig = data.getint("main", "wig") self.face = data.getint("main", "face") self.base_lv = data.getint("main", "base_lv") self.ex = data.getint("main", "ex") self.wing = data.getint("main", "wing") self.wingcolor = data.getint("main", "wingcolor") self.job = data.getint("main", "job") self.map_id = data.getint("main", "map_id") self.lv_base = data.getint("main", "lv_base") self.lv_job1 = data.getint("main", "lv_job1") self.lv_job2x = data.getint("main", "lv_job2x") self.lv_job2t = data.getint("main", "lv_job2t") self.lv_job3 = data.getint("main", "lv_job3") self.gold = data.getint("main", "gold") self.x = data.getfloat("main", "x") self.y = data.getfloat("main", "y") self.dir = data.getint("main", "dir") self.str = data.getint("status", "str") self.dex = data.getint("status", "dex") self.int = data.getint("status", "int") self.vit = data.getint("status", "vit") self.agi = data.getint("status", "agi") self.mag = data.getint("status", "mag") self.stradd = data.getint("status", "stradd") self.dexadd = data.getint("status", "dexadd") self.intadd = data.getint("status", "intadd") self.vitadd = data.getint("status", "vitadd") self.agiadd = data.getint("status", "agiadd") self.magadd = data.getint("status", "magadd") #{item_iid: item_object, ...} self.item = {} self.sort.item = general.str_to_list(data.get("sort", "item")) for i in self.sort.item: if i <= 0: general.log_error("[ pc ] item iid <= 0", self) itemdata = general.str_to_list(data.get("item", str(i))) item = general.get_item(itemdata[0]) item.count = itemdata[1] self.item[i] = item #{item_iid: item_object, ...} self.warehouse = {} self.sort.warehouse = general.str_to_list(data.get("sort", "warehouse")) for i in self.sort.warehouse: if i <= 0: general.log_error("[ pc ] warehouse iid <= 0", self) itemdata = general.str_to_list(data.get("warehouse", str(i))) item = general.get_item(itemdata[0]) item.count = itemdata[1] item.warehouse = itemdata[2] self.warehouse[i] = item #equip.place = iid for attr in general.EQUIP_ATTR_LIST: try: setattr(self.equip_std, attr, data.getint("equip", attr)) except ConfigParser.NoOptionError: general.log_error("[ pc ] warning: equip [%s] not exist in [%s]" % (attr, self)) if data.has_section("equip_dem"): for attr in general.EQUIP_ATTR_LIST: try: setattr(self.equip_dem, attr, data.getint("equip_dem", attr)) except ConfigParser.NoOptionError: general.log_error( "[ pc ] warning: dem equip [%s] not exist in [%s]" % (attr, self)) self.mirror_face = [self.face] + [-1] * 7 self.mirror_hair = [self.hair] + [-1] * 7 self.mirror_wig = [self.wig] + [-1] * 7 self.mirror_haircolor = [self.haircolor] + [-1] * 7 #{name: value, ...} self.var = {} if data.has_section("dic"): for option in data.options("dic"): self.var[option] = data.get("dic", option) if data.has_section("var"): for key in data.options("var"): try: self.var[key] = dumpobj.loads(data.get("var", key)) except: general.log_error("[ pc ] load var error", self, key) general.log_error(traceback.format_exc()) #[skill_id, ...] self.skill_list = general.str_to_list(data.get("skill", "list")) if self.dem_form_status(): self.equip = self.equip_dem else: self.equip = self.equip_std
def main(pc): item_id = ID[pc.event_id] item = general.get_item(item_id) if script.takeitem(pc, item_id, 1): script.effect(pc, 4112) script.haircolor(pc, item.color)
def load_1_0_0(self, data): self.id = data.getint("main","id") self.name = data.get("main","name") self.gmlevel = data.getint("main","gmlevel") self.race = data.getint("main","race") self.form = data.getint("main","form") self.gender = data.getint("main","gender") self.hair = data.getint("main","hair") self.haircolor =data.getint("main","haircolor") self.wig = data.getint("main","wig") self.face = data.getint("main","face") self.base_lv = data.getint("main","base_lv") self.ex = data.getint("main","ex") self.wing = data.getint("main","wing") self.wingcolor = data.getint("main","wingcolor") self.job = data.getint("main","job") self.map_id = data.getint("main","map_id") self.lv_base = data.getint("main","lv_base") self.lv_job1 = data.getint("main","lv_job1") self.lv_job2x = data.getint("main","lv_job2x") self.lv_job2t = data.getint("main","lv_job2t") self.lv_job3 = data.getint("main","lv_job3") self.gold = data.getint("main","gold") self.x = data.getfloat("main","x") self.y = data.getfloat("main","y") self.dir = data.getint("main","dir") self.str = data.getint("status","str") self.dex = data.getint("status","dex") self.int = data.getint("status","int") self.vit = data.getint("status","vit") self.agi = data.getint("status","agi") self.mag = data.getint("status","mag") self.stradd = data.getint("status","stradd") self.dexadd = data.getint("status","dexadd") self.intadd = data.getint("status","intadd") self.vitadd = data.getint("status","vitadd") self.agiadd = data.getint("status","agiadd") self.magadd = data.getint("status","magadd") #{item_iid: item_object, ...} self.item = {} self.sort.item = general.str_to_list(data.get("sort", "item")) for i in self.sort.item: if i <= 0: general.log_error("[ pc ] item iid <= 0", self) itemdata = general.str_to_list(data.get("item", str(i))) item = general.get_item(itemdata[0]) item.count = itemdata[1] self.item[i] = item #{item_iid: item_object, ...} self.warehouse = {} self.sort.warehouse = general.str_to_list(data.get("sort", "warehouse")) for i in self.sort.warehouse: if i <= 0: general.log_error("[ pc ] warehouse iid <= 0", self) itemdata = general.str_to_list(data.get("warehouse", str(i))) item = general.get_item(itemdata[0]) item.count = itemdata[1] item.warehouse = itemdata[2] self.warehouse[i] = item #equip.place = iid for attr in general.EQUIP_ATTR_LIST: try: setattr(self.equip_std, attr, data.getint("equip", attr)) except ConfigParser.NoOptionError: general.log_error( "[ pc ] warning: equip [%s] not exist in [%s]"%(attr, self)) if data.has_section("equip_dem"): for attr in general.EQUIP_ATTR_LIST: try: setattr(self.equip_dem, attr, data.getint("equip_dem", attr)) except ConfigParser.NoOptionError: general.log_error( "[ pc ] warning: dem equip [%s] not exist in [%s]"%(attr, self)) #{name: value, ...} self.var = {} if data.has_section("dic"): for option in data.options("dic"): self.var[option] = data.get("dic", option) if data.has_section("var"): for key in data.options("var"): try: self.var[key] = dumpobj.loads(data.get("var", key)) except: general.log_error("[ pc ] load var error", self, key) general.log_error(traceback.format_exc()) #[skill_id, ...] self.skill_list = general.str_to_list(data.get("skill", "list")) if self.dem_form_status(): self.equip = self.equip_dem else: self.equip = self.equip_std