Esempio n. 1
0
def receive_mail_remote(mail_data, is_online, player):
    """接收邮件"""
    mail = Mail_PB()
    mail.ParseFromString(mail_data)
    logger.debug('receive_mail:%s', mail)
    if mail.mail_type == 1:
        if mail.sender_id in player.stamina.contributors:
            logger.error('this contributor has already given stamina:%s',
                         mail.sender_id)
            return True
        else:
            player.stamina.contributors.append(mail.sender_id)
    if mail.config_id == game_configs.base_config.get('guildInviteMail'):
        mails = player.mail_component.get_mails()
        for mail_pb in mails:
            if mail.guild_id and mail_pb.guild_id == mail.guild_id:
                return True

    player.mail_component.add_mail(mail)
    player.mail_component.save_data()

    if is_online:
        response = mailbox_pb2.ReceiveMailResponse()
        response.mail.CopyFrom(mail)
        remote_gate.push_object_remote(1305,
                                       response.SerializePartialToString(),
                                       [player.dynamic_id])
    return True
Esempio n. 2
0
def send_mail(args):
    gain_info = []
    if args.get('awards'):
        a = args.get('awards').split('|')
        for b in a:
            award = b.split(':')
            gain_info.append({award[0]: [award[2], award[2], award[1]]})

    mail = Mail_PB()
    # mail.sender_id = player.base_info.id
    mail.sender_name = args['sender_name']
    mail.sender_icon = int(args['sender_icon'])
    # mail.receive_name = ''
    mail.title = args['title']
    mail.content = args['text']
    mail.mail_type = 2
    if gain_info:
        mail.prize = str(gain_info)
    mail.send_time = int(time.time())
    # mail_data = mail.SerializePartialToString()

    if args['uids'] == '0':
        users = tb_character_info.smem('all')
        for uid in users:
            mail.receive_id = uid
            push_message('receive_mail_remote', uid,
                         mail.SerializeToString())
    else:
        for uid in args['uids'].split(';'):
            mail.receive_id = int(uid)
            mail_data = mail.SerializeToString()
            push_message('receive_mail_remote', int(uid),
                         mail.SerializeToString())
    return {'success': 1}
Esempio n. 3
0
 def init_data(self, c):
     pid = self.owner.base_info.id
     char_obj = tb_character_info.getObj(pid).getObj('mails')
     mails = char_obj.hgetall()
     for mid, mail_data in mails.items():
         mail = Mail_PB()
         mail.ParseFromString(mail_data)
         self._mails[mail.mail_id] = mail
Esempio n. 4
0
    def send_award_mail_kill(self):
        mail_id = game_configs.base_config.get('kill_rewards_worldboss')

        player_id = self._last_shot_item['player_id']
        mail = Mail_PB()
        mail.config_id = mail_id
        mail.receive_id = player_id
        mail.send_time = int(time.time())
        mail_data = mail.SerializePartialToString()
        remote_gate = GlobalObject().root.childsmanager.childs.values()[0]
        remote_gate.push_message_to_transit_remote('receive_mail_remote',
                                                   player_id, mail_data)
Esempio n. 5
0
    def send_award_mail_damage(self):
        award_mail = game_configs.base_config.get('hurt_rewards_worldboss_rank')
        for up, down, mail_id in award_mail.values():
            ranks = self._rank_instance.get(up, down)
            for player_id, v in ranks:
                mail = Mail_PB()
                mail.config_id = mail_id
                mail.receive_id = int(player_id)
                mail.send_time = int(time.time())
                mail_data = mail.SerializePartialToString()

                remote_gate = GlobalObject().root.childsmanager.childs.values()[0]
                remote_gate.push_message_to_transit_remote('receive_mail_remote',
                                                           int(player_id), mail_data)
Esempio n. 6
0
def send_mail(args):
    gain_info = []
    if args.get('awards'):
        a = args.get('awards').split('|')
        for b in a:
            award = b.split(':')
            gain_info.append({award[0]: [award[2], award[2], award[1]]})

    mail = Mail_PB()
    # mail.sender_id = player.base_info.id
    mail.sender_name = args['sender_name']
    mail.sender_icon = int(args['sender_icon'])
    # mail.receive_name = ''
    mail.title = args['title']
    mail.content = args['text']
    mail.mail_type = 2
    if gain_info:
        mail.prize = str(gain_info)
    mail.send_time = int(time.time())
    # mail_data = mail.SerializePartialToString()

    if args['uids'] == '0':
        users = tb_character_info.smem('all')
        for uid in users:
            mail.receive_id = uid
            push_message('receive_mail_remote', uid, mail.SerializeToString())
    else:
        for uid in args['uids'].split(';'):
            mail.receive_id = int(uid)
            mail_data = mail.SerializeToString()
            push_message('receive_mail_remote', int(uid),
                         mail.SerializeToString())
    return {'success': 1}
Esempio n. 7
0
def init_mail(player):
    mail = Mail_PB()

    # 领取体力
    mail.mail_id = '001'
    mail.character_id = 1
    mail.sender_id = 2
    mail.sender_name = 'player2'
    mail.title = 'mail1'
    mail.content = 'content1'
    mail.mail_type = 1
    mail.is_readed = False
    mail.send_time = 100

    player.mail_component.add_exist_mail(mail)

    mail.mail_id = '002'
    mail.character_id = 1
    mail.sender_id = 2
    mail.sender_name = 'player2'
    mail.title = 'mail2'
    mail.content = 'content2'
    mail.mail_type = 1
    mail.is_readed = False
    mail.send_time = int(time.time())

    player.mail_component.add_exist_mail(mail)

    # 领奖
    mail.mail_id = '003'
    mail.character_id = 1
    mail.sender_id = -1
    mail.sender_name = 'system'
    mail.title = 'mail3'
    mail.content = 'content3'
    mail.mail_type = 2
    mail.is_readed = False
    mail.send_time = int(time.time())
    mail.prize = {1: [100, 100, 0]}

    player.mail_component.add_exist_mail(mail)

    mail.mail_id = '004'
    mail.character_id = 1
    mail.sender_id = -1
    mail.sender_name = 'system'
    mail.title = 'mail4'
    mail.content = 'content4'
    mail.mail_type = 2
    mail.is_readed = False
    mail.send_time = int(time.time())
    mail.prize = {1: [100, 100, 0]}

    player.mail_component.add_exist_mail(mail)

    # 公告
    mail.mail_id = '005'
    mail.character_id = 1
    mail.sender_id = -1
    mail.sender_name = 'system'
    mail.title = 'mail5'
    mail.content = 'content5'
    mail.mail_type = 3
    mail.is_readed = False
    mail.send_time = int(time.time())

    player.mail_component.add_exist_mail(mail)

    mail.mail_id = '006'
    mail.character_id = 1
    mail.sender_id = -1
    mail.sender_name = 'system'
    mail.title = 'mail6'
    mail.content = 'content6'
    mail.mail_type = 3
    mail.is_readed = True
    mail.read_time = int(time.time())-60*60*24*7

    player.mail_component.add_exist_mail(mail)

    # 消息
    mail.mail_id = '007'
    mail.character_id = 1
    mail.sender_id = 2
    mail.sender_name = 'player2'
    mail.title = 'mail7'
    mail.content = 'content7'
    mail.mail_type = 4
    mail.is_readed = False
    mail.send_time = int(time.time())

    player.mail_component.add_exist_mail(mail)

    mail.mail_id = '008'
    mail.character_id = 1
    mail.sender_id = 2
    mail.sender_name = 'player2'
    mail.title = 'mail8'
    mail.content = 'content8'
    mail.mail_type = 4
    mail.is_readed = False
    mail.send_time = int(time.time())

    player.mail_component.add_exist_mail(mail)
Esempio n. 8
0
def deal_mail(conf_id=0, nickname='', receive_id=0, guild_name='',
              guild_p_num=0, guild_level=0, guild_id=0, pvp_rank=0,
              rune_num=0, rank=0, integral=0, boss_id=0):
    mail = Mail_PB()
    if conf_id:
        mail.config_id = conf_id
    if nickname:
        mail.nickname = nickname
    if boss_id:
        mail.boss_id = boss_id
    if guild_name:
        mail.guild_name = guild_name
    if guild_p_num:
        mail.guild_person_num = guild_p_num
    if guild_level:
        mail.guild_level = guild_level
    if guild_id:
        mail.guild_id = guild_id
    if pvp_rank:
        mail.pvp_rank = pvp_rank
    if rune_num:
        mail.rune_num = rune_num
    if rank:
        mail.rank = rank
    if integral:
        mail.integral = integral
    mail.send_time = int(time.time())
    mail_data = mail.SerializePartialToString()
    return mail_data, receive_id
Esempio n. 9
0
def init_mail(player):
    mail = Mail_PB()

    # 领取体力
    mail.mail_id = '001'
    mail.character_id = 1
    mail.sender_id = 2
    mail.sender_name = 'player2'
    mail.title = 'mail1'
    mail.content = 'content1'
    mail.mail_type = 1
    mail.is_readed = False
    mail.send_time = 100

    player.mail_component.add_exist_mail(mail)

    mail.mail_id = '002'
    mail.character_id = 1
    mail.sender_id = 2
    mail.sender_name = 'player2'
    mail.title = 'mail2'
    mail.content = 'content2'
    mail.mail_type = 1
    mail.is_readed = False
    mail.send_time = int(time.time())

    player.mail_component.add_exist_mail(mail)

    # 领奖
    mail.mail_id = '003'
    mail.character_id = 1
    mail.sender_id = -1
    mail.sender_name = 'system'
    mail.title = 'mail3'
    mail.content = 'content3'
    mail.mail_type = 2
    mail.is_readed = False
    mail.send_time = int(time.time())
    mail.prize = {1: [100, 100, 0]}

    player.mail_component.add_exist_mail(mail)

    mail.mail_id = '004'
    mail.character_id = 1
    mail.sender_id = -1
    mail.sender_name = 'system'
    mail.title = 'mail4'
    mail.content = 'content4'
    mail.mail_type = 2
    mail.is_readed = False
    mail.send_time = int(time.time())
    mail.prize = {1: [100, 100, 0]}

    player.mail_component.add_exist_mail(mail)

    # 公告
    mail.mail_id = '005'
    mail.character_id = 1
    mail.sender_id = -1
    mail.sender_name = 'system'
    mail.title = 'mail5'
    mail.content = 'content5'
    mail.mail_type = 3
    mail.is_readed = False
    mail.send_time = int(time.time())

    player.mail_component.add_exist_mail(mail)

    mail.mail_id = '006'
    mail.character_id = 1
    mail.sender_id = -1
    mail.sender_name = 'system'
    mail.title = 'mail6'
    mail.content = 'content6'
    mail.mail_type = 3
    mail.is_readed = True
    mail.read_time = int(time.time()) - 60 * 60 * 24 * 7

    player.mail_component.add_exist_mail(mail)

    # 消息
    mail.mail_id = '007'
    mail.character_id = 1
    mail.sender_id = 2
    mail.sender_name = 'player2'
    mail.title = 'mail7'
    mail.content = 'content7'
    mail.mail_type = 4
    mail.is_readed = False
    mail.send_time = int(time.time())

    player.mail_component.add_exist_mail(mail)

    mail.mail_id = '008'
    mail.character_id = 1
    mail.sender_id = 2
    mail.sender_name = 'player2'
    mail.title = 'mail8'
    mail.content = 'content8'
    mail.mail_type = 4
    mail.is_readed = False
    mail.send_time = int(time.time())

    player.mail_component.add_exist_mail(mail)
Esempio n. 10
0
def deal_mail(conf_id=0,
              nickname='',
              receive_id=0,
              guild_name='',
              guild_p_num=0,
              guild_level=0,
              guild_id=0,
              pvp_rank=0,
              rune_num=0,
              rank=0,
              integral=0,
              boss_id=0,
              arg1='',
              prize=''):
    mail = Mail_PB()
    if arg1:
        mail.arg1 = arg1
    if conf_id:
        mail.config_id = conf_id
    if nickname:
        mail.nickname = nickname
    if boss_id:
        mail.boss_id = boss_id
    if guild_name:
        mail.guild_name = guild_name
    if guild_p_num:
        mail.guild_person_num = guild_p_num
    if guild_level:
        mail.guild_level = guild_level
    if guild_id:
        mail.guild_id = guild_id
    if pvp_rank:
        mail.pvp_rank = pvp_rank
    if rune_num:
        mail.rune_num = rune_num
    if prize:
        mail.prize = prize
    if rank:
        mail.rank = rank
    if integral:
        mail.integral = integral
    mail.send_time = int(time.time())
    mail_data = mail.SerializePartialToString()
    return mail_data, receive_id