Exemplo n.º 1
0
def ArenaEnd(optId, UserId, ServerId, **para):
    '''战斗结束'''
    FightObj = mod.is_in_arena(UserId, ServerId)  # 获取战斗对象
    # 注意:由于返回的是弱引用,使用的时候应该加括号:FightObj()
    if not FightObj:
        return common.error(optId, -(optId * 1000 + 1))  #不在战斗中,无法结束战斗。

    fight_result = FightObj().fight_over()
    if fight_result == False:  #没有达到战斗结束的条件
        return common.error(optId, -(optId * 1000 + 2))

    #处理战斗结果
    # + 发送消息给分服
    RabbitMod.rm.send(optId, ServerId,
                      copy.deepcopy(fight_result[(UserId, ServerId)]))
    # + 更新荣誉表
    HonourMod.addHonour(UserId, ServerId,
                        fight_result[(UserId, ServerId)]['gainHonour'],
                        time.time())

    #从竞技场中退出
    stat = mod.leave_arena(UserId, ServerId)
    if stat:  #返回战斗结果给玩家
        return common.out(
            optId, body={'FightResult': fight_result[(UserId, ServerId)]})  #成功
    return common.error(optId, -(optId * 1000 + 3))  #不在竞技场战斗中
Exemplo n.º 2
0
def ArenaEnd(optId, UserId, ServerId, **para):
    '''战斗结束'''
    FightObj = mod.is_in_arena(UserId, ServerId) # 获取战斗对象
    # 注意:由于返回的是弱引用,使用的时候应该加括号:FightObj()
    if not FightObj:
        return common.error(optId, -(optId * 1000 + 1)) #不在战斗中,无法结束战斗。
    
    fight_result = FightObj().fight_over()
    if fight_result == False: #没有达到战斗结束的条件
        return common.error(optId, -(optId * 1000 + 2))
    
    #处理战斗结果
    # + 发送消息给分服
    RabbitMod.rm.send(optId, ServerId, 
                      copy.deepcopy(fight_result[(UserId, ServerId)]))
    # + 更新荣誉表
    HonourMod.addHonour(UserId, ServerId, 
                        fight_result[(UserId, ServerId)]['gainHonour'], 
                        time.time())
    
    #从竞技场中退出 
    stat = mod.leave_arena(UserId, ServerId)
    if stat: #返回战斗结果给玩家
        return common.out(optId, 
            body={'FightResult':fight_result[(UserId, ServerId)]}) #成功
    return common.error(optId, -(optId * 1000 + 3)) #不在竞技场战斗中
Exemplo n.º 3
0
 def fight_end(self, fight_result):  #内部用
     '''战后处理'''
     # 1,将战果广播给客户端
     # 2,将战果分发给各分服
     # 3,更新总服的荣誉表
     from core import Gcore
     for user in fight_result:
         Gcore.multicast(user, common.out(98005, fight_result[user]))
         RabbitMod.rm.send(98005, user[1], fight_result[user])
         HonourMod.addHonour(user[0], user[1],
                             fight_result[user]['gainHonour'], time.time())
     self.zmq_sock_close()  #释放端口
Exemplo n.º 4
0
 def fight_end(self, fight_result): #内部用
     '''战后处理'''
     # 1,将战果广播给客户端
     # 2,将战果分发给各分服
     # 3,更新总服的荣誉表
     from core import Gcore
     for user in fight_result:
         Gcore.multicast(user, common.out(98005, fight_result[user]))
         RabbitMod.rm.send(98005, user[1], fight_result[user])
         HonourMod.addHonour(user[0], user[1], 
                             fight_result[user]['gainHonour'], time.time())
     self.zmq_sock_close() #释放端口