Beispiel #1
0
 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
Beispiel #2
0
	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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
def item_loads(s):
    l = dumpobj.loads(s)
    i = general.get_item(l["item_id"])
    i.__dict__.update(l)
    return i
Beispiel #6
0
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
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
def item_loads(s):
	l = dumpobj.loads(s)
	i = general.get_item(l["item_id"])
	i.__dict__.update(l)
	return i
Beispiel #10
0
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