def unsetequip(self, iid): #print pc iid = int(iid) if iid == 0: return elif self.equip.head == iid: self.equip.head = 0 elif self.equip.face == iid: self.equip.face = 0 elif self.equip.chestacce == iid: self.equip.chestacce = 0 elif self.equip.tops == iid: self.equip.tops = 0 elif self.equip.bottoms == iid: self.equip.bottoms = 0 elif self.equip.backpack == iid: self.equip.backpack = 0 elif self.equip.right == iid: self.equip.right = 0 elif self.equip.left == iid: self.equip.left = 0 elif self.equip.shoes == iid: self.equip.shoes = 0 elif self.equip.socks == iid: self.equip.socks = 0 elif self.equip.pet == iid: self.equip.pet = 0 eventobj.unsetpet(self)
def do_001e(self, pc, data, datalength, recvhead, recvtype, recvcontent): """ログアウト(PASS鍵リセット・マップサーバーとのみ通信)""" if recvcontent.upper() != "FF": print "[ map ]", "client logout" #hide pet eventobj.unsetpet(pc, True) #hide pc datatype, datacontent = self.createpacket.create1211(pc) self.sendmapwithoutself(datatype, datacontent, self.pclist, pc, None)
def do_11fe(self, pc, data, datalength, recvhead, recvtype, recvcontent): """MAPワープ完了通知""" print "[ map ]", "client map loading over" pc.visible = True#見える状態になった pc.motion = "111"#モーションリセット #ログインイベント if self.serverobj.loginevent and not pc.loginevent: pc.loginevent = True pc.e = copy.copy(self.event) pc.e.id = self.serverobj.loginevent pc.e.eventhandle.run(pc) #キャラ速度通知・変更 datatype, datacontent = self.createpacket.create1239(pc,pc.status.speed) self.send(datatype, datacontent, pc.mapclient, None) #クエスト回数・時間 datatype, datacontent = self.createpacket.create196e(pc) self.send(datatype, datacontent, pc.mapclient, None) #ステータス試算結果 datatype,datacontent = self.createpacket.create0259(pc) self.send(datatype, datacontent, pc.mapclient, None) #マップ情報完了通知 datatype,datacontent = self.createpacket.create1b67() self.send(datatype,datacontent,pc.mapclient,None) #0.43 add #キャラの状態 datatype, datacontent = self.createpacket.create157c(pc) self.send(datatype, datacontent, pc.mapclient, None) #スキル一覧0 datatype,datacontent = self.createpacket.create0226(pc, 0) self.send(datatype,datacontent,pc.mapclient,None) #スキル一覧1 datatype,datacontent = self.createpacket.create0226(pc, 1) self.send(datatype,datacontent,pc.mapclient,None) #リザーブスキル datatype,datacontent = self.createpacket.create022e(pc) self.send(datatype,datacontent,pc.mapclient,None) #HEARTスキル datatype, datacontent = self.createpacket.create022d() self.send(datatype, datacontent, pc.mapclient, None) #キャラの見た目を変更 datatype, datacontent = self.createpacket.create09e9(pc) self.send(datatype, datacontent, pc.mapclient, None) #現在のHP/MP/SP/EP datatype, datacontent = self.createpacket.create021c(pc) self.send(datatype, datacontent, pc.mapclient, None) #他キャラ情報 with self.lock_pclist: for p in self.pclist.itervalues(): if not (p.online and p.mapclient): continue if not (p.charid != pc.charid and p.map == pc.map): continue #print "send 120c" #他キャラ情報→自キャラ datatype, datacontent = self.createpacket.create120c(p) self.send(datatype, datacontent, pc.mapclient, None) if p.pet: datatype, datacontent = pc.e.createpacket.create122f(p, p.pet) self.send(datatype, datacontent, pc.mapclient, None) #自キャラ情報→他キャラ datatype, datacontent = self.createpacket.create120c(pc) self.send(datatype, datacontent, p.mapclient, None) #モンスター情報 with self.lock_moblist: for m in self.moblist.itervalues(): # in self.moblist.keys() if m.hp <= 0: continue if not (m.map == pc.map): continue #モンスターID通知 datatype, datacontent = self.createpacket.create122a(pc, (m.sid,), m.npc) self.send(datatype, datacontent, pc.mapclient, None) #モンスター情報 datatype, datacontent = self.createpacket.create1220(pc, m) self.send(datatype, datacontent, pc.mapclient, None) #pet info eventobj.unsetpet(pc) eventobj.setpet(pc)
def setequip(self, iid, itemobj, itemdic): #print pc iid = int(iid) old = [] #unset list new = 0 item = self.item.get(iid) if item == None: return old, new #頭 if item.type == "HELM": if self.equip.head != 0: old.append(self.equip.head) self.equip.head = iid new = 6 elif item.type == "ACCESORY_HEAD": if self.equip.head != 0: old.append(self.equip.head) self.equip.head = iid new = 7 #顔 elif item.type == "FULLFACE": if self.equip.face != 0: old.append(self.equip.face) self.equip.face = iid new = 6 #8 before ver315 elif item.type == "ACCESORY_FACE": if self.equip.face != 0: old.append(self.equip.face) self.equip.face = iid new = 8 #9 before ver315 #胸アクセサリ elif item.type == "ACCESORY_NECK" or item.type == "JOINT_SYMBOL": if self.equip.chestacce != 0: old.append(self.equip.chestacce) self.equip.chestacce = iid new = 10 #上半身 elif item.type in TYPE_TOPS: if self.equip.tops != 0: old.append(self.equip.tops) if item.type == "ONEPIECE" and self.equip.bottoms != 0: old.append(self.equip.bottoms) self.equip.bottoms = 0 self.equip.tops = iid new = 11 #下半身 elif item.type == "ARMOR_LOWER" or item.type == "SLACKS" : if self.equip.bottoms != 0: old.append(self.equip.bottoms) if self.equip.tops != 0: cache = self.item.get(self.equip.tops) if cache != None and cache.type == "ONEPIECE": old.append(self.equip.tops) self.equip.tops = 0 self.equip.bottoms = iid new = 12 #背中 elif item.type == "BACKPACK": if self.equip.backpack != 0: old.append(self.equip.backpack) self.equip.backpack = iid new = 13 #右手装備 elif item.type in TYPE_RIGHT: if self.equip.right != 0: old.append(self.equip.right) self.equip.right = iid new = 14 #左手装備 elif item.type in TYPE_LEFT: if self.equip.left != 0: old.append(self.equip.left) self.equip.left = iid new = 15 #靴 elif item.type in TYPE_SHOES: if self.equip.shoes != 0: old.append(self.equip.shoes) self.equip.shoes = iid new = 16 #靴下 elif item.type == "SOCKS": if self.equip.socks != 0: old.append(self.equip.socks) self.equip.socks = iid new = 17 #ペット elif item.type in TYPE_PET: if self.equip.pet != 0: old.append(self.equip.pet) eventobj.unsetpet(self) self.equip.pet = iid new = 18 return old, new