def run(self): self.request.include.logger.info(u"兵力不足10000") ''' # 请求征兵操作 url = "http://s%d.as.yaowan.com/root/mainCity!preDraught.action?%d" %(self.serverid,int(time.time()*1000)) reqinfo = self.request.request(url) res = zlib.decompress(reqinfo.read()) print 'preDraught res:',res ''' ''' 补充兵力 ''' url = "http://s%d.as.yaowan.com/root/mainCity!draught.action?%d" %(self.serverid,int(time.time()*1000)) data = {"forceNum":10000} reqinfo = self.request.request(url,data) res = zlib.decompress(reqinfo.read()) if res: res = res[res.find("<?xml"):] infoXML = etree.XML(res) updateinfo = PlayerUpdateInfo() for child in infoXML.getchildren(): if child.tag=="playerupdateinfo": food = child.find("food").text forces = child.find("forces").text kfzonestate = child.find("kfzonestate").text updateinfo.food = food updateinfo.forces = forces updateinfo.kfzonestate =kfzonestate if updateinfo.forces: self.request.include.logger.info(u"补充10000兵力成功") else: self.request.include.logger.info(u"补充10000兵力失败")
def getPreFoodBandC(self): url = "http://s%d.as.yaowan.com/root/mainCity!preFoodBandC.action?%d" %(self.serverid,int(time.time()*1000)) reqinfo = self.request.request(url) res = zlib.decompress(reqinfo.read()) #print 'preFoodBandC res:',res if res: if res.find("<?xml")<0: self.request.include.logger.warning(u"获取粮食买卖信息失败,重新请求...") time.sleep(2) return self.getPreFoodBandC() res = res[res.find("<?xml"):] infoXML = etree.XML(res) foodbandc = FoodBandC() for child in infoXML.getchildren(): if child.tag=="state": foodbandc.state = child.text if child.tag=="buyprice": foodbandc.buyprice = float(child.text) if child.tag=="price": foodbandc.price = float(child.text) if child.tag=="isup": foodbandc.isup = bool(child.text) if child.tag=="bsmax": foodbandc.bsmax = int(child.text) if child.tag=="crutrade": foodbandc.crutrade = int(child.text) if child.tag=="maxtrade": foodbandc.maxtrade = int(child.text) if child.tag=="playerupdateinfo": updateinfo = PlayerUpdateInfo() updateinfo.food = child.findtext("food") updateinfo.kfzonestate = child.findtext("kfzonestate") foodbandc.playerupdateinfo = updateinfo return foodbandc return None
def getRefineInfo(self): url = "http://s%d.as.yaowan.com/root/refine!getRefineInfo.action?%d" %(self.serverid,int(time.time()*1000)) reqinfo = self.request.request(url) res = zlib.decompress(reqinfo.read()) if res: if res.find("<?xml")<0: self.request.include.logger.warning(u"获取精炼信息失败,重新请求...") time.sleep(2) return self.getRefineInfo() res = res[res.find("<?xml"):] print 'refine res:',res infoXML = etree.XML(res) refineInfo = RefineInfo() refinergrouplist = [] refinerlist = [] for child in infoXML.getchildren(): if child.tag=="state": refineInfo.state = child.text if child.tag=="refinenum": refineInfo.refinenum = int(child.text) if child.tag=="maxrefinenum": refineInfo.maxrefinenum = child.text if child.tag=="surplursleft": refineInfo.surplursleft = child.text if child.tag=="copper": refineInfo.copper = child.text if child.tag=="percost": refineInfo.percost = child.text if child.tag=="allcost": refineInfo.allcost = child.text if child.tag=="refinergroup": refinergroup = RefinerGroup() refinergroup.time = int(child.findtext("time")) refinergroup.id = child.findtext("id") refinergroup.cdflag = int(child.findtext("cdflag")) refinergrouplist.append(refinergroup) if child.tag=="refiner": refiner = Refiner() refiner.id = child.findtext("id") refiner.color = child.findtext("color") refiner.name = child.findtext("name") refiner.stone = child.findtext("stone") refiner.order = child.findtext("order") refiner.desc = child.findtext("desc") refinerlist.append(refiner) if child.tag=="playerupdateinfo": updateinfo = PlayerUpdateInfo() updateinfo.kfzonestate = child.findtext("kfzonestate") refineInfo.playerupdateinfo = updateinfo refineInfo.refinergrouplist = refinergrouplist refineInfo.refinerList = refinerlist return refineInfo return None
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 getTrainGeneralInfo(self): url = "http://s%d.as.yaowan.com/root/general!getTrainGeneralInfo.action?%d" %(self.serverid,int(time.time()*1000)) reqinfo = self.request.request(url) res = zlib.decompress(reqinfo.read()) if res: if res.find("<?xml")<0: self.request.include.logger.warning(u"获取武将训练信息失败,重新请求...") time.sleep(2) return self.getTrainGeneralInfo() res = res[res.find("<?xml"):] infoXML = etree.XML(res) generalinfo = GeneralInfo() generallist = [] timemodellist = [] trainmodellist = [] for child in infoXML.getchildren(): if child.tag=="state": generalinfo.state = child.text if child.tag=="general": general = General() general.generalid = child.findtext("generalid") general.generallevel = int(child.findtext("generallevel")) general.trainflag = child.findtext("trainflag") general.generalexp = int(child.findtext("generalexp")) general.autogrow = int(child.findtext("autogrow")) general.nextlevelexp = child.findtext("nextlevelexp") general.generalname = child.findtext("generalname") general.pic = child.findtext("pic") general.shiftlv = int(child.findtext("shiftlv")) general.trainmodel = child.findtext("trainmodel") general.exppermin = child.findtext("exppermin") general.jyungong = child.findtext("jyungong") general.jyungongexp = child.findtext("jyungongexp") generallist.append(general) if child.tag=="timemodel": timemodel = TimeModel() timemodel.time = child.findtext("time") timemodel.cost = child.findtext("cost") timemodellist.append(timemodel) if child.tag=="trainmodel": trainmodel = TrainModel() trainmodel.times = child.findtext("times") trainmodel.name = child.findtext("name") trainmodel.cost = child.findtext("cost") trainmodellist.append(trainmodel) if child.tag=="currentnum": generalinfo.currentnum = child.text if child.tag=="maxnum": generalinfo.maxnum = child.text if child.tag=="cost": generalinfo.cost = child.text if child.tag=="cd": generalinfo.cd = int(child.text) if child.tag=="cdflag": generalinfo.cdflag = int(child.text) if child.tag=="goldguide": generalinfo.goldguide = child.text if child.tag=="tfnum": generalinfo.tfnum = child.text if child.tag=="generaldto": generaldto = GeneraldTo() generaldto.generalid = child.findtext("generalid") generaldto.generalname = child.findtext("generalname") generaldto.leader = child.findtext("leader") generaldto.forces = child.findtext("forces") generaldto.intelligence = child.findtext("intelligence") generaldto.enchantleader = child.findtext("enchantleader") generaldto.enchantforces = child.findtext("enchantforces") generaldto.enchantintelligence = child.findtext("enchantintelligence") generaldto.skillname = child.findtext("skillname") generaldto.skillintro = child.findtext("skillintro") generaldto.solidernum = child.findtext("solidernum") generaldto.maxsolidernum = child.findtext("maxsolidernum") generaldto.generalexp = child.findtext("generalexp") generaldto.generallevel = child.findtext("generallevel") generaldto.intro = child.findtext("intro") generaldto.nextlevelexp = child.findtext("nextlevelexp") generaldto.troopid = child.findtext("troopid") generaldto.trooptype = child.findtext("trooptype") generaldto.trooplevel = child.findtext("trooplevel") generaldto.troopstagename = child.findtext("troopstagtename") generaldto.trooptypename = child.findtext("trooptypename") generaldto.troopname = child.findtext("troopname") generaldto.troopintro = child.findtext("troopintro") generaldto.pic = child.findtext("pic") generaldto.online = child.findtext("online") generaldto.trainflag = child.findtext("trainflag") generalinfo.generaldto = generaldto if child.tag=="trainers": trainers = Trainers() trainerlist = [] for cchild in child.getchildren(): if cchild.tag=="wuhun": trainers.wuhun = int(cchild.text) if cchild.tag=="totalcost": trainers.totalcost = child.text if cchild.tag=="totalgoldcost": trainers.totalgoldcost = child.text if cchild.tag=="gold": trainers.gold = child.text if cchild.tag=="trainer": trainer = Trainer() trainer.trainerid = cchild.findtext("trainerid") trainer.name = cchild.findtext("name") trainer.whnum = int(cchild.findtext("whnum")) trainer.basictimes = cchild.findtext("basistimes") trainer.times = int(cchild.findtext("times")) trainer.lvlimit = cchild.findtext("lvlimit") trainer.effectintro = cchild.findtext("effectintro") trainer.intro = cchild.findtext("intro") trainer.pic = cchild.findtext("pic") trainerlist.append(trainer) trainers.trainerlist = trainerlist generalinfo.trainers = trainers if child.tag=="playerupdateinfo": updateinfo = PlayerUpdateInfo() updateinfo.traincurrentnum = child.findtext("traincurrentnum") updateinfo.maxtrainnum = child.findtext("maxtrainnum") updateinfo.kfzonestate = child.findtext("kfzonestate") generalinfo.playerupdateinfo = updateinfo generalinfo.generallist = generallist generalinfo.timemodellist = timemodellist generalinfo.trainmodelist = trainmodellist return generalinfo 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
def getSecretary(self): url = "http://s%d.as.yaowan.com/root/secretary.action?%d" %(self.serverid,int(time.time()*1000)) reqinfo = self.request.request(url) res = zlib.decompress(reqinfo.read()) #print 'secreatary res:',res if res: if res.find("<?xml")<0: self.request.include.logger.warning(u"获取秘书信息失败,重新请求...") time.sleep(2) return self.getSecretary() res = res[res.find("<?xml"):] #print 'secr res xml:',res infoXML = etree.XML(res) secretary = Secretary() for child in infoXML.getchildren(): if child.tag=="state": secretary.state = child.text if child.tag=="liid": secretary.liid = child.text if child.tag=="lin": secretary.lin = int(child.text) if child.tag=="ss": secretary.ss = int(child.text) if child.tag=="fp": secretary.fp = child.text if child.tag=="name": secretary.name = child.text if child.tag=="lv": secretary.lv = child.text if child.tag=="pic": secretary.pic = child.text if child.tag=="fun": secretary.fun = child.text if child.tag=="tasknum": secretary.tasknum = child.text if child.tag=="maxtokennum": secretary.maxtokennum = child.text if child.tag=="cd": secretary.cd = child.text if child.tag=="tokennum": secretary.tokennum = child.text if child.tag=="makenum": secretary.makenum = child.text if child.tag=="freer": secretary.freer = child.text if child.tag=="task": tasklist = [] for cchild in child.getchildren(): task = Task() if cchild.tag=="tid": task.tid = cchild.text if cchild.tag=="tname": task.tname = cchild.text if cchild.tag=="tstate": task.tstaet = cchild.text if cchild.tag=="cd": task.cd = cchild.text if cchild.tag=="num": task.num = cchild.text if cchild.tag=="name": task.name = cchild.text tasklist.append(task) secretary.tasklist = tasklist if child.tag=="playerupdateinfo": updateinfo = PlayerUpdateInfo() updateinfo.kfzonestate = child.findtext("kfzonestate") secretary.playerupdateinfo = updateinfo return secretary return None