def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) request = msgReq.request.registerRequest msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('registerresponse') response = msgResp.response.registerResponse user = Dal_User().getValueByAttr('name', request.sName) if len(user) != 0: response.nErrorCode = config_error['userinvaild'] else: um = User(id=None, name=request.sName, password=request.sPassWord, nick=None, exp=None, gold=None, money=None, headimg=None, phone=None, records=None, assets=None, room=None, parent=None, parentaward=None, invitetime=None) Dal_User().addUser(um) response.nErrorCode = config_error['success'] response.nUserID = um.id data = msgResp.SerializeToString() self.write(data)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('irookieresponse') user = Dal_User().getUser(msgReq.request.irookieRequest.nUserID) if user == None: msgResp.response.irookieResponse.nErrorCode = config_error[ 'userinvaild'] else: #先检测是否已经领过新手奖励 if user.parent == 0: msgResp.response.irookieResponse.nErrorCode = config_error[ 'notrookie'] else: awards = msgReq.request.irookieRequest.nAwards assetlist = Utils().decodeMutilFormat(user.assets, ';', ':') for k, v in config_game['rookieIAward'].iteritems(): if assetlist.has_key(k): assetlist[k] = assetlist[k] + v * awards else: assetlist[k] = v * awards user.assets = Utils().encodeMutilFormat(assetlist, ';', ':') msgResp.response.irookieResponse.newAssets = user.assets kwargs = {"assets": user.assets} Dal_User().uqdateUser(user.id, **kwargs) dataR = msgResp.SerializeToString() self.write(dataR)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('mailresponse') user = Dal_User().getUser(msgReq.request.mailRequest.nUserID) if user == None: msgResp.response.mailResponse.nErrorCode = config_error[ 'userinvaild'] else: msgResp.response.mailResponse.nErrorCode = config_error['success'] mails = Utils().decodeIDFormat(user.mails) for k, v in enumerate(mails): mail = Dal_Mail().getMail(int(v)) if mail == None: continue addMail = msgResp.response.mailResponse.mails.add() addMail.nID = mail.id addMail.nUID = mail.uid addMail.nType = mail.type addMail.sContent = mail.content if isinstance(mail.time, str): addMail.sTime = mail.time else: addMail.sTime = Utils().dateTime2String(mail.time) dataR = msgResp.SerializeToString() self.write(dataR)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('welfareresponse') user = Dal_User().getUser(msgReq.request.welfareRequest.nUserID) if user == None: msgResp.response.welfareResponse.nErrorCode = config_error['userinvaild'] elif user.welfaretime and Utils().dbTime2Number(user.welfaretime) >= Utils().LastDayEndTime(): msgResp.response.welfareResponse.nErrorCode = config_error['luckytimeerror'] elif user.gold >= configs_default['welfare']: msgResp.response.welfareResponse.nErrorCode = config_error['welfareerror'] else: msgResp.response.welfareResponse.nErrorCode = config_error['success'] #发福利逻辑 user.gold = user.gold + configs_default['welfare'] user.welfaretime = Utils().dbTimeCreate() msgResp.response.welfareResponse.newAssets.nUserID = user.id msgResp.response.welfareResponse.newAssets.nGold = user.gold kwargs = {"gold": user.gold,"welfaretime":user.welfaretime} Dal_User().uqdateUser(user.id, **kwargs) dataR = msgResp.SerializeToString() self.write(dataR)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('luckyresponse') user = Dal_User().getUser(msgReq.request.luckyRequest.nUserID) if user == None: msgResp.response.luckyResponse.nErrorCode = config_error[ 'userinvaild'] elif user.luckytime and Utils().dbTime2Number( user.luckytime) >= Utils().LastDayEndTime(): msgResp.response.luckyResponse.nErrorCode = config_error[ 'luckytimeerror'] else: msgResp.response.luckyResponse.nErrorCode = config_error['success'] #抽奖逻辑 randNum = Utils().random_index(configs_default['luckysRate']) msgResp.response.luckyResponse.nLucky = randNum luckGood = configs_default['luckys'][randNum] if luckGood['type'] == configs_default['goodType']['money']: user.money = user.money + luckGood['extra'] elif luckGood['type'] == configs_default['goodType']['gold']: user.gold = user.gold + luckGood['extra'] user.luckytime = Utils().dbTimeCreate() msgResp.response.luckyResponse.newAssets.nUserID = user.id msgResp.response.luckyResponse.newAssets.nGold = user.gold msgResp.response.luckyResponse.newAssets.nMoney = user.money kwargs = { "gold": user.gold, "money": user.money, "luckytime": user.luckytime } Dal_User().uqdateUser(user.id, **kwargs) # 邮件记录 mail = Mail() mail.uid = user.id mail.type = configs_default['mail']['type']['luckyaward'] mail.content = str(luckGood['type']) + ':' + str(luckGood['extra']) mail.time = Utils().dbTimeCreate() Dal_Mail().addMail(mail) Dal_User().addMails(mail.uid, mail.id) dataR = msgResp.SerializeToString() self.write(dataR)
def on_create_dele_room(self, message): uID = message.nUserID gP = message.gamePlay cardType = message.sCardType user = Dal_User().getUser(uID) if user.room != '': return # 检查资产 cardConfig = configs_default['goods'][cardType] if user.gold < cardConfig['gold'] or user.money < cardConfig['money']: msg = msg_pb2.Msg() msg.type = msg_pb2.EnumMsg.Value('createdeleroomresponse') msg.response.createRoomResponse.nErrorCode = config_error[ 'moneyerror'] return msg newRoom = None if gP.nType == config_game['gameplay']['common']['id']: newRoom = Room() elif gP.nType == config_game['gameplay']['dongbei']['id']: newRoom = DongBei_Room() if gP.nType == config_game['gameplay']['haerbin_common']['id'] or \ gP.nType == config_game['gameplay']['haerbin_jiahu']['id']: newRoom = HaErBin_Room() elif gP.nType == config_game['gameplay']['mudanjiang_common']['id'] or \ gP.nType == config_game['gameplay']['mudanjiang_jiahu']['id']: newRoom = MuDanJiang_Room() else: # 默认是通用玩法 newRoom = Room() GameHandler.add_room(newRoom) return newRoom.initDeleRoom(message, self)
def on_create_room(self, message): uID = message.nUserID gP = message.gamePlay cardType = message.sCardType user = Dal_User().getUser(uID) if user.room != '': return # 检查资产 cardConfig = configs_default['goods'][cardType] if user.gold < cardConfig['gold'] or user.money < cardConfig['money']: msg = msg_pb2.Msg() msg.type = msg_pb2.EnumMsg.Value('createroomresponse') msg.response.createRoomResponse.nErrorCode = config_error[ 'moneyerror'] data = msg.SerializeToString() self.write_message(data, True) return newRoom = None if gP.nType == config_game['gameplay']['type']['common']: newRoom = ZK_Room() elif gP.nType == config_game['gameplay']['type']['hunzi']: newRoom = Hui_Room() elif gP.nType == config_game['gameplay']['type']['happy']: self.on_create_happy_room(message) return else: # 默认是通用玩法 newRoom = Room() newRoom.initRoom(message, GameHandler.waiters[uID], self) GameHandler.add_room(newRoom)
def recv(self): try: total_len = self.mySocket.recv(2) total_len_recv = struct.unpack('>H', total_len)[0] message = self.mySocket.recv(total_len_recv) message_body = msg_pb2.Msg() message_body.ParseFromString(message) if message_body.head.msgType == 1001: response_time = (time.time() - self.start_time) * 1000 status = json.loads(message_body.head.extend) events.request_success.fire( request_type='StormIMClient', name='RESPONSE HANDSHAKE', response_time=response_time, response_length=total_len_recv, ) print("接受到握手消息消息报告状态:", status["status"]) elif message_body.head.msgType == 1002: response_time = (time.time() - self.start_time) * 1000 events.request_success.fire( request_type='StormIMClient', name='RESPONSE HEARTBEAT', response_time=response_time, response_length=total_len_recv, ) print("接受到心跳消息报告:") except Exception as e: total_time = int((time.time() - self.start_time) * 1000) events.request_failure.fire(request_type="StormIMClient", name="RESPONSE MSG", response_time=total_time, exception=e) self.start_time = time.time()
def send_heartbeat_msg(self): msg = msg_pb2.Msg() head = msg.head msg_id_str = str(uuid.uuid4()) head.msgId = msg_id_str head.msgType = 1002 head.fromId = self.my_id head.timestamp = int(time.time()) total_len = len(msg.SerializeToString()) pack1 = struct.pack('>H', total_len) self.start_time = time.time() try: self.mySocket.send(pack1) self.mySocket.sendall(msg.SerializeToString()) except Exception as e: total_time = int((time.time() - self.start_time) * 1000) events.request_failure.fire(request_type="StormIMClient", name="send_heartbeat_msg", response_time=total_time, exception=e) self.start_time = time.time() else: total_time = int((time.time() - self.start_time) * 1000) events.request_success.fire(request_type="StormIMClient", name="send_heartbeat_msg", response_time=total_time, response_length=0) self.start_time = time.time() self.recv()
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) request = msgReq.request.clientLogRequest Utils().logMainDebug("玩家" + str(request.nUserID) + "在" + Utils().dbTimeCreate() + "出错: " + str(request.sContent))
def onConnect(self, id, conn): ##玩家掉线重连,复用玩家加入房间协议 self.sendConnectMessage(id, conn) # 网络协议,发送宝牌协议 msg = msg_pb2.Msg() msg.type = msg_pb2.EnumMsg.Value('baopaishownotify') msg.notify.baopaiShowNotify.nUserID = 1 msg.notify.baopaiShowNotify.baopai.nType = self.m_cmjManager.m_baoPai.m_Type msg.notify.baopaiShowNotify.baopai.nValue = self.m_cmjManager.m_baoPai.m_Value self.sendMessage(id, msg)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('loginoutresponse') request = msgReq.request.loginOutRequest response = msgResp.response.loginOutResponse user = Dal_User().getUser(request.nUserID) if user == None: response.nErrorCode = config_error['userinvaild'] else: response.nErrorCode = config_error['success'] Dal_User().delLoginer(user.id) data = msgResp.SerializeToString() self.write(data)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('rankawardresponse') user = Dal_User().getUser(msgReq.request.rankAwardRequest.nUserID) if user == None: msgResp.response.rankAwardResponse.nErrorCode = config_error[ 'userinvaild'] elif Dal_User().getRankedFlag( user.id, msgReq.request.rankAwardRequest.nRankType): msgResp.response.rankAwardResponse.nErrorCode = config_error[ 'rankawarderror'] else: msgResp.response.rankAwardResponse.nErrorCode = config_error[ 'success'] #这里取排名 rankOrder = Dal_Record().getRankOrder( user.id, msgReq.request.rankAwardRequest.nRankType) rankAwardConfig = Dal_Record().getRankAward( rankOrder, msgReq.request.rankAwardRequest.nRankType) if rankAwardConfig == None: msgResp.response.rankAwardResponse.nErrorCode = config_error[ 'rankawarderror'] else: if rankAwardConfig['aType'] == configs_default['goodType'][ 'money']: user.money = user.money + rankAwardConfig['award'] elif rankAwardConfig['aType'] == configs_default['goodType'][ 'gold']: user.gold = user.gold + rankAwardConfig['award'] msgResp.response.rankAwardResponse.newAssets.nUserID = user.id msgResp.response.rankAwardResponse.newAssets.nGold = user.gold msgResp.response.rankAwardResponse.newAssets.nMoney = user.money kwargs = {"gold": user.gold, "money": user.money} Dal_User().uqdateUser(user.id, **kwargs) Dal_User().updateRankFlag( user.id, msgReq.request.rankAwardRequest.nRankType) dataR = msgResp.SerializeToString() self.write(dataR)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('authresponse') user = Dal_User().getUser(msgReq.request.authRequest.nUserID) if user == None: msgResp.response.authResponse.nErrorCode = config_error[ 'userinvaild'] else: msgResp.response.authResponse.nErrorCode = config_error['success'] sPhone = msgReq.request.authRequest.sPhone sVCode = msgReq.request.authRequest.sVCode sRealName = msgReq.request.authRequest.sRealName sSFZ = msgReq.request.authRequest.sSFZ if sVCode != user.vcode: msgResp.response.authResponse.nErrorCode = config_error[ 'autherror'] else: assetlist = Utils().decodeMutilFormat(user.assets, ';', ':') for k, v in config_game['authAward'].iteritems(): if assetlist.has_key(k): assetlist[k] = assetlist[k] + v else: assetlist[k] = v user.assets = Utils().encodeMutilFormat(assetlist, ';', ':') msgResp.response.authResponse.newasset = user.assets kwargs = { "phone": sPhone, "realname": sRealName, "sfz": sSFZ, "assets": user.assets } Dal_User().uqdateUser(user.id, **kwargs) Utils().sendTelMsg(sVCode, sPhone) dataR = msgResp.SerializeToString() self.write(dataR)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('vcoderesponse') user = Dal_User().getUser(msgReq.request.vCodeRequest.nUserID) if user == None: msgResp.response.vCodeResponse.nErrorCode = config_error[ 'userinvaild'] else: msgResp.response.vCodeResponse.nErrorCode = config_error['success'] sPhone = msgReq.request.vCodeRequest.sPhone sVCode = Utils().createPhoneCode() msgResp.response.vCodeResponse.sVCode = sVCode kwargs = {"vcode": sVCode} Dal_User().uqdateUser(user.id, **kwargs) Utils().sendTelMsg(sVCode, sPhone) dataR = msgResp.SerializeToString() self.write(dataR)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) request = msgReq.request.loginHeartRequest user = Dal_User().getUser(request.nUserID) if user: loginuser = Dal_User().getLoginer(request.nUserID) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('loginheartresponse') response = msgResp.response.loginHeartResponse # if loginuser and user.sToken == request.sToken: # Dal_User().onHeartBeat(user.id) # response.nErrorCode = config_error['success'] # response.nHappyNum = GameHandler.get_happy_users() # else: # response.nErrorCode = config_error['loginExpires'] response.nErrorCode = config_error['success'] response.nHappyNum = GameHandler.get_happy_users() data = msgResp.SerializeToString() self.write(data)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('boardcastresponse') user = Dal_User().getUser(msgReq.request.boardcastRequest.nUserID) if user == None: msgResp.response.boardcastResponse.nErrorCode = config_error[ 'userinvaild'] else: pool = Dal_BoardCast().getAll() for k, v in pool.iteritems(): bc = msgResp.response.boardcastResponse.bPool.add() bc.nID = k bc.sTitle = v.title bc.sDetail = v.detail bc.sDate = v.time dataR = msgResp.SerializeToString() self.write(dataR)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('suggestresponse') user = Dal_User().getUser(msgReq.request.suggestRequest.nUserID) if user == None: msgResp.response.suggestResponse.nErrorCode = config_error['userinvaild'] else: msgResp.response.suggestResponse.nErrorCode = config_error['success'] newSugg = Suggest() newSugg.phone = msgReq.request.suggestRequest.sPhone newSugg.detail = msgReq.request.suggestRequest.sSuggest now = datetime.now() now = now.strftime("%Y-%m-%d %H:%M:%S") newSugg.time = now Dal_Suggest().addSuggest(newSugg) dataR = msgResp.SerializeToString() self.write(dataR)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('buyresponse') user = Dal_User().getUser(msgReq.request.buyRequest.nUserID) if user == None: msgResp.response.buyResponse.nErrorCode = config_error['userinvaild'] else: msgResp.response.buyResponse.nErrorCode = config_error['success'] totalG = 0 totalM = 0 for i,v in enumerate(msgReq.request.buyRequest.goods): gID = v.nID gConfig = configs_default['goods'][str(gID)] gType = gConfig['type'] #这里只能用钻石购买金币 if gType != configs_default['goodType']['gold']:continue gMoney = gConfig['money']#需要花费的钻石数量 gExtra = gConfig['extra']#能兑换的金币数量 totalG = totalG + gExtra totalM = totalM + gMoney if user.money < totalM: msgResp.response.buyResponse.nErrorCode = config_error['moneyerror'] else: user.gold = user.gold + totalG user.money = user.money - totalM msgResp.response.buyResponse.newAssets.nUserID = user.id msgResp.response.buyResponse.newAssets.nGold = user.gold msgResp.response.buyResponse.newAssets.nMoney = user.money kwargs = {"gold": user.gold,"money": user.money} Dal_User().uqdateUser(user.id,**kwargs) dataR = msgResp.SerializeToString() self.write(dataR)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) message = msgReq.request.createRoomRequest uID = message.nUserID gP = message.gamePlay cardType = message.sCardType user = Dal_User().getUser(uID) if user.room != '': return # 检查资产 cardConfig = configs_default['goods'][cardType] if user.gold < cardConfig['gold'] or user.money < cardConfig['money']: msg = msg_pb2.Msg() msg.type = msg_pb2.EnumMsg.Value('createdeleroomresponse') msg.response.createRoomResponse.nErrorCode = config_error[ 'moneyerror'] return msg newRoom = None if gP.nType == config_game['gameplay']['common']['id']: newRoom = Room() elif gP.nType == config_game['gameplay']['dongbei']['id']: newRoom = DongBei_Room() if gP.nType == config_game['gameplay']['haerbin_common']['id'] or \ gP.nType == config_game['gameplay']['haerbin_jiahu']['id']: newRoom = HaErBin_Room() elif gP.nType == config_game['gameplay']['mudanjiang_common']['id'] or \ gP.nType == config_game['gameplay']['mudanjiang_jiahu']['id']: newRoom = MuDanJiang_Room() else: # 默认是通用玩法 newRoom = Room() msgResp = newRoom.initDeleRoom(message, self) GameHandler.add_room(newRoom) dataR = msgResp.SerializeToString() self.write(dataR)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('rookieresponse') user = Dal_User().getUser(msgReq.request.rookieRequest.nUserID) if user == None: msgResp.response.rookieResponse.nErrorCode = config_error[ 'userinvaild'] else: #先检测是否已经领过新手奖励 if user.parent == 0: msgResp.response.rookieResponse.nErrorCode = config_error[ 'notrookie'] else: sICode = msgReq.request.rookieRequest.sICode #邀请码 nI = (int)(Utils().decodeRandomCode(sICode)) #获取邀请者 inviter = Dal_User().getUser(nI) if inviter != None: # 发放新手奖励 assetlist = Utils().decodeMutilFormat( user.assets, ';', ':') for k, v in config_game['rookieAward'].iteritems(): if assetlist.has_key(k): assetlist[k] = assetlist[k] + v else: assetlist[k] = v user.assets = Utils().encodeMutilFormat( assetlist, ';', ':') kwargs = {"parent": nI, "assets": user.assets} Dal_User().uqdateUser(user.id, **kwargs) else: msgResp.response.rookieResponse.nErrorCode = config_error[ 'userinvaild'] dataR = msgResp.SerializeToString() self.write(dataR)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('irookieshowresponse') user = Dal_User().getUser(msgReq.request.irookieShowRequest.nUserID) if user == None: msgResp.response.irookieShowResponse.nErrorCode = config_error[ 'userinvaild'] else: msgResp.response.irookieShowResponse.nErrorCode = config_error[ 'success'] rookies = Dal_User().getValueByAttr('parent', user.id) msgResp.response.irookieShowResponse.nAwardCount = len(rookies) for k, v in enumerate(rookies): record = msgResp.response.records.add() record.nUserID = record.id record.nUserNick = record.name record.nInviteTime = record.invitetime dataR = msgResp.SerializeToString() self.write(dataR)
def on_message(self, message): # logging.info("got message %r", message) # msgR = msg_pb2.Msg() # msgR.ParseFromString(message) # msg = msg_pb2.Msg() # msg.type = msg_pb2.EnumMsg.Value('createroomresponse') # # msg.response.createRoomResponse.nErrorCode = 0 # # msg.response.createRoomResponse.nType = 0 # # msg.response.createRoomResponse.sRoomID = "asda" # # # # data = msg.SerializeToString() # # GameHandler.waiters[12345].write_message(data) # msg = test_pb2.testMessage() # msg.id = 123456 # # msg1 = test_pb2.testMessage() # msg1.id = 123 # # data = msg.SerializeToString() # data1 = msg1.SerializeToString() # GameHandler.testconn.write_message(data1) # # GameHandler.waiters[234].write_message(data) # # return msgRequest = msg_pb2.Msg() msgRequest.ParseFromString(message) if msgRequest.type == msg_pb2.EnumMsg.Value('createroomrequest'): self.on_create_room(msgRequest.request.createRoomRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('joinroomrequest'): self.on_join_room(msgRequest.request.joinRoomRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('leaveroomrequest'): self.on_leave_room(msgRequest.request.leaveRoomRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('getpairequest'): self.on_get_pai(msgRequest.request.getPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('putpairequest'): self.on_put_pai(msgRequest.request.putPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('dochipairequest'): self.on_do_chi_pai(msgRequest.request.doChiPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('dogangpairequest'): self.on_do_gang_pai(msgRequest.request.doGangPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('dohupairequest'): self.on_do_hu_pai(msgRequest.request.doHuPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('dopengpairequest'): self.on_do_peng_pai(msgRequest.request.doPengPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('dotingpairequest'): self.on_do_ting_pai(msgRequest.request.doTingPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('guopairequest'): self.on_guo_pai(msgRequest.request.doTingPaiRequest)
def initPai(self): ##初始化玩家牌 self.m_cmjManager.InitPai(0) # 默认黄庄的剩余牌0张 self.GenBaoPai() #生成宝牌 # self.m_cmjManager.m_baoPai.m_Type=4 # self.m_cmjManager.m_baoPai.m_Value = 5 self.GraspPai() # 发牌 # 网络协议,发送宝牌协议 msg = msg_pb2.Msg() msg.type = msg_pb2.EnumMsg.Value('baopaishownotify') msg.notify.baopaiShowNotify.nUserID = 1 msg.notify.baopaiShowNotify.baopai.nType = self.m_cmjManager.m_baoPai.m_Type msg.notify.baopaiShowNotify.baopai.nValue = self.m_cmjManager.m_baoPai.m_Value self.sendAllMessage(msg) # 通知玩家起牌,之前检查暗杠 self.getPai(self.m_boss)
def on_join_room(self, message): uid = message.nUserID rid = message.sRoomID user = Dal_User().getUser(uid) if user.room != '': return room = self.get_room(rid) if room == None: # 网络协议,响应 msg = msg_pb2.Msg() msg.type = msg_pb2.EnumMsg.Value('joinroomresponse') msg.response.joinRoomResponse.nErrorCode = config_error[ 'roominvalid'] data = msg.SerializeToString() conn = GameHandler.waiters[uid] if conn != None: conn.write_message(data, True) return room.onJoin(uid, GameHandler.waiters[uid])
def on_message(self, message): # logging.info("got message %r", message) try: msgRequest = msg_pb2.Msg() msgRequest.ParseFromString(message) if msgRequest.type == msg_pb2.EnumMsg.Value('createroomrequest'): self.on_create_room(msgRequest.request.createRoomRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('joinroomrequest'): self.on_join_room(msgRequest.request.joinRoomRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('leaveroomrequest'): self.on_leave_room(msgRequest.request.leaveRoomRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('dissroomrequest'): self.on_diss_room(msgRequest.request.dissRoomRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('putpairequest'): self.on_put_pai(msgRequest.request.putPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('dochipairequest'): self.on_do_chi_pai(msgRequest.request.doChiPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('dogangpairequest'): self.on_do_gang_pai(msgRequest.request.doGangPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('dohupairequest'): self.on_do_hu_pai(msgRequest.request.doHuPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('dopengpairequest'): self.on_do_peng_pai(msgRequest.request.doPengPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('guopairequest'): self.on_guo_pai(msgRequest.request.guoPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value( 'doqiangtingpairequest'): self.on_do_qiang_ting_pai( msgRequest.request.doQiangTingPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('dotingpairequest'): self.on_do_ting_pai(msgRequest.request.doTingPaiRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('readygamerequest'): self.on_ready_game(msgRequest.request.readyGameRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('chatrequest'): self.on_chat(msgRequest.request.chatRequest) elif msgRequest.type == msg_pb2.EnumMsg.Value('delegaterequest'): self.on_delegate(msgRequest.request.delegateRequest) except Exception, e: msg = traceback.format_exc() # 方式1 Utils().logMainDebug(msg)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('loginresponse') request = msgReq.request.loginRquest response = msgResp.response.loginResponse user = Dal_User().getLoginUser(request.sName, request.sPassWord) if user == None: response.nErrorCode = config_error['userinvaild'] else: if user.gamestate == configs_default['gameState']['forbid']: response.nErrorCode = config_error['userforbid'] elif Dal_User().getLoginer(user.id) and user.room == "": response.nErrorCode = config_error['userlogined'] else: sToken = Utils().createToken() # 生成token user.sToken = sToken # //设置位置信息 user.location = request.location response.nErrorCode = config_error['success'] response.requester.nUserID = user.id response.requester.sToken = sToken if user.name: response.requester.sName = user.name if user.nick: response.requester.sNick = user.nick if user.exp: response.requester.nExp = user.exp if user.gold != None: response.requester.nGold = user.gold if user.money != None: response.requester.nMoney = user.money if user.headimg: response.requester.sHeadimg = user.headimg if user.phone: response.requester.sPhone = user.phone if user.records: response.requester.sRecords = user.records if user.assets: response.requester.sAssets = user.assets if user.room: response.requester.sRoom = user.room if user.gender != None: response.requester.nGender = user.gender if user.luckytime: response.requester.bLuckyToday = (Utils().dbTime2Number( user.luckytime) >= Utils().LastDayEndTime()) else: response.requester.bLuckyToday = False if user.welfaretime: response.requester.bWelfareToday = (Utils().dbTime2Number( user.welfaretime) >= Utils().LastDayEndTime()) else: response.requester.bWelfareToday = False if user.sharetime: response.requester.bShareAwardWeek = ( Utils().dbTime2Number( user.sharetime) >= Utils().LastWeekEndTime()) else: response.requester.bShareAwardWeek = False if user.rankaward: rkAwardFlags = user.rankaward.split(';') for flag in rkAwardFlags: response.requester.bRkAwardFlags.append((flag == '1')) # response.requester.nWinCount = user.wincount # response.requester.nTotalCount = user.totalcount # response.requester.sIP = self.request.remote_ip delegater = Dal_Delegate().getDelegate(user.id) response.requester.sICode = delegater.icode # 登录记录 Dal_User().addLoginer(user.id) # //更新登录时间 Dal_User().updateLoginTime(user.id) data = msgResp.SerializeToString() self.write(data)
def post(self): try: msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('rankresponse') user = Dal_User().getUser(msgReq.request.rankRequest.nUserID) if user == None: msgResp.response.rankResponse.nErrorCode = config_error['userinvaild'] else: msgResp.response.rankResponse.nErrorCode = config_error['success'] #这里取排名 rankCache = Dal_Record().getRankCache() for k,rankList in rankCache.iteritems(): index = 0 respRD = None if k == config_game['gamerRank']['day']: respRD = msgResp.response.rankResponse.rankDayRecords elif k == config_game['gamerRank']['week']: respRD = msgResp.response.rankResponse.rankWeekRecords elif k == config_game['gamerRank']['month']: respRD = msgResp.response.rankResponse.rankMonthRecords elif k == config_game['gamerRank']['year']: respRD = msgResp.response.rankResponse.rankYearRecords rd = Dal_Record().getRankData(user.id,k) if rd: respRD.rankRequster.nWinCount = (int)(rd.m_nWinCount) respRD.rankRequster.nScore = (int)(rd.m_nScore) else: respRD.rankRequster.nWinCount = 0 respRD.rankRequster.nScore = 0 respRD.rankRequster.nUserID = (int)(user.id) rankUser = Dal_User().getUser(user.id) respRD.rankRequster.sName = rankUser.nick respRD.rankRequster.sHeadimg = rankUser.headimg respRD.rankRequster.nRank = Dal_Record().getRankOrder(user.id,k) respRD.rankRequster.bCanAward = not Dal_User().getRankedFlag(user.id,k) for rank,rd in enumerate(rankList): index = index + 1 if index > config_game['gamerRankCount']:break uid = (int)(rd.m_nID) if uid<0:continue respRDCell = respRD.rankRecords.add() respRDCell.nUserID = (int)(rd.m_nID) respRDCell.nWinCount = (int)(rd.m_nWinCount) respRDCell.nScore = (int)(rd.m_nScore) rankUser = Dal_User().getUser(respRDCell.nUserID) respRDCell.sName = rankUser.nick respRDCell.sHeadimg = rankUser.headimg rankAwardConfig = Dal_Record().getRankAward(rank+1, k) if rankAwardConfig: respRDCell.nRankAwardType = rankAwardConfig['aType'] respRDCell.nRankAward = rankAwardConfig['award'] dataR = msgResp.SerializeToString() self.write(dataR) except Exception, e: msg = traceback.format_exc() # 方式1 Utils().logMainDebug(msg)
def post(self): msgReq = msg_pb2.Msg() msgReq.ParseFromString(self.request.body) msgResp = msg_pb2.Msg() msgResp.type = msg_pb2.EnumMsg.Value('loginresponse') request = msgReq.request.loginWXRequest response = msgResp.response.loginResponse icode = request.iCode user = Dal_User().getLoginUser(request.sOpenID,"") if user == None: response.nErrorCode = config_error['success'] user = User(id=None, name=request.sOpenID, password="", nick=request.sNick, exp=0, gold=0, money=0, headimg=request.sHeadImage, phone='', records='', assets='', room='', rookie = 0,invitetime=None, luckytime=None,welfaretime=None, gender=request.nGender,rankaward="0;0;0;0", logintime=Utils().dbTimeCreate(), gamestate = configs_default['gameState']['normal'], totalmoney=0,totalrmb=0,sharetime=None, wincount =0,totalcount=0,mails='',actawards='') Dal_User().addUser(user) icode = self.registDelegate(user,icode) rooikeAwardType = self.handleICode(user,icode) if user.gamestate == configs_default['gameState']['forbid']: response.nErrorCode = config_error['userforbid'] elif Dal_User().getLoginer(user.id) and user.room == "": response.nErrorCode = config_error['userlogined'] else: sToken = Utils().createToken() #生成token user.sToken = sToken #//设置位置信息 user.location = request.location #//更新头像 if request.sHeadImage != "" and request.sHeadImage != user.headimg: user.headimg = request.sHeadImage kwargs = {"headimg": request.sHeadImage} Dal_User().uqdateUser(user.id, **kwargs) #更新昵称 if request.sNick != "" and request.sNick != user.nick: user.sNick = request.sNick kwargs = {"nick": request.sNick} Dal_User().uqdateUser(user.id, **kwargs) response.nErrorCode = config_error['success'] response.rookieAward = rooikeAwardType response.requester.nUserID = user.id response.requester.sToken = sToken if user.name: response.requester.sName = user.name if user.nick: response.requester.sNick = user.nick if user.exp: response.requester.nExp = user.exp if user.gold!= None: response.requester.nGold = user.gold if user.money!= None: response.requester.nMoney = user.money if user.headimg: response.requester.sHeadimg = user.headimg if user.phone: response.requester.sPhone = user.phone if user.records: response.requester.sRecords = user.records if user.assets: response.requester.sAssets = user.assets if user.room: response.requester.sRoom = user.room if user.gender != None: response.requester.nGender = user.gender if user.luckytime: response.requester.bLuckyToday = (Utils().dbTime2Number(user.luckytime) >= Utils().LastDayEndTime()) else: response.requester.bLuckyToday = False if user.welfaretime: response.requester.bWelfareToday = (Utils().dbTime2Number(user.welfaretime) >= Utils().LastDayEndTime()) else: response.requester.bWelfareToday = False if user.sharetime: response.requester.bShareAwardWeek = ( Utils().dbTime2Number(user.sharetime) >= Utils().LastWeekEndTime()) else: response.requester.bShareAwardWeek = False if user.rankaward: rkAwardFlags = user.rankaward.split(';') for flag in rkAwardFlags: response.requester.bRkAwardFlags.append((flag == '1')) # response.requester.nWinCount = user.wincount # response.requester.nTotalCount = user.totalcount #response.requester.sIP = self.request.remote_ip delegater = Dal_Delegate().getDelegate(user.id) response.requester.sICode = delegater.icode # 登录记录 Dal_User().addLoginer(user.id) #//更新登录时间 Dal_User().updateLoginTime(user.id) data = msgResp.SerializeToString() self.write(data)