Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
 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)
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
 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)
Exemplo n.º 10
0
 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)
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
    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
Exemplo n.º 15
0
 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')
Exemplo n.º 16
0
 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)
Exemplo n.º 17
0
 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)
Exemplo n.º 18
0
 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
Exemplo n.º 19
0
    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)
Exemplo n.º 20
0
 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)
Exemplo n.º 21
0
 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)
Exemplo n.º 22
0
 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))