From 4dcb18d0e7848effd25e0d5970e9c84808da957c Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期一, 10 六月 2019 14:12:34 +0800 Subject: [PATCH] 7155 【后端】【2.0】新增仙盟创建规则 --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py | 40 ++++++++- ServerPython/CoreServerGroup/GameServer/Script/DataRecordPack.py | 4 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 52 +++++++++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CreateFamilyPayMoney.py | 50 ++++++++++++ ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 52 +++++++++++++ ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py | 3 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 4 7 files changed, 196 insertions(+), 9 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 53f7a9d..f5b9705 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -2121,6 +2121,58 @@ #------------------------------------------------------ +# A4 0D 通知建盟次数 #tagGCServerCreatFamilyTimes + +class tagGCServerCreatFamilyTimes(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Times", c_int), #建盟次数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA4 + self.SubCmd = 0x0D + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xA4 + self.SubCmd = 0x0D + self.Times = 0 + return + + def GetLength(self): + return sizeof(tagGCServerCreatFamilyTimes) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A4 0D 通知建盟次数 //tagGCServerCreatFamilyTimes: + Cmd:%s, + SubCmd:%s, + Times:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Times + ) + return DumpString + + +m_NAtagGCServerCreatFamilyTimes=tagGCServerCreatFamilyTimes() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCServerCreatFamilyTimes.Cmd,m_NAtagGCServerCreatFamilyTimes.SubCmd))] = m_NAtagGCServerCreatFamilyTimes + + +#------------------------------------------------------ #A4 01 查看申请入会的玩家信息 #tagGCViewFamilyRequestInfo class tagtMemberInfo(Structure): diff --git a/ServerPython/CoreServerGroup/GameServer/Script/DataRecordPack.py b/ServerPython/CoreServerGroup/GameServer/Script/DataRecordPack.py index 4ad857f..a6335f1 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/DataRecordPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/DataRecordPack.py @@ -116,10 +116,10 @@ # @param familyName: 家族名 # @param familyID: 家族ID # @return None -def DR_CreateFamily(accID, playerID, playerNaem, familyName, familyID): +def DR_CreateFamily(accID, playerID, playerNaem, familyName, familyID, creatFamilyTimes): dataDict = {'AccID':accID, 'PlayerID':playerID, "PlayerName":playerNaem, 'FamilyName':familyName, - 'FamilyID':familyID} + 'FamilyID':familyID, 'creatFamilyTimes':creatFamilyTimes} #发送封包 SendEventPack("CreateFamily", dataDict) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py index e4a673e..090f506 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py @@ -134,6 +134,9 @@ # 假仙盟随机编号 Def_FakeFamilyIndex = 'FakeFamilyIndex_%s' # 参数为第几个假仙盟 +# 服务器建盟次数 +Def_ServerCreatFamilyTimes = "CreatFamilyTimes" + #设置运营活动ID的标记 Def_OperationActID = 'OperationActID_%s' #参数为运营活动名 #运营活动开启时世界等级,参数为运营活动名 diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py index 441c4dd..d8e9fbd 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py @@ -162,6 +162,28 @@ NetPackCommon.SendFakePack(curPlayer, fakeFamilyPack) return +def SyncCreatFamilyTimes(curPlayer=None): + # 通知建盟次数 + packData = ChPyNetSendPack.tagGCFakeFamilyInfo() + packData.Clear() + packData.Times = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerCreatFamilyTimes) + if not curPlayer: + # 全服广播在线玩家 + playerManager = GameWorld.GetPlayerManager() + for i in range(0, playerManager.GetPlayerCount()): + curPlayer = playerManager.GetPlayerByIndex(i) + if curPlayer == None or not curPlayer.GetInitOK(): + continue + + if PlayerControl.GetIsTJG(curPlayer): + continue + NetPackCommon.SendFakePack(curPlayer, packData) + else: + if PlayerControl.GetIsTJG(curPlayer): + return + NetPackCommon.SendFakePack(curPlayer, packData) + return + #输入家族名称 #class IPY_CInputFamilyName #{ @@ -245,11 +267,13 @@ #-设置家族成员属性 DoPlayerJionFamily(curFamily, curPlayer, IPY_GameServer.fmlLeader) - + creatFamilyTimes = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerCreatFamilyTimes) #扣道具(前N个战盟并且假编号在随机编号里不要钱) if fakeIndex and fakeIndex in fakeIndexList: PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FakeFamilyIndex % fakeIndexList.index(fakeIndex), 0) - GameWorld.DebugLog(' 创建前3个仙盟不扣钱! 假仙盟索引%s'%fakeIndexList.index(fakeIndex)) + GameWorld.Log(' 创建前n个假仙盟不扣钱! 假仙盟索引%s'%fakeIndexList.index(fakeIndex)) + elif creatFamilyTimes < IpyGameDataPY.GetFuncCfg('CreateFamilyNeedMoney', 3): + GameWorld.Log(' 创建前n个仙盟不扣钱! creatFamilyTimes=%s' % creatFamilyTimes) else: for i, findex in enumerate(fakeIndexList): if findex: @@ -259,7 +283,9 @@ needMoney = IpyGameDataPY.GetFuncCfg('CreateFamilyNeedMoney') if needMoney: moneyType = IpyGameDataPY.GetFuncCfg('CreateFamilyNeedMoney', 2) - curPlayer.MapServer_PayMoney(moneyType, needMoney) + sendMsg = str([moneyType, needMoney]) + curPlayer.MapServer_QueryPlayerResult(0, 0, "CreateFamilyPayMoney", sendMsg, len(sendMsg)) + #curPlayer.MapServer_PayMoney(moneyType, needMoney) #玩家创建家族费用转化为家族初始资金 #PlayerAddFamilyMoney(curPlayer, curFamily, needMoney) @@ -285,12 +311,13 @@ #XW_JZ_EstablishSud <n color="255,255,0">恭喜您,家族建立成功!</n> 25 - - PlayerControl.NotifyCode(curPlayer, "XW_JZ_EstablishSud") - + PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerCreatFamilyTimes, min(creatFamilyTimes + 1, ShareDefine.Def_UpperLimit_DWord)) + SyncCreatFamilyTimes() #帮会创建流向 DataRecordPack.DR_CreateFamily(curPlayer.GetAccID(), curPlayerID, curPlayer.GetName(), - fullFamilyName, curFamily.GetID()) + fullFamilyName, curFamily.GetID(), creatFamilyTimes+1) - GameWorld.Log('创建家族 : %s(%s), fakeIndex=%s' % (fullFamilyName, curFamily.GetID(), fakeIndex), curPlayerID) + GameWorld.Log('创建家族 : %s(%s), fakeIndex=%s, creatFamilyTimes=%s' % (fullFamilyName, curFamily.GetID(), fakeIndex, creatFamilyTimes+1), curPlayerID) PlayerControl.WorldNotify(0, "jiazu_liubo_671654", [curPlayer.GetName(), fullFamilyName, curFamily.GetID()]) return @@ -1874,6 +1901,7 @@ # @remarks 函数详细说明. def PlayerLoginRefreshFamily(curPlayer, tick): SyncFakeFamilyInfo(curPlayer) + SyncCreatFamilyTimes(curPlayer) familyID = curPlayer.GetFamilyID() curFamily = None diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py index 1d261c6..0101a93 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py @@ -4607,6 +4607,7 @@ Def_Cost_AuctionBid, # 拍卖行竞价 Def_Cost_BuyDailyActionCnt, # 购买活动次数 Def_Cost_FBBuyBuff, # 副本买buff +Def_Cost_CreatFamily, # 创建仙盟 #-----------以下为暂时没用的,先不删除,如有新增消费点则放在这些之前------------ Def_Cost_RefreshArrestTask, # 刷新悬赏任务 Def_Cost_OffLineExp, # 兑换离线经验 @@ -4619,7 +4620,7 @@ Def_Cost_Trade, # 交易 Def_Cost_Rename, # 改名 Def_Cost_SkillLvUp, # 技能升级 -) = range(2000, 2000 + 58) +) = range(2000, 2000 + 59) Def_Cost_Reason_SonKey = "reason_name_son" # 消费点原因子类说明key @@ -4699,6 +4700,7 @@ Def_Cost_AuctionBid:"AuctionBid", Def_Cost_BuyDailyActionCnt:"BuyDailyActionCnt", Def_Cost_FBBuyBuff:"FBBuyBuff", +Def_Cost_CreatFamily:"CreatFamily", } ## ----------------------------------------------------- diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index 53f7a9d..f5b9705 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -2121,6 +2121,58 @@ #------------------------------------------------------ +# A4 0D 通知建盟次数 #tagGCServerCreatFamilyTimes + +class tagGCServerCreatFamilyTimes(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Times", c_int), #建盟次数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA4 + self.SubCmd = 0x0D + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xA4 + self.SubCmd = 0x0D + self.Times = 0 + return + + def GetLength(self): + return sizeof(tagGCServerCreatFamilyTimes) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A4 0D 通知建盟次数 //tagGCServerCreatFamilyTimes: + Cmd:%s, + SubCmd:%s, + Times:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Times + ) + return DumpString + + +m_NAtagGCServerCreatFamilyTimes=tagGCServerCreatFamilyTimes() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCServerCreatFamilyTimes.Cmd,m_NAtagGCServerCreatFamilyTimes.SubCmd))] = m_NAtagGCServerCreatFamilyTimes + + +#------------------------------------------------------ #A4 01 查看申请入会的玩家信息 #tagGCViewFamilyRequestInfo class tagtMemberInfo(Structure): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CreateFamilyPayMoney.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CreateFamilyPayMoney.py new file mode 100644 index 0000000..91014a4 --- /dev/null +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CreateFamilyPayMoney.py @@ -0,0 +1,50 @@ +#!/usr/bin/python +# -*- coding: GBK -*- +#--------------------------------------------------------------------- +# +#--------------------------------------------------------------------- +##@package GY_Query_CreateFamilyPayMoney +# @todo: 建盟扣钱 +# +# @author: xdh +# @date 2019-06-10 12:00 +# @version 1.0 +# +# @note: 建盟扣钱 +#--------------------------------------------------------------------- +#"""Version = 2019-06-10 12:00""" +#--------------------------------------------------------------------- +import GameWorld +import PlayerControl +import ChConfig +#--------------------------------------------------------------------- + +## XX +# @param query_Type 请求类型 +# @param query_ID 请求的玩家ID +# @param packCMDList 发包命令 +# @param tick 当前时间 +# @return "True" or "False" or "" +def DoLogic(query_Type, query_ID, packCMDList, tick): + return '' + + +## 登陆信息 +# @param curPlayer 发出请求的玩家 +# @param callFunName 功能名称 +# @param funResult 查询的结果 +# @param tick 当前时间 +# @return None +def DoResult(curPlayer, callFunName, funResult, tick): + playerID = curPlayer.GetPlayerID() + GameWorld.DebugLog("GY_Query_CreateFamilyPayMoney funResult=%s" % funResult, playerID) + result = eval(funResult) + + if len(result) !=2: + return + + type_Price, price = result + PlayerControl.PayMoney(curPlayer, type_Price, price, ChConfig.Def_Cost_CreatFamily) + return + + -- Gitblit v1.8.0