def roleLogin(dynamicId, userId, characterId): '''角色登陆 @param dynamicId: int 客户端的ID @param userId: int 用户的ID @param characterId: int 角色的ID ''' user = UsersManager().getUserByDynamicId(dynamicId) if not user: return {'result': False, 'message': u'conn_error'} characterInfo = user.getCharacterInfo() if not characterInfo: # 没有角色信息 return {'result': False, 'message': u'norole'} _characterId = user.characterId if _characterId != characterId: # 角色id不对应 return {'result': False, 'message': u'norole'} # 虚拟角色管理类,并由这个管理类来管理一批登陆的虚拟角色 # 获取最后次下线的虚拟角色 oldvcharacter = VCharacterManager().getVCharacterByCharacterId(characterId) data = {'placeId': characterInfo.get('town', 1000)} # 获取角色最后所在城镇id,默认为1000 if oldvcharacter: oldvcharacter.setDynamicId(dynamicId) # 更新动态id else: vcharacter = VirtualCharacter(characterId, dynamicId) # 构造一个虚拟角色 VCharacterManager().addVCharacter(vcharacter) # 添加到管理类中 return {'result': True, 'message': u'login_success', 'data': data}
def roleLogin(dynamicId, userId): '''角色登陆 @param dynamicId:int 客户端的ID @param userId:int 用户的ID ''' user = User(dynamicId=dynamicId, uid=userId) characterInfo = user.getCharacterInfo() if not characterInfo: data = {'hasRole': False} return {'result': True, 'data': data} else: if UsersManager()._users.has_key(user.id): olduser = UsersManager().getUserByID(user.id) if not olduser.CheckEffective(): return {"result": False, 'message': "账号异常"} else: UsersManager().dropUser(user) UsersManager().addUser(user) oldvcharacter = VCharacterManager().getVCharacterByCharacterId( user.characterId) data = { 'placeId': characterInfo.get('town', 1000), 'characterId': user.characterId, 'hasRole': True } if oldvcharacter: oldvcharacter.setDynamicId(dynamicId) else: vcharacter = VirtualCharacter(user.characterId, dynamicId) VCharacterManager().addVCharacter(vcharacter) return {'result': True, 'data': data}
def roleLogin(dynamicId, userId, characterId): """角色登陆 @param dynamicId: int 客户端的ID @param userId: int 用户的ID @param characterId: int 角色的ID """ user = UsersManager().getUserByDynamicId(dynamicId) if not user: return {'result': False, 'message': u'conn_error'} characterInfo = user.getCharacterInfo() if not characterInfo: return {'result': False, 'message': u'norole'} _characterId = user.characterId if _characterId != characterId: return {'result': False, 'message': u'norole'} oldvcharacter = VCharacterManager().getVCharacterByCharacterId(characterId) if oldvcharacter: oldvcharacter.setDynamicId(dynamicId) else: vcharacter = VirtualCharacter(characterId, dynamicId) VCharacterManager().addVCharacter(vcharacter) data = {'placeId': characterInfo.get('town', 1000)} return {'result': True, 'message': u'login_success', 'data': data}
def enterInstance1(dynamicId, characterId, InstanceId): '''进入副本 @param dynamicId: int 角色动态id @param characterId: int 角色id @param InstanceId: int 副本id ''' vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) if not vplayer or vplayer.getLocked():#判断是否存在角色或者角色是否被锁定 return oldnode = 201000 if oldnode < 300000 and oldnode != 0:#如果角色在场景 #创建新的副本返回服务器编号,副本动态id famserTag,famId=FamSerManager().createNewFam(dynamicId) if famserTag <0: return vplayer.lock()#锁定角色对象 newnode = 300000+famserTag #获取角色在原先场景中的实例 d = GlobalObject().root.callChild("scense_1000",610,dynamicId, characterId) #调用失败后的处理 d.addErrback(InFamErrbck,vplayer,newnode,famId) #进入副本 d.addCallback(Transfer1501,newnode,dynamicId,characterId,InstanceId,famId) return d else: dd = defer.Deferred() dd.callback({'result':True,'message':u'nofam'}) return dd
def enterInstance1(dynamicId, characterId, InstanceId): '''进入副本 @param dynamicId: int 角色动态id @param characterId: int 角色id @param InstanceId: int 副本id ''' vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) if not vplayer or vplayer.getLocked(): #判断是否存在角色或者角色是否被锁定 return oldnode = 201000 if oldnode < 300000 and oldnode != 0: #如果角色在场景 #创建新的副本返回服务器编号,副本动态id famserTag, famId = FamSerManager().createNewFam(dynamicId) if famserTag < 0: return vplayer.lock() #锁定角色对象 newnode = 300000 + famserTag #获取角色在原先场景中的实例 d = GlobalObject().root.callChild("scense_1000", 610, dynamicId, characterId) #调用失败后的处理 d.addErrback(InFamErrbck, vplayer, newnode, famId) #进入副本 d.addCallback(Transfer1501, newnode, dynamicId, characterId, InstanceId, famId) return d else: dd = defer.Deferred() dd.callback({'result': True, 'message': u'nofam'}) return dd
def roleLogin(dynamicId,userId): '''角色登陆 @param dynamicId:int 客户端的ID @param userId:int 用户的ID ''' user=User(dynamicId=dynamicId,uid=userId) characterInfo=user.getCharacterInfo() if not characterInfo: data={'hasRole':False} return {'result':True,'data':data} else: if UsersManager()._users.has_key(user.id): olduser=UsersManager().getUserByID(user.id) if not olduser.CheckEffective(): return {"result":False,'message':"账号异常"} else: UsersManager().dropUser(user) UsersManager().addUser(user) oldvcharacter=VCharacterManager().getVCharacterByCharacterId(user.characterId) data={'placeId':characterInfo.get('town',1000),'characterId':user.characterId,'hasRole':True} if oldvcharacter: oldvcharacter.setDynamicId(dynamicId) else: vcharacter=VirtualCharacter(user.characterId,dynamicId) VCharacterManager().addVCharacter(vcharacter) return {'result':True,'data':data}
def opera_gamer(pid,opera_str): '''''' vcharacter=VCharacterManager().getVCharacterByCharacterId(pid) if not vcharacter: node="game1" else: node=vcharacter.getNode() GlobalObject().root.callChild(node,99,pid,opera_str)
def opera_gamer(pid, opera_str): '''''' vcharacter = VCharacterManager().getVCharacterByCharacterId(pid) if not vcharacter: node = "game1" else: node = vcharacter.getNode() GlobalObject().root.callChild(node, 99, pid, opera_str)
def SavePlayerInfoInDB(dynamicId): """将玩家信息写入数据库 node: 用于判定是 game1,game2,。。。。。这些节点 magic number: 2 --> "maybe save to db" """ vcharacter = VCharacterManager().getVCharacterByClientId(dynamicId) nodeid = vcharacter.getNode() d = GlobalObject().root.callChild(nodeid,2,dynamicId) return d
def opera_player(pid,oprea_str): """ #vcharacter是虚拟角色,VCharacterManager()虚拟角色管理器,{角色id:虚拟角色实例} """ vcharacter = VCharacterManager().getVCharacterByCharacterId(pid) if not vcharacter: node = "game1" else: node = vcharacter.getNode() GlobalObject().root.callChild(node,99,pid,oprea_str)
def JoinDuiWu(dynamicId, pid, pos, dwId): """加入队伍 """ vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) if not vplayer or vplayer.getLocked(): # 判断是否存在角色或者角色是否被锁定 return # nownode = vplayer.getNode() d = GlobalObject().root.callChild("scense_1000", 610, dynamicId, pid) d.addErrback(ErorrBack) d.addCallback(TransferPlayerJoin, dynamicId, pid, pos, dwId) return d
def CreateZuDui(dynamicId,pid,pos,gkType): '''创建队伍 ''' vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) if not vplayer or vplayer.getLocked():#判断是否存在角色或者角色是否被锁定 return # nownode = vplayer.getNode() d = GlobalObject().root.callChild("scense_1000",610,dynamicId, pid) d.addErrback(ErorrBack) d.addCallback(TransferPlayerCreate,dynamicId,pid,pos,gkType) return d
def netconnlost(dynamicId): '''客户端断开连接时的处理 @param dynamicId:int 客户端的动态ID ''' vcharacter = VCharacterManager().getVCharacterByClientId(dynamicId) if vcharacter and vcharacter.getNode() > 0: #判断是否已经登入角色 vcharacter.lock() #锁定角色 result = SaveGamerInfoInDB(dynamicId) #保存角色,写入角色数据 if result: dropClient(result, dynamicId, vcharacter) #清理客户端的数据 else: UsersManager().dropUserByDynamicId(dynamicId)
def NetConnLost_2(dynamicId): '''客户端断开连接时的处理 @param dynamicId: int 客户端的动态ID ''' vcharacter = VCharacterManager().getVCharacterByClientId(dynamicId) if vcharacter and vcharacter.getNode(): #判断是否已经登入角色 vcharacter.lock() #锁定角色 d = SavePlayerInfoInDB(dynamicId) #保存角色,写入角色数据 d.addBoth(SaveDBSuccedOrError, vcharacter) #解锁角色 d.addCallback(dropClient, dynamicId, vcharacter) #清理客户端的数据 else: UsersManager().dropUserByDynamicId(dynamicId)
def netconnlost(dynamicId): """客户端断开连接时的处理 @param dynamicId: int 客户端的动态ID """ vcharacter = VCharacterManager().getVCharacterByClientId(dynamicId) if vcharacter and vcharacter.getNode()>0:#判断是否已经登入角色 vcharacter.lock()#锁定角色 d = SavePlayerInfoInDB(dynamicId)#保存角色,写入角色数据 d.addErrback(SaveDBSuccedOrError, vcharacter)#解锁角色 d.addCallback(dropClient, dynamicId, vcharacter)#清理客户端的数据 else: UsersManager().dropUserByDynamicId(dynamicId)
def netconnlost(dynamicId): '''客户端断开连接时的处理 @param dynamicId:int 客户端的动态ID ''' vcharacter=VCharacterManager().getVCharacterByClientId(dynamicId) if vcharacter and vcharacter.getNode()>0:#判断是否已经登入角色 vcharacter.lock()#锁定角色 result=SaveGamerInfoInDB(dynamicId)#保存角色,写入角色数据 if result: dropClient(result,dynamicId,vcharacter)#清理客户端的数据 else: UsersManager().dropUserByDynamicId(dynamicId)
def netconnlost(dynamicId): '''客户端断开连接时的处理 @param dynamicId:int 客户端的动态ID ''' vcharacter=VCharacterManager().getVCharacterByClientId(dynamicId) if vcharacter and vcharacter.getNode()>0:#判断是否已经登入角色 vcharacter.lock()#锁定角色 d=SaveGamerInfoInDB(dynamicId)#保存角色,写入角色数据 d.addErrback(SaveDBSuccedOrError,vcharacter)#解锁角色 d.addCallback(dropClient,dynamicId,vcharacter)#清理客户端的数据 else: UsersManager().dropUserByDynamicId(dynamicId)
def getOtherPlayerInfo(dynamicId, pid, tid, request_proto): '''获取其他角色的信息 ''' tvplayer = VCharacterManager().getVCharacterByCharacterId(tid) if tvplayer: nownode = 201000 #tvplayer.getNode() else: vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) if not vplayer: return else: nownode = 201000 #vplayer.getNode() d = GlobalObject().root.callChild("scense_1000", 221, dynamicId, request_proto) return d
def enterScene(dynamicId, characterId, placeId,force): '''进入场景 @param dynamicId: int 客户端的ID @param characterId: int 角色的ID @param placeId: int 场景的ID @param force: bool ''' vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) if not vplayer: return None nownode = SceneSerManager().getBsetScenNodeId() d = GlobalObject().root.callChild(nownode,601,dynamicId, characterId, placeId,force,None) vplayer.setNode(nownode) SceneSerManager().addClient(nownode, vplayer.dynamicId) return d
def pushObjectByCharacterId_10(topicID, msg, sendList): '''根据角色的ID推送消息''' _sendList = [ VCharacterManager().getClientIdByCharacterId(cid) for cid in sendList ] root = GlobalObject().root root.callChild('net', "pushData", topicID, msg, _sendList)
def forwarding(key,dynamicId,data): """ """ if localservice._targets.has_key(key): return localservice.callTarget(key,dynamicId,data) else: user = UsersManager().getUserByDynamicId(dynamicId) if not user: return oldvcharacter = VCharacterManager().getVCharacterByClientId(dynamicId) if not oldvcharacter: return if oldvcharacter.getLocked():#判断角色对象是否被锁定 return node = VCharacterManager().getNodeByClientId(dynamicId) return GlobalObject().root.callChild(node,key,dynamicId,data)
def forwarding(key,dynamicId,data): """ """ if key in GlobalObject().localservice._targets: return GlobalObject().localservice.callTarget(key,dynamicId,data) else: user = UsersManager().getUserByDynamicId(dynamicId) if not user: return oldvcharacter = VCharacterManager().getVCharacterByClientId(dynamicId) if not oldvcharacter: return if oldvcharacter.getLocked():#判断角色对象是否被锁定 return node = VCharacterManager().getNodeByClientId(dynamicId) return GlobalObject().root.callChild(node, key, dynamicId, data)
def enterScene(dynamicId, characterId, placeId, force): '''进入场景 @param dynamicId: int 客户端的ID @param characterId: int 角色的ID @param placeId: int 场景的ID @param force: bool ''' vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) if not vplayer: return None nownode = SceneSerManager().getBestScenNodeId() # 获取最佳的game服务器 # 调用子节点 childname, *args d = GlobalObject().root.callChild(nownode, 601, dynamicId, characterId, placeId, force, None) vplayer.setNode(nownode) # 设置节点服务器 SceneSerManager().addClient(nownode, vplayer.dynamicId) # 添加到场景服务器 return d
def forwarding(key, dynamicId, data): ''' ''' if localservice._targets.has_key(key): return localservice.callTarget(key, dynamicId, data) else: user = UsersManager().getUserByDynamicId(dynamicId) if not user: return "-1" if not user.CheckEffective(): return "-2" oldvcharacter = VCharacterManager().getVCharacterByClientId(dynamicId) if not oldvcharacter: return if oldvcharacter.getLocked(): #判断角色对象是否被锁定 return node = VCharacterManager().getNodeByClientId(dynamicId) return GlobalObject().root.callChild(node, key, dynamicId, data)
def Transfer1502(data,dynamicId,characterId,force): '''离开副本后将角色实例传递回来 ''' player, placeId = data vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) oldnode = 201000 #vplayer.getNode() famId = vplayer.getFamId() if oldnode < 300000: dp = defer.Deferred() dp.callback({'result':True,'message':u'nofam'}) return dp nownode = SceneSerManager().getBsetScenNodeId(placeId) d = GlobalObject().root.callChild("scense_1000",601,dynamicId, characterId, placeId,force,player) #进入场景错误时的处理 d.addErrback(sceneErorrBack,vplayer) #进入成功时 d.addCallback(DropCharacterInFam,vplayer,nownode,dynamicId,oldnode,famId) return d
def dropClient(deferResult, dynamicId, vcharacter): '''清理客户端的记录 @param result:写入后返回的结果 ''' node = vcharacter.getNode() if node: #角色在场景中的处理 SceneSerManager().dropClient(node, dynamicId) VCharacterManager().dropVCharacterByClientId(dynamicId) UsersManager().dropUserByDynamicId(dynamicId)
def SavePlayerInfoInDB(dynamicId): '''将玩家信息写入数据库''' vcharacter = VCharacterManager().getVCharacterByClientId(dynamicId) # node = vcharacter.getNode() root = GlobalObject().root d = root.callChild("scense_1000", 2, dynamicId) # pid = vcharacter.getCharacterId() # if TeamFight.ishaveTeamFight(pid): # root.callChild(9999,4307,dynamicId,pid) return d
def Transfer1502(data, dynamicId, characterId, force): '''离开副本后将角色实例传递回来 ''' player, placeId = data vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) oldnode = 201000 #vplayer.getNode() famId = vplayer.getFamId() if oldnode < 300000: dp = defer.Deferred() dp.callback({'result': True, 'message': u'nofam'}) return dp nownode = SceneSerManager().getBsetScenNodeId(placeId) d = GlobalObject().root.callChild("scense_1000", 601, dynamicId, characterId, placeId, force, player) #进入场景错误时的处理 d.addErrback(sceneErorrBack, vplayer) #进入成功时 d.addCallback(DropCharacterInFam, vplayer, nownode, dynamicId, oldnode, famId) return d
def roleLogin(dynamicId, userId, characterId): '''角色登陆 @param dynamicId: int 客户端的ID @param userId: int 用户的ID @param characterId: int 角色的ID ''' user=UsersManager().getUserByDynamicId(dynamicId) if not user: return {'result':False,'message':u'conn_error'} characterInfo = user.getCharacterInfo() if not characterInfo: return {'result':False,'message':u'norole'} characterId = user.characterId oldvcharacter = VCharacterManager().getVCharacterByCharacterId(characterId) if oldvcharacter and oldvcharacter.getLocked(): return {'result':False,'message':u'zhengzaiyx'} vcharacter = VirtualCharacter(characterId,dynamicId) VCharacterManager().addVCharacter(vcharacter) data = {'placeId':characterInfo.get('town',1000)} return {'result':True,'message':u'login_success','data':data}
def roleLogin(dynamicId, userId, characterId): '''角色登陆 @param dynamicId: int 客户端的ID @param userId: int 用户的ID @param characterId: int 角色的ID ''' user = UsersManager().getUserByDynamicId(dynamicId) if not user: return {'result': False, 'message': u'conn_error'} characterInfo = user.getCharacterInfo() if not characterInfo: return {'result': False, 'message': u'norole'} characterId = user.characterId oldvcharacter = VCharacterManager().getVCharacterByCharacterId(characterId) if oldvcharacter and oldvcharacter.getLocked(): return {'result': False, 'message': u'zhengzaiyx'} vcharacter = VirtualCharacter(characterId, dynamicId) VCharacterManager().addVCharacter(vcharacter) data = {'placeId': characterInfo.get('town', 1000)} return {'result': True, 'message': u'login_success', 'data': data}
def roleLogin(dynamicId, userId, characterId): '''角色登陆 @param dynamicId: int 客户端的ID @param userId: int 用户的ID @param characterId: int 角色的ID ''' user = UsersManager().getUserByDynamicId(dynamicId) if not user: return {'result': False, 'message': u'conn_error'} _characterId = user.characterId if _characterId != characterId: return {'result': False, 'message': u'norole'} oldvcharacter = VCharacterManager().getVCharacterByCharacterId(characterId) data = {'placeId': 1000} if oldvcharacter: oldvcharacter.setDynamicId(dynamicId) else: vcharacter = VirtualCharacter(characterId, dynamicId) VCharacterManager().addVCharacter(vcharacter) return {'result': True, 'message': u'login_success', 'data': data}
def forwarding(key,dynamicId,data): #net传过来的信息 '''分配处理netserver转发的请求 @param key: int 请求的指令号 @param conn: Conn Object Client到netserver的连接 @param data: str Client 发送过来的数据 ''' if localservice._targets.has_key(key): return localservice.callTarget(key,dynamicId,data) else: from app.gate.basicapp.pushObject import pushOtherMessage from app.gate.utils.dbopera.db_language_login import getLanguageStr user = UsersManager().getUserByDynamicId(dynamicId) if not user: msg = getLanguageStr('conn_error') pushOtherMessage(msg,[dynamicId]) return oldvcharacter = VCharacterManager().getVCharacterByClientId(dynamicId) if oldvcharacter.getLocked():#判断角色对象是否被锁定 return node = VCharacterManager().getNodeByClientId(dynamicId) root=GlobalObject().root return root.callChild(node,key,dynamicId,data)
def forwarding(key, dynamicId, data): #net传过来的信息 '''分配处理netserver转发的请求 @param key: int 请求的指令号 @param conn: Conn Object Client到netserver的连接 @param data: str Client 发送过来的数据 ''' if localservice._targets.has_key(key): return localservice.callTarget(key, dynamicId, data) else: from app.gate.basicapp.pushObject import pushOtherMessage from app.gate.utils.dbopera.db_language_login import getLanguageStr user = UsersManager().getUserByDynamicId(dynamicId) if not user: msg = getLanguageStr('conn_error') pushOtherMessage(msg, [dynamicId]) return oldvcharacter = VCharacterManager().getVCharacterByClientId(dynamicId) if oldvcharacter.getLocked(): #判断角色对象是否被锁定 return node = VCharacterManager().getNodeByClientId(dynamicId) root = GlobalObject().root return root.callChild(node, key, dynamicId, data)
def closeInstance(dynamicId,characterId): '''退出副本''' vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) if not vplayer: dp = defer.Deferred() dp.callback({'result':True,'message':u'nofam'}) return dp oldnode = 201000 #vplayer.getNode() if oldnode > 300000:#如果角色在副本中 #锁定角色对象 vplayer.lock() #获取角色在原先场景中的实例 d = GlobalObject().root.callChild("scense_1000",610,dynamicId, characterId) #获取错误时的处理 d.addErrback(sceneErorrBack,vplayer) #获取成功时的处理 d.addCallback(Transfer1502,dynamicId,characterId,True) return d else: dp = defer.Deferred() dp.callback({'result':True,'message':u'nofam'}) return dp
def closeInstance(dynamicId, characterId): '''退出副本''' vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) if not vplayer: dp = defer.Deferred() dp.callback({'result': True, 'message': u'nofam'}) return dp oldnode = 201000 #vplayer.getNode() if oldnode > 300000: #如果角色在副本中 #锁定角色对象 vplayer.lock() #获取角色在原先场景中的实例 d = GlobalObject().root.callChild("scense_1000", 610, dynamicId, characterId) #获取错误时的处理 d.addErrback(sceneErorrBack, vplayer) #获取成功时的处理 d.addCallback(Transfer1502, dynamicId, characterId, True) return d else: dp = defer.Deferred() dp.callback({'result': True, 'message': u'nofam'}) return dp
def roleLogin(dynamicId, userId, characterId): """角色登陆 @param dynamicId: int 客户端的ID @param userId: int 用户的ID @param characterId: int 角色的ID """ user = UsersManager().getUserByDynamicId(dynamicId) if not user: return {"result": False, "message": u"conn_error"} characterInfo = user.getCharacterInfo() if not characterInfo: return {"result": False, "message": u"norole"} _characterId = user.characterId if _characterId != characterId: return {"result": False, "message": u"norole"} oldvcharacter = VCharacterManager().getVCharacterByCharacterId(characterId) data = {"placeId": characterInfo.get("town", 1000)} if oldvcharacter: oldvcharacter.setDynamicId(dynamicId) else: vcharacter = VirtualCharacter(characterId, dynamicId) VCharacterManager().addVCharacter(vcharacter) return {"result": True, "message": u"login_success", "data": data}
def dropClient(deferResult, dynamicId, vcharacter): '''清理客户端的记录 @param result: 写入后返回的结果 ''' node = 201000 # vcharacter.getNode() if node <= 0: return elif 200000 < node < 300000: #角色在场景中的处理 SceneSerManager().dropClient(node, dynamicId) elif node >= 300000: #角色在副本中的处理 famserId = node - 300000 famId = vcharacter.getFamId() FamSerManager().leaveFam(famserId, famId, dynamicId) VCharacterManager().dropVCharacterByClientId(dynamicId) UsersManager().dropUserByDynamicId(dynamicId)
def Transfer1501(resultdata, nownode, dynamicId, characterId, instanceId, famId): '''调用进入副本方法 @param nownode: int 副本服务器动态id+30W ''' vplayer = VCharacterManager().getVCharacterByClientId(dynamicId) player, placeId = resultdata #加入角色的实例到创建的副本中去 d = GlobalObject().root.callChild("scense_1000", 1501, player, dynamicId, characterId, instanceId, famId) #写入出错时的错误处理 d.addErrback(InFamErrbck, vplayer, nownode, famId) #写入成功时,清除原先场景中的角色实例 d.addCallback(DropCharacterInSceneForFam, vplayer, nownode, dynamicId, famId) return d
def doWhenStop(self): '''when netserver stoped''' # from bridge.famsermanger import FamSerManager # from bridge.scenesermanger import SceneSerManager # from core.UserManager import UsersManager from app.gate.core.VCharacterManager import VCharacterManager # from app.gate.serverconfig.root import root # childs = root._childsmanager._childs.keys() # for node in childs: # if 200000<node<300000: # root.callChild(node,50) for vcharacter in VCharacterManager().character_client.values(): dynamicId = vcharacter.dynamicId node = vcharacter.getNode() if node: # root.callChild(node,2,dynamicId) GlobalObject().root.callChild("scense_1000", 2, dynamicId)
def instanceColonizeBattle_712(key, dynamicId, request_proto): '''副本殖民的加锁处理,避免同时殖民同一个副本 ''' global COLONIZE_POOL argument = ColonizationBattle712_pb2.FightRequest() argument.ParseFromString(request_proto) response = ColonizationBattle712_pb2.FightResponse() dynamicId = dynamicId instanceid = argument.copyId #副本id(难度最小的那个) if instanceid in COLONIZE_POOL: response.result = False response.message = u'该副本正在进行殖民战斗' return response.SerializeToString() COLONIZE_POOL.append(instanceid) try: node = VCharacterManager().getNodeByClientId(dynamicId) d = GlobalObject().root.callChild("scense_1000", key, dynamicId, request_proto) d.addBoth(bothhandle, instanceid) return d except: COLONIZE_POOL.remove(instanceid)
def SaveGamerInfoInDB(dynamicId): '''将玩家信息写入数据库''' vcharacter=VCharacterManager().getVCharacterByClientId(dynamicId) node=vcharacter.getNode() d=GlobalObject().root.callChild(node,2,dynamicId) return d
def pushObjectToAll_11(topicID, msg): '''根据角色的ID推送消息''' _sendList = [cid for cid in VCharacterManager().client_character.keys()] root = GlobalObject().root root.callChild('net', "pushData", topicID, msg, _sendList)
def SaveGamerInfoInDB(dynamicId): '''将玩家信息写入数据库''' vcharacter = VCharacterManager().getVCharacterByClientId(dynamicId) node = vcharacter.getNode() d = GlobalObject().root.callChild(node, 2, dynamicId) return d