def do_09e7(self, pc, data, datalength, recvhead, recvtype, recvcontent): """アイテム装備""" #pc.reset_attack_info() iid = int(recvcontent[0:8],16) if not pc.item.get(iid): print "[ map ]", "error on item setup", iid return old, new = pc.setequip(iid, self.itemobj, self.itemdic) print "[ map ]", "item setup", pc.item[iid].id, old, new if not new: #装備しようとする装備タイプが不明の場合 #アイテム装備 datatype, datacontent = self.createpacket.create09e8(iid, -1, -2, 1) self.send(datatype, datacontent, pc.mapclient, None) return for x in old: if int(x) != 0 and x != "": #装備先に居る装備を外す時の処理 pc.sort.item.remove(x) pc.sort.item.append(x) #アイテム保管場所変更 datatype, datacontent = self.createpacket.create09e3(x, 02) self.send(datatype, datacontent, pc.mapclient, None) #アイテム装備 datatype,datacontent = self.createpacket.create09e8(iid, new, 0, 1) self.send(datatype, datacontent, pc.mapclient, None) #キャラの見た目を変更 datatype,datacontent = self.createpacket.create09e9(pc) self.sendmap(datatype, datacontent, self.pclist, pc, None) if new == 18: # set pet eventobj.setpet(pc)
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)