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