Пример #1
0
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
        if not user.isLoginCharacter():
            return
        if user.isCharacterLocked():
            return
        if not user.CheckEffective():
            return
        global scene_protocol
        if key in scene_protocol:
            scene = user.getSceneNode()
            if scene:
                GlobalObject().root.callChild(scene, 3, key, dynamicId,
                                              user.characterId, data)
            return
        global chat_protocol
        if key in chat_protocol:
            GlobalObject().root.callChild("chat", 3, key, dynamicId,
                                          user.characterId, data)
            return
        global combat_protocol
        if key in combat_protocol:
            GlobalObject().root.callChild("combat", 3, key, dynamicId,
                                          user.characterId, data)
            return
        node = user.getNode()
        return GlobalObject().root.callChild(node, 3, key, dynamicId,
                                             user.characterId, data)
Пример #2
0
def selectrole_276(key, dynamicId, request_proto):
    argument = netutil.c2s_buf2data("C2S_LOGIN_SELECTROLE", request_proto)
    rid = argument['rid']
    user = UsersManager().getUserByDynamicId(dynamicId)
    if not user:
        response = {}
        response["msg"] = "you haven't login"
        buf = netutil.s2c_data2buf("S2C_NOTIFY_FLOAT", response)
        GlobalObject().root.callChild("net", "pushObject",
                                      ProtocolDesc.S2C_NOTIFY_FLOAT, buf,
                                      [dynamicId])
        return
    if user.characterId == 0:
        response = {}
        response["msg"] = "you haven't character"
        buf = netutil.s2c_data2buf("S2C_NOTIFY_FLOAT", response)
        GlobalObject().root.callChild("net", "pushObject",
                                      ProtocolDesc.S2C_NOTIFY_FLOAT, buf,
                                      [dynamicId])
        return
    if user.characterId != rid:
        response = {}
        response["msg"] = "error characterId %d %d" % (rid, user.characterId)
        buf = netutil.s2c_data2buf("S2C_NOTIFY_FLOAT", response)
        GlobalObject().root.callChild("net", "pushObject",
                                      ProtocolDesc.S2C_NOTIFY_FLOAT, buf,
                                      [dynamicId])
        return
    if user.isCharacterLocked():
        return
    if not user.CheckEffective():
        response = {}
        response["msg"] = "account is banned"
        buf = netutil.s2c_data2buf("S2C_NOTIFY_FLOAT", response)
        GlobalObject().root.callChild("net", "pushObject",
                                      ProtocolDesc.S2C_NOTIFY_FLOAT, buf,
                                      [dynamicId])
        return
    if user.isLoginCharacter():
        response = {}
        response["msg"] = "character is already login"
        buf = netutil.s2c_data2buf("S2C_NOTIFY_FLOAT", response)
        GlobalObject().root.callChild("net", "pushObject",
                                      ProtocolDesc.S2C_NOTIFY_FLOAT, buf,
                                      [dynamicId])
        return
    user.loginCharacter()
    nownode = GameSerManager().getBsetSvrNodeId()
    d = GlobalObject().root.callChild(nownode, 1, dynamicId, rid)
    user.setNode(nownode)
    GameSerManager().addClient(nownode, dynamicId)

    scenenode = SceneSerManager().getBsetScenNodeId()
    d = GlobalObject().root.callChild(scenenode, 1, dynamicId, rid)
    user.setSceneNode(scenenode)
    SceneSerManager().addClient(scenenode, dynamicId)

    GlobalObject().root.callChild("chat", 1, dynamicId, rid)
    GlobalObject().root.callChild("combat", 1, dynamicId, rid)

    response = {}
    buf = netutil.s2c_data2buf("S2C_LOGIN_SELECTROLE", response)
    GlobalObject().root.callChild("net", "pushObject",
                                  ProtocolDesc.S2C_LOGIN_SELECTROLE, buf,
                                  [dynamicId])
    return