Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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)
Exemple #4
0
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)
Exemple #5
0
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)
Exemple #6
0
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)
Exemple #8
0
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
Exemple #9
0
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