Ejemplo n.º 1
0
 def message(self):
     """ 获取需要的信息 """
     #获取对应等级范围内对应玩家的id
     while not self.stoped:
         self.mapid_pos = {}
         self.levels_players = {}
         for levels in self.LEVELS.itervalues():
             cols = ['pos', 'mapId', 'id']
             players = PlayerData.get_level_pvalue(levels[0], levels[1], cols, 100)
             if not players:
                 continue
             while players:
                 player = random.choice(players)
                 players.remove(player)
                 levels_players = self.levels_players.setdefault(tuple(levels), [])
                 levels_players.append(player)
                 if self.COUNT < len(levels_players):
                     break
                 p_pos = player['pos']
                 mid = player['mapId']
                 pid = player['id']
                 poses = self.mapid_pos.setdefault(mid, [[],[]])
                 if p_pos and p_pos not in poses[PLAYER_POS_INDEX]:
                     poses[PLAYER_POS_INDEX].append(p_pos)
                 self._get_npc_pos(mid, pid, poses)
         sleep(10*60)
Ejemplo n.º 2
0
 def _w_boos(self):
     """ 世界boos开启提前广播(判断时间是否到达) """
     res_starts = self.fetch_start_time
     while 1:
         min_sec = 0
         common.current_time()
         now_sec = self.get_today_seconds
         time_keys = res_starts.keys()
         time_keys.sort()
         for start_sec, res_blid in res_starts.iteritems():
             if self.w_start_boss:
                 continue
             boss_id = self.w_bosses[res_blid]
             #setting表的改动后建立新的boss数据
             if boss_id:
                 w_boss = self.bosses.get(boss_id)
             else:
                 w_boss = self._new_world_boss(res_blid)
             l_sec = start_sec - now_sec
             rs, data = w_boss.handle_start_time(l_sec, min_sec)
             w_boss.set_start_type(time_keys.index(start_sec))
             if rs:
                 w_boss.start(data)
                 self.w_start_boss = w_boss
             else:
                 min_sec = data
         #还有多久通知min_sec
         if min_sec <= 0:
             min_sec = self.fetch_notice_start
         sleep(min_sec)
Ejemplo n.º 3
0
    def del_expire_mail(self):
        """
        每日凌晨4点删除过期的邮件
        """
        four = cur_day_hour_time(4)
        ct = current_time()
        sleep_time = four-ct if ct<four else MailMgr.SLEEP_TIME-(ct-four)
        log.info("del_expire_mail sleep %s times", sleep_time)
        sleep(sleep_time)
        store = Game.rpc_store
        while 1:
            #计算段数
            limit = MailMgr.LIMIT
            a_n = store.count(Mail.TABLE_NAME, {'_id':{FOP_NE:0}})
            u_n = a_n/limit+1 if a_n%limit else a_n/limit
            sections = [i for i in xrange(u_n)]
            sections.append(u_n)
            sections.sort(reverse=True)

            ct = current_time()
            onls = Game.rpc_player_mgr.get_online_ids()
            del_time = ct - MailMgr.EXPIRE_TIME
            querys = {'pid':{FOP_NIN:onls}, 'ct':{FOP_LTE:del_time}}
            for section in sections:
                mails = store.query_loads(Mail.TABLE_NAME, querys=querys, limit=limit, skip=section*limit)
                for m_d in mails:
                    self._del_mail(m_d, store)
            sleep(MailMgr.SLEEP_TIME)
Ejemplo n.º 4
0
def day_sign(player):
    print "^"*70
    test_init(player)
    test_sign(player)
    print "v"*70
    from corelib import sleep
    sleep(200)
Ejemplo n.º 5
0
    def start(self):
        self.stoped = False
        self.svr = grpc.RpcServer()
        self.svr.bind(self.addr)
        self.svr.register(self)
        self.svr.start()

        # 用来阻塞住主协程
        self._waiter = gevent.event.Event()
        self._waiter_stoped = gevent.event.Event()
        try:
            while 1:
                #检查父进程是否已经关闭
                if not self._exist_pid():
                    self._wait_game_stop()
                    log.warn(u'主进程(%s)已经退出,子进程(%s)将自动关闭', self.pid, os.getpid())
                    os.environ['PARENT_STOPED'] = '1'
                    break
                try:
                    if self._waiter.wait(2):
                        break
                except KeyboardInterrupt:
                    pass
        except Exception as e:
            log.info('subgame app error:%s', e)
        try:
            self._stop()
        finally:
            self._waiter_stoped.set()
        sleep(2)
        self._svr_stop()
        sleep(0.5)
Ejemplo n.º 6
0
 def _loop(self, aFinishSitTime=0):
     """ 按规定时间每一段时间获得一段经验
         aFinishSitTime 为零时表示开始打坐
         不为零 表示已打坐的时间
      """
     tPerTime = self.fetch_exppre_time
     is_online = aFinishSitTime
     while self.is_sit:
         aFinishSitTime += tPerTime
         if aFinishSitTime > self.fetch_time_max:
             self.stop_sit()
             break
         if is_online:
             #上线打坐时算出第一次到达60s剩余的描述
             sleep(tPerTime - aFinishSitTime % tPerTime)
             is_online = False
         else:
             sleep(tPerTime)
             #在线每两分钟的广播
             self._sit_time += 60
             if self._sit_time / 60 % 2 == 0:
                 self.player.pub(MSG_SIT_PER, 2)
         #服务端检测位置是否发生变化
         if self.start_sit_pos and self.start_sit_pos != self.player.data.pos:
             log.debug('start_sit_pos = %s, change_pos = %s', self.start_sit_pos, self.player.data.pos)
             self.stop_sit()
             break
         self.add_sit_exp()
Ejemplo n.º 7
0
 def _sys_test(self):
     """ 发送测试用系统消息 """
     if not Game.instance:
         return
     while 1:
         sleep(10)
         self.sys_send(u'测试用系统消息(%s)\n' % datetime.datetime.now())# * 9999)
Ejemplo n.º 8
0
    def run(self):
        import game
        game.init(self)
        sys.modules['app'] = self
        self.names = None #subgame names
        self.sub_mgr = subgame.SubGameMgr(self)
        self.sub_mgr.start()
        self.rpc_svr.bind(self.admin_addr)
        self.rpc_svr.register(self)
        self.rpc_svr.start()

        self._init_web()
        self.web_svr.start()
        log.info('app started')
        while 1:
            try:
                self._waiter.wait()
                break
            except KeyboardInterrupt:
                log.info('app stoped:KeyboardInterrupt')
            except SystemExit:
                log.info('app stoped:SystemExit')
            except:
                log.log_except()
                break
            log.info('spawn app stop')
            spawn(self.stop)
            sleep(0.2)
        cmd = ' '.join(map(str, [sys.executable,] + sys.argv))
        log.info('*****app(%s) stoped', cmd)
        self.stop()

        #守护进程方式,重启服务
        if self.restarted and hasattr(self, 'daemon_runner'):
            self.daemon_runner.domain_restart()
Ejemplo n.º 9
0
def test3(host, port):
    """ 物品合成测试 """
    addr = (host, int(port))
    #name, pwd, UDID, DT = 'abc1', 'abc1', "ABC", "ABC"
    #name, pwd, UDID, DT = '15467203', '', "2e745448eddfecae048f2230123cb51c", "9117f7216960f32d435dfca2685dae2a"
    name, pwd, UDID, DT = '15631365', '', "9236ecaad32f4081533b469232f70037", "7156e592284b695b82ed98dc44bad61d"
    #用户登录
    player = login(addr, name, pwd, UDID, DT, name)
    #武器升级测试(测试大于一定等级时取回技能)
    #test_arm(player, 1)
    #player.game_master.clear_player()
    #时光盒
    #tbox_test(player)

    #world_boss_notice(player)

    #world_boss_teset(player)

    #awar_test1(player)

    #awar_test2(player)

    awar_test4(player)


    sleep(1)
    player.logout()
    sleep(0.2)
    player.client.close()
Ejemplo n.º 10
0
 def _check_loop(self):
     """ 检查 """
     pass_time = 60
     while 1:
         spawn(self._check_set)
         sleep(pass_time)
         self._log_info(pass_time)
Ejemplo n.º 11
0
 def _copy_reward(self):
     """ 击打隐分身最终的大奖励 """
     res_strong_map = Game.res_mgr.awar_strong_maps.get(self.war_node)
     for pid in self.war_data.war_pids:
         rpc_player = Game.rpc_player_mgr.get_rpc_player(pid)
         rpc_player.awar_copy_reward(res_strong_map.rid)
     sleep(2)
Ejemplo n.º 12
0
 def loop(self):
     """ 处理bot """
     while not self.stoped:
         times = random.randint(self.TIMES/2, self.TIMES)
         sleep(times)
         for bot in self.bots.values():
             bot.update()
             sleep(1)
Ejemplo n.º 13
0
 def manage_loop(self, msgs, times, interval):
     while not self.stoped:
         #log.debug('manage_loop :%s %s', times, interval)
         if times <= 0:
             break
         times -= 1
         self.send(msgs)
         sleep(interval)
Ejemplo n.º 14
0
 def _on_client_accept(self, sock, addr):
     """ 处理玩家登陆请求 """
     log.debug(u'client发起连接(%s)', addr)
     _rpc = ClientRpc(sock, addr, self)
     _rpc.call_link_rpc = True
     _rpc.start()
     sleep(120)
     _rpc.stop()#该链接只用于登录接口,之后断开
Ejemplo n.º 15
0
 def _loop(self):
     """ 管理游戏逻辑进程,维持合理的进程数量 """
     while not self.stoped:
         try:
             self._check_apps()
             self.logic_mgr.check()
         except:
             log.log_except()
         sleep(10)
Ejemplo n.º 16
0
 def _move(self, pids):
     """ 移动 """
     while True:
         for pid in pids:
             #npc_pos = self.rfeatch_pos(NPC_POS_INDEX)
             pos = self.get_ran_pos()
             self.player_move(pid, pos)
             sleep(0.5)
         sleep(10)
Ejemplo n.º 17
0
def test_m_social1(player1):
    #test_socialGetInfo(player1, 1, 1)
    #test_socialEnter(player1)
    #test_addFriend(player1, 2518)
    #test_delFriend(player1, 2518)
    #test_addBlack(player1, 2518)
    #test_delBlack(player1, 2518)
    from corelib import sleep
    sleep(200)
Ejemplo n.º 18
0
 def _loop_war(self):
     """ 开战计时 """
     while 1:
         now_time = common.current_time()
         use_time = now_time - self.war_data.stime
         if use_time > self.war_per_config.wtime + self.boat.gtime:
             self.war_result_borad(ALLY_WAR_FAIL_TIME)
             break
         sleep(1)
Ejemplo n.º 19
0
 def _loop(self):
     while 1:
         sleep(config.report_times)
         try:
             self.update_report()
         except socket.error as err:
             log.warn('socket error:%s', err)
         except:
             log.log_except()
Ejemplo n.º 20
0
 def _gc_big(self):
     """ 大数据优化 """
     slice_count = 200
     keys = self._times.keys()
     while keys:
         sub_keys, keys = keys[:slice_count], keys[slice_count:]
         times = [(self._times[key], key) for key in sub_keys if key in self._times]
         self._gc_simple(times)
         sleep(0.02)
Ejemplo n.º 21
0
 def player_logon(self, pid):
     """ 玩家登陆,检测boss战是否已开启 并广播 """
     sleep(10)
     if self.w_start_boss:
         self.w_start_boss.p_logon(pids=[pid])
     aid = Game.rpc_ally_mgr.get_aid_by_pid(pid)
     if aid and aid in self.notices:
         boss_id = self.a_bosses.get(aid)
         a_boss = self.bosses.get(boss_id)
         a_boss.p_logon(pids=[pid])
Ejemplo n.º 22
0
 def _gc_big(self):
     """ 大数据优化 """
     slice_count = 200
     keys = self._times.keys()
     while keys:
         sub_keys, keys = keys[:slice_count], keys[slice_count:]
         times = [(self._times[key], key) for key in sub_keys
                  if key in self._times]
         self._gc_simple(times)
         sleep(0.02)
Ejemplo n.º 23
0
 def player_logon(self, pid):
     """ 玩家登陆,检测boss战是否已开启 并广播 """
     sleep(10)
     if self.w_start_boss:
         self.w_start_boss.p_logon(pids=[pid])
     aid = Game.rpc_ally_mgr.get_aid_by_pid(pid)
     if aid and aid in self.notices:
         boss_id = self.a_bosses.get(aid)
         a_boss = self.bosses.get(boss_id)
         a_boss.p_logon(pids=[pid])
Ejemplo n.º 24
0
def testMining(player):
    test_mining_enter(player)
    #test_mining_once(player)
    #test_mining_batch(player)
    #test_mining_vip_once(player)
    #test_mining_vip_batch(player)
    #test_mining_free_once(player)
    #test_mining_free_batch(player)
    from corelib import sleep
    sleep(320)
Ejemplo n.º 25
0
 def _wait_game_stop(self):
     """ 功能进程,需等待逻辑进程全部关闭 """
     from game import Game
     if Game.instance is not None:
         return
     with Timeout.start_new(60*1):
         while 1:
             if not len(Game.valid_games()):
                 break
             sleep(0.2)
Ejemplo n.º 26
0
def test_deep(player):
    log(player.deep.enter(0))
    #print player.deep.auto()
    #sleep(100)
    #log(player.deep.fight(1))
    #log(player.deep.enter(1))
    #log(player.deep.box())
    #log(player.deep.enter(0))
    from corelib import sleep
    sleep(200)
Ejemplo n.º 27
0
def test_copy(host, port):
    """ 第一章所有任务完成累计经验的测试 """
    addr = (host, int(port))
    name, pwd, UDID, DT = 'ab10', 'abc1', "ABC", "ABC"
    #用户登录
    player = login(addr, name, pwd, UDID, DT, name)
    sleep(1)
    player.logout()
    sleep(22)
    player.client.close()
Ejemplo n.º 28
0
def test_task(player):
    player.tasks.tasks = []
    player.game_master.accept_tasks()
    for i in xrange(5):
        sleep(0.5)
        if not player.tasks.tasks:
            continue
        task = player.tasks.tasks[0]
        player.tasks.complete(task['id'])
        return
Ejemplo n.º 29
0
 def loop(self):
     """ 定时获取排名数据 """
     level_rank = RankData()
     cbe_rank = RankData()
     while 1:
         level_rank.init()
         cbe_rank.init()
         spawn(self.loop_data, level_rank, cbe_rank)
         spawn(self.save)
         sleep(RESET_LOAD_TIME)
Ejemplo n.º 30
0
 def auto_choose_node(self):
     """ 时间到自动选择路线 """
     n = 0
     while not self.is_choose:
         sleep(1)
         n += 1
         if n > self.fetch_choose_time :
             log.debug('time out !! %s, %s, %s', self.room.pids, self.is_choose, n)
             war_node = self.group.auto_choose(self.war_node)
             self.choose_node(war_node, NODE_TYPE_MONSTER)
             break
Ejemplo n.º 31
0
 def _loop(self):
     import app
     game = Game.instance
     while not app.stoped:
         sleep(self.BROADCAST_TIMES)
         if game and not game.stoped:
             self.all_ids = set(game.player_mgr.players.keys())
         try:
             self.broadcast()
         except:
             log.log_except()
Ejemplo n.º 32
0
 def _test_boss(name):
     print 'name --- %s', name
     player = enter(name, host, port)
     player.valid_gm()
     log.debug(u'玩家(%s)进入', name)
     while 1:
         player.boss.boss_enter()
         player.boss.boss_start()
         hurt = random.choice(hit_hp)
         player.boss.boss_finish(hurt)
         sleep(10)
Ejemplo n.º 33
0
 def _loop(self):
     import app
     game = Game.instance
     while not app.stoped:
         sleep(self.BROADCAST_TIMES)
         if game and not game.stoped:
             self.all_ids = set(game.player_mgr.players.keys())
         try:
             self.broadcast()
         except:
             log.log_except()
Ejemplo n.º 34
0
 def _clear_sit(self):
     """ 清楚打坐状态 """
     if not self.sit_pids:
         return
     for pid in self.sit_pids:
         if pid not in self.bot_mgr.player_infos:
             continue
         base_info = self.bot_mgr.player_infos[pid]
         base_info[IF_IDX_STATE] = STATE_NORMAL
         self.update_item(pid, base_info)
     self.sit_pids = []
     sleep(1)
Ejemplo n.º 35
0
def test2(host, port):
    addr = (host, int(port))
    name, pwd, UDID, DT = 'abc2', 'abc1', "ABC", "ABC"
    #用户登陆
    player = login(addr, name, pwd, UDID, DT, name)
    print '-------------'

    #装备等级转移的测试
    #equip_move_test(player)

    #合并命格
    #merge_fate_test(player, 0)

    #猎命测试
    #hit_fate_test(player, 1, isBatch=0)

    #祭天测试
    #fete_test(player, 2)

    #兵符任务测试
    #bf_task_test(player)

    #物品合成
    #merge_items_test(player)

    #时光盒
    #tbox_test(player)

    #打坐测试
    #sit_test(player)

    #boss战
    #同盟
    #ally_boss_test(player)
    #世界
    #world_boss_teset(player)

    #world_boss_notice(player)
    import rank
    rs = rank.test_rankEnter(player, 5, 1)
    print 'rs----rank --- %s', rs

    #player.game_master.reward(100002)

    #获取玩家物品
    #print '-------------'
    #playIlist = player.bag.bag_get_ilist()
    #print playIlist
    sleep(100)
    #sleep(1)
    player.logout()
    sleep(0.2)
    player.client.close()
Ejemplo n.º 36
0
def sit_test(player):
    """ 打坐测试 """
    #上线获取打坐数据
    rs = player.sit.online_sit()
    print "online_sit-rs -------------", rs
    #开始打坐
    player.sit.stop_sit()
    rs = player.sit.start_sit()
    print "start_sit-rs -------------", rs
    sleep(21)
    #rs = player.sit.stop_sit()
    print 'stop_sit-rs -------------', rs
Ejemplo n.º 37
0
def add_exps(host, port):
    """ 第一章所有任务完成累计经验的测试 """
    addr = (host, int(port))
    name, pwd, UDID, DT = 'ab10', 'abc1', "ABC", "ABC"
    #用户登录
    player = login(addr, name, pwd, UDID, DT, name)

    test_tasks(player)
    sleep(1)
    player.logout()
    sleep(0.2)
    player.client.close()
Ejemplo n.º 38
0
def sit_test(player):
    """ 打坐测试 """
    #上线获取打坐数据
    rs = player.sit.online_sit()
    print "online_sit-rs -------------", rs
    #开始打坐
    player.sit.stop_sit()
    rs = player.sit.start_sit()
    print "start_sit-rs -------------", rs
    sleep(21)
    #rs = player.sit.stop_sit()
    print 'stop_sit-rs -------------', rs
Ejemplo n.º 39
0
def _cmd_test_notify(app, *args):
    from corelib import sleep
    from webapi.notify import NotifyServer
    import config
    pem_data = """eJxtVsmyq0iS3fMVucfSBAgktKhFBPMo5mnHPM8CJH19c9/Lzs6qaswwwtwDj4O7n+P8+ed5QU6Q9D8YznIkXmKAw/0Y/0Q0SeKLL8NAIS/BIUFQSpI1xGn0kW9vZj1YM5SVMZKqPdWByfHQBEcZhW/mC2RY6h4CQeiAznM0Szs4M2Q901RYMMFUhGtkQznptU2zj0Mpf/lUltH/1xckV3lFIjGbIsEtLcEjIv+9p4L3kXi5SwQei/3Hln55TuMkAeAuB47jbgbwSM79HvH4JIJ1RWLf6iTO6rLeW5Mr7NIa2megKhO6PRm00iS8z7nuY1//bashzAJrPE+fMrE9ELFKdc3RDt0BH411ce2rHf4vm/nvtgZeNIs8RBAqTCT1dWR8VMGECDCPZ0g8XuoQvbMPdYvEaQ0J8v38AuonSRBomtbyRyq8O4mHn4Sw8PBqTQlBlrb7cJDTiKdEWbo/UPuuiQLtJgn6ntgUkQbplvfWLRH07R9JVs8kc/o30l3PChGtiRjNXA/mt1PgDlmyz7ICW/rPEsKzhGxZcgZgT785Muf6/ATltT/72B6HdFFum644m630DFBTKNv2AFW04C710j0qcxr9RTZvt9BnOluV74uMTRjyjCZJSB7S3PoNj8Ji7Om3OObV1/xUr0oBGVOMD2UiM2dbykW889/KazMIdYOV8KGYER6vKyz6qHIWN34sN1HtD86dS0v/Huy4sqHqgm4WPQLtQvi9M8kzW3MHzl0raZS6QUZyeYeHh95ufk0QyXvpaJ/Cg6+myAbzpHdYxTBVJu0W2JEEUt50ApF6vzNZv21iB24tElhNNYejB5+TDcyPmRFTlCoiGcp6bnTGhaGnPVy2CCyomxmjAKdnjj4xYPqX2/tz7xAhZKo0CSYq3h9+SNKsDp8J4zLg4ACInwzI3aMsxUqD2E87Z2xp+hA6c4R7XMgNAHkM8cvjcHT57H1xntD/xTLR0jjQAKBB+teL0mGGGowBL5UDf/TTq6rKGv0uyLZHop96tqc8rye1IXuc/WBhJTzXsPmpt3SUBS0w9izYUnINCZMHDgPp8z6OUEKUIzwbxBVPHTjKJNTKRP8h0xT6VHNS9oc8WCx037M7u3Swpujs1jA4CSjIlCTwG5Lb8AgDGTufVXrV8cT3zs18ExLekZ0bQsItEyIsM6HqJNEaI58sw1+UPgP5P3pgw+/PxkjgPxEDsSiQX+kHVklvlifJTnv3Wxc+cI/qH9646z/RIL/giCfUM+IPit8v/pcGHGnPN+e6+etALPLxLhmsL6I2p36V5QLLH71LGWCFWSxaWMqOu3rNrifFq98SRjUJge2/4XtNaNOHcxIQOTNeQC48LBYyI8eUxhjSfwcg/qlU/xHoL5TI3zB7Hj8Ttad9dyb0cc0I6xMS3BaewqmB9XcTHeapi5JYssD51Su2yyEsC5R/fAJ7No8Jy3Gu2lp4EHoLS42BQOIBC3RYtr/tBwaB6fIAPJlT0jiwsRkXhMvBXoacus66vnFKDJ93onsQfuxfYxOAQHk77u6w+F2xmbPJVQKV5dVsEZx0vQbzNNKqL3viJZG8suxn51FObJ6sYFyod0QlIGDp/d5XffWWJXd9J6G1NatIKyySpOAbEdkSFMt1/JSkjwY7n9A1lB4q2zueBPZ7dNeEbTahHpOE8zC2lfbaajPrwIlbhOR5nCTnCjeu9K74M7F+vtN3QU3u66KYV0X7Xj+zB/0RasyQsQ9GGyb3eKztbNOqugwIWVpKFs1QZL3vAF5ebyYTmeaPea+5/Kx17nPU0ZKc/16qMXhMq7lPqO+jJSwSz453JHVQ/ura+ty1LwItsS8Y5dVXM+r417+QX/OX09n/nsl//t+8tmzwh2FJ3un7Q+HCv2c2N4FzVgOF+anTTNC3aFLq7LMuM4lNT0qaQwm8Dq6TlZTbKdpBlS0geKav4rVjkWWqQsWT1mFbB3swqb4tox2rZyvWApJH6+TL5dVN1FlFILgRYjLaYPNQ4c/bxqzFGiBP3rcwjsNorfEzdAx8RbQGae3wWY/GXu/lODNW6wOTV35x5zu57TdK/JTge4ni6Nn2yPiUHNZ1cq4uaz/tyJ4WYXBfplhNol3YgncyeIV2jC0t3T+0wI/8MbffKZPb8tR4qCNpMYg81l5nMnfZ2cqEpzDVlcvdulP0ZHiNu+4Yi6pscRJ1L7T66R/1RrXMTlkYWoYC0lJ38m5CmFwWUd3cqFT49ysfuvmCR01zaBhHrbIpscAEEIxnsk1GnSi7WKf3haWBiFTiuuVM0SVmED5fL5WXeBR4gK4rbiTvnOg/fRwNv6QhOLhk6u2D5jshpC+0EHaOqCvIzcJzFu+TBuRKsIoXQvyKWadQF55un3rBGpFzkIRVNQOWC8mVRtORueQXg3wt2PMTvJDv7algBr4VU8SYcbop7LM4ogGjKd/D9kaobo6sBdT2fgwvia4n1VHtxvfv4Q6NWoUy4tyMgDQI1oZPDtwI37UuRm3fgpzta56kmrbIWyvX5lLAM5hce2CpcdHAZe/sFmDujnwuOeWGLR7leY7Cm5RjsfzIVjNv/ZYcJekbLOwm4tYbayhdtJxJC8yYNNCHNujVjKoIkO+qudhnhgUI9L6nH1dM1Yr3927F5BcLQ7XsWl+4wqfG+tpY1C/FpsjKu2ZpVQFNR2iCeNyvFf1u+LNa7UGygsWLu/5YlKrF9rusyRVze5PsAirp/BkJXpt75V9gQuml4PsImT0Zft2jq9myy96XyJydg56lVvysMQHJSSyCYSocoVfoYDOKNSOLPkPN6RdirW+Q+Uk2q71XQYdaXwdfLZWPbPHVEMnztVqa7D1Wxordw6Sovd4Yog8M4RmWRt4pa/BcOGSyPfw5h1e6r5I8Sg1SL4nAsnGS2I2YJovbtNyv2invDT746iRGaa2+X7TokxKjrHiL+ETZzxDn4/KRywqaH26Jw73PrGsmeQJZiQ+TLYk8+w25tClZLCJ88Z41TicbTSBFJMveQJvt0K18fQsEVoSH8c7bQfnexJHwdF2qM6LVncNSm2Cb0XNemIa3OO5lK14xUqTHOe9Iz1hfMM7J29cp2vy7neJeB4OuH6Pf7Sj1FnFojTv78aeNKRN7FLUejfyoAwiz3PjuZRufVZMzcjFIiQunya1OyKCwVcx9hPZe1pdYB98EWyu8pz6Jzc19U1is/iiQat4Yx5eE7vltQ5zdlXW6neL91iiCaxTy4RCiFcHYzfOHKneO63nTMGfKddWZSd/UAMGrlGz8yuzJZZgSfeqIYxhIyYpZ4uDG3FtnXKEeqOYu2M3C9JzmWTL8cmFtUjcPp66I2bwXWjqnfQjFeb8IOUcs3Q7kxDeY6zsxTXsc97FD5YDLPo/MPSjVhTIluIESrVffQ+j6EdePgmc/FdrE0dTJpdKIg7Xx76WI9GBgU0XR0/zkUnqtt513bfV1b/dDQgX8XkuIDicDE+r703A7MohEu7ML6/xvIPZilpOZuJHbO0avmsGXffdhMSPjiODfRtH/O27+B3avn9k="""
    token_see = '8845eae1bc0dfa069aec58a224623814f13ceb4794877a100e14a5bb1649681d'
    token_tiger = '94e9f4f87b0732e6a48c66f9d51d0d62157f993155f2976f1533282645e4b0de'
    svr = NotifyServer()
    svr.start_apns(pem_data, config.cfg_path, sandbox=0)
    svr.send_apns_msg(token_see, u'返屋企啦1111!')
#    svr.send_apns_msg(token_see, u'返屋企啦22222!')
    sleep(20)
Ejemplo n.º 40
0
 def auto_choose_node(self):
     """ 时间到自动选择路线 """
     n = 0
     while not self.is_choose:
         sleep(1)
         n += 1
         if n > self.fetch_choose_time:
             log.debug('time out !! %s, %s, %s', self.room.pids,
                       self.is_choose, n)
             war_node = self.group.auto_choose(self.war_node)
             self.choose_node(war_node, NODE_TYPE_MONSTER)
             break
Ejemplo n.º 41
0
 def close_handler(self):
     """ player主动调用,先关闭接口,再处理别的,注意不调用会内存泄漏 """
     global _locks
     try:
         self.active = False
         for i in xrange(self._close_count):
             if not _locks[self]:
                 break
             sleep(self._close_i)
     except:
         log.log_except()
     finally:
         _locks.pop(self, None)
Ejemplo n.º 42
0
 def _loop_war(self):
     """ 活动开启提前通知 """
     while 1:
         now_sec = common.current_time() - common.zero_day_time()
         #开启的活动结束
         if self.warstart_config and now_sec > self.warstart_config.etime:
             if self.time_start():
                 #本次开启活动时清楚上一次的数据
                 self.stop_activity()
         #未开启活动时
         elif self.warstart_config is None:
             self.time_start()
         sleep(1)
Ejemplo n.º 43
0
 def _loop(self):
     """ 定时判断资源库版本号,更新资源 """
     import app
     while not app.stoped:
         sleep(30)
         db_ver = self._get_db_ver()
         if db_ver != self.db_ver:
             log.warn(u'更新资源库(%s)', db_ver)
             if self.load(app):
                 log.warn(u'更新资源库(%s)完成', db_ver)
                 self.pub(MSG_RES_RELOAD)
             else:
                 log.warn(u'更新资源库(%s)失败', db_ver)
Ejemplo n.º 44
0
 def _loop_broad(self):
     """ 数据广播 """
     #开战及时
     while not self.war_data.war_end:
         desc = self.handle_connon()
         if desc:
             self._boss_hp_broad(desc)
             is_pass = self.is_pass_scene()
             if is_pass:
                 self.pass_scene(self.room.aid)
         if self.war_data.boss_hp <= 0:
             break
         sleep(1)
Ejemplo n.º 45
0
 def _loop_war(self):
     """ 开战计时 """
     is_use_boattime = False
     while 1:
         now_time = common.current_time()
         use_time = now_time - self.war_data.stime
         if use_time > self.war_per_config.wtime + self.boat.gtime:
             self.war_result_borad(ALLY_WAR_FAIL_TIME)
             break
         elif not is_use_boattime and use_time > self.war_per_config.wtime:
             is_use_boattime = True
             self.record_uboattimes()
         sleep(1)
Ejemplo n.º 46
0
 def report():
     try:
         import app
     except ImportError:
         return
     st = 30 * 60
     m = Monitor.instance()
     while not app.stoped:
         data = m.pop_report()
         for fn, (t, total, use, err) in data.iteritems():
             Game.glog.log_rpc(
                 dict(func=fn, t=t, total=total, use=use, err=err))
         sleep(st)
Ejemplo n.º 47
0
 def boss_hurt_boat(self):
     """ boss袭击天舟 """
     sc, hurt = common.str2list(self.war_per_config.hurts, vtype=str)
     sc = int(sc)
     n = 1
     sleep(sc)
     while self.war_data.boss_hp > 0 and not self.war_data.war_end:
         boss_data = eval(hurt)
         n += 1
         self.boat.hard -= boss_data
         if self.boat.hard < 0:
             self.boat.hard = 0
         self.boat.hard_broad(boss_data=boss_data)
         sleep(sc)
Ejemplo n.º 48
0
 def _auto_start(self):
     global arena_auto_start, arena_level
     sleep_times = 60 * 5
     log.info('arena auto_start(%s) running', arena_auto_start)
     while 1:
         sleep(sleep_times)
         c = PlayerData.count({FN_PLAYER_LEVEL: {FOP_GTE: arena_level}})
         if c >= arena_auto_start:
             log.info('arena auto start:%d', c)
             self.init()
             self.is_start = True
             self.start()
             self._auto_start_task = None
             return
Ejemplo n.º 49
0
 def start_broad(self, pid=0):
     """ 开战或进入下一场广播 """
     resp_f = 'awarStartB'
     if self.war_data:
         self.enter_next_scene()
     else:
         self.data_init()
     self.war_data.start()
     self._loop_task_broad = spawn(self._loop_broad)
     sleep(1)
     for pid in self.war_data.war_pids:
         data = self.pack_data(pid)
         self.send_msg(resp_f, data, send_pids=[pid])
     spawn(self._loop_war)
Ejemplo n.º 50
0
 def online_sit(self):
     """ 上线获取打坐数据 """
     if self.online_rs is None:
         sleep(5)
         self.online_add_sitexp()
         if self.online_rs is None:
             return False, None
     data = self.online_rs
     if data.has_key('canSitTime'):
         #继续打坐
         self._online_start_sit(self.fetch_time_max - data['canSitTime'])
     data['addExp'] = self.sit_data[SIT_EXP]
     data['exp'] = self.player.data.exp
     return True, data
Ejemplo n.º 51
0
 def _set_data(func, args, kw):
     self.set_count += 1
     self.set_step_count += 1
     while 1:
         try:
             return func(*args, **kw)
         except ConnectionError as e:
             #链接错误,尝试重新保存,保证数据安全
             log.error('_process_set error:%s, will retry:%s', e,
                       (func, args, kw))
         except:
             log.log_except('_process_set:%s', (func, args, kw))
             break
         sleep(0.1)
Ejemplo n.º 52
0
 def _sit(self):
     """ 打坐 """
     if not self.sit_pids:
         return
     _, rs = Game.rpc_player_mgr.get_player_infos(self.sit_pids)
     for index, pid in enumerate(self.sit_pids):
         player_info = rs[pid]
         if player_info[2]:
             continue
         base_info = self.bot_mgr.player_infos[pid]
         self._move_to(pid)
         sleep(10)
         base_info[IF_IDX_STATE] = STATE_SIT
         self.update_item(pid, base_info)
Ejemplo n.º 53
0
 def _loop(self):
     """ 定时保存等处理 """
     stime = 30
     while 1:
         sleep(stime)
         try:
             for pid in self.players.keys():
                 p = self.players.get(pid)
                 if p is None or not p.logined:
                     continue
                 #是否需要定时保存
                 if p.save_time + self._SAVE_TIME_ <= time.time():
                     p.save()
         except:
             log.log_except()
Ejemplo n.º 54
0
def test_m_social(player1, player2):
    #test_socialGetInfo(player1, 1, 1)
    test_changeName(player1, u"改变名字")
    #test_socialGetInfo(player2, 1, 1)
    #test_socialEnter(player1)
    #test_socialEnter(player2)
    #test_delBlack(player1, 2518)
    #test_addBlack_name(player1, u"怀禹晨")
    #test_addBlack_name(player1, u"怀禹晨")
    #test_addBlack_name(player1, u"怀禹晨")
    #test_delFriend(player1, 2518)
    #test_addFriend(player1, 2518)
    #test_addBlack(player1, 2518)
    from corelib import sleep
    sleep(200)
Ejemplo n.º 55
0
        def _stop_func():
            try:
                self._stop()
            except StandardError:
                log.log_except()

            for mgr in self.stop_mgrs:
                try:
                    mgr.stop()
                except StandardError as e:
                    log.log_except('stop mgr(%s) error:%s', mgr, e)
            sleep(0.5)  #允许其它线程切换
            #等待其它完成
            while self.stop_lock.wait() < self.lock_count:
                sleep(0.1)
Ejemplo n.º 56
0
    def refurbish_glory(self):
        def _sort(_id):
            if _id not in self.assist_objs:
                return 0
            _obj = self.assist_objs[_id]
            return -_obj.data.glory

        while 1:
            self._glorys.sort(key=_sort)
            for pid in self._glorys:
                _obj = self.assist_objs.get(pid)
                if not _obj:
                    continue
                self._mgr.set_glory_rank(pid, _obj.data.glory)
            sleep(Ally.GLORY_SORT_TIME)
Ejemplo n.º 57
0
def test_mail(player):
    pid = 0  #1189
    if not pid:
        pid = player.id
    items = [dict(t='i', i=1, c=1000), dict(t='i', i=38, c=2)]
    player.game_master.send_mails(pid, MAIL_NORMAL, u'标题', u'内容', items)
    player.game_master.send_mails(pid, MAIL_REWARD, u'奖励', u'内容', items)
    #player.game_master.send_mails(pid, MAIL_BATTLE, u'奖励', u'内容', items)

    mail = player.mail
    for i in xrange(120):
        sleep(0.5)
        if mail.count >= 2:
            break
    for mid in mail.mails.keys():
        mail.receive(mid)
Ejemplo n.º 58
0
 def _loop(self):
     """ 定时检查购买支付情况 """
     log.info('vip_pay_back start')
     querys = dict(sid=self.sid, dt=0, status=1, torder={FOP_NE:''})
     while 1:
         sleep(5)
         try:
             pays = self.pay_store.query_loads(Pay.TABLE_NAME,
                     querys)
             for pay in pays:
                 try:
                     self._pay_back(pay)
                 except:
                     log.log_except()
         except:
             log.log_except()
Ejemplo n.º 59
0
 def gm_finish_achi(self, t, aid, pids):
     """完成成就 t='day' 每日  t='ever' 永久 aid成就id  pids玩家列表"""
     i = 0
     n = 10
     for pid in pids:
         player = Game.rpc_player_mgr.get_rpc_player(pid)
         if player is None:
             offline = True
             player = Player.load_player(pid)
         if player is None:
             continue
         player.gm_finish_achi(t, aid)
         if offline:
             player.save()
         i += 1
         if i % n == 0:
             sleep(0)
Ejemplo n.º 60
0
 def loop_data_cbe(self, cbe_rank):
     """ 战斗力排名数据载入 """
     while 1:
         cbe_fields = [CONST_PID, CONST_CBE]
         cbe_sort_by = [(CONST_CBE, DESCENDING)]
         cbe_list = cbe_rank.query(TN_P_ATTR, cbe_fields, limit=TIMES_NUMS,
             sort_by=cbe_sort_by, rpc=CONST_RPC_STORE)
         player_fields = [CONST_NAME, CONST_LEVEL, CONST_RID]
         cbe_rank.queryByList(cbe_list, CONST_PID, TN_PLAYER, player_fields,
             rpc=CONST_RPC_STORE)
         del_key_list = [CONST_ID]
         cbe_rank.getRet(cbe_list, CONST_PID, del_key_list, type=RANK_CBE)
         sleep(0.1)
         if not cbe_rank.is_next:
             self.player_cbe_data = cbe_rank.data
             log.debug("rank--load--data--cbe")
             break