def marketConfirm(self, playerMerchant): if (int(playerMerchant.merchandise.limitlv) < self.config._defaultConfig.get("trade-limitlv")) or ( int(playerMerchant.merchandise.attribute) < self.config._defaultConfig.get("trade-attribute") ): # 卖出货物 data = {"tradeSN": playerMerchant.tradesn} url = "http://s%d.as.yaowan.com/root/market!confirm.action?%d" % (self.serverid, long(time.time() * 1000)) reqinfo = self.request.request(url, data, jsonFormat=False) res = zlib.decompress(reqinfo.read()) res = res[res.find("<?xml") :] if not res: print "卖出货物%s失败" % (playerMerchant.merchandise.merchandisename) return None results = etree.XML(res) childli = results.getchildren() # 返回结果对象 marketresult = MarketResult() for child in childli: if child.tag == "state": state = child.text if int(state) != 1: print "卖出货物%s失败" % (playerMerchant.merchandise.merchandisename) return None marketresult.state = state if child.tag == "usesize": # 使用大小 usesize = child.text marketresult.usesize = usesize if child.tag == "cost": cost = child.text marketresult.cost = cost if child.tag == "playerupdateinfo": copper = child.find("copper").text updateinfo = PlayerUpdateInfo() updateinfo.copper = copper marketresult.playerupdateinfo = updateinfo msg = "卖出货物%s成功,获得%d钱币" % (playerMerchant.merchandise.merchandisename, int(cost)) print msg return marketresult else: msg = "货物%s属性或级别大于配置参数,没有卖出" % (playerMerchant.merchandise.merchandisename) print msg return None
def resolveMerXML(self, content): res = content[content.find("<?xml") :] if not res: return None results = etree.XML(res) childli = results.getchildren() playerMerchant = PlayerMerchant() merchantlist = [] for child in childli: # 委派结果 if child.tag == "merchandise": merchandiseid = child.find("merchandiseid").text merchandisename = unicode(child.find("merchandisename").text).encode("utf-8") merchandiselv = child.find("merchandiselv").text merchandisequality = child.find("merchandisequality").text limitlv = child.find("limitlv").text pic = child.find("pic").text equiptype = child.find("equiptype").text attribute = child.find("attribute").text hp = child.find("hp").text cost = child.find("cost").text stagename = child.find("stagename").text merchandise = Merchandise( merchandiseid, merchandisename, merchandiselv, merchandisequality, limitlv, pic, equiptype, attribute, hp, cost, stagename, ) playerMerchant.merchandise = merchandise if child.tag == "merchant": merchantid = child.find("merchantid").text merchantname = unicode(child.find("merchantname").text).encode("utf-8") merchantintro = child.find("merchantintro").text cost = child.find("cost").text nextcharge = child.find("nextcharge").text merchant = Merchant(merchantid, merchantname, merchantintro, cost, nextcharge) merchantlist.append(merchant) if child.tag == "playerupdateinfo": # print 'trade playerupdateinfo:',child.getchildren() if child.find("copper"): copper = child.find("copper").text updateinfo = PlayerUpdateInfo() updateinfo.copper = copper playerMerchant.playerupdateinfo = updateinfo if child.tag == "state": state = child.text playerMerchant.state = state if child.tag == "cd": cd = child.text playerMerchant.cd = cd if child.tag == "cdflag": cdflag = child.text playerMerchant.cdflag = cdflag if child.tag == "free": free = child.text playerMerchant.free = free if child.tag == "gold": gold = child.text playerMerchant.gold = gold if child.tag == "tradesn": tradesn = child.text playerMerchant.tradesn = tradesn if child.tag == "message": message = unicode(child.text).encode("utf-8") playerMerchant.message = message playerMerchant.merchantlist = merchantlist return playerMerchant