Ejemplo n.º 1
0
def encode(msgstr):
    if not msgstr:
        return msgstr
    if msgstr[0] != "{":
        return msgstr
    if msgstr.find('"cmdId"') < 0:
        return msgstr
    msgPack = MsgPack()
    msgPack.unpack(msgstr)
    cmdId = msgPack.getKey("cmdId")
    if not cmdId:
        return msgstr
    cmdObj = _getCmdObj(cmdId)
    if not cmdObj:
        return msgstr
    binStr = cmdObj.structMsg(msgPack)
    return struct.pack("!3sB", "$fs", cmdId) + binStr
Ejemplo n.º 2
0
def encode(msgstr):
    if not msgstr:
        return msgstr
    if msgstr[0] != "{":
        return msgstr
    if msgstr.find('"cmdId"') < 0:
        return msgstr
    msgPack = MsgPack()
    msgPack.unpack(msgstr)
    cmdId = msgPack.getKey("cmdId")
    if not cmdId:
        return msgstr
    cmdObj = _getCmdObj(cmdId)
    if not cmdObj:
        return msgstr
    binStr = cmdObj.structMsg(msgPack)
    return struct.pack("!3sB", "$fs", cmdId) + binStr
Ejemplo n.º 3
0
 def gunChange(self, gLv):
     """
     切换火炮等级
     """
     reason = 0
     if gLv > self.gunLevel or not config.getGunLevelConf(
             gLv, self.table.gameMode):
         reason = 1
     else:
         if gLv < self.table.runConfig.minGunLevel:
             return
         elif gLv > self.tableMaxGunLevel():
             return
         elif self.getUsingSkillInfo():
             # 技能处于使用中时,升级炮台,炮台等级需等技能状态结束后才会切换更新
             self.nowGunLevel = gLv
             return
     gunMultiple = config.getGunConf(self.gunId, self.clientId, self.gunLv,
                                     self.table.gameMode).get(
                                         "multiple", 1)
     retMsg = MsgPack()
     retMsg.setCmd("gchg")
     retMsg.setResult("gameId", config.FISH_GAMEID)
     retMsg.setResult("gLv", gLv)
     retMsg.setResult("userId", self.userId)
     retMsg.setResult("seatId", self.seatId)
     retMsg.setResult("gunMultiple", gunMultiple)
     retMsg.setResult("gameMode", self.table.gameMode)
     retMsg.setResult("reason", reason)
     retMsg.setResult("tableMaxGunLevel", self.tableMaxGunLevel())
     GameMsg.sendMsg(retMsg, self.userId)
     if reason == 0:
         self.nowGunLevel = gLv
         result = retMsg.getKey("result")
         del result["reason"]
         GameMsg.sendMsg(retMsg, self.table.getBroadcastUids(self.userId))
         from newfish.game import TGFish
         event = ChangeGunLevelEvent(self.userId, config.FISH_GAMEID,
                                     self.table.bigRoomId, self.nowGunLevel)
         TGFish.getEventBus().publishEvent(event)
         self.syncSkillSlots()
Ejemplo n.º 4
0
def _remoteCall(markParams, argl, argd):
    srvtype = markParams['remoteServerType']
    syncCall = markParams['remoteSyncCall']
    remoteGroupByIndex = markParams['remoteGroupByIndex']
    remoteGroupBy = markParams['remoteGroupBy']
    cmd = markParams['remoteCmd']
    action = markParams['remoteAction']
    groupVal = argl[remoteGroupByIndex]
    msgpack = MsgPack()
    msgpack.setCmdAction(cmd, action)
    msgpack.setParam(remoteGroupBy, groupVal)
    msgpack.setParam('argl', argl[1:])  # 去掉self, cls
    msgpack.setParam('argd', argd)
    msgpack.setParam('clientId', configure.CLIENTID_RPC)
    msgpack = msgpack.pack()
    jstr = None
    if srvtype == gdata.SRV_TYPE_UTIL:
        jstr = _communicateServer(_utilServer, groupVal, groupVal, msgpack,
                                  'RQ', syncCall)
    elif srvtype == gdata.SRV_TYPE_ROOM:
        assert (groupVal in gdata.roomIdDefineMap())
        jstr = _communicateRoomServer(0, groupVal, msgpack, 'RQ', syncCall)
    elif srvtype == gdata.SRV_TYPE_TABLE:
        assert (groupVal in gdata.roomIdDefineMap())
        jstr = _communicateTableServer(0, groupVal, msgpack, 'RQ', syncCall)
    elif srvtype == gdata.SRV_TYPE_CENTER:
        jstr = _communicateServer(_centerServer, groupVal, groupVal, msgpack,
                                  'RQ', syncCall)
    else:
        raise Exception('ERROR RPC cmd route false !!' + cmd + '.' + action)
    ret = None
    if syncCall and jstr:
        mo = MsgPack()
        try:
            mo.unpack(jstr)
        except:
            raise Exception('the json data error 5 !! [' + repr(jstr) + ']')
        ret = mo.getKey('result')
    return ret
Ejemplo n.º 5
0
def _remoteCall(markParams, argl, argd):
    srvtype = markParams['remoteServerType']
    syncCall = markParams['remoteSyncCall']
    remoteGroupByIndex = markParams['remoteGroupByIndex']
    remoteGroupBy = markParams['remoteGroupBy']
    cmd = markParams['remoteCmd']
    action = markParams['remoteAction']
    groupVal = argl[remoteGroupByIndex]
    msgpack = MsgPack()
    msgpack.setCmdAction(cmd, action)
    msgpack.setParam(remoteGroupBy, groupVal)
    msgpack.setParam('argl', argl[1:])  # 去掉self, cls
    msgpack.setParam('argd', argd)
    msgpack.setParam('clientId', configure.CLIENTID_RPC)
    msgpack = msgpack.pack()
    jstr = None
    if srvtype == gdata.SRV_TYPE_UTIL:
        jstr = _communicateServer(_utilServer, groupVal, groupVal, msgpack, 'RQ', syncCall)
    elif srvtype == gdata.SRV_TYPE_ROOM:
        assert (groupVal in gdata.roomIdDefineMap())
        jstr = _communicateRoomServer(0, groupVal, msgpack, 'RQ', syncCall)
    elif srvtype == gdata.SRV_TYPE_TABLE:
        assert (groupVal in gdata.roomIdDefineMap())
        jstr = _communicateTableServer(0, groupVal, msgpack, 'RQ', syncCall)
    elif srvtype == gdata.SRV_TYPE_CENTER:
        jstr = _communicateServer(_centerServer, groupVal, groupVal, msgpack, 'RQ', syncCall)
    else:
        raise Exception('ERROR RPC cmd route false !!' + cmd + '.' + action)
    ret = None
    if syncCall and jstr:
        mo = MsgPack()
        try:
            mo.unpack(jstr)
        except:
            raise Exception('the json data error 5 !! [' + repr(jstr) + ']')
        ret = mo.getKey('result')
    return ret