From c80c8718c507a7e52f065eee9e35bb4f27573f48 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 05 十二月 2025 11:07:07 +0800
Subject: [PATCH] 374 【活动内容】开服庆典-服务端
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ServerDay.py | 25 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 56 --
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 535 -----------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 85 ---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldRush.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 14
PySysDB/PySysDBPY.h | 32 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 39 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Tianzi.py | 9
/dev/null | 185 --------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py | 5
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Zhanchui.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerActivity.py | 71 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py | 159 ++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 40 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py | 8
26 files changed, 307 insertions(+), 995 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index d43d617..fadf0af 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1324,15 +1324,6 @@
BYTE SkillResist; //是否技能抵抗
};
-//Boss首杀
-
-struct tagBOSSFirstKill
-{
- DWORD _NPCID; //ID
- WORD PerPlayerMoneyAward; // 首杀全服玩家奖励灵石额度/人
- list PersonFirstKillAward; // 个人首次击杀奖励 [[物品ID,个数,是否拍品], ...]
-};
-
//NPC秀表
struct tagNPCShow
@@ -1809,29 +1800,6 @@
BYTE ChooseItemCount; //选择个数
dict LibItemInfo; //物品编号对应物品信息 {物品编号:[物品ID,个数,是否拍品,可选次数], ...} 0不限次数
list NotifyItemNumList; //需要广播的编号列表
-};
-
-//BOSS复活活动时间表
-
-struct tagActBossReborn
-{
- DWORD _CfgID; //配置ID
- char StartDate; //开启日期
- char EndDate; //结束日期
- BYTE ResetType; //重置类型,0-0点重置;1-5点重置
- WORD LVLimit; //限制等级
- BYTE TemplateID; //模板编号
-};
-
-//BOSS复活表
-
-struct tagBossReborn
-{
- BYTE _TemplateID; //模板ID
- BYTE _ID; //活动条目ID
- DWORD TotalTimes; //可完成的总次数,0表示不限次数
- WORD SingleTimes; //单次领奖需要的次数
- dict Reward; //奖励物品ID1
};
//多倍修行点活动时间表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
index 873f460..82998ef 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -30,6 +30,7 @@
import PlayerLLMJ
import PlayerPrestigeSys
import CrossServerPackLogic
+import PlayerSuccess
import IpyGameDataPY
import PlayerOnline
import NPCCommon
@@ -1325,6 +1326,7 @@
PlayerLLMJ.AddUseZhanchui(curPlayer, useZhanchui)
PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_UseXiantao, useZhanchui)
PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_CutTree, useZhanchui)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSACutTree, useZhanchui)
PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_CutTree, useZhanchui)
# 历练秘境额外经验
@@ -1337,6 +1339,7 @@
if killNPCCnt > 0:
PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_KillNPC, killNPCCnt)
PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_KillNPC, killNPCCnt)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAKillNPC, killNPCCnt)
# 结算逻辑最后重置数据
mainFightMgr.resetMainFightExDataRec()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index d35886c..c3336d1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3473,16 +3473,6 @@
Def_PDict_CollectWordsExchangeCount = "CollectWordsCount_%s_%s" # 兑换编号对应已兑换次数,参数(活动编号, 兑换编号)
Def_PDict_CollectWordsGJSeconds = "CollectWordsGJSeconds_%s" # 挂机未处理收益的秒数,参数(活动编号)
-#BOSS复活
-Def_PDict_BossRebornID = "BossRebornID" # 玩家身上的BOSS复活活动ID,唯一标识,取活动开始日期time值
-Def_PDict_BossRebornTemplateID = "BossRebornTemplateID" # 玩家身上的BOSS复活模板ID
-Def_PDict_BRActionCurTimes = "BRActionCurTimes_%s" #当前完成次数 参数BOSS复活活动ID
-Def_PDict_BRActionGotTimes = "BRActionGotTimes_%s" #当前已领次数 参数BOSS复活活动ID
-Def_PDict_BRActionWorldLV = "BRActionWorldLV" #BOSS复活活动开启时世界等级
-
-#Boss首杀
-Def_PDict_BossFirstKillState = "BossFirstKillState_%s" # boss首杀相关状态记录
-
#限时抢购活动
Def_PDict_FlashSaleID = "FlashSaleID_%s" # 玩家身上的限时抢购活动ID,唯一标识,取活动开始日期time,参数(活动编号)
Def_PDict_FlashSaleState = "FlashSaleState_%s" # 玩家身上的限时抢购活动state,参数(活动编号)
@@ -3705,6 +3695,10 @@
# 成就 Def_PDictType_Success
Def_PDict_SuccessValue = "Succ_%s_%s" # 当前次数值,参数(成就类型、条件)
Def_PDict_SuccessAward = "Succ_Award_%s" # 成就领奖记录,按成就ID位存储0-未领,1-已领,参数(key编号)
+
+# 开服庆典
+Def_PDict_OSACelebrationPoint = "OSACelebrationPoint" # 开服庆典累计积分
+Def_PDict_OSACelebrationAward = "OSACelebrationAward" # 开服庆典累计积分阶段奖励领奖状态,按积分排序后的索引位记录是否已领取
# 通天令
Def_PDict_TTL_StartTime = "TTL_StartTime" # 本轮通天令开始时间戳
@@ -4382,7 +4376,7 @@
Def_GiveMoney_Warehouse, # 仓库
Def_GiveMoney_SellPackItem, # 出售背包物品
Def_GiveMoney_CollectNPC, # 采集NPC
-Def_GiveMoney_BossFirstKill, # Boss首杀
+Def_GiveMoney_20,
Def_GiveMoney_21,
Def_GiveMoney_Trade, # 交易
Def_GiveMoney_23,
@@ -4417,7 +4411,6 @@
Def_GiveMoney_Warehouse:"Warehouse",
Def_GiveMoney_SellPackItem:"SellPackItem",
Def_GiveMoney_CollectNPC:"CollectNPC",
-Def_GiveMoney_BossFirstKill:"BossFirstKill",
Def_GiveMoney_Trade:"Trade",
Def_GiveMoney_FreeGoods:"FreeGoods",
Def_GiveMoney_BindJadeWheel:"BindJadeWheel",
@@ -4798,7 +4791,7 @@
Def_RewardType_BeautyLVAward, # 红颜等级奖励 6
Def_RewardType_DayRealmPoint, # 每日任务修行点奖励7
Def_RewardType_FirstCharge, # 首充礼包奖励8
-Def_RewardType_MWSoulAward, # 法宝之魂奖励9 -废弃
+Def_RewardType_OSACelebrationPointAward, # 开服庆典积分阶段奖励 9
Def_RewardType_FreeGoods, # 极品白拿10
Def_RewardType_CostRebate, # 消费返利11
Def_RewardType_BossReborn, # BOSS复活12
@@ -4873,27 +4866,6 @@
Def_RewardType_ADAward, # 广告奖励 81
Def_RewardType_TreeFreeTime, # 仙树免费减时 82
)= range(83)
-
-#boss复活相关活动定义
-BossRebornActIDList = (
-Def_BRAct_VIPBOSS, #进入VIPboss副本 1
-Def_BRAct_GodArea, #进入古神禁地副本 2
-Def_BRAct_MoneyPray, #铜钱祈愿 3
-Def_BRAct_ExpPray, #经验祈愿 4
-Def_BRAct_Treasure, #极品寻宝 5
-Def_BRAct_WorldBOSS, #击杀世界boss获得掉落归属 6
-Def_BRAct_BOSSHome, #击杀boss之家获得掉落归属 7
-Def_BRAct_FMT, #挑战封魔坛BOSS 8
-Def_BRAct_RunTask, #完成仙盟跑环 9
-Def_BRAct_XJMJ, #完成仙界秘境 10
-Def_BRAct_KirinHome, #完成麒麟之府 11
-Def_BRAct_TowerSweep, #符印塔扫荡 12
-Def_BRAct_RuneTreasure, #符印寻宝 13
-Def_BRAct_FairyDomain, #缥缈仙域 14
-Def_BRAct_FamilyBoss, #仙盟BOSS 15
-Def_BRAct_ActivityPlace, #活跃放置 16
-Def_BRAct_JSTreasure, #绝世寻宝 17
-) = range(1, 17+1)
#全民来嗨活动定义(仙界盛典)
PeoplePartyActIDList = (
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 470ff06..475dfb6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -8961,62 +8961,6 @@
#------------------------------------------------------
-# A9 01 获取Boss首杀奖励 #tagCGGetBossFirstKillAward
-
-class tagCGGetBossFirstKillAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("NPCID", c_int),
- ("AwardType", c_ubyte), # 0-首杀红包奖励;1-个人首杀奖励
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA9
- self.SubCmd = 0x01
- 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 = 0xA9
- self.SubCmd = 0x01
- self.NPCID = 0
- self.AwardType = 0
- return
-
- def GetLength(self):
- return sizeof(tagCGGetBossFirstKillAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A9 01 获取Boss首杀奖励 //tagCGGetBossFirstKillAward:
- Cmd:%s,
- SubCmd:%s,
- NPCID:%d,
- AwardType:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.NPCID,
- self.AwardType
- )
- return DumpString
-
-
-m_NAtagCGGetBossFirstKillAward=tagCGGetBossFirstKillAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetBossFirstKillAward.Cmd,m_NAtagCGGetBossFirstKillAward.SubCmd))] = m_NAtagCGGetBossFirstKillAward
-
-
-#------------------------------------------------------
# A9 07 点赞仙宫 #tagCGLikeXiangong
class tagCGLikeXiangong(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 502680d..94bbe03 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -28961,454 +28961,21 @@
#------------------------------------------------------
-# AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo
+# AB 05 开服庆典信息 #tagSCOSACelebrationInfo
-class tagMCBossFirstKillState(Structure):
- _pack_ = 1
- _fields_ = [
- ("NPCID", c_int),
- ("FKState", c_int), # 玩家该boss首杀相关状态,按位存:个位-玩家是否击杀过,十位-是否已领取首杀全服奖励,百位-是否已领取个人首杀奖励
- ]
-
- def __init__(self):
- self.Clear()
- 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.NPCID = 0
- self.FKState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCBossFirstKillState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 01 Boss首杀玩家奖励信息 //tagMCBossFirstKillStateInfo:
- NPCID:%d,
- FKState:%d
- '''\
- %(
- self.NPCID,
- self.FKState
- )
- return DumpString
-
-
-class tagMCBossFirstKillStateInfo(Structure):
- Head = tagHead()
- BossCount = 0 #(BYTE BossCount)
- FirstKillStateList = list() #(vector<tagMCBossFirstKillState> FirstKillStateList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x01
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.BossCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.BossCount):
- temFirstKillStateList = tagMCBossFirstKillState()
- _pos = temFirstKillStateList.ReadData(_lpData, _pos)
- self.FirstKillStateList.append(temFirstKillStateList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x01
- self.BossCount = 0
- self.FirstKillStateList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.BossCount):
- length += self.FirstKillStateList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.BossCount)
- for i in range(self.BossCount):
- data = CommFunc.WriteString(data, self.FirstKillStateList[i].GetLength(), self.FirstKillStateList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- BossCount:%d,
- FirstKillStateList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.BossCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCBossFirstKillStateInfo=tagMCBossFirstKillStateInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossFirstKillStateInfo.Head.Cmd,m_NAtagMCBossFirstKillStateInfo.Head.SubCmd))] = m_NAtagMCBossFirstKillStateInfo
-
-
-#------------------------------------------------------
-# AB 03 Boss复活玩家活动信息 #tagMCBossRebornPlayerInfo
-
-class tagMCBossRebornData(Structure):
- _pack_ = 1
- _fields_ = [
- ("ActID", c_ubyte), #活动ID
- ("CurTimes", c_ushort), #已完成次数
- ("GotTimes", c_ushort), #已领取次数
- ]
-
- def __init__(self):
- self.Clear()
- 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.ActID = 0
- self.CurTimes = 0
- self.GotTimes = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCBossRebornData)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 03 Boss复活玩家活动信息 //tagMCBossRebornPlayerInfo:
- ActID:%d,
- CurTimes:%d,
- GotTimes:%d
- '''\
- %(
- self.ActID,
- self.CurTimes,
- self.GotTimes
- )
- return DumpString
-
-
-class tagMCBossRebornPlayerInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//活动个数
- DataList = list() #(vector<tagMCBossRebornData> DataList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x03
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temDataList = tagMCBossRebornData()
- _pos = temDataList.ReadData(_lpData, _pos)
- self.DataList.append(temDataList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x03
- self.Count = 0
- self.DataList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.DataList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.DataList[i].GetLength(), self.DataList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- DataList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCBossRebornPlayerInfo=tagMCBossRebornPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornPlayerInfo.Head.Cmd,m_NAtagMCBossRebornPlayerInfo.Head.SubCmd))] = m_NAtagMCBossRebornPlayerInfo
-
-
-#------------------------------------------------------
-# AB 04 Boss复活活动信息 #tagMCBossRebornInfo
-
-class tagMCBossRebornAwardItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemID", c_int),
- ("ItemCount", c_ushort),
- ("IsBind", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- 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.ItemID = 0
- self.ItemCount = 0
- self.IsBind = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCBossRebornAwardItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AB 04 Boss复活活动信息 //tagMCBossRebornInfo:
- ItemID:%d,
- ItemCount:%d,
- IsBind:%d
- '''\
- %(
- self.ItemID,
- self.ItemCount,
- self.IsBind
- )
- return DumpString
-
-
-class tagMCBossRebornTaskInfo(Structure):
- TaskID = 0 #(BYTE TaskID)// id
- TotalTimes = 0 #(BYTE TotalTimes)// 可完成总次数,0表示不限次数
- SingleTimes = 0 #(BYTE SingleTimes)// 单次领奖需要次数
- AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
- AwardItem = list() #(vector<tagMCBossRebornAwardItem> AwardItem)// 奖励物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.TaskID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.SingleTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardItemCount):
- temAwardItem = tagMCBossRebornAwardItem()
- _pos = temAwardItem.ReadData(_lpData, _pos)
- self.AwardItem.append(temAwardItem)
- return _pos
-
- def Clear(self):
- self.TaskID = 0
- self.TotalTimes = 0
- self.SingleTimes = 0
- self.AwardItemCount = 0
- self.AwardItem = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 1
- length += 1
- length += 1
- for i in range(self.AwardItemCount):
- length += self.AwardItem[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.TaskID)
- data = CommFunc.WriteBYTE(data, self.TotalTimes)
- data = CommFunc.WriteBYTE(data, self.SingleTimes)
- data = CommFunc.WriteBYTE(data, self.AwardItemCount)
- for i in range(self.AwardItemCount):
- data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- TaskID:%d,
- TotalTimes:%d,
- SingleTimes:%d,
- AwardItemCount:%d,
- AwardItem:%s
- '''\
- %(
- self.TaskID,
- self.TotalTimes,
- self.SingleTimes,
- self.AwardItemCount,
- "..."
- )
- return DumpString
-
-
-class tagMCBossRebornInfo(Structure):
- Head = tagHead()
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- TaskCnt = 0 #(BYTE TaskCnt)
- TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x04
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TaskCnt):
- temTaskInfo = tagMCBossRebornTaskInfo()
- _pos = temTaskInfo.ReadData(_lpData, _pos)
- self.TaskInfo.append(temTaskInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAB
- self.Head.SubCmd = 0x04
- self.StartDate = ""
- self.EndtDate = ""
- self.ResetType = 0
- self.LimitLV = 0
- self.TaskCnt = 0
- self.TaskInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 10
- length += 10
- length += 1
- length += 2
- length += 1
- for i in range(self.TaskCnt):
- length += self.TaskInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteBYTE(data, self.ResetType)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.TaskCnt)
- for i in range(self.TaskCnt):
- data = CommFunc.WriteString(data, self.TaskInfo[i].GetLength(), self.TaskInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- StartDate:%s,
- EndtDate:%s,
- ResetType:%d,
- LimitLV:%d,
- TaskCnt:%d,
- TaskInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.StartDate,
- self.EndtDate,
- self.ResetType,
- self.LimitLV,
- self.TaskCnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCBossRebornInfo=tagMCBossRebornInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornInfo.Head.Cmd,m_NAtagMCBossRebornInfo.Head.SubCmd))] = m_NAtagMCBossRebornInfo
-
-
-#------------------------------------------------------
-# AB 19 炼制奖励信息 #tagMCRefineGiftInfo
-
-class tagMCRefineGiftInfo(Structure):
+class tagSCOSACelebrationInfo(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("ExpRefineStartTime", c_int), # 经验炼制活动开始时间
- ("MoneyRefineStartTime", c_int), # 金币炼制活动开始时间
- ("ExpRefineCnt", c_ubyte), # 经验已炼制次数
- ("MoneyRefineCnt", c_ubyte), # 金币已炼制次数
+ ("PointTotal", c_int), # 累计庆典积分
+ ("PointAward", c_int), # 积分阶段奖励记录,按阶段积分排序后索引二进制存储是否已领取
]
def __init__(self):
self.Clear()
self.Cmd = 0xAB
- self.SubCmd = 0x19
+ self.SubCmd = 0x05
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -29418,105 +28985,35 @@
def Clear(self):
self.Cmd = 0xAB
- self.SubCmd = 0x19
- self.ExpRefineStartTime = 0
- self.MoneyRefineStartTime = 0
- self.ExpRefineCnt = 0
- self.MoneyRefineCnt = 0
+ self.SubCmd = 0x05
+ self.PointTotal = 0
+ self.PointAward = 0
return
def GetLength(self):
- return sizeof(tagMCRefineGiftInfo)
+ return sizeof(tagSCOSACelebrationInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// AB 19 炼制奖励信息 //tagMCRefineGiftInfo:
+ DumpString = '''// AB 05 开服庆典信息 //tagSCOSACelebrationInfo:
Cmd:%s,
SubCmd:%s,
- ExpRefineStartTime:%d,
- MoneyRefineStartTime:%d,
- ExpRefineCnt:%d,
- MoneyRefineCnt:%d
+ PointTotal:%d,
+ PointAward:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.ExpRefineStartTime,
- self.MoneyRefineStartTime,
- self.ExpRefineCnt,
- self.MoneyRefineCnt
+ self.PointTotal,
+ self.PointAward
)
return DumpString
-m_NAtagMCRefineGiftInfo=tagMCRefineGiftInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRefineGiftInfo.Cmd,m_NAtagMCRefineGiftInfo.SubCmd))] = m_NAtagMCRefineGiftInfo
-
-
-#------------------------------------------------------
-# AC 08 boss复活点数通知 #tagGCBossRebornPoint
-
-class tagGCBossRebornPoint(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Point", c_int), # 复活点数
- ("TotalPoint", c_int), # 复活总点数
- ("RebornCnt", c_ushort), # 今日已复活次数
- ("TotalRebornCnt", c_ushort), # 每日可复活总次数,0为不限制
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAC
- self.SubCmd = 0x08
- 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 = 0xAC
- self.SubCmd = 0x08
- self.Point = 0
- self.TotalPoint = 0
- self.RebornCnt = 0
- self.TotalRebornCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCBossRebornPoint)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
- Cmd:%s,
- SubCmd:%s,
- Point:%d,
- TotalPoint:%d,
- RebornCnt:%d,
- TotalRebornCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Point,
- self.TotalPoint,
- self.RebornCnt,
- self.TotalRebornCnt
- )
- return DumpString
-
-
-m_NAtagGCBossRebornPoint=tagGCBossRebornPoint()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornPoint.Cmd,m_NAtagGCBossRebornPoint.SubCmd))] = m_NAtagGCBossRebornPoint
+m_NAtagSCOSACelebrationInfo=tagSCOSACelebrationInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCOSACelebrationInfo.Cmd,m_NAtagSCOSACelebrationInfo.SubCmd))] = m_NAtagSCOSACelebrationInfo
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ServerDay.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ServerDay.py
index 84e07aa..f2f77e6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ServerDay.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ServerDay.py
@@ -15,8 +15,11 @@
#"""Version = 2025-11-25 19:30"""
#-------------------------------------------------------------------------------
+import ChConfig
import GameWorld
import ShareDefine
+import PlayerControl
+import OpenServerActivity
import GameWorldEvent
import PlayerSignDay
import GameFuncComm
@@ -30,12 +33,24 @@
if not cmdList:
GameWorld.DebugAnswer(curPlayer, "设置开服天: ServerDay 第几天")
GameWorld.DebugAnswer(curPlayer, "重置开服天: ServerDay 1")
+ GameWorld.DebugAnswer(curPlayer, "重置庆典奖: ServerDay osa")
+ GameWorld.DebugAnswer(curPlayer, "设置庆典分: ServerDay osa 累计积分")
+ GameWorld.DebugAnswer(curPlayer, "重置开服天时会重置开服冲榜、庆典奖励")
__printServerDay(curPlayer)
return
value = cmdList[0]
- if value <= 1:
+ if value == "osa":
+ point = cmdList[1] if len(cmdList) > 1 else 0
+ if point <= 0:
+ __clearOSACelebration(curPlayer)
+ else:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSACelebrationPoint, point)
+ OpenServerActivity.SyncOSACelebrationInfo(curPlayer)
+ GameWorld.DebugAnswer(curPlayer, "开服庆典累计积分: %s" % point)
+ return
+ elif value <= 1:
__clearOpenServerDay(curPlayer)
elif value > 1:
__setOpenServerDay(curPlayer, value)
@@ -61,6 +76,7 @@
DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_IsMixServer, 0)
DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_MixServerDay, 0)
DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_OSAAwardState, 0)
+ __clearOSACelebration(curPlayer)
curTime = int(time.time())
GameWorldEvent.SetInitOpenServerTime(curTime)
@@ -68,6 +84,13 @@
PlayerSignDay.ResetDaySign(curPlayer)
return
+def __clearOSACelebration(curPlayer):
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSACelebrationPoint, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSACelebrationAward, 0)
+ OpenServerActivity.SyncOSACelebrationInfo(curPlayer)
+ GameWorld.DebugAnswer(curPlayer, "重置开服庆典")
+ return
+
def __setOpenServerDay(curPlayer, serverDay):
DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_ServerDay, serverDay - 1)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py
index 718f47b..9d55295 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Success.py
@@ -40,15 +40,17 @@
succType = msgList[1] if len(msgList) > 1 else 0
addValue = msgList[2] if len(msgList) > 2 else 1
conds = msgList[3:]
- GameWorld.DebugAnswer(curPlayer, "增加成就进度: T:%s,V:%s,C:%s" % (succType, addValue, conds))
- PlayerSuccess.DoAddSuccessProgress(curPlayer, succType, addValue, conds)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, succType, addValue, conds, delayCalc=False)
+ curValue = PlayerSuccess.GetSuccValue(curPlayer, succType, conds)
+ GameWorld.DebugAnswer(curPlayer, "增加成就进度: T:%s,A:%s,V:%s,C:%s," % (succType, addValue, curValue, conds))
# 更新进度
elif cmdType == "u":
succType = msgList[1] if len(msgList) > 1 else 0
newCnt = msgList[2] if len(msgList) > 2 else 1
conds = msgList[3:]
- GameWorld.DebugAnswer(curPlayer, "更新成就进度: T:%s,V:%s,C:%s" % (succType, addValue, conds))
PlayerSuccess.UptateSuccessProgress(curPlayer, succType, newCnt, conds)
+ curValue = PlayerSuccess.GetSuccValue(curPlayer, succType, conds)
+ GameWorld.DebugAnswer(curPlayer, "更新成就进度: T:%s,V:%s,C:%s" % (succType, curValue, conds))
return
def __DoResetSuccess(curPlayer, msgList, resetValue=True):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py
index bbd865c..c1697cc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py
@@ -21,6 +21,7 @@
import ShareDefine
import PlayerControl
import IpyGameDataPY
+import PlayerSuccess
import PlayerActivity
import PlayerBillboard
import PlayerViewCache
@@ -71,6 +72,7 @@
return
PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_ArenaBattle)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAArenaBattle, 1)
return True, funcLineID
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
index fc4121a..ad97def 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
@@ -20,6 +20,7 @@
import TurnAttack
import ShareDefine
import IpyGameDataPY
+import PlayerSuccess
import PlayerControl
import PlayerActivity
import ChPyNetSendPack
@@ -433,6 +434,7 @@
ChEquip.RefreshRoleEquipAttr(curPlayer)
PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_EquipColor)
+ PlayerSuccess.UpdateEquipSuccess(curPlayer)
return
def __doDecomposeMainEquip(curPlayer, itemIndexList):
@@ -486,6 +488,7 @@
PlayerLLMJ.AddExpDecompose(curPlayer, mjExTotal)
PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_EquipDecompose, decomposeCnt)
PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_EquipDecompose, decomposeCnt)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAEquipDecompose, decomposeCnt)
return
def __doPickupMainItem(curPlayer, itemIndexList):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Tianzi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Tianzi.py
index 0914eab..e63e88a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Tianzi.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Tianzi.py
@@ -20,6 +20,7 @@
import GameWorld
import ItemControler
import PlayerControl
+import PlayerSuccess
import PlayerBillboard
import ChPyNetSendPack
import NetPackCommon
@@ -82,7 +83,6 @@
GameWorld.DebugLog("非今日天子考验! mapID=%s,funcLineID=%s != %s,bossID=%s" % (mapID, funcLineID, lineID, bossID))
return
- PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_FBTianzi)
return True, funcLineID
def GetFBNPCInitAttr(turnFight, npcObj):
@@ -196,6 +196,7 @@
FBCommon.AddEnterFBCount(curPlayer, mapID)
ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["Tianzi", False, {}], isNotifyAward=False)
SyncTianziInfo(curPlayer, lineID, bossID)
+ __onFBTianzi(curPlayer)
return
def __getTianziAwardList(todayHurt, bossID, sweepCnt=1):
@@ -252,8 +253,14 @@
overDict = {FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(itemList), FBCommon.Over_isSweep:1,
"totalHurt":todayHurtTotal, "todayHurtTotal":todayHurtTotal}
FBCommon.NotifyFBOver(curPlayer, mapID, lineID, isPass, overDict)
+ __onFBTianzi(curPlayer)
return True
+def __onFBTianzi(curPlayer):
+ PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_FBTianzi)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAFBTianzi, 1)
+ return
+
def SyncTianziInfo(curPlayer, lineID=None, bossID=None):
if lineID == None:
lineID, bossID = GetTianziTodayInfo(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Zhanchui.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Zhanchui.py
index 976a785..f79961a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Zhanchui.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Zhanchui.py
@@ -19,6 +19,8 @@
import ItemControler
import PlayerBeauty
import FBCommon
+import PlayerSuccess
+import ShareDefine
import PlayerTask
import ChConfig
@@ -55,6 +57,7 @@
ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["Zhanchui", False, {}], isNotifyAward=False)
PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_FBZhanchui)
+ PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSAFBZhanchui, funcLineID)
return
def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, sweepCnt, dataEx):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 4f9b678..2f037f2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1082,12 +1082,6 @@
("BYTE", "SkillResist", 0),
),
- "BOSSFirstKill":(
- ("DWORD", "NPCID", 1),
- ("WORD", "PerPlayerMoneyAward", 0),
- ("list", "PersonFirstKillAward", 0),
- ),
-
"NPCShow":(
("DWORD", "NPCID", 1),
("DWORD", "MapID", 1),
@@ -1456,23 +1450,6 @@
("BYTE", "ChooseItemCount", 0),
("dict", "LibItemInfo", 0),
("list", "NotifyItemNumList", 0),
- ),
-
- "ActBossReborn":(
- ("DWORD", "CfgID", 1),
- ("char", "StartDate", 0),
- ("char", "EndDate", 0),
- ("BYTE", "ResetType", 0),
- ("WORD", "LVLimit", 0),
- ("BYTE", "TemplateID", 0),
- ),
-
- "BossReborn":(
- ("BYTE", "TemplateID", 1),
- ("BYTE", "ID", 1),
- ("DWORD", "TotalTimes", 0),
- ("WORD", "SingleTimes", 0),
- ("dict", "Reward", 0),
),
"ActRealmPoint":(
@@ -3752,17 +3729,6 @@
def GetCanAssist(self): return self.attrTuple[8] # 是否可协助 BYTE
def GetSkillResist(self): return self.attrTuple[9] # 是否技能抵抗 BYTE
-# Boss首杀
-class IPY_BOSSFirstKill():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetNPCID(self): return self.attrTuple[0] # ID DWORD
- def GetPerPlayerMoneyAward(self): return self.attrTuple[1] # 首杀全服玩家奖励灵石额度/人 WORD
- def GetPersonFirstKillAward(self): return self.attrTuple[2] # 个人首次击杀奖励 [[物品ID,个数,是否拍品], ...] list
-
# NPC秀表
class IPY_NPCShow():
@@ -4312,33 +4278,6 @@
def GetChooseItemCount(self): return self.attrTuple[3] # 选择个数 BYTE
def GetLibItemInfo(self): return self.attrTuple[4] # 物品编号对应物品信息 {物品编号:[物品ID,个数,是否拍品,可选次数], ...} 0不限次数 dict
def GetNotifyItemNumList(self): return self.attrTuple[5] # 需要广播的编号列表 list
-
-# BOSS复活活动时间表
-class IPY_ActBossReborn():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
- def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
- def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
- def GetResetType(self): return self.attrTuple[3] # 重置类型,0-0点重置;1-5点重置 BYTE
- def GetLVLimit(self): return self.attrTuple[4] # 限制等级 WORD
- def GetTemplateID(self): return self.attrTuple[5] # 模板编号 BYTE
-
-# BOSS复活表
-class IPY_BossReborn():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTemplateID(self): return self.attrTuple[0] # 模板ID BYTE
- def GetID(self): return self.attrTuple[1] # 活动条目ID BYTE
- def GetTotalTimes(self): return self.attrTuple[2] # 可完成的总次数,0表示不限次数 DWORD
- def GetSingleTimes(self): return self.attrTuple[3] # 单次领奖需要的次数 WORD
- def GetReward(self): return self.attrTuple[4] # 奖励物品ID1 dict
# 多倍修行点活动时间表
class IPY_ActRealmPoint():
@@ -5675,7 +5614,6 @@
self.__LoadFileData("DailyTask", onlyCheck)
self.__LoadFileData("DailyLivenessReward", onlyCheck)
self.__LoadFileData("BOSSInfo", onlyCheck)
- self.__LoadFileData("BOSSFirstKill", onlyCheck)
self.__LoadFileData("NPCShow", onlyCheck)
self.__LoadFileData("MapRefreshNPC", onlyCheck)
self.__LoadFileData("RuneCompound", onlyCheck)
@@ -5712,8 +5650,6 @@
self.__LoadFileData("CrossActFamilyGCZSQ", onlyCheck)
self.__LoadFileData("ActGodGift", onlyCheck)
self.__LoadFileData("ActGodGiftAward", onlyCheck)
- self.__LoadFileData("ActBossReborn", onlyCheck)
- self.__LoadFileData("BossReborn", onlyCheck)
self.__LoadFileData("ActRealmPoint", onlyCheck)
self.__LoadFileData("TrialExchange", onlyCheck)
self.__LoadFileData("AllPeopleParty", onlyCheck)
@@ -6699,13 +6635,6 @@
self.CheckLoadData("BOSSInfo")
return self.ipyBOSSInfoCache[index]
- def GetBOSSFirstKillCount(self):
- self.CheckLoadData("BOSSFirstKill")
- return self.ipyBOSSFirstKillLen
- def GetBOSSFirstKillByIndex(self, index):
- self.CheckLoadData("BOSSFirstKill")
- return self.ipyBOSSFirstKillCache[index]
-
def GetNPCShowCount(self):
self.CheckLoadData("NPCShow")
return self.ipyNPCShowLen
@@ -6957,20 +6886,6 @@
def GetActGodGiftAwardByIndex(self, index):
self.CheckLoadData("ActGodGiftAward")
return self.ipyActGodGiftAwardCache[index]
-
- def GetActBossRebornCount(self):
- self.CheckLoadData("ActBossReborn")
- return self.ipyActBossRebornLen
- def GetActBossRebornByIndex(self, index):
- self.CheckLoadData("ActBossReborn")
- return self.ipyActBossRebornCache[index]
-
- def GetBossRebornCount(self):
- self.CheckLoadData("BossReborn")
- return self.ipyBossRebornLen
- def GetBossRebornByIndex(self, index):
- self.CheckLoadData("BossReborn")
- return self.ipyBossRebornCache[index]
def GetActRealmPointCount(self):
self.CheckLoadData("ActRealmPoint")
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index 7cf92c1..cedcfe7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -41,9 +41,7 @@
import NetPackCommon
import FBCommon
import PlayerPrestigeSys
-import GY_Query_BossFirstKill
import FormulaControl
-import PlayerBossReborn
import PlayerCrossYaomoBoss
import PlayerActCollectWords
import PlayerTongTianLing
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 5646fef..4f620fd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -53,7 +53,6 @@
import PlayerCrossChampionship
import GameFuncComm
import PlayerFamilyTaofa
-import PlayerBossReborn
import PlayerWeekParty
import PlayerFeastWeekParty
import PlayerFeastLogin
@@ -80,7 +79,6 @@
import PlayerActManyDayRecharge
import PlayerActSingleRecharge
import PlayerSpringSale
-import GY_Query_BossFirstKill
import PlayerCrossYaomoBoss
import PlayerLuckyCloudBuy
import PlayerLuckyTreasure
@@ -89,6 +87,7 @@
import PlayerFuncSysPrivilege
import PlayerActTurntable
import PlayerTongTianLing
+import OpenServerActivity
import CrossRealmPlayer
import ChNetSendPack
import PlayerArena
@@ -617,8 +616,6 @@
#PassiveBuffEffMng.OnLoginGFPassive(curPlayer)
# 极品白拿
PlayerFreeGoods.OnLogin(curPlayer)
- # BOSS复活活动
- PlayerBossReborn.OnLogin(curPlayer)
# 周狂欢活动
PlayerWeekParty.OnLogin(curPlayer)
# 购买次数礼包活动
@@ -664,8 +661,6 @@
PlayerFB.OnLogin(curPlayer)
#技能专精信息
#SkillShell.NotifyElementSkillInfo(curPlayer)
- #Boss首杀
- GY_Query_BossFirstKill.OnPlayerLogin(curPlayer)
#通天令
PlayerTongTianLing.OnPlayerLogin(curPlayer)
#创角奖励
@@ -735,6 +730,7 @@
PlayerLLMJ.OnPlayerLogin(curPlayer)
PlayerBeauty.OnPlayerLogin(curPlayer)
PlayerTravel.OnPlayerLogin(curPlayer)
+ OpenServerActivity.OnPlayerLogin(curPlayer)
# 上线查询一次充值订单
# curPlayer.SendDBQueryRecharge() 不查了,由在线轮询触发即可
@@ -3194,6 +3190,9 @@
# 领取分包下载奖励
elif rewardType == ChConfig.Def_RewardType_DownLoad:
GetDownloadAward(curPlayer, dataEx)
+ # 开服庆典积分阶段奖励
+ elif rewardType == ChConfig.Def_RewardType_OSACelebrationPointAward:
+ OpenServerActivity.GetOSACelebrationPointAward(curPlayer, dataEx)
# 每日免费直购礼包
@@ -3220,9 +3219,6 @@
# 领取单笔累充领取
elif rewardType == ChConfig.Def_RewardType_SingleRecharge:
PlayerActSingleRecharge.OnGetSingleRechargeAward(curPlayer, dataEx, dataExStr)
- # 领取boss复活活动奖励
- elif rewardType == ChConfig.Def_RewardType_BossReborn:
- PlayerBossReborn.GetBossRebornActionAward(curPlayer, dataEx)
# 领取许愿池奖励
elif rewardType == ChConfig.Def_RewardType_WishingWell:
PlayerWishingWell.DoGetWishingAward(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerActivity.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerActivity.py
index 253c496..14bc9b8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerActivity.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerActivity.py
@@ -19,10 +19,15 @@
import ShareDefine
import GameFuncComm
import IpyGameDataPY
-import PlayerBillboard
import PlayerTreasure
+import PlayerBillboard
+import ChPyNetSendPack
import PlayerControl
+import NetPackCommon
+import ItemControler
import GameWorld
+import ChConfig
+import ObjPool
# 开服冲榜类型对应功能ID
OSAFuncIDDict = {
@@ -97,3 +102,67 @@
PlayerBillboard.DoGiveBillboardAwardByMail(osaType, "OSAHeroCall", billboardAwardDict, "OSAHeroCall")
return
+
+
+## ------------------------------------------- 开服庆典 ---------------------------------------------
+
+def OnPlayerLogin(curPlayer):
+ SyncOSACelebrationInfo(curPlayer)
+ return
+
+def GetOSACelebrationState(curPlayer):
+ ## 玩家是否在开服庆典活动中
+ # @return: 0-未开启;1-活动中;2-结束显示期;3-结束关闭期
+ funcID = ShareDefine.GameFuncID_OSA_Celebration
+ if not GameFuncComm.GetFuncCanUse(curPlayer, funcID):
+ #GameWorld.DebugLog("开服庆典功能未开启! funcID=%s" % (funcID))
+ return 0
+ endDay = IpyGameDataPY.GetFuncCfg("OSACelebration", 1)
+ serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
+ if serverDay <= endDay:
+ #GameWorld.DebugLog("开服庆典活动中! serverDay=%s,endDay=%s" % (serverDay, endDay))
+ return 1
+ if serverDay == (endDay + 1):
+ #GameWorld.DebugLog("开服庆典结算中! serverDay=%s,endDay=%s" % (serverDay, endDay))
+ return 2
+ #GameWorld.DebugLog("开服庆典已结束! serverDay=%s,endDay=%s" % (serverDay, endDay))
+ return 3
+
+def AddOSACelebrationPoint(curPlayer, addPoint):
+ ## 庆典累计积分
+ curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSACelebrationPoint)
+ updPoint = PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSACelebrationPoint, curPoint + addPoint)
+ GameWorld.DebugLog("增加开服庆典积分: addPoint=%s,curPoint=%s,updPoint=%s" % (addPoint, curPoint, updPoint))
+ SyncOSACelebrationInfo(curPlayer)
+ return
+
+def GetOSACelebrationPointAward(curPlayer, awardPoint):
+ ## 领取开服庆典累计积分阶段奖励
+ curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSACelebrationPoint)
+ if curPoint < awardPoint:
+ GameWorld.DebugLog("累计开服庆典积分不足: curPoint=%s < %s" % (curPoint, awardPoint))
+ return
+ awardDict = IpyGameDataPY.GetFuncEvalCfg("OSACelebration", 2, {}) # {"累计积分":[[物品ID,个数], ...], ...}
+ pointKeyList = [int(p) for p in awardDict.keys()]
+ pointKeyList.sort()
+ if awardPoint not in pointKeyList:
+ GameWorld.DebugLog("不存在该开服庆典积分阶段奖励: awardPoint=%s not in %s" % (awardPoint, pointKeyList))
+ return
+ index = pointKeyList.index(awardPoint)
+ awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSACelebrationAward)
+ if awardState&pow(2, index):
+ GameWorld.DebugLog("该开服庆典积分阶段奖励已领取: awardPoint=%s,index=%s,awardState=%s" % (awardPoint, index, awardState))
+ return
+ updState = PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSACelebrationAward, awardState|pow(2, index))
+ itemList = awardDict[str(awardPoint)]
+ GameWorld.DebugLog("领取开服庆典积分阶段奖励: awardPoint=%s,index=%s,awardState=%s,updState=%s,itemList=%s" % (awardPoint, index, awardState, updState, itemList))
+ ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["OSACelebration", False, {}])
+ SyncOSACelebrationInfo(curPlayer)
+ return
+
+def SyncOSACelebrationInfo(curPlayer):
+ clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCOSACelebrationInfo)
+ clientPack.PointTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSACelebrationPoint)
+ clientPack.PointAward = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSACelebrationAward)
+ NetPackCommon.SendFakePack(curPlayer, clientPack)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
deleted file mode 100644
index ab42ae1..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
+++ /dev/null
@@ -1,290 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerBossReborn
-#
-# @todo:BOSS复活
-# @author xdh
-# @date 2018-07-12 16:50
-# @version 1.0
-#
-#
-# 详细描述: BOSS复活
-#
-#---------------------------------------------------------------------
-"""Version = 2018-07-12 16:50"""
-#---------------------------------------------------------------------
-
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import IpyGameDataPY
-import PlayerControl
-import ItemControler
-import ChPyNetSendPack
-import NetPackCommon
-import ShareDefine
-import PyGameData
-import ItemCommon
-
-
-def OnLogin(curPlayer):
- isReset = __CheckPlayerBossRebornAction(curPlayer)
- if not isReset:
- actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
- # 活动中同步活动信息
- if actCostRebateInfo.get(ShareDefine.ActKey_State):
- SyncBossRebornInfo(curPlayer)
- SyncBossRebornPlayerInfo(curPlayer)
- return
-
-
-def RefreshOperationAction_BossReborn():
- playerManager = GameWorld.GetPlayerManager()
- for i in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(i)
- if not GameWorld.IsNormalPlayer(curPlayer):
- continue
- __CheckPlayerBossRebornAction(curPlayer)
- return
-
-
-def __CheckPlayerBossRebornAction(curPlayer):
- ## 检查玩家BOSS复活活动数据信息
- playerID = curPlayer.GetPlayerID()
-
- actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
- bossRebornID = actBossRebornInfo.get(ShareDefine.ActKey_ID, 0)
- state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
- cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
-
- playerBossRebornID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornID) # 玩家身上的活动ID
-
- # 活动ID 相同的话不处理
- if bossRebornID == playerBossRebornID:
- #GameWorld.DebugLog("BOSS复活活动ID不变,不处理!", curPlayer.GetPlayerID())
- return
- actWorldLV = actBossRebornInfo.get(ShareDefine.ActKey_WorldLV, 0)
- playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionWorldLV)
-
- templateID = 0
- if cfgID:
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", cfgID)
- templateID = 0 if not actBossIpyData else actBossIpyData.GetTemplateID()
- playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
-
- GameWorld.DebugLog("BOSS复活重置! costRebateID=%s,playerCostRebateID=%s,state=%s,templateID=%s,playerTemplateID=%s"
- % (bossRebornID, playerBossRebornID, state, templateID, playerTemplateID), playerID)
-
- # 未领取的奖励邮件发放
- __SendBossRebornMail(curPlayer, playerTemplateID, playerWorldLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionWorldLV, actWorldLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossRebornID, bossRebornID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossRebornTemplateID, templateID)
- for brid in ChConfig.BossRebornActIDList:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionCurTimes % brid, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionGotTimes % brid, 0)
-
- SyncBossRebornInfo(curPlayer)
- SyncBossRebornPlayerInfo(curPlayer)
- return True
-
-
-def __SendBossRebornMail(curPlayer, playerTemplateID, playerWorldLV):
- # 未领取的奖励邮件发放
- ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("BossReborn", {'TemplateID':playerTemplateID}, True)
- if not ipyDataList:
- return
-
- totalItemDict = {}
- for ipyData in ipyDataList:
- brid = ipyData.GetID()
- singleTimes = ipyData.GetSingleTimes()
- curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionCurTimes % brid)
- gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionGotTimes % brid)
- canGotCnt = (curTimes - gotTimes) / singleTimes
- if not canGotCnt:
- continue
- itemDict = __GetAwardItem(curPlayer, ipyData, playerWorldLV, canGotCnt)
- GameWorld.AddDictValue(totalItemDict, itemDict)
-
- #去掉复活点道具
- totalItemDict.pop(ChConfig.Def_ItemID_BossReborn, 0)
- if not totalItemDict:
- return
- totalItemList = [[itemID, itemCnt, 1] for itemID, itemCnt in totalItemDict.items()]
- PlayerControl.SendMailByKey('BossFHUnGetMail', [curPlayer.GetID()], totalItemList)
- return
-
-
-def AddBossRebornActionCnt(curPlayer, actionID, addCnt=1):
- '''增加boss复活相关活动完成次数'''
- #判断活动是否开启
- actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
- state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
- if not state:
- return
- playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
- ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', playerTemplateID, actionID)
- if not ipyData:
- return
- totalTimes = ipyData.GetTotalTimes()
- curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionCurTimes % actionID)
- addCnt = addCnt if totalTimes == 0 else min(totalTimes - curTimes, addCnt)
- if addCnt <= 0:
- return
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionCurTimes % actionID, curTimes + addCnt)
-
- SyncBossRebornPlayerInfo(curPlayer, actionID)
- return
-
-
-def GetBossRebornActionAward(curPlayer, actionID):
- '''领取boss复活活动奖励'''
- playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
- ipyData = IpyGameDataPY.GetIpyGameData('BossReborn', playerTemplateID, actionID)
- if not ipyData:
- return
- singleTimes = ipyData.GetSingleTimes()
- curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionCurTimes % actionID)
- gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionGotTimes % actionID)
- if curTimes - gotTimes < singleTimes:
- return
- playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionWorldLV)
- #给奖励
- awardDict = __GetAwardItem(curPlayer, ipyData, playerWorldLV)
- # 检查背包
- needSpace = len(awardDict)
- packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if needSpace > packSpace:
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
- return
- #更新次数 每次领奖只领一次
- newGotTimes = gotTimes + singleTimes
-
- #GameWorld.Log(' actionID=%s,curTimes=%s,gotTimes=%s,singleTimes=%s,newGotTimes=%s'%(actionID, curTimes, gotTimes,singleTimes, newGotTimes))
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BRActionGotTimes % actionID, newGotTimes)
- for itemID, itemCnt in awardDict.items():
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
- SyncBossRebornPlayerInfo(curPlayer, actionID)
- return
-
-
-def __GetAwardItem(curPlayer, ipyData, worldLV, times=1):
- awardDict = {}
-
- awardList = GameWorld.GetDictValueByRangeKey(ipyData.GetReward(), worldLV, [])
- for itemID, itemCnt, isbind in awardList:
- if not itemID or not itemCnt:
- continue
- awardDict[itemID] = awardDict.get(itemID, 0) + itemCnt * times
-
- return awardDict
-
-
-def SyncBossRebornPlayerInfo(curPlayer, actID=-1):
- #通知当前次数、已领次数
- packData = ChPyNetSendPack.tagMCBossRebornPlayerInfo()
- packData.DataList = []
- if actID != -1:
- syneActIDList = [actID]
- else:
- syneActIDList = []
- ipyMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyMgr.GetBossRebornCount()):
- ipyData = ipyMgr.GetBossRebornByIndex(i)
- syneActIDList.append(ipyData.GetID())
-
- for actid in syneActIDList:
- curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionCurTimes % actid)
- gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionGotTimes % actid)
- tiemInfo = ChPyNetSendPack.tagMCBossRebornData()
- tiemInfo.ActID = actid
- tiemInfo.CurTimes = curTimes
- tiemInfo.GotTimes = gotTimes
- packData.DataList.append(tiemInfo)
-
- packData.Count = len(packData.DataList)
- NetPackCommon.SendFakePack(curPlayer, packData)
- return
-
-
-def SyncBossRebornInfo(curPlayer):
- actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
- state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
- cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
- if not state or not cfgID:
- return
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", cfgID)
- if not actBossIpyData:
- return
- templateID = actBossIpyData.GetTemplateID()
- if not templateID:
- return
- ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("BossReborn", {'TemplateID':templateID}, True)
- if not ipyDataList:
- return
- worldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BRActionWorldLV)
- startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(actBossIpyData)
- actInfo = ChPyNetSendPack.tagMCBossRebornInfo()
- actInfo.Clear()
- actInfo.StartDate = startDateStr
- actInfo.EndtDate = endDateStr
- actInfo.ResetType = actBossIpyData.GetResetType()
- actInfo.LimitLV = actBossIpyData.GetLVLimit()
- actInfo.TaskInfo = []
- for ipyData in ipyDataList:
- taskInfo = ChPyNetSendPack.tagMCBossRebornTaskInfo()
- taskInfo.TaskID = ipyData.GetID()
- taskInfo.TotalTimes = ipyData.GetTotalTimes()
- taskInfo.SingleTimes = ipyData.GetSingleTimes()
- taskInfo.AwardItem = []
- awardList = GameWorld.GetDictValueByRangeKey(ipyData.GetReward(), worldLV, [])
- for itemID, itemCnt, isBind in awardList:
- awardItem = ChPyNetSendPack.tagMCBossRebornAwardItem()
- awardItem.ItemID = itemID
- awardItem.ItemCount = itemCnt
- awardItem.IsBind = isBind
- taskInfo.AwardItem.append(awardItem)
- taskInfo.AwardItemCount = len(taskInfo.AwardItem)
- actInfo.TaskInfo.append(taskInfo)
- actInfo.TaskCnt = len(actInfo.TaskInfo)
- NetPackCommon.SendFakePack(curPlayer, actInfo)
- return
-
-def DoBossRebornActionBossOnKilledLogic(npcRankHurtMgr):
- ## boss复活活动boss被击杀
- # @param rankHurtList: NPCHurtMgr.PlayerRankHurtList
-
- npcID = npcRankHurtMgr.npcID
-
- GameWorld.Log("Boss复活活动boss被击杀: npcID=%s" % (npcID))
- rankItemDict = IpyGameDataPY.GetFuncEvalCfg("BossRebornServerBoss", 2) # {名次:[[物品ID,个数,是否拍品], ...], ...}
-
- for index in xrange(npcRankHurtMgr.GetHurtCount()):
- rank = index + 1
- hurtObj = npcRankHurtMgr.GetHurtAt(index)
- if hurtObj.GetValueType() != ChConfig.Def_NPCHurtTypePlayer:
- continue
- playerID = hurtObj.GetValueID()
- rankItemList = GameWorld.GetOrderValueByDict(rankItemDict, rank)
- GameWorld.Log(" 排行玩家奖励: rank=%s,rankItemList=%s" % (rank, rankItemList), playerID)
- if not rankItemList:
- continue
- paramList = [npcID, rank]
- PlayerControl.SendMailByKey("BossRebornActionBossRank", [playerID], rankItemList, paramList)
-
- entireMailItemList = IpyGameDataPY.GetFuncEvalCfg("BossRebornServerBoss", 1) # [[物品ID,个数,是否拍品], ...]
- if entireMailItemList:
- getDays, limitLV, limitLVType = IpyGameDataPY.GetFuncEvalCfg("BossRebornServerBoss", 4)
- paramList = [npcID]
- #删除旧版发送邮件,如果功能还有需要,可使用新版本发送邮件 PlayerMail
-
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index d2e7ce2..8ed50d0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3018,9 +3018,12 @@
PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_GetMoney, value, [priceType])
PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_GetMoney, value, [priceType])
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAGetMoney, value, [priceType])
if priceType == ShareDefine.TYPE_Price_FamilyCoin:
PlayerFamily.AddFamilyContrib(curPlayer, value) # 公会币同步增加公会贡献
+ elif priceType == ShareDefine.TYPE_Price_OSAPoint:
+ OpenServerActivity.AddOSACelebrationPoint(curPlayer, value)
if priceType not in [IPY_GameWorld.TYPE_Price_Gold_Money, IPY_GameWorld.TYPE_Price_Gold_Paper, ShareDefine.TYPE_Price_PayCoin] \
and giveType == ChConfig.Def_GiveMoney_Unknown:
@@ -4331,6 +4334,7 @@
PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_MainLevel, lvID)
PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevel)
PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_MainLevel, lvID)
+ PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSAMainLevel, lvID)
if OpenServerActivity.GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_MainLevel) == 1:
PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_MainLevel, lvID)
return value
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index 4eea7a3..9a38213 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -56,7 +56,6 @@
import PlayerActTurntable
import PlayerActBuyOne
import PlayerSpringSale
-import PlayerBossReborn
import PlayerWeekParty
import PlayerFeastWeekParty
import PlayerFeastLogin
@@ -898,9 +897,6 @@
elif actionName == ShareDefine.OperationActionName_SpringSale:
PlayerSpringSale.RefreshSpringSaleActionInfo(actNum)
-
- elif actionName == ShareDefine.OperationActionName_BossReborn:
- PlayerBossReborn.RefreshOperationAction_BossReborn()
elif actionName == ShareDefine.OperationActionName_FlashGiftbag:
PlayerFlashGiftbag.RefreshFlashGiftbagActionInfo(actNum)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldRush.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldRush.py
index 556531d..57af109 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldRush.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldRush.py
@@ -20,6 +20,7 @@
import NetPackCommon
import IpyGameDataPY
import ItemControler
+import PlayerSuccess
import ChPyNetSendPack
import PlayerActivity
import PlayerControl
@@ -318,6 +319,7 @@
% (updWorkerCnt, realNeedSeconds, GameWorld.ChangeTimeNumToStr(endTime), campInfo))
PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_GoldRush, 1)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAGoldRush, 1)
return
def GetWorkerTotal(curPlayer):
@@ -415,6 +417,8 @@
SyncGoldRushInfo(curPlayer)
PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_GoldRushWorkers)
+ workersTotal = GetWorkerTotal(curPlayer)
+ PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSAGoldRushWorkers, workersTotal)
return
#// B0 38 淘金仓库领奖 #tagCSGoldRushWarehouseAward
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
index 0b32d31..19a0800 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
@@ -20,6 +20,7 @@
import IpyGameDataPY
import IPY_GameWorld
import ItemControler
+import PlayerSuccess
import ChPyNetSendPack
import PlayerActivity
import NetPackCommon
@@ -355,6 +356,7 @@
PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_HeroLVUP, 1)
PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_HeroLVUP)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAHeroLVUP, 1)
return
def GetHeroLVMax(heroItem):
@@ -475,6 +477,7 @@
__DoHeroStarTalentUp(item, addStar)
PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_HeroStarUP, addStar)
PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_HeroStarUP, addStar)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAHeroStarUP, addStar)
if isSync:
heroItem.Sync_Item()
@@ -1105,7 +1108,9 @@
RefreshLordAttr(curPlayer)
+ bookCnt = GetHeroBookActCnt(curPlayer)
PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_HeroBook)
+ PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSAHeroBook, bookCnt)
return
def __doHeroBookStarLVUP(curPlayer, heroID):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
index 729cf68..3b19ad1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -20,6 +20,7 @@
import ShareDefine
import NetPackCommon
import PlayerControl
+import PlayerSuccess
import ChPyNetSendPack
import IPY_GameWorld
import IpyGameDataPY
@@ -122,6 +123,7 @@
RefreshHorseAttr(curPlayer)
PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_HorseLVUP, costItemCount)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAHorseLVUP, costItemCount)
return
#// B2 02 坐骑进阶 #tagCSHorseClassUP
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
index b5d3d0a..4ce1459 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
@@ -29,6 +29,7 @@
import PlayerTongTianLing
import PlayerTask
import PlayerOnline
+import PlayerSuccess
#------------------------------------------------------------------------------
@@ -264,6 +265,7 @@
SyncRealmInfo(curPlayer, taskIDList=syncTaskIDList)
PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_RealmUp, 1)
PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_RealmLV)
+ PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSARealmLV, nextRealmLv)
#更新排行榜
PlayerBillboard.UpdateRealmBillboard(curPlayer)
return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
index 7469282..209a64b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
@@ -20,7 +20,9 @@
import ShareDefine
import NetPackCommon
import PlayerControl
+import OpenServerActivity
import ChPyNetSendPack
+import IPY_GameWorld
import ItemControler
import IpyGameDataPY
import PyGameData
@@ -47,72 +49,119 @@
SyncSuccessAwardRecord(curPlayer)
return
-def ResetSuccessByType(curPlayer, succType, ignoreFinish=True):
+def ResetSuccessByTypes(curPlayer, succTypeList, ignoreFinish=True, isNotify=True):
+ ## 重置成就
+ for succType in succTypeList:
+ ResetSuccessByType(curPlayer, succType, ignoreFinish, isNotify)
+ return
+
+def ResetSuccessByType(curPlayer, succType, ignoreFinish=True, isNotify=True):
#重置某类型成就进度,一般用于先重置次数再重新计数,或者活动类
ipyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("Success", succType)
if not ipyDataList:
return
+ succIDList = []
+ syncTypeCondList = []
for ipyData in ipyDataList:
succID = ipyData.GetSuccID()
if ignoreFinish and GetSuccHasGot(curPlayer, succID):
continue
conds = ipyData.GetCondition()
SetSuccValue(curPlayer, succType, conds, 0)
+ SetSuccHasGot(curPlayer, succID, 0)
+ succIDList.append(succID)
+ if [succType, conds] not in syncTypeCondList:
+ syncTypeCondList.append([succType, conds])
+ if isNotify:
+ succIDList and SyncSuccessAwardRecord(curPlayer, succIDList, True)
+ syncTypeCondList and SyncSuccessInfo(curPlayer, syncTypeCondList, True)
return
-#def UpdateSuccessProgressByConditions(curPlayer, successType, conditionCountDict):
-# ## 根据多种条件更新进度,如装备多品质的
-# ipyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("Success", successType)
-# if not ipyDataList:
-# return
-# updIDList = []
-# updsuccDataList = []
-# updConditionDict = {}
-#
-# for condition, newCount in conditionCountDict.items():
-# addCondList = [] # 不同的成就ID条件可能相同,只是最大进度不同,故传入的条件计数针对相同成就条件只能累加一次
-# for ipyData in ipyDataList:
-# succID = ipyData.GetSuccID()
-# conds = ipyData.GetCondition()
-# needCnt = ipyData.GetNeedCnt()
-#
-# tupleCond = tuple(conds) # 作为字典key用
-#
-# if tupleCond not in updConditionDict:
-# updConditionDict[tupleCond] = [conds, 0, 0] # [条件, 更新值, 最大进度值]
-# updInfo = updConditionDict[tupleCond]
-# if updInfo[2] < needCnt:
-# updInfo[2] = needCnt
-#
-# if not __CheckCanAddSuccess(curPlayer, ipyData, list(condition)):
-# continue
-#
-# if succID not in updIDList:
-# updIDList.append(succID)
-# updsuccDataList.append(ipyData)
-#
-# if tupleCond not in addCondList:
-# addCondList.append(tupleCond)
-# updConditionDict[tupleCond][1] = updConditionDict[tupleCond][1] + newCount # 更新进度值
-#
-# # 没有找到更新目标不处理
-# #GameWorld.DebugLog(" updConditionDict=%s" % updConditionDict)
-# #GameWorld.DebugLog(" updIDList=%s" % updIDList)
-# if not updIDList:
-# return
-#
-# # 先更新成就记录值后再判断完成与否
-# for cond, updCnt, maxCnt in updConditionDict.values():
-# if not updCnt:
-# continue
-# updCnt = min(maxCnt, updCnt)
-# if GetSuccValue(curPlayer, successType, cond) == updCnt:
-# continue
-# SetSuccValue(curPlayer, successType, cond, updCnt)
-# SyncSuccessInfo(curPlayer, syncTypeCondList)
-# return
+def UpdateEquipSuccess(curPlayer):
+ # 装备相关成就
+
+ colorCountDict = {}
+ equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
+ for equipPlace in ChConfig.Def_MainEquipPlaces:
+ equipIndex = equipPlace - 1
+ if equipIndex < 0 or equipIndex >= equipPack.GetCount():
+ continue
+ curEquip = equipPack.GetAt(equipIndex)
+ if not curEquip or curEquip.IsEmpty():
+ continue
+ itemColor = curEquip.GetItemColor()
+ condKey = (itemColor, )
+ colorCountDict[condKey] = colorCountDict.get(condKey, 0) + 1
+
+ UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_OSAEquipColor, colorCountDict)
+ return
+
+def UpdateSuccessProgressByConditions(curPlayer, successType, conditionCountDict):
+ ## 根据多种条件更新进度,如装备多品质的
+ # @param conditionCountDict: 条件对应件数,条件需用元组为key {(c, ...):cnt, ..}
+ if successType in ShareDefine.OSASuccTypeList:
+ if OpenServerActivity.GetOSACelebrationState(curPlayer) != 1:
+ return
+ ipyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("Success", successType)
+ if not ipyDataList:
+ return
+
+ updIDList = []
+ updsuccDataList = []
+ updConditionDict = {}
+
+ for condition, newCount in conditionCountDict.items():
+ addCondList = [] # 不同的成就ID条件可能相同,只是最大进度不同,故传入的条件计数针对相同成就条件只能累加一次
+ for ipyData in ipyDataList:
+ succID = ipyData.GetSuccID()
+ conds = ipyData.GetCondition()
+ needCnt = ipyData.GetNeedCnt()
+
+ tupleCond = tuple(conds) # 作为字典key用
+
+ if tupleCond not in updConditionDict:
+ updConditionDict[tupleCond] = [conds, 0, 0] # [条件, 更新值, 最大进度值]
+ updInfo = updConditionDict[tupleCond]
+ if updInfo[2] < needCnt:
+ updInfo[2] = needCnt
+
+ if not __CheckCanAddSuccess(curPlayer, ipyData, list(condition)):
+ continue
+
+ if succID not in updIDList:
+ updIDList.append(succID)
+ updsuccDataList.append(ipyData)
+
+ if tupleCond not in addCondList:
+ addCondList.append(tupleCond)
+ updConditionDict[tupleCond][1] = updConditionDict[tupleCond][1] + newCount # 更新进度值
+
+ # 没有找到更新目标不处理
+ #GameWorld.DebugLog(" conditionCountDict=%s" % conditionCountDict)
+ #GameWorld.DebugLog(" updConditionDict=%s" % updConditionDict)
+ #GameWorld.DebugLog(" updIDList=%s" % updIDList)
+ if not updIDList:
+ return
+
+ # 先更新成就记录值后再判断完成与否
+ syncTypeCondList = []
+ for conds, updCnt, maxCnt in updConditionDict.values():
+ if not updCnt:
+ continue
+ updCnt = min(maxCnt, updCnt)
+ if GetSuccValue(curPlayer, successType, conds) == updCnt:
+ continue
+ SetSuccValue(curPlayer, successType, conds, updCnt)
+ if [successType, conds] not in syncTypeCondList:
+ syncTypeCondList.append([successType, conds])
+ #GameWorld.DebugLog(" syncTypeCondList=%s" % syncTypeCondList)
+ syncTypeCondList and SyncSuccessInfo(curPlayer, syncTypeCondList, True)
+ return
def UptateSuccessProgress(curPlayer, successType, newCnt, condition=[]):
+ if successType in ShareDefine.OSASuccTypeList:
+ if OpenServerActivity.GetOSACelebrationState(curPlayer) != 1:
+ return
ipyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("Success", successType)
if not ipyDataList:
return
@@ -226,7 +275,9 @@
return
if successType not in ShareDefine.SuccessTypeList:
return
-
+ if successType in ShareDefine.OSASuccTypeList:
+ if OpenServerActivity.GetOSACelebrationState(curPlayer) != 1:
+ return
ipyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("Success", successType)
if not ipyDataList:
GameWorld.DebugLog("找不到成就数据successType=%s" % successType)
@@ -274,7 +325,7 @@
needCnt = ipyData.GetNeedCnt()
curValue = GetSuccValue(curPlayer, succType, conds)
if curValue < needCnt:
- GameWorld.DebugLog("该成就未完成! succID=%s,curValue=%s < %s" % (succID, curValue, needCnt))
+ GameWorld.DebugLog("该成就未完成! succID=%s,succType=%s,conds=%s,curValue=%s < %s" % (succID, succType, conds, curValue, needCnt))
return
SetSuccHasGot(curPlayer, succID)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
index f711016..5ca8203 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -26,6 +26,7 @@
import PlayerActLunhuidian
import PlayerActYunshi
import PlayerActivity
+import PlayerSuccess
import OpenServerActivity
import PlayerBillboard
import ShareDefine
@@ -445,9 +446,11 @@
if treasureType in TreasureType_HeroCallList:
PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_HeroCall, treasureCount)
+ heroCallCnt = GetHeroCallCnt(curPlayer)
if OpenServerActivity.GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_HeroCall) == 1:
- PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_HeroCall, GetHeroCallCnt(curPlayer))
-
+ PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_HeroCall, heroCallCnt)
+ PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSAHeroCall, heroCallCnt)
+
PlayerActLunhuidian.AddLunhuidianValue(curPlayer, PlayerActLunhuidian.AwardType_Treasure, treasureType, treasureCount)
# 给物品
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py
index 24f9521..cf3c585 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTree.py
@@ -23,6 +23,8 @@
import PlayerGoldInvest
import PlayerControl
import IPY_GameWorld
+import PlayerSuccess
+import ShareDefine
import PlayerTask
import ChConfig
@@ -289,6 +291,7 @@
SyncTreeInfo(curPlayer)
PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_TreeLV)
+ PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSATreeLV, updTreeLV)
return True
def SyncTreeInfo(curPlayer):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_BossFirstKill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_BossFirstKill.py
deleted file mode 100644
index bfc728f..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_BossFirstKill.py
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_BossFirstKill
-#
-# @todo:Boss首杀
-# @author hxp
-# @date 2019-09-20
-# @version 1.0
-#
-# 详细描述: Boss首杀
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2019-09-20 14:00"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import GameWorld
-import PlayerControl
-import IpyGameDataPY
-import IPY_GameWorld
-import ItemControler
-import ChPyNetSendPack
-import NetPackCommon
-import ShareDefine
-import ItemCommon
-
-# boss首杀状态位定义
-(
-BossFKState_IsKill, # 是否已经击杀过该boss
-BossFKState_PubAward, # 是否领取过全服首杀奖励
-BossFKState_PriAward, # 是否领取过个人首杀奖励
-) = range(3)
-
-def OnPlayerLogin(curPlayer):
- maxBossFKDay = IpyGameDataPY.GetFuncCfg("OSCBossFirstKill", 1)
- openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
- if openServerDay > maxBossFKDay:
- return
-
- Sync_BossFirstKillState(curPlayer)
- return
-
-def SetPlayerFirstKillBoss(curPlayer, bossID):
- fkState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossFirstKillState % bossID)
- if GameWorld.GetDataByDigitPlace(fkState, BossFKState_IsKill):
- GameWorld.DebugLog("已经击杀过该boss!")
- return
- updFKState = GameWorld.ChangeDataByDigitPlace(fkState, BossFKState_IsKill, 1)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossFirstKillState % bossID, updFKState)
- GameWorld.DebugLog("设置首杀过该boss: bossID=%s,fkState=%s,updFKState=%s" % (bossID, fkState, updFKState))
- Sync_BossFirstKillState(curPlayer, [bossID])
- return
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- bossID, awardType = eval(funResult)
- GameWorld.DebugLog("GY_Query_BossFirstKill bossID=%s, awardType=%s" % (bossID, awardType), curPlayer.GetPlayerID())
- if not curPlayer:
- return
-
- ipyData = IpyGameDataPY.GetIpyGameDataNotLog("BOSSFirstKill", bossID)
- if not ipyData:
- return
-
- if awardType == 0:
- __DoGiveBossFirstKill_PubAward(curPlayer, bossID, ipyData)
- elif awardType == 1:
- __DoGiveBossFirstKill_PriAward(curPlayer, bossID, ipyData)
-
- return
-
-def __DoGiveBossFirstKill_PubAward(curPlayer, bossID, ipyData):
- ## 首杀全服公共奖励
-
- bitIndex = BossFKState_PubAward
- fkState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossFirstKillState % bossID)
- if GameWorld.GetDataByDigitPlace(fkState, bitIndex):
- GameWorld.DebugLog("已经领取过该首杀全服奖励!fkState=%s,bitIndex=%s" % (fkState, bitIndex))
- return
- updFKState = GameWorld.ChangeDataByDigitPlace(fkState, bitIndex, 1)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossFirstKillState % bossID, updFKState)
- GameWorld.DebugLog("更新Boss首杀全服奖励领奖记录!fkState=%s,bitIndex=%s,updFKState=%s"
- % (fkState, bitIndex, updFKState))
-
- awardGoldPaper = ipyData.GetPerPlayerMoneyAward()
- addDataDict = {"bossID":bossID}
- PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, awardGoldPaper, ChConfig.Def_GiveMoney_BossFirstKill, addDataDict)
- ItemControler.NotifyGiveAwardInfo(curPlayer, [], "BossFirstKill", moneyInfo={IPY_GameWorld.TYPE_Price_Gold_Paper:awardGoldPaper})
- Sync_BossFirstKillState(curPlayer, [bossID])
- return
-
-def __DoGiveBossFirstKill_PriAward(curPlayer, bossID, ipyData):
- ## 个人首杀奖励
-
- fkState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossFirstKillState % bossID)
- if not GameWorld.GetDataByDigitPlace(fkState, BossFKState_IsKill):
- GameWorld.DebugLog("还未击杀过该boss,无法领取个人首杀奖励!fkState=%s,bitIndex=%s" % (fkState, BossFKState_IsKill))
- return
-
- awardItemList = ipyData.GetPersonFirstKillAward()
- needSpace = len(awardItemList)
- emptySpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if emptySpace < needSpace:
- PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_202580")
- return
-
- bitIndex = BossFKState_PriAward
- if GameWorld.GetDataByDigitPlace(fkState, bitIndex):
- GameWorld.DebugLog("已经领取过该个人首杀奖励!fkState=%s,bitIndex=%s" % (fkState, bitIndex))
- return
- updFKState = GameWorld.ChangeDataByDigitPlace(fkState, bitIndex, 1)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossFirstKillState % bossID, updFKState)
- GameWorld.DebugLog("更新Boss首杀个人奖励领奖记录!fkState=%s,bitIndex=%s,updFKState=%s"
- % (fkState, bitIndex, updFKState))
-
- for itemID, itemCount, isAuctionItem in awardItemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem])
- ItemControler.NotifyGiveAwardInfo(curPlayer, awardItemList, "BossFirstKill")
-
- Sync_BossFirstKillState(curPlayer, [bossID])
- return
-
-def Sync_BossFirstKillState(curPlayer, syncBossIDList=None, isForce=False):
- if syncBossIDList == None:
- syncBossIDList = []
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for index in xrange(ipyDataMgr.GetBOSSFirstKillCount()):
- ipyData = ipyDataMgr.GetBOSSFirstKillByIndex(index)
- syncBossIDList.append(ipyData.GetNPCID())
-
- firstKillStateList = []
- for bossID in syncBossIDList:
- fkState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossFirstKillState % bossID)
- if not fkState and not isForce:
- continue
- fkStatePack = ChPyNetSendPack.tagMCBossFirstKillState()
- fkStatePack.NPCID = bossID
- fkStatePack.FKState = fkState
- firstKillStateList.append(fkStatePack)
-
- if not firstKillStateList:
- return
-
- clientPack = ChPyNetSendPack.tagMCBossFirstKillStateInfo()
- clientPack.FirstKillStateList = firstKillStateList
- clientPack.BossCount = len(clientPack.FirstKillStateList)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
-def OnGMResetBossFirstKillState(curPlayer):
- syncBossIDList = []
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for index in xrange(ipyDataMgr.GetBOSSFirstKillCount()):
- ipyData = ipyDataMgr.GetBOSSFirstKillByIndex(index)
- bossID = ipyData.GetNPCID()
- fkState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossFirstKillState % bossID)
- if not fkState:
- continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossFirstKillState % bossID, 0)
- syncBossIDList.append(bossID)
- Sync_BossFirstKillState(curPlayer, syncBossIDList, isForce=True)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index daa6765..0117513 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -254,7 +254,6 @@
OperationActionName_ExpRate = "ActExpRate" # 多倍经验活动
OperationActionName_CostRebate = "ActCostRebate" # 消费返利活动
OperationActionName_SpringSale = "ActSpringSale" # 限时特惠活动
-OperationActionName_BossReborn = "ActBossReborn" # BOSS复活活动
OperationActionName_FlashGiftbag = "ActFlashGiftbag" # 限时礼包活动
OperationActionName_DailyGiftbag = "ActDailyGiftbag" # 每日礼包活动
OperationActionName_FairyCeremony = "ActFairyCeremony" # 仙界盛典活动
@@ -293,7 +292,7 @@
]
#所有的运营活动列表,含节日活动
OperationActionNameList = [OperationActionName_ExpRate, OperationActionName_CostRebate,
- OperationActionName_BossReborn,OperationActionName_SpringSale,
+ OperationActionName_SpringSale,
OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
OperationActionName_RealmPoint, OperationActionName_FlashSale,
OperationActionName_WishingWell, OperationActionName_TotalRecharge,
@@ -312,7 +311,7 @@
#需要记录开启活动时的世界等级的运营活动
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell,
OperationActionName_NewFairyCeremony, OperationActionName_FlashSale,
- OperationActionName_BossReborn, OperationActionName_TotalRecharge,
+ OperationActionName_TotalRecharge,
OperationActionName_CostRebate, OperationActionName_FlashGiftbag,
OperationActionName_SpringSale, OperationActionName_LuckyTreasure,
OperationActionName_DailyGiftbag, OperationActionName_GrowupBuy,
@@ -696,7 +695,8 @@
CDBPlayerRefresh_GoldRushEnergy, # 淘金令 285
CDBPlayerRefresh_ArenaTicket, # 挑战券 286
CDBPlayerRefresh_TehuiPoint, # 特惠印绶 287
-) = range(146, 288)
+CDBPlayerRefresh_OSAPoint, # 开服庆典积分 288
+) = range(146, 289)
TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子)
TYPE_Price_FamilyExp = 6 # 战盟经验
@@ -739,12 +739,14 @@
TYPE_Price_GoldRushEnergy = 52 # 淘金令体力
TYPE_Price_ArenaTicket = 53 # 演武场挑战券
TYPE_Price_TehuiPoint = 54 # 特惠印绶
+TYPE_Price_OSAPoint = 55 # 开服庆典积分
TYPE_Price_PayCoinDay = 98 # 代币时效,每日过天重置
TYPE_Price_PayCoin = 99 # 代币
#key可用于遍历所有货币,value仅GM相关会用到
MoneyNameDict = {
- 1:"金币", 15:"公会贡献币", 41:"战锤", 42:"将星玉髓", 43:"将魂", 51:"招募积分", 52:"淘金令", 53:"挑战券", 54:"特惠印绶",
+ 1:"金币", 15:"公会贡献币", 41:"战锤", 42:"将星玉髓", 43:"将魂", 51:"招募积分", 52:"淘金令", 53:"挑战券", 54:"特惠印绶",
+ 55:"可用开服庆典积分",
98:"代币时效", 99:"代币"
}
#MoneyNameDict = {
@@ -769,6 +771,7 @@
TYPE_Price_GoldRushEnergy:CDBPlayerRefresh_GoldRushEnergy,
TYPE_Price_ArenaTicket:CDBPlayerRefresh_ArenaTicket,
TYPE_Price_TehuiPoint:CDBPlayerRefresh_TehuiPoint,
+ TYPE_Price_OSAPoint:CDBPlayerRefresh_OSAPoint,
TYPE_Price_PayCoinDay:CDBPlayerRefresh_PayCoinDay,
#TYPE_Price_Rune:CDBPlayerRefresh_Rune,
#TYPE_Price_RuneSplinters:CDBPlayerRefresh_RuneSplinters,
@@ -809,6 +812,7 @@
GameFuncID_Travel = 44 # 游历
GameFuncID_OSA_MainLevel = 45 # 开服关卡榜
GameFuncID_OSA_HeroCall = 46 # 开服招募榜
+GameFuncID_OSA_Celebration = 47 # 开服庆典
# 以下为暂时无用的
GameFuncID_Pet = -1 # 宠物,灵宠 6
@@ -915,7 +919,7 @@
Def_UniversalGameRecType_28,
Def_UniversalGameRecType_BossInfo, # boss信息29
Def_UniversalGameRecType_CrossBossInfo, # 跨服boss信息 30
- Def_UniversalGameRecType_BossFirstKill, # boss首杀 31
+ Def_UniversalGameRecType_31,
Def_UniversalGameRecType_CrossCollect, # 跨服采集记录信息 32
Def_UniversalGameRecType_CrossChampionshipGroup, # 跨服排位争霸赛分组信息 33
Def_UniversalGameRecType_CrossChampionshipGuess, # 跨服排位争霸赛竞猜记录信息 34
@@ -1393,7 +1397,28 @@
# 成就类型定义
SuccessTypeList = (
SuccType_MainLevel, # 通过主线关卡xxx 1
-) = range(1, 1 + 1)
+SuccType_OSAMainLevel, # 开服庆典 - 通过主线关卡xxx 2
+SuccType_OSACutTree, # 消耗X个战锤 3
+SuccType_OSARealmLV, # 官职达到X级 4
+SuccType_OSATreeLV, # 仙树达到X级 5
+SuccType_OSAEquipColor, # 穿戴x件x品质及以上装备 6
+SuccType_OSAHorseLVUP, # 坐骑升级x次 7
+SuccType_OSAHeroLVUP, # 武将升级X次 8
+SuccType_OSAHeroStarUP, # 武将升星x次 9
+SuccType_OSAHeroCall, # 武将招募x次 10
+SuccType_OSAHeroBook, # 武将图鉴激活x个 11
+SuccType_OSAArenaBattle, # 演武场战斗x次 12
+SuccType_OSAFBZhanchui, # 白骨盈野击败xx 13
+SuccType_OSAFBTianzi, # 挑战天子的考验x次 14
+SuccType_OSAGoldRush, # 淘金采集x次 15
+SuccType_OSAGoldRushWorkers, # 拥有x名监工 16
+SuccType_OSAKillNPC, # 击败X只怪物 17
+SuccType_OSAEquipDecompose, # 分解装备x次 18
+SuccType_OSAGetMoney, # 累计获得xx货币 19
+) = range(1, 1 + 19)
+
+# 开服庆典成就类型
+OSASuccTypeList = range(SuccType_OSAMainLevel, SuccType_OSAGetMoney + 1)
# 不向下适配检查的成就类型(指相对较高成就条件不会增加较低成就条件的进度)
UnDownCheckSuccessTypeList = []
--
Gitblit v1.8.0