def run(self): global FirstTime, Times logger.info('zengzanThread start') if Delay_Time > 0: logger.info('I will start zengzan at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) while True: ni = self.getNpcInfo() remain_times = ni.getNumber() if remain_times > 0: time.sleep(2) res = self.zengzan(Npc_String, remain_times + 100) if res.has_key('exception'): msg = res['exception']['message'] logger.info('zengzan exception: %s'%(msg)) if msg == 'waittingOrder': gi = GeneralInfo() sp = util.get_sleep_time(gi.get_mobility_CDTime(), gi.get_localTime()-gi.get_serverTime()) logger.info('I will sleep for mobility CD to %s'%(util.next_time(sp))) time.sleep(sp) FirstTime = True continue elif msg == 'lessMobility': return else: time.sleep(2) FirstTime = True continue nrt = util.get_next_refresh_time(ni.getServerTime()) sp = util.get_sleep_time(nrt, ni.getLocalTime()-ni.getServerTime()) + 1 logger.info('I will sleep till time %s'%(util.next_time(sp))) time.sleep(sp)
def run(self): logger.info('TaxThread start, will tax till remain %d times'%(Remain)) if Delay_Time > 0: logger.info('I will start tax at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) while True: gi = GeneralInfo() if gi.get_levy_remain() <= Remain: logger.info('Tax remain time is %d, will exit'%(gi.get_levy_remain())) return else: logger.info('Tax remain %d times'%(gi.get_levy_remain())) cd = gi.get_tax_CDTime() stime = gi.get_serverTime() if cd > stime: sp = cd - stime + 1 logger.info('I will sleep CD, will tax at %s'%(util.next_time(sp))) time.sleep(sp) else: time.sleep(1) res = self.do_tax() if res.has_key('exception'): logger.error('Got Exception "%s"'%(res['exception']['message'])) if 'beyondMaxSilver' == res['exception']['message']: if MaxSilverExit: return else: sp = 1800 logger.info('I will tax at %s'%(util.next_time(sp))) time.sleep(sp) continue time.sleep(60) time.sleep(1)
def run(self): logger.info('JianzhuThread start, will do %d times'%(Times)) #logger.info('I will jianzhu: ' + ' '.join(Jianzhu_List)) if Delay_Time > 0: logger.info('I will start jianzhu at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) inteval = 30 ci = 1 # old if Times > 0: while ci <= Times: for i in range(len(Jianzhu_List)): self.do_jianzhu(Jianzhu_List[i]) if i < len(Jianzhu_List) - 1: time.sleep(inteval) logger.info('sleeping %d seconds in %d time'%(Sleep_Time, ci)) logger.info('next round will at ' + util.next_time(Sleep_Time)) ci += 1 time.sleep(Sleep_Time) else: while True: # get general info gi = GeneralInfo() next_cd = gi.get_next_CDTime() stime = gi.get_serverTime() next_jname = self.get_next_jname(gi) sp = 0 if not next_jname: logger.info('I will send notify at server time: ' + util.next_time(gi.get_next_CDTime()-gi.get_serverTime())) time.sleep(max(0, gi.get_next_CDTime() - gi.get_serverTime())) logger.info('All jianzu has upgraded to max level, will exit') util.notify('All jianzu has upgraded to max level') break if next_cd > stime: sp = next_cd - stime + 1 if sp > 0: logger.info('I will start upgrade %s at %s'%(next_jname, util.next_time(sp))) time.sleep(sp) else: logger.info('I will start upgrade %s now'%(next_jname)) res = self.do_jianzhu(next_jname) if res.has_key('exception'): msg = res['exception']['message'] logger.error('Got Exception "%s", will exit'%(msg)) if msg == 'CDTimeNotCool': continue elif msg == 'noBuildTeamUsable': continue elif msg == 'maintenance': time.sleep(2000) continue return time.sleep(2)
def run(self): global local_server_diff logger.info('AttackThread start, will attack %d times'%(Times)) logger.info('I will attack peoples: ' + ' '.join(People_List)) if Delay_Time > 0: logger.info('I will start attack at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) user = People_List[0] uid = PEOPLE_ID[user] # get user info next_time = 0 ci = 1 uinfo = util.get_user(uid) protectTime = int(uinfo['protectTime']) serverTime = int(uinfo['serverTime']) sp = protectTime - serverTime + 1 logger.info('protectTime:%d'%(protectTime)) #if int(protectTime) == 0: if sp < 2: self.do_attack(user) time.sleep(1) uinfo = util.get_user(uid) protectTime = int(uinfo['protectTime']) serverTime = int(uinfo['serverTime']) sp = protectTime - serverTime + 1 ci += 1 #server_time, local_server_diff = util.sync_time() #sp = util.get_sleep_time(protectTime, local_server_diff) logger.info('Attacked %d time, next attack will start at %s'%(ci-1, util.next_time(sp))) time.sleep(sp) while ci <= Times: self.do_attack(user) if ci >= Times: logger.info('Attacked %d time, I will exit'%(ci)) break time.sleep(1) uinfo = util.get_user(uid) protectTime = int(uinfo['protectTime']) serverTime = int(uinfo['serverTime']) sp = protectTime - serverTime + 1 if sp < 2: logger.info('Not in protectTime after attack, will exit') break else: #sp = util.get_sleep_time(protectTime, local_server_diff) logger.info('Attacked %d time, I will sleep %d seconds for next attack'%(ci, sp)) if sp < 0: break time.sleep(sp) ci += 1
def run(self): logger.info('KejiThread start, will do %d times'%(Times)) #logger.info('I upgrade keji: ' + ' '.join(Kid_List)) if Delay_Time > 0: logger.info('I will start keji at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) inteval = 30 ci = 1 if Times > 0: while ci <= Times: for i in range(len(Kid_List)): self.do_keji(Kid_List[i]) if i < len(Kid_List) - 1: time.sleep(inteval) if ci == Times: break logger.info('sleeping %d seconds in %d time'%(Sleep_Time, ci)) logger.info('next round will at ' + util.next_time(Sleep_Time)) ci += 1 time.sleep(Sleep_Time) else: while True: # get general info gi = GeneralInfo() ki = KejiInfo() next_keji_cd = gi.get_next_keji_CDTime() stime = gi.get_serverTime() next_kname = self.get_next_kname(gi, ki) sp = 0 if not next_kname: logger.info('I will send notify at server time: ' + util.next_time(gi.get_next_keji_CDTime() - gi.get_serverTime())) time.sleep(gi.get_next_keji_CDTime() - gi.get_serverTime()) logger.info('All keji has upgraded to max level, will exit') util.notify('All keji has upgraded to max level') break if next_keji_cd > stime: sp = next_keji_cd - stime + 1 if sp > 0: logger.info('I will start upgrade %s at %s'%(next_kname, util.next_time(sp))) time.sleep(sp) else: logger.info('I will start upgrade %s now'%(next_kname)) res = self.do_keji(next_kname) if res.has_key('exception'): msg = res['exception']['message'] logger.error('Got Exception "%s", will exit'%(msg)) if msg == 'CDTimeNotCool': continue return time.sleep(2)
def run(self): logger.info('downgradeThread start, will downgrade %d times'%(Times)) if Delay_Time > 0: logger.info('I will start downgrade at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) if int(Eid) < 0: ei = EquipInfo() #logger.info('get %d equips'%(len(ei.get_equip_ids()))) for eid in ei.get_equip_ids(): level = ei.get_level_by_id(eid) star = ei.get_starLevel_by_id(eid) if level > star: logger.info('Downgrade equip %s'%(eid)) exception = "" for i in range(int(level)): res = self.do_downgrade(eid) if res.has_key('exception'): logger.info('got Exception %s'%(res['exception']['message'])) exception = res['exception']['message'] #sys.exit() break logger.info('Downgrade %d times'%(i+1)) time.sleep(2) if exception == 'beyondMaxSilver': logger.info('Exit for Exception %s'%(exception)) break else: for i in range(Times): res = self.do_downgrade(Eid) if res.has_key('exception'): logger.info('Exit for Exception %s'%(res['exception']['message'])) break logger.info('Downgrade %d times'%(i+1)) time.sleep(2)
def run(self): logger.info('UpgradeThread start, will upgrade %d times'%(Times)) if Delay_Time > 0: logger.info('I will start upgrade at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) ei = EquipInfo() magic = ei.get_magic_value() goldnum = ei.get_magic_needgold() def shengji(times): for i in range(times): time.sleep(2) if NeedGold: res = self.do_upgrade(Eid, magic, goldnum) else: res = self.do_upgrade(Eid, magic) if res.has_key('exception'): msg = res['exception']['message'] if msg == 'equipIsPiece': logger.info('exit for equipIsPiece') elif msg == 'maxEquipLevel': logger.info('exit for maxEquipLevel') elif msg == 'CDTimeNotCool': logger.info('exit for CDTimeNotCool') else: logger.info('exit for %s'%(res['exception']['message'])) raise Exception(msg) if Auto_Upgrade: try: logger.info('auto mode, upgrade 4 times') shengji(4) sp = 1205 logger.info('I will start upgrade 3 times at ' + util.next_time(sp)) time.sleep(sp) shengji(3) sp = 305 logger.info('I will start upgrade 2 times at ' + util.next_time(sp)) time.sleep(sp) shengji(2) except: return else: try: shengji(Times) except: return
def run(self): global g_previous_armyid logger.info('pozen Thread start, will pozen campaign %s'%(str(Campaign))) if Delay_Time > 0: logger.info('I will start pozen at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) #self.bianzhen('yanxing') time.sleep(2) for campaignid in Campaign: while True: try: #res = self.get_pozen_info(2) #print json.dumps(res, sort_keys = False, indent = 4) #return armyid = self.get_next_id(campaignid) if armyid is None: logger.info('pozen network error') time.sleep(2) continue elif armyid == -1: logger.info('pozen %d finished'%(campaignid)) break elif armyid == g_previous_armyid: logger.info('pozen %d falied, %d lose'%(campaignid, armyid)) return g_previous_armyid = armyid time.sleep(2) logger.info('pozen army %d'%(armyid)) res = self.do_pozen(armyid) if res.has_key('exception'): logger.error('Got Exception "%s"'%(res['exception']['message'])) if 'waittingOrder' == res['exception']['message']: gi = GeneralInfo() sp = util.get_sleep_time(gi.get_mobility_CDTime(), gi.get_localTime()-gi.get_serverTime()) logger.info('I will sleep for mobility CD to %s'%(util.next_time(sp))) time.sleep(sp) g_previous_armyid = 0 continue return time.sleep(2) except: logger.info(traceback.format_exc()) time.sleep(10)
def run(self): logger.info('weipai Thread start, will weipai type %s'%(Type)) if Delay_Time > 0: logger.info('I will start weipai at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) cnt = 1 while True: try: ml = self.get_max_level(Type) if int(ml) >= MaxLevel: msg = 'Weipai reach max level %s, TotalCost %d'%(ml, TotalCost) logger.info(msg) util.notify(msg) break logger.info('Type:%s MaxLevel:%s'%(Type, ml)) res = self.do_weipai(Type, ml) if res[0].has_key('exception'): msg = res[0]['exception']['message'] logger.info('got exception %s, TotalCost %d'%(msg, TotalCost)) if msg == 'CDTimeNotCool': gi = GeneralInfo() sp = gi.get_weipai_CDTime() - gi.get_serverTime() logger.info('Next round weipai will start at ' + util.next_time(sp)) time.sleep(sp) continue else: break try: eq = res[1]['resArr']['userEquip'] logger.info('Got Equip level=%s id=%s color=%s name=%s salePrice=%s maxPiece=%s currPiece=%s'%(ml, eq['id'], eq['type']['color'], eq['type']['name'], eq['type']['salePrice'], eq['maxPiece'], eq['currPiece'])) price = int(eq['type']['salePrice']) * int(eq['currPiece']) / int(eq['maxPiece']) if int(eq['type']['color']) <= SellColor: self.sell(eq['id'], price) else: logger.info('I will keep it') except: pass logger.info('finished %d time, TotalCost %d'%(cnt, TotalCost)) cnt += 1 time.sleep(2) except: logger.info(traceback.format_exc()) time.sleep(10)
def run(self): logger.info('jinglianThread %s start, will jinglian to level %d'%(Eid, Level)) if Delay_Time > 0: logger.info('I will start jinglian at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) level = 0 while level < Level: res = util.send_command('jinglianEquip', Eid) if res is not None: sp = 298 if res.has_key('exception'): msg = res['exception']['message'] if msg == 'upFail': logger.info('jinglian fail') elif msg == 'CDTimeNotCool': time.sleep(2) gi = GeneralInfo() cd = gi.get_jinglian_CDTime() stime = gi.get_serverTime() if cd > stime: sp = cd - stime + 1 logger.info('I will sleep CD to %s'%(util.next_time(sp))) time.sleep(sp) else: time.sleep(2) continue else: logger.info('got Exception %s, exit'%(msg)) sys.exit() else: level = int(res['userEquip']['starLevel']) logger.info('jinglian to level %d'%(level)) if level >= Level: sys.exit() sp = 2 logger.info('next round will start at ' + util.next_time(sp)) time.sleep(sp) else: sp = 2 logger.info('network error, will start at ' + util.next_time(sp)) time.sleep(sp)
def run(self): logger.info('BossThread start') if Delay_Time > 0: logger.info('I will start attack at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) gi = GeneralInfo() start_time = util.get_xiongsou_refresh_time(gi.get_serverTime()) ls_diff = gi.get_localTime() - gi.get_serverTime() sp = util.get_sleep_time(start_time, ls_diff) + 1 if sp > 0: logger.info('I will sleep till start time, will attack at %s'%(util.next_time(sp))) time.sleep(sp) else: time.sleep(2) times = 0 while True: times += 1 if times > Times: logger.info('already attack %d times, exit'%(Times)) break res = self.do_attack() if res.has_key('exception'): logger.error('Got Exception "%s"'%(res['exception']['message'])) if 'attackCoolTime' == res['exception']['message']: times -= 1 else: break logger.info('attacked %d times'%(times)) gi = GeneralInfo() cd = gi.get_xiongsou_CDTime() stime = gi.get_serverTime() if cd > stime: sp = cd - stime + 1 logger.info('I will sleep CD, will attack at %s'%(util.next_time(sp))) time.sleep(sp) else: time.sleep(2)
def run(self): logger.info("ZuduiThread start, will zudui %d times" % (Times)) logger.info("I will zudui armys: " + " ".join(Army_List)) if Delay_Time > 0: logger.info("I will start zudui at " + util.next_time(Delay_Time)) time.sleep(Delay_Time) inteval = 1 sp = Sleep_Time - inteval * (len(Army_List) - 1) ci = 1 while ci <= Times: for armyid in Army_List: self.do_zudui(armyid) time.sleep(inteval) if ci == Times: return tpsp = sp logger.info("sleeping %d seconds in %d time" % (tpsp, ci)) logger.info("next zudui will at " + util.next_time(tpsp)) ci += 1 if ci <= Times: time.sleep(tpsp)
def run(self): logger.info('TouziThread start') if Delay_Time > 0: logger.info('I will start touzi at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) times = 0 while True: try: gi = GeneralInfo() next_touzi_cd = gi.get_touzi_CDTime() stime = gi.get_serverTime() sp = 0 if next_touzi_cd > stime: sp = next_touzi_cd - stime + 1 if sp > 0: logger.info('I will start touzi %s at %s'%(CityName, util.next_time(sp))) time.sleep(sp) else: logger.info('I will start touzi %s now'%(CityName)) res = self.do_touzi() if res.has_key('exception'): msg = res['exception']['message'] logger.error('Got Exception "%s", will exit'%(msg)) if msg == 'CDTimeNotCool': continue elif msg == 'in invest CD': continue return times += 1 logger.info('Succeed touzi %d times'%(times)) except: import traceback logger.error(traceback.format_exc()) time.sleep(100)
def run(self): logger.info('EnforcelevyThread start, will do %d times'%(Times)) if Delay_Time > 0: logger.info('I will start enforcelevy at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) for i in range(Times): try: res = self.do_enforcelevy() if res.has_key('exception'): logger.error('Got Exception "%s"'%(res['exception']['message'])) return logger.info('qiangzeng %d times'%(i+1)) time.sleep(2) except: pass
def run(self): logger.info('TaskThread start') if Delay_Time > 0: logger.info('I will start task at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) task_list = self.get_task_list() #print json.dumps(task_list['eventInfos'], sort_keys = False, indent = 4) fcount = 0 for ei in task_list['eventInfos']: if ei['isfinish']: time.sleep(2) self.task_reward(ei) fcount += 1 if fcount == 0: logger.info('No finish tasks, exit')
def run(self): logger.info('suapaiming start, will upgrade %d times'%(Times)) if Delay_Time > 0: logger.info('I will start suapaiming at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) while True: ei = EquipInfo() magic = ei.get_magic_value() logger.info('magic is %d'%(magic)) if magic > 77: goldnum = ei.get_magic_needgold() res = self.do_upgrade(Eid, magic) self.do_degrade(Eid) time.sleep(278) else: time.sleep(598)
def run(self): logger.info('Tufei Thread start, will tufei %s %d times'%(Hero, Times)) if Delay_Time > 0: logger.info('I will start tufei at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) sp = 598 cnt = 1 while True: try: idx = (cnt-1) % len(Hero) self.do_tufei(Hero[idx]) logger.info('sleeping %d seconds in %d time'%(sp, cnt)) if cnt >= Times: return cnt += 1 time.sleep(sp) except: logger.info(traceback.format_exc()) time.sleep(sp)
def run(self): global Times logger.info('tttThread start') if Delay_Time > 0: logger.info('I will start ttt at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) t = 0 while True: time.sleep(3) res = self.do_ttt() if res['result'] == 2: t += 1 if t >= Times: #time.sleep(3) #self.bianzhen('yanxing') logger.info('ttt exit') sys.exit() rem = (t / ChangeFormationGap) % len(Formations) if self.formation != rem: time.sleep(3) self.bianzhen(Formations[rem]) self.formation = rem
def run(self): while True: try: hlist = self.get_husong_list() serverTime = int(hlist['serverTime']) maxBlockTimes = int(hlist['userConvoyStatus']['maxBlockTimes']) blockTimes = int(hlist['userConvoyStatus']['blockTimes']) logger.info('blockTimes %d, maxBlockTimes %d'%(blockTimes, maxBlockTimes)) if blockTimes >= maxBlockTimes: logger.info('Reach maxBlockTimes %d, will exit'%(maxBlockTimes)) return find = self.find_lanjie_target(hlist['userConvoyStatus']['viewOtherConvoy'], serverTime) time.sleep(4) if find is not None: res = self.do_lanjie(find) # get suaxin cd gi = GeneralInfo() lanjiecd = max( gi.get_husong_suaxin_CDTime(), gi.get_block_CDTime() ) if lanjiecd <> 0: sp = lanjiecd - gi.get_serverTime() + 1 sp = max(sp , 0) logger.info('sleep cd, will start at %s'%(util.next_time(sp))) time.sleep(sp) else: time.sleep(2) # suaxin logger.info('suaxin husong list') self.suaxin_husong_list() time.sleep(2) except: logger.error(traceback.format_exc()) time.sleep(1200)
def run(self): logger.info("weipai Thread start, will weipai type %s" % (Type)) if Delay_Time > 0: logger.info("I will start weipai at " + util.next_time(Delay_Time)) time.sleep(Delay_Time) cnt = 1 first_time = True rc = RoundControl() while True: try: ml = self.get_max_level(Type) if first_time: first_time = False else: if int(ml) >= MaxLevel: msg = "Weipai reach max level %s, TotalCost %d" % (ml, TotalCost) logger.info(msg) util.notify(msg) break logger.info("Type:%s MaxLevel:%s" % (Type, ml)) if not rc.can_continue(ml): rc.reset() gi = GeneralInfo() sp = gi.get_weipai_CDTime() - gi.get_serverTime() - 15 logger.info("Break by RoundControl, Next round weipai will start at " + util.next_time(sp)) time.sleep(sp) continue res = self.do_weipai(Type, ml) # res = util.send_command('weipai', Type, ml) if res[0].has_key("exception"): msg = res[0]["exception"]["message"] logger.info("got exception %s, TotalCost %d" % (msg, TotalCost)) if msg == "CDTimeNotCool": gi = GeneralInfo() sp = max(gi.get_weipai_CDTime() - gi.get_serverTime(), 0) logger.info("Next round weipai will start at " + util.next_time(sp)) time.sleep(sp) continue elif msg == "maintenance": logger.info("Got Exception %s" % (msg)) sp = 3600 logger.info("Next round weipai will start at " + util.next_time(sp)) time.sleep(sp) continue else: logger.info("Exit for Exception %s" % (msg)) break try: eq = res[1]["resArr"]["userEquip"] logger.info( "Got Equip level=%s id=%s color=%s name=%s salePrice=%s maxPiece=%s currPiece=%s" % ( ml, eq["id"], eq["type"]["color"], eq["type"]["name"], eq["type"]["salePrice"], eq["maxPiece"], eq["currPiece"], ) ) price = int(eq["type"]["salePrice"]) * int(eq["currPiece"]) / int(eq["maxPiece"]) if int(eq["type"]["color"]) <= SellColor: self.sell(eq["id"], price) else: if int(eq["type"]["color"]) > 5: msg = "Got Equip %s %s/%s, TotalCost %d" % ( eq["type"]["name"], eq["currPiece"], eq["maxPiece"], TotalCost, ) logger.info(msg) util.notify(msg) else: logger.info("I will keep it") except: pass logger.info("finished %d time, TotalCost %d" % (cnt, TotalCost)) cnt += 1 time.sleep(2) except: logger.info(traceback.format_exc()) time.sleep(10)
def run(self): logger.info('WashPointThread start, hero is %s'%(Hero)) if Hero is None: return if not UID.has_key(Hero): logger.error('can not found %s in UID'%(Hero)) return if not INIT_POINT.has_key(Hero): logger.error('can not found %s in INIT_POINT'%(Hero)) return if Delay_Time > 0: logger.info('I will start training at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) print_old_point = True fields_num = 3 times = 0 accepted = False while True: try: wash_res = util.send_command('washHero', Hero) if wash_res.has_key('exception'): exp = wash_res['exception']['message'] if exp == 'previousChangPointNotFinish': accepted = False if accepted: flag = 'Accept' else: flag = 'Refuse' logger.info('Repost[%s]'%(flag)) time.sleep(2) if accepted: util.send_command('acceptWash', Hero) else: util.send_command('refuseWash', Hero) time.sleep(2) continue logger.error('Got exception %s, exit'%(exp)) return times += 1 hero = wash_res['hero'] oldfs = [int(hero[i]) for i in fields] oldfs = [oldfs[i]-INIT_POINT[Hero][i] for i in range(fields_num)] oldmean = self.get_harmonic_mean(oldfs) tmpfs = [int(hero[i]) for i in temp_fields] tmpfs = [tmpfs[i]-INIT_POINT[Hero][i] for i in range(fields_num)] tmpmean = self.get_harmonic_mean(tmpfs) if print_old_point: msg = ['%s=%d'%(fields[i], oldfs[i]) for i in range(fields_num)] msg.append('mean=%.4f'%(oldmean)) msg = ', '.join(msg) logger.info(msg) msg = ['%s=%d'%(temp_fields[i], tmpfs[i]) for i in range(fields_num)] msg.append('mean=%.4f'%(tmpmean)) msg = ', '.join(msg) accepted = False if tmpmean >= oldmean: accepted = True # lower limit check for i in range(fields_num): if tmpfs[i] < Lower_Limit[i]: accepted = False break if accepted: msg = '[Accept][' + str(times) + '] ' + msg else: msg = '[Refuse][' + str(times) + '] ' + msg logger.info(msg) curmean = 50 if accepted: time.sleep(3) util.send_command('acceptWash', Hero) print_old_point = True curmean = tmpmean else: time.sleep(2) util.send_command('refuseWash', Hero) print_old_point = False curmean = oldmean if curmean >= Max_Mean: logger.info('current mean is %.4f, will exit', curmean) return time.sleep(2) except: logger.error(traceback.format_exc()) time.sleep(2)
def run(self): global Max_Level logger.info('TrainingThread start, Max_Level is %d'%(Max_Level)) logger.info('I will training heroes: ' + ' '.join(Hero_List)) if Delay_Time > 0: logger.info('I will start training at ' + util.next_time(Delay_Time)) time.sleep(Delay_Time) inteval = 100 sp = 7200 - (len(Hero_List)-1) * inteval + 2 * len(Hero_List) cnt = 1 while True: tpsp = sp for i in range(len(Hero_List)): self.do_training(Hero_List[i]) try: # get hero info hid = UID[Hero_List[i]] hi = HeroInfo() level = int(hi.get_level_by_id(hid)) next_rebirth_level = int(hi.get_nextrebirthlevel_by_id(hid)) name = hi.get_name_by_id(hid) trainingEndTime = int(hi.get_trainingEndTime_by_id(hid)) nextUpgrade = int(hi.get_nextUpgrade_by_id(hid)) serverTime = int(hi.data['serverTime']) localTime = hi.local_time max_level = Max_Level if max_level <= 0 : max_level = next_rebirth_level if level >= int(hi.get_maxLevel_by_id(hid)): msg = 'Hero %s already reach maxLevel %d, will exit'%(name, level) logger.info(msg) util.notify(msg) return if level >= max_level: if Auto_Rebirth: self.rebirth(Hero_List[i]) msg = 'Hero %s already reach maxLevel %d, will rebirth'%(name, level) logger.info(msg) util.notify(msg) else: msg = 'Hero %s already reach maxLevel %d, will exit'%(name, level) logger.info(msg) util.notify(msg) return else: total_exp = 0 for l in range(level, max_level): total_exp += get_time_by_level(l) total_exp -= hi.calc_cur_exp_by_id(hid) exp_speed = hi.get_exp_speed_by_id(hid) army = int(hi.get_currUnit_by_id(hid)) t = total_exp / float(exp_speed) msg = 'Hero %s current level %d, army %d, max level %d, '%(name, level, army, max_level) if t > 24: d = int(t / 24) h = t - 24 * d msg = msg + 'still need %d days %.1f hours'%(d, h) else: msg = msg + 'still need %.1f hours'%(t) logger.info(msg) if level == max_level - 1: if trainingEndTime > nextUpgrade: logger.info('Hero %s will reach level %d in the end of this round'%(name, max_level)) sp = util.get_sleep_time(nextUpgrade, localTime-serverTime) time.sleep(sp) if Auto_Rebirth: self.rebirth(Hero_List[i]) msg = 'Hero %s already reach maxLevel %d, do rebirth'%(name, level+1) logger.info(msg) util.notify(msg) else: msg = 'Hero %s already reach maxLevel %d'%(name, level+1) logger.info(msg) util.notify(msg) tpsp = trainingEndTime - nextUpgrade + 1 continue tpsp = trainingEndTime - serverTime + 1 except: logger.error(traceback.format_exc()) if i < len(Hero_List) - 1: time.sleep(inteval) logger.info('sleeping %d seconds in %d time'%(tpsp, cnt)) logger.info('next round will start at ' + util.next_time(tpsp)) cnt += 1 time.sleep(max(tpsp, 0))