From 39821284a5372dce91658b8b9dfffc217a0f96f8 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 23 十月 2020 16:14:53 +0800
Subject: [PATCH] 8415 【BT开发】]初始赠送 / 【后端】新号上线赠送物品
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py | 29 +++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 52 +++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 29 ++++++++-
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 52 +++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 4 +
5 files changed, 162 insertions(+), 4 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 32a3746..1d2c4b3 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -20985,6 +20985,58 @@
#------------------------------------------------------
+# A7 20 创角奖励领奖状态 #tagMCCreateRoleAwardState
+
+class tagMCCreateRoleAwardState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("GetState", c_ubyte), # 是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA7
+ self.SubCmd = 0x20
+ 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 = 0xA7
+ self.SubCmd = 0x20
+ self.GetState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCreateRoleAwardState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 20 创角奖励领奖状态 //tagMCCreateRoleAwardState:
+ Cmd:%s,
+ SubCmd:%s,
+ GetState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.GetState
+ )
+ return DumpString
+
+
+m_NAtagMCCreateRoleAwardState=tagMCCreateRoleAwardState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCreateRoleAwardState.Cmd,m_NAtagMCCreateRoleAwardState.SubCmd))] = m_NAtagMCCreateRoleAwardState
+
+
+#------------------------------------------------------
# A7 13 动态障碍物状态 #tagMCDynamicBarrierState
class tagMCDynamicBarrier(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index a770ea6..33db31f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3488,6 +3488,7 @@
Def_PDict_OnlinePrizeNote = "OnlinePrizeNote%s" # 当日在线奖励领取信息,记录信息 参数天数
+Def_PDict_CreateRoleAwardState = "CreateRoleAwardState" # 创角奖励领取记录
Def_PDict_EquipViewCacheState = "EquipViewCacheState" # 本次上线是否同步过装备缓存
Def_PDict_DayOnlineTime = "OnlineTime" # 当日在线时长
Def_PDict_OnlineStartTick = "OnlineStartTime" # 在线计算时间
@@ -5312,7 +5313,8 @@
Def_RewardType_DayFreeGoldGift, #每日免费直购礼包29
Def_RewardType_ActivityPlace, #活跃放置奖励30
Def_RewardType_SkyTowerServerChallengeReward, #天星塔全服挑战层领奖31
-)= range(32)
+Def_RewardType_CreateRole, #创角奖励32
+)= range(33)
#boss复活相关活动定义
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 32a3746..1d2c4b3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -20985,6 +20985,58 @@
#------------------------------------------------------
+# A7 20 创角奖励领奖状态 #tagMCCreateRoleAwardState
+
+class tagMCCreateRoleAwardState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("GetState", c_ubyte), # 是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA7
+ self.SubCmd = 0x20
+ 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 = 0xA7
+ self.SubCmd = 0x20
+ self.GetState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCreateRoleAwardState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 20 创角奖励领奖状态 //tagMCCreateRoleAwardState:
+ Cmd:%s,
+ SubCmd:%s,
+ GetState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.GetState
+ )
+ return DumpString
+
+
+m_NAtagMCCreateRoleAwardState=tagMCCreateRoleAwardState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCreateRoleAwardState.Cmd,m_NAtagMCCreateRoleAwardState.SubCmd))] = m_NAtagMCCreateRoleAwardState
+
+
+#------------------------------------------------------
# A7 13 动态障碍物状态 #tagMCDynamicBarrierState
class tagMCDynamicBarrier(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
index 5002d43..3c83f56 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -1594,6 +1594,35 @@
return True
#---------------------------------------------------------------------
+## 给奖励物品
+# @param awardItemInfo 奖励物品信息,支持字典按职业给,或者直接list
+# @return 布尔值
+def GiveAwardItem(curPlayer, awardItemInfo):
+ job = curPlayer.GetJob()
+ if isinstance(awardItemInfo, dict):
+ if str(job) not in awardItemInfo:
+ return
+ itemList = awardItemInfo[str(job)]
+ else:
+ itemList = awardItemInfo
+
+ if not itemList:
+ return
+
+ # 检查背包
+ needSpace = len(itemList)
+ packSpace = GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
+ if needSpace > packSpace:
+ PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
+ return
+
+ # 给物品
+ for itemInfo in itemList:
+ itemID, itemCount = itemInfo[:2]
+ ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
+
+ return True
+
##对外接口, 交换物品
# @param curPlayer 玩家实例
# @param curItem 当前物品
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 2db78bf..f21ca0e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -720,6 +720,8 @@
SkillShell.NotifyElementSkillInfo(curPlayer)
#Boss首杀
GY_Query_BossFirstKill.OnPlayerLogin(curPlayer)
+ #创角奖励
+ Sync_CreateRoleAwardInfo(curPlayer)
curPlayer.SetState(0) # 脱机挂恢复为正常上线
curPlayer.SetFacePic(0) # 通知数据库是否保存还是下线,做一次恢复,1为保存 0为正常下线
@@ -5383,12 +5385,33 @@
#历史累计充值领取
elif rewardType == ChConfig.Def_RewardType_HistoryChargeAward:
PlayerGoldGift.OnGetHistoryRechargeAward(curPlayer, dataEx)
- #天星塔全服挑战层领奖
- elif rewardType == ChConfig.Def_RewardType_SkyTowerServerChallengeReward:
- GameLogic_SkyTower.OnGetSkyTowerServerChallengeReward(curPlayer, dataEx)
+ #创角奖励
+ elif rewardType == ChConfig.Def_RewardType_CreateRole:
+ OnGetCreateRoleAward(curPlayer)
return
+## 领取创角奖励
+def OnGetCreateRoleAward(curPlayer):
+ if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CreateRoleAwardState):
+ GameWorld.DebugLog("已领取创角奖励!")
+ return
+ if not ItemCommon.GiveAwardItem(curPlayer, IpyGameDataPY.GetFuncEvalCfg("CreateRoleAward")):
+ return
+
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CreateRoleAwardState, 1)
+ Sync_CreateRoleAwardInfo(curPlayer)
+ return
+
+## 通知创角领奖记录
+def Sync_CreateRoleAwardInfo(curPlayer):
+ sendPack = ChPyNetSendPack.tagMCCreateRoleAwardState()
+ sendPack.Clear()
+ sendPack.GetState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CreateRoleAwardState)
+ NetPackCommon.SendFakePack(curPlayer, sendPack)
+ return
+
+
## 通知各奖励领取记录信息
# @param curPlayer: 玩家实例
# @param rewardType: 奖励类型
--
Gitblit v1.8.0