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 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 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() #锁定角色 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 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