From 7bf88131759c20d54e175010d5b80da5d8148713 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期日, 28 九月 2025 19:47:56 +0800
Subject: [PATCH] 16 卡牌服务端(删除资源找回;前端自定义副本,公共扫荡;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py | 392 --------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py | 104 --
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py | 60 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 676 --------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 534 -----------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py | 5
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py | 15
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py | 37
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py | 576 -----------
/dev/null | 50 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 78
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py | 13
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py | 9
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py | 28
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 28
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 145 ---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 23
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 45
21 files changed, 64 insertions(+), 2,765 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index 160b1bf..be34ac8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -459,33 +459,33 @@
PacketSubCMD_1=0x08
PacketCallFunc_1=OnDoFBAction
-PacketCMD_2=0xA2
-PacketSubCMD_2=0x10
-PacketCallFunc_2=OnClearFBCD
+PacketCMD_2=
+PacketSubCMD_2=
+PacketCallFunc_2=
PacketCMD_3=0xA5
PacketSubCMD_3=0x05
PacketCallFunc_3=OnPlayerFBWipeOut
-PacketCMD_4=0xA5
-PacketSubCMD_4=0x1B
-PacketCallFunc_4=OnPlayerBuyFBEnergy
+PacketCMD_4=
+PacketSubCMD_4=
+PacketCallFunc_4=
-PacketCMD_5=0xB1
-PacketSubCMD_5=0x02
-PacketCallFunc_5=OnPlayerGetMultiFBPrize
+PacketCMD_5=
+PacketSubCMD_5=
+PacketCallFunc_5=
-PacketCMD_6=0xA5
-PacketSubCMD_6=0x60
-PacketCallFunc_6=OnPlayerResetFBJoinCnt
+PacketCMD_6=
+PacketSubCMD_6=
+PacketCallFunc_6=
-PacketCMD_7=0xB1
-PacketSubCMD_7=0x01
-PacketCallFunc_7=OnClientEndFB
+PacketCMD_7=
+PacketSubCMD_7=
+PacketCallFunc_7=
-PacketCMD_8=0xB1
-PacketSubCMD_8=0x04
-PacketCallFunc_8=OnClientStartFB
+PacketCMD_8=
+PacketSubCMD_8=
+PacketCallFunc_8=
PacketCMD_9=0xB1
PacketSubCMD_9=0x08
@@ -499,13 +499,13 @@
PacketSubCMD_11=
PacketCallFunc_11=
-PacketCMD_12=0xA2
-PacketSubCMD_12=0x31
-PacketCallFunc_12=OnClientStartCustomScene
+PacketCMD_12=
+PacketSubCMD_12=
+PacketCallFunc_12=
-PacketCMD_13=0xA2
-PacketSubCMD_13=0x33
-PacketCallFunc_13=OnClientExitCustomScene
+PacketCMD_13=
+PacketSubCMD_13=
+PacketCallFunc_13=
;玩家相关
[ChPlayer]
@@ -873,9 +873,9 @@
PacketSubCMD_1=0x52
PacketCallFunc_1=OnBuyCollectionCnt
-PacketCMD_2=A2
-PacketSubCMD_2=34
-PacketCallFunc_2=OnGetCustomSceneCollectAward
+PacketCMD_2=
+PacketSubCMD_2=
+PacketCallFunc_2=
PacketCMD_3=0xA5
PacketSubCMD_3=0x0A
@@ -885,25 +885,13 @@
PacketSubCMD_4=0x23
PacketCallFunc_4=OnNPCShowEnd
-PacketCMD_5=0xB4
-PacketSubCMD_5=0x0C
-PacketCallFunc_5=OnSummonPriWoodPile
+PacketCMD_5=
+PacketSubCMD_5=
+PacketCallFunc_5=
-PacketCMD_6=0xB4
-PacketSubCMD_6=0x0F
-PacketCallFunc_6=OnRecyclePriWoodPile
-
-;资源找回
-[PlayerRecover]
-ScriptName = Player\PlayerRecover.py
-Writer = ljd
-Releaser = ljd
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xA5
-PacketSubCMD_1=0x53
-PacketCallFunc_1=OnRecoverGain
+PacketCMD_6=
+PacketSubCMD_6=
+PacketCallFunc_6=
;神器
[PlayerGodWeapon]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
index da07209..7abef51 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
@@ -984,22 +984,20 @@
if not curTag:
continue
- #非自定义场景才需要判断
- if not attacker.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
- if curSkillUseTag == ChConfig.Def_UseSkillTag_CanAttackNPC:
- if NPCCommon.GetNpcObjOwnerIsPlayer(curTag):
- #npc主人是玩家不能攻击
- continue
-
- if GameWorld.GetDist(curTag.GetPosX(), curTag.GetPosY(), attacker.GetPosX(), attacker.GetPosY()) > attacker.GetSight():
- # 最远距离防范
- GameWorld.DebugLog("#--- 最远距离防范[%s-%s]"%(attacker.GetID(), curTag.GetID()))
+ if curSkillUseTag == ChConfig.Def_UseSkillTag_CanAttackNPC:
+ if NPCCommon.GetNpcObjOwnerIsPlayer(curTag):
+ #npc主人是玩家不能攻击
continue
-
- if CheckFunc != None:
- #检查是否受影响
- if not CheckFunc(attacker, curTag, curSkill, tick):
- continue
+
+ if GameWorld.GetDist(curTag.GetPosX(), curTag.GetPosY(), attacker.GetPosX(), attacker.GetPosY()) > attacker.GetSight():
+ # 最远距离防范
+ GameWorld.DebugLog("#--- 最远距离防范[%s-%s]"%(attacker.GetID(), curTag.GetID()))
+ continue
+
+ if CheckFunc != None:
+ #检查是否受影响
+ if not CheckFunc(attacker, curTag, curSkill, tick):
+ continue
resultList.append(curTag)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index dc12527..9381d4a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -2023,9 +2023,6 @@
#镜像切磋
Def_FBMapID_MirrorBattle = 100
-#前端自定义场景地图
-ClientCustomSceneList = []
-
#镜像PK的地图ID列表
MirrorBattleMapIDList = []
@@ -2094,12 +2091,6 @@
# 从副本退出时,可以返回进入前的副本ID
Def_CanBackFBMap = []
-
-#答题触发地图
-Def_Subject_Map = [
- ]
-#没通关过不可资源找回的地图
-Def_UnRecoverNoPassMap = [Def_FBMapID_KirinHome, Def_FBMapID_MunekadoTrial, Def_FBMapID_QueenRelics]
#副本延时踢出玩家的时间
Def_FBKickPlayerTime = 5000 #5秒
@@ -3220,9 +3211,6 @@
Def_PlayerKey_SomersaultTime = "Somersault" # 翻滚一定时间内无敌,表现为MISS
Def_Player_RefreshAttrByBuff = "PlayerAttrByBuff" # 玩家属性刷新功能属性缓存,便于buff刷新计算, 间隔刷新
Def_Player_HadRefreshAttr = "HadRefreshAttr" # 玩家在本地图是否刷新过属性
-Def_PlayerKey_ClientCustomScene = "ClientCustomScene" # 客户端自定义场景状态
-Def_PlayerKey_ClientCustomSceneStepTick = "ClientCustomSceneStepTick" # 客户端自定义场景tick
-Def_PlayerKey_ClientCustomSceneGrade = "ClientCustomSceneGrade" # 客户端自定义场景评级
Def_PlayerKey_ChangeMapID = "ChangeMapID" # 请求切换的地图ID
Def_PlayerKey_ChangeLineID = "ChangeLineID" # 请求切换的线路ID
Def_PlayerKey_ResetFBLinePosX = "ResetFBLinePosX" # 请求切换副本多合一地图功能线路ID
@@ -3415,17 +3403,12 @@
Def_Player_Dict_ReqFBMissionID = "ReqFBMissionID" # 请求进入副本的任务ID
Def_Player_Dict_ReqFBMissionType = "ReqFBMissionType" # 请求进入副本的任务类型
Def_Player_Dict_PlayerFBStar_MapId = "FBStar_%s_%s" # 副本星级星级信息, 参数为[mapID, key编号], 按位存储每个lineID对应的星级
-Def_Player_Dict_CustomMapStep = "CustomMapStep_%s_%s" # 前端自定义场景阶段, 参数(mapID, lineID),对应 CustomMapStep_Fight ...
Def_Player_Dict_FBPassLineID = "FBPassLineID_%s" # 副本已过关到的lineID, 参数为副本ID
Def_Player_Dict_EnterFbCntTotal = "EnterFbCntTotal_%s" # 进入副本总累计次数, 参数为副本ID
Def_Player_Dict_EnterFbCntDay = "EnterFbCntDay_%s" # 今日进入副本次数, 参数为副本ID
Def_Player_Dict_BuyFbCntDay = "BuyFbCntDay_%s" # 今日购买副本进入次数, 参数为副本ID
-Def_Player_Dict_RecoverFbCnt = "RecoverFbCnt_%s" # 今日找回的副本次数, 参数为副本ID
Def_Player_Dict_ItemAddFbCnt = "ItemAddFbCnt_%s" # 使用物品增加的副本次数, 参数为副本ID
-Def_Player_Dict_RegainFbCnt = "RegainFbCnt_%s" # 时间恢复增加的副本次数, 参数为副本ID
Def_Player_Dict_EnterFbCntWeek = "EnterFbCntWeek_%s" # 本周进入副本次数, 参数为副本ID
-Def_Player_Dict_FbCntRegainStartTime = "FbCntRegainStartTime_%s" # 副本次数恢复开始时间, 参数为副本ID
-Def_Player_Dict_FbCntRegainTotalTime = "FbCntRegainTotalTime_%s" # 副本次数恢复还需时间, 参数为副本ID
Def_Player_Dict_FBHistoryMaxLine = "FBHistoryMaxLine_%s" # 副本历史最高通关, 参数为副本ID
Def_Player_Dict_IceLoadLineID = "IceLoadLineID_%s" # 副本星级星级信息, 参数为[key编号], 按位存储每个lineID是否选中
Def_Player_Dict_RefurbishGoodBookPlayerLv = "RefurbishGoodBookPlayerLv_97" # 刷新天书任务时的玩家等级
@@ -3555,17 +3538,6 @@
Def_PDict_NobleEndTime = "NobleEndTime_%s" # 贵族到期结束时间<单位s>, 参数为贵族等级, 从1开始
Def_PDict_NobleExperState = "NobleExperState" # 体验贵族状态; 0-无效;1-有效; 2-可体验
-Def_PDict_RecoverFBCommonCnt = "RecoverFBCommonCnt_%s" # 资源找回副本普通次数 <%s-找回项索引>
-Def_PDict_RecoverFBRegainCnt = "RecoverFBRegainCnt_%s" # 资源找回副本时间恢复次数 <%s-找回项索引>
-Def_PDict_RecoverFBExtraCnt = "RecoverFBExtraCnt_%s" # 资源找回副本VIP额外次数 <%s-找回项索引>
-Def_PDict_RecoverFBBuyCnt = "RecoverFBBuyCnt_%s" # 资源找回副本购买次数 <%s-找回项索引>
-Def_PDict_RecoverFBItemAddCnt = "RecoverFBItemAddCnt_%s" # 资源找回副本物品增加次数 <%s-找回项索引>
-Def_PDict_RecoverFBNoBuyCnt = "RecoverFBNoBuyCnt_%s" # 资源找回副本未购买次数 <%s-找回项索引>
-Def_PDict_RecoverGainData = "RecoverGainData_%s" # 资源找回额外数据<%s-找回项索引>
-Def_PDict_RecoverGainDataEx = "RecoverGainDataEx_%s" # 资源找回额外数据<%s-找回项索引>
-Def_PDict_HaveRecover = "HaveRecover_%s" # 资源找回今日是否已找回<%s-找回项索引> 1:找回了普通 2:找回了vip 3:2个都有找回
-Def_PDict_RecoverGainLastTime = "RecoverGainLastTime" # 上一次资源找回时的时间
-
Def_PDict_NPCKillCount = "NPCKillCount_%s" # NPC已击杀次数, 参数(NPCID) CCBBAA, AA存储公共装备次数,BB存储公共ID次数,CC存储私有次数
Def_PDict_NPCAttackCount = "NPCAttackCount_%s" # NPC已攻击次数, 参数(NPCID)
@@ -3627,13 +3599,6 @@
# 灵器培养
Def_PDict_LingQiTrainLV = "LingQiTrainLV_%s_%s" # 培养等阶,参数为(place, 培养类型)
Def_PDict_LingQiTrainItemCount = "LingQiTrainItemCount_%s_%s" # 培养当前阶已吃培养丹个数,参数为(place, 培养类型)
-
-# 公共CD副本扫荡
-Def_PDict_PubCDFBS_Time = "PCDFBS_%s_Time" # 开始扫荡时间, 参数(公共组编号)
-Def_PDict_PubCDFBS_MapID = "PCDFBS_%s_MID" # 扫荡的地图, 参数(公共组编号)
-Def_PDict_PubCDFBS_LineID = "PCDFBS_%s_LID" # 扫荡的线路, 参数(公共组编号)
-Def_PDict_PubCDFBS_Cnt = "PCDFBS_%s_Cnt" # 扫荡次数, 参数(公共组编号)
-Def_PDict_PubCDFBS_DataEx = "PCDFBS_%s_DEx" # 扫荡次数, 参数(公共组编号)
# 宠物
Def_PDict_FightPetIndex = "FightPetIndex" # 出战的宠物索引
@@ -4499,7 +4464,7 @@
Def_Cost_5, # 副本鼓舞 5
Def_Cost_GoldInvest, # 理财投资
Def_Cost_Pray, # 祈祷
-Def_Cost_RecoverGain, # 资源找回
+Def_Cost_8, # 资源找回
Def_Cost_BuyVIPItem, # 购买VIP礼包
Def_Cost_GM, # GM 10
Def_Cost_BourseBuy, # 交易所购买
@@ -4586,7 +4551,6 @@
Def_Cost_Pray:"Pray",
Def_Cost_Treasure:"Treasure",
Def_Cost_OpenNoble:"OpenNoble",
-Def_Cost_RecoverGain:"RecoverGain",
Def_Cost_EnterFB:"EnterFB",
# 无消费对象子类的
@@ -4663,7 +4627,7 @@
Def_GiveMoney_Pickup, # 拾取
Def_GiveMoney_Bourse, # 交易所 10
Def_GiveMoney_GoldInvest, # 绑钻投资
-Def_GiveMoney_Recover, # 资源找回
+Def_GiveMoney_12, # 资源找回
Def_GiveMoney_RedPacket, # 红包
Def_GiveMoney_RefineGift, # 炼制奖励
Def_GiveMoney_Mail, # 邮件(补偿) 15
@@ -4701,7 +4665,6 @@
Def_GiveMoney_Pickup:"Pickup",
Def_GiveMoney_Bourse:"Bourse",
Def_GiveMoney_GoldInvest:"GoldInvest",
-Def_GiveMoney_Recover:"Recover",
Def_GiveMoney_RedPacket:"RedPacket",
Def_GiveMoney_RefineGift:"RefineGift",
Def_GiveMoney_Mail:"Mail",
@@ -4878,10 +4841,6 @@
}
##==================================================================================================
-
-# 前端自定义场景状态
-CustomMapStep_Over = 0 # 没有或已结束
-CustomMapStep_Fight = 1 # 战斗进行中
# 副本参与类型
FB_JoinType = (
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 07a9513..fd626dc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -1083,162 +1083,6 @@
#------------------------------------------------------
-# A2 10 清除副本CD#tagCMClearFBCD
-
-class tagCMClearFBCD(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA2
- self.SubCmd = 0x10
- 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 = 0xA2
- self.SubCmd = 0x10
- self.MapID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMClearFBCD)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A2 10 清除副本CD//tagCMClearFBCD:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID
- )
- return DumpString
-
-
-m_NAtagCMClearFBCD=tagCMClearFBCD()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClearFBCD.Cmd,m_NAtagCMClearFBCD.SubCmd))] = m_NAtagCMClearFBCD
-
-
-#------------------------------------------------------
-# A2 33 前端退出自定义场景 #tagCMClientExitCustomScene
-
-class tagCMClientExitCustomScene(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA2
- self.SubCmd = 0x33
- 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 = 0xA2
- self.SubCmd = 0x33
- return
-
- def GetLength(self):
- return sizeof(tagCMClientExitCustomScene)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A2 33 前端退出自定义场景 //tagCMClientExitCustomScene:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMClientExitCustomScene=tagCMClientExitCustomScene()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientExitCustomScene.Cmd,m_NAtagCMClientExitCustomScene.SubCmd))] = m_NAtagCMClientExitCustomScene
-
-
-#------------------------------------------------------
-# A2 31 前端开始自定义场景 #tagCMClientStartCustomScene
-
-class tagCMClientStartCustomScene(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int),
- ("FuncLineID", c_ushort),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA2
- self.SubCmd = 0x31
- 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 = 0xA2
- self.SubCmd = 0x31
- self.MapID = 0
- self.FuncLineID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMClientStartCustomScene)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A2 31 前端开始自定义场景 //tagCMClientStartCustomScene:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d,
- FuncLineID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID,
- self.FuncLineID
- )
- return DumpString
-
-
-m_NAtagCMClientStartCustomScene=tagCMClientStartCustomScene()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientStartCustomScene.Cmd,m_NAtagCMClientStartCustomScene.SubCmd))] = m_NAtagCMClientStartCustomScene
-
-
-#------------------------------------------------------
# A2 24 触碰NPC #tagCMTouchNPC
class tagCMTouchNPC(Structure):
@@ -1288,58 +1132,6 @@
m_NAtagCMTouchNPC=tagCMTouchNPC()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTouchNPC.Cmd,m_NAtagCMTouchNPC.SubCmd))] = m_NAtagCMTouchNPC
-
-
-#------------------------------------------------------
-# A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward
-
-class tagCMGetCustomSceneCollectAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("NPCID", c_int), #采集的NPCID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA2
- self.SubCmd = 0x34
- 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 = 0xA2
- self.SubCmd = 0x34
- self.NPCID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetCustomSceneCollectAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A2 34 自定义场景中获取采集奖励 //tagCMGetCustomSceneCollectAward:
- Cmd:%s,
- SubCmd:%s,
- NPCID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.NPCID
- )
- return DumpString
-
-
-m_NAtagCMGetCustomSceneCollectAward=tagCMGetCustomSceneCollectAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCustomSceneCollectAward.Cmd,m_NAtagCMGetCustomSceneCollectAward.SubCmd))] = m_NAtagCMGetCustomSceneCollectAward
#------------------------------------------------------
@@ -5775,54 +5567,6 @@
#------------------------------------------------------
-# A5 1B 购买挑战副本精力 #tagCMBuyFBEnergy
-
-class tagCMBuyFBEnergy(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x1B
- 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 = 0xA5
- self.SubCmd = 0x1B
- return
-
- def GetLength(self):
- return sizeof(tagCMBuyFBEnergy)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 1B 购买挑战副本精力 //tagCMBuyFBEnergy:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMBuyFBEnergy=tagCMBuyFBEnergy()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyFBEnergy.Cmd,m_NAtagCMBuyFBEnergy.SubCmd))] = m_NAtagCMBuyFBEnergy
-
-
-#------------------------------------------------------
# A5 0A 购买可击杀boss次数 #tagCMBuyKillBossCnt
class tagCMBuyKillBossCnt(Structure):
@@ -8123,90 +7867,6 @@
#------------------------------------------------------
-# A5 53 资源找回 #tagCMRecoverGain
-
-class tagCMRecoverGain(Structure):
- Head = tagHead()
- Type = 0 #(BYTE Type)// 找回方式 0 仙玉 1铜钱
- Cnt = 0 #(BYTE Cnt)
- IndexList = list() #(vector<BYTE> IndexList)// 找回索引列表
- RecoverCntList = list() #(vector<BYTE> RecoverCntList)// 索引对应找回次数列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x53
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Cnt):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.IndexList.append(value)
- for i in range(self.Cnt):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.RecoverCntList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x53
- self.Type = 0
- self.Cnt = 0
- self.IndexList = list()
- self.RecoverCntList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 1 * self.Cnt
- length += 1 * self.Cnt
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Type)
- data = CommFunc.WriteBYTE(data, self.Cnt)
- for i in range(self.Cnt):
- data = CommFunc.WriteBYTE(data, self.IndexList[i])
- for i in range(self.Cnt):
- data = CommFunc.WriteBYTE(data, self.RecoverCntList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Type:%d,
- Cnt:%d,
- IndexList:%s,
- RecoverCntList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Type,
- self.Cnt,
- "...",
- "..."
- )
- return DumpString
-
-
-m_NAtagCMRecoverGain=tagCMRecoverGain()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRecoverGain.Head.Cmd,m_NAtagCMRecoverGain.Head.SubCmd))] = m_NAtagCMRecoverGain
-
-
-#------------------------------------------------------
# A5 74 刷新悬赏任务 #tagCMRefreshArrestTask
class tagCMRefreshArrestTask(Structure):
@@ -8428,54 +8088,6 @@
m_NAtagCMRequestTreasure=tagCMRequestTreasure()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestTreasure.Cmd,m_NAtagCMRequestTreasure.SubCmd))] = m_NAtagCMRequestTreasure
-
-
-#------------------------------------------------------
-#A5 60 重置副本挑战次数 #tagCMResetFBJoinCnt
-
-class tagCMResetFBJoinCnt(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x60
- 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 = 0xA5
- self.SubCmd = 0x60
- return
-
- def GetLength(self):
- return sizeof(tagCMResetFBJoinCnt)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//A5 60 重置副本挑战次数 //tagCMResetFBJoinCnt:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMResetFBJoinCnt=tagCMResetFBJoinCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMResetFBJoinCnt.Cmd,m_NAtagCMResetFBJoinCnt.SubCmd))] = m_NAtagCMResetFBJoinCnt
#------------------------------------------------------
@@ -13543,118 +13155,6 @@
#------------------------------------------------------
-# B1 01 客户端副本发送结束 #tagCMClientEndFB
-
-class tagCMClientEndFB(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int),
- ("LineID", c_ushort),
- ("Data1", c_int), #副本数据
- ("Data2", c_int), #副本数据
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB1
- 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 = 0xB1
- self.SubCmd = 0x01
- self.MapID = 0
- self.LineID = 0
- self.Data1 = 0
- self.Data2 = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMClientEndFB)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B1 01 客户端副本发送结束 //tagCMClientEndFB:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d,
- LineID:%d,
- Data1:%d,
- Data2:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID,
- self.LineID,
- self.Data1,
- self.Data2
- )
- return DumpString
-
-
-m_NAtagCMClientEndFB=tagCMClientEndFB()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientEndFB.Cmd,m_NAtagCMClientEndFB.SubCmd))] = m_NAtagCMClientEndFB
-
-
-#------------------------------------------------------
-# B1 04 客户端发送开始副本 #tagCMClientStartFB
-
-class tagCMClientStartFB(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB1
- self.SubCmd = 0x04
- 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 = 0xB1
- self.SubCmd = 0x04
- return
-
- def GetLength(self):
- return sizeof(tagCMClientStartFB)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B1 04 客户端发送开始副本 //tagCMClientStartFB:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMClientStartFB=tagCMClientStartFB()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMClientStartFB.Cmd,m_NAtagCMClientStartFB.SubCmd))] = m_NAtagCMClientStartFB
-
-
-#------------------------------------------------------
# B1 08 快速一键过关副本 #tagCMFBQuickPass
class tagCMFBQuickPass(Structure):
@@ -13708,66 +13208,6 @@
m_NAtagCMFBQuickPass=tagCMFBQuickPass()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFBQuickPass.Cmd,m_NAtagCMFBQuickPass.SubCmd))] = m_NAtagCMFBQuickPass
-
-
-#------------------------------------------------------
-# B1 02 领取多倍副本奖励 #tagCMGetMultiFBPrize
-
-class tagCMGetMultiFBPrize(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int),
- ("LineID", c_ushort),
- ("Percent", c_ushort), # 额外奖励百分比, 如50代表额外50%奖励
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB1
- self.SubCmd = 0x02
- 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 = 0xB1
- self.SubCmd = 0x02
- self.MapID = 0
- self.LineID = 0
- self.Percent = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetMultiFBPrize)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B1 02 领取多倍副本奖励 //tagCMGetMultiFBPrize:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d,
- LineID:%d,
- Percent:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID,
- self.LineID,
- self.Percent
- )
- return DumpString
-
-
-m_NAtagCMGetMultiFBPrize=tagCMGetMultiFBPrize()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetMultiFBPrize.Cmd,m_NAtagCMGetMultiFBPrize.SubCmd))] = m_NAtagCMGetMultiFBPrize
#------------------------------------------------------
@@ -16616,58 +16056,6 @@
#------------------------------------------------------
-# B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile
-
-class tagCMRecyclePriWoodPile(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ObjID", c_int),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB4
- self.SubCmd = 0x0F
- 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 = 0xB4
- self.SubCmd = 0x0F
- self.ObjID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMRecyclePriWoodPile)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B4 0F 回收私有专属木桩怪 //tagCMRecyclePriWoodPile:
- Cmd:%s,
- SubCmd:%s,
- ObjID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ObjID
- )
- return DumpString
-
-
-m_NAtagCMRecyclePriWoodPile=tagCMRecyclePriWoodPile()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRecyclePriWoodPile.Cmd,m_NAtagCMRecyclePriWoodPile.SubCmd))] = m_NAtagCMRecyclePriWoodPile
-
-
-#------------------------------------------------------
# B4 0E 玩家掉血 #tagCMRoleLostHP
class tagCMRoleLostHP(Structure):
@@ -16721,70 +16109,6 @@
m_NAtagCMRoleLostHP=tagCMRoleLostHP()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRoleLostHP.Cmd,m_NAtagCMRoleLostHP.SubCmd))] = m_NAtagCMRoleLostHP
-
-
-#------------------------------------------------------
-# B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
-
-class tagCMSummonPriWoodPile(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("NPCID", c_int),
- ("Count", c_ubyte), #默认1个,最多5个
- ("HP", c_int), #默认0取最大值,其中一个血量数值大于0则用指定血量
- ("HPEx", c_int), #默认0取最大值,其中一个血量数值大于0则用指定血量
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB4
- self.SubCmd = 0x0C
- 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 = 0xB4
- self.SubCmd = 0x0C
- self.NPCID = 0
- self.Count = 0
- self.HP = 0
- self.HPEx = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMSummonPriWoodPile)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B4 0C 召唤私有专属木桩怪 //tagCMSummonPriWoodPile:
- Cmd:%s,
- SubCmd:%s,
- NPCID:%d,
- Count:%d,
- HP:%d,
- HPEx:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.NPCID,
- self.Count,
- self.HP,
- self.HPEx
- )
- return DumpString
-
-
-m_NAtagCMSummonPriWoodPile=tagCMSummonPriWoodPile()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSummonPriWoodPile.Cmd,m_NAtagCMSummonPriWoodPile.SubCmd))] = m_NAtagCMSummonPriWoodPile
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 1bf9608..45da1bb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -8863,130 +8863,6 @@
#------------------------------------------------------
-# A3 49 资源找回次数 #tagMCRecoverNum
-
-class tagMCRecoverNumInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Index", c_ubyte), # 找回项索引
- ("RecoverCnt", c_ubyte), # 可找回次数
- ("ExtraCnt", c_ubyte), # VIP额外次数
- ("ExtraData", c_ubyte), # 额外参数1
- ("ExtraData2", c_ubyte), # 额外参数2
- ("HaveRecover", c_ubyte), # 已找回 1-全部已找回 2-非VIP已找回
- ]
-
- 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.Index = 0
- self.RecoverCnt = 0
- self.ExtraCnt = 0
- self.ExtraData = 0
- self.ExtraData2 = 0
- self.HaveRecover = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCRecoverNumInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 49 资源找回次数 //tagMCRecoverNum:
- Index:%d,
- RecoverCnt:%d,
- ExtraCnt:%d,
- ExtraData:%d,
- ExtraData2:%d,
- HaveRecover:%d
- '''\
- %(
- self.Index,
- self.RecoverCnt,
- self.ExtraCnt,
- self.ExtraData,
- self.ExtraData2,
- self.HaveRecover
- )
- return DumpString
-
-
-class tagMCRecoverNum(Structure):
- Head = tagHead()
- Num = 0 #(BYTE Num)// 找回信息数
- NumInfo = list() #(vector<tagMCRecoverNumInfo> NumInfo)// 找回信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x49
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Num):
- temNumInfo = tagMCRecoverNumInfo()
- _pos = temNumInfo.ReadData(_lpData, _pos)
- self.NumInfo.append(temNumInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x49
- self.Num = 0
- self.NumInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Num):
- length += self.NumInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Num)
- for i in range(self.Num):
- data = CommFunc.WriteString(data, self.NumInfo[i].GetLength(), self.NumInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Num:%d,
- NumInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Num,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCRecoverNum=tagMCRecoverNum()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRecoverNum.Head.Cmd,m_NAtagMCRecoverNum.Head.SubCmd))] = m_NAtagMCRecoverNum
-
-
-#------------------------------------------------------
# A3 1F 玩家符印信息 #tagMCRuneInfo
class tagMCRuneInfo(Structure):
@@ -16135,114 +16011,6 @@
m_NAtagMCEmojiPackInfo=tagMCEmojiPackInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEmojiPackInfo.Head.Cmd,m_NAtagMCEmojiPackInfo.Head.SubCmd))] = m_NAtagMCEmojiPackInfo
-
-
-#------------------------------------------------------
-# A7 03 通知进入副本时间 #tagMCFBEnterTickList
-
-class tagMCFBEnterTick(Structure):
- _pack_ = 1
- _fields_ = [
- ("MapID", c_int), # 副本地图id
- ("LastEnterTick", c_int), # 上次进入副本时间
- ]
-
- 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.MapID = 0
- self.LastEnterTick = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFBEnterTick)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A7 03 通知进入副本时间 //tagMCFBEnterTickList:
- MapID:%d,
- LastEnterTick:%d
- '''\
- %(
- self.MapID,
- self.LastEnterTick
- )
- return DumpString
-
-
-class tagMCFBEnterTickList(Structure):
- Head = tagHead()
- Cnt = 0 #(BYTE Cnt)// 信息个数
- EnterTickList = list() #(vector<tagMCFBEnterTick> EnterTickList)// 信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA7
- self.Head.SubCmd = 0x03
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Cnt):
- temEnterTickList = tagMCFBEnterTick()
- _pos = temEnterTickList.ReadData(_lpData, _pos)
- self.EnterTickList.append(temEnterTickList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA7
- self.Head.SubCmd = 0x03
- self.Cnt = 0
- self.EnterTickList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Cnt):
- length += self.EnterTickList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Cnt)
- for i in range(self.Cnt):
- data = CommFunc.WriteString(data, self.EnterTickList[i].GetLength(), self.EnterTickList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Cnt:%d,
- EnterTickList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Cnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCFBEnterTickList=tagMCFBEnterTickList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEnterTickList.Head.Cmd,m_NAtagMCFBEnterTickList.Head.SubCmd))] = m_NAtagMCFBEnterTickList
#------------------------------------------------------
@@ -39062,118 +38830,6 @@
#------------------------------------------------------
-# B2 09 副本次数恢复剩余时间 #tagMCFBCntRegainRemainTime
-
-class tagMCFBCntRegain(Structure):
- _pack_ = 1
- _fields_ = [
- ("DataMapID", c_int), # 地图ID
- ("RemainTime", c_int), # 剩余时间秒
- ("RegainCnt", 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.DataMapID = 0
- self.RemainTime = 0
- self.RegainCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFBCntRegain)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B2 09 副本次数恢复剩余时间 //tagMCFBCntRegainRemainTime:
- DataMapID:%d,
- RemainTime:%d,
- RegainCnt:%d
- '''\
- %(
- self.DataMapID,
- self.RemainTime,
- self.RegainCnt
- )
- return DumpString
-
-
-class tagMCFBCntRegainRemainTime(Structure):
- Head = tagHead()
- Cnt = 0 #(BYTE Cnt)// 信息数
- InfoList = list() #(vector<tagMCFBCntRegain> InfoList)// 信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB2
- self.Head.SubCmd = 0x09
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Cnt):
- temInfoList = tagMCFBCntRegain()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB2
- self.Head.SubCmd = 0x09
- self.Cnt = 0
- self.InfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Cnt):
- length += self.InfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Cnt)
- for i in range(self.Cnt):
- data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Cnt:%d,
- InfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Cnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCFBCntRegainRemainTime=tagMCFBCntRegainRemainTime()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBCntRegainRemainTime.Head.Cmd,m_NAtagMCFBCntRegainRemainTime.Head.SubCmd))] = m_NAtagMCFBCntRegainRemainTime
-
-
-#------------------------------------------------------
# B2 01 通知封魔坛双倍击杀状态 #tagMCFMTDoubleState
class tagMCFMTDoubleState(Structure):
@@ -39227,196 +38883,6 @@
m_NAtagMCFMTDoubleState=tagMCFMTDoubleState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFMTDoubleState.Cmd,m_NAtagMCFMTDoubleState.SubCmd))] = m_NAtagMCFMTDoubleState
-
-
-#------------------------------------------------------
-# B2 03 公共副本扫荡信息 #tagMCPubFBSweepData
-
-class tagMCPubFBSweep(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PubNum", c_ubyte), # 公共组编号
- ("FBMapID", c_int), # 当前扫荡的副本地图ID
- ("LineID", c_ushort), # lineID
- ("SweepTime", c_int), # 开始扫荡的时间
- ("SweepCnt", c_ubyte), # 扫荡次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB2
- self.SubCmd = 0x03
- 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 = 0xB2
- self.SubCmd = 0x03
- self.PubNum = 0
- self.FBMapID = 0
- self.LineID = 0
- self.SweepTime = 0
- self.SweepCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCPubFBSweep)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B2 03 公共副本扫荡信息 //tagMCPubFBSweepData:
- Cmd:%s,
- SubCmd:%s,
- PubNum:%d,
- FBMapID:%d,
- LineID:%d,
- SweepTime:%d,
- SweepCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PubNum,
- self.FBMapID,
- self.LineID,
- self.SweepTime,
- self.SweepCnt
- )
- return DumpString
-
-
-class tagMCPubFBSweepData(Structure):
- Head = tagHead()
- Cnt = 0 #(BYTE Cnt)// 信息数
- SweepDatList = list() #(vector<tagMCPubFBSweep> SweepDatList)// 信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB2
- self.Head.SubCmd = 0x03
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Cnt):
- temSweepDatList = tagMCPubFBSweep()
- _pos = temSweepDatList.ReadData(_lpData, _pos)
- self.SweepDatList.append(temSweepDatList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB2
- self.Head.SubCmd = 0x03
- self.Cnt = 0
- self.SweepDatList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Cnt):
- length += self.SweepDatList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Cnt)
- for i in range(self.Cnt):
- data = CommFunc.WriteString(data, self.SweepDatList[i].GetLength(), self.SweepDatList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Cnt:%d,
- SweepDatList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Cnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCPubFBSweepData=tagMCPubFBSweepData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPubFBSweepData.Head.Cmd,m_NAtagMCPubFBSweepData.Head.SubCmd))] = m_NAtagMCPubFBSweepData
-
-
-#------------------------------------------------------
-# B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult
-
-class tagMCStartCustomSceneResult(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int),
- ("FuncLineID", c_ushort),
- ("Result", c_ubyte), #是否允许
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB2
- self.SubCmd = 0x16
- 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 = 0xB2
- self.SubCmd = 0x16
- self.MapID = 0
- self.FuncLineID = 0
- self.Result = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCStartCustomSceneResult)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B2 16 开始自定义场景结果 //tagMCStartCustomSceneResult:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d,
- FuncLineID:%d,
- Result:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID,
- self.FuncLineID,
- self.Result
- )
- return DumpString
-
-
-m_NAtagMCStartCustomSceneResult=tagMCStartCustomSceneResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartCustomSceneResult.Cmd,m_NAtagMCStartCustomSceneResult.SubCmd))] = m_NAtagMCStartCustomSceneResult
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
index ec52203..820a969 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
@@ -1292,19 +1292,6 @@
SendEventPack("PlayerSubmit_%s" % eventName, dataDict, curPlayer)
return
-## 资源找回记录
-# @param curPlayer
-# @return: None
-def DR_PlayerRecover(curPlayer, recoverWay, recoverCntDict, totalExp, totalMoney, totalSP, totalItemDict):
-
- dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),
- 'AccID':curPlayer.GetAccID(), 'recoverWay':recoverWay, 'recoverCntDict':recoverCntDict,
- 'totalExp':totalExp, 'totalMoney':totalMoney, 'totalSP':totalSP, 'totalItemDict':totalItemDict}
-
- #发送封包
- SendEventPack("PlayerRecover", dataDict, curPlayer)
- return
-
def DR_GlobalDropCD(curPlayer, npcID, itemID):
# 全局掉落CD掉落记录
dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFBCD.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFBCD.py
deleted file mode 100644
index a336b9d..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFBCD.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.ClearFBCD
-#
-# @todo:清除副本进入CD时间
-# @author hxp
-# @date 2014-07-21
-# @version 1.0
-#
-# 详细描述: 清除副本进入CD时间
-#
-#---------------------------------------------------------------------
-"""Version = 2014-07-21 11:30"""
-
-import FBCommon
-import IpyGameDataPY
-import ChConfig
-import GameWorld
-#---------------------------------------------------------------------
-#逻辑实现
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param list 参数列表 [npcID]
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, list):
- #清除相关背包物品
- enterCDDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 1, {})
-
- for mapID in enterCDDict.keys():
- FBCommon.SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID, 0)
- GameWorld.DebugAnswer(curPlayer, "副本id=%s, 清除CD成功!" % mapID)
-
- FBCommon.SyncFBEnterTick(curPlayer)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py
index 439d86d..61f4bf7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py
@@ -39,10 +39,7 @@
if FBCommon.GetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID):
FBCommon.SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID, 0)
- tick = GameWorld.GetGameWorld().GetTick()
- if mapID in FBCommon.GetClientCustomScene():
- PlayerFB.DoEnterCustomScene(curPlayer, mapID, lineID, tick)
- elif mapID in ChConfig.Def_CrossMapIDList:
+ if mapID in ChConfig.Def_CrossMapIDList:
PlayerControl.PlayerEnterCrossServer(curPlayer, mapID, lineID)
else:
PlayerControl.PlayerEnterFB(curPlayer, mapID, lineID, posX, posY)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py
index 43f8015..ce9a5f7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py
@@ -33,10 +33,6 @@
CrossRealmPlayer.PlayerExitCrossServer(curPlayer)
return
- if PlayerControl.GetCustomMapID(curPlayer):
- PlayerFB.DoExitCustomScene(curPlayer)
- return
-
isAll = paramList[0] if paramList else 0
if isAll:
copyMapPlayerManager = GameWorld.GetMapCopyPlayerManager()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
index 5d3fe75..01e4c7f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -274,12 +274,6 @@
# @return None
# @remarks 函数详细说明.
def DoFB_Player_KillNPC(curPlayer , curNPC , tick):
- mapID = PlayerControl.GetCustomMapID(curPlayer)
- lineID = PlayerControl.GetCustomLineID(curPlayer)
- if mapID:
- DoCustomScene_Player_KillNPC(curPlayer, curNPC, mapID, lineID)
- return
-
do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoFB_Player_KillNPC"))
@@ -367,9 +361,7 @@
# @return None
# @remarks 函数详细说明.
def DoFBOnKill_Player(curPlayer, defender, tick):
- mapID = PlayerControl.GetCustomMapID(curPlayer)
- if not mapID:
- mapID = GameWorld.GetMap().GetMapID()
+ mapID = GameWorld.GetMap().GetMapID()
do_FBLogic_ID = __GetFBLogic_MapID(mapID)
callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoFBOnKill_Player"))
@@ -945,18 +937,6 @@
#GameWorld.Log("副本逻辑不可使用 GameLogic_%d"%(mapID))
callFunc(tick)
- return
-
-def OnCustomSceneProcess(curPlayer, tick):
- customMapID = PlayerControl.GetCustomMapID(curPlayer)
- if not customMapID:
- return
- customLineID = PlayerControl.GetCustomLineID(curPlayer)
- do_FBLogic_ID = __GetFBLogic_MapID(customMapID)
- callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCustomSceneProcess"))
- if callFunc:
- callFunc(curPlayer, customMapID, customLineID, tick)
-
return
## 开始采集
@@ -1549,22 +1529,6 @@
return False
return callFunc(curPlayer, addExp, expViewType)
-
-## 获得多倍副本奖励
-# @param curPlayer 当前玩家
-# @param mapID
-# @param lineID
-# @param prizeExLV 额外奖励百分比等级
-# @return
-def OnGetMultiFBPrize(curPlayer, mapID, lineID, prizeExLV):
- do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-
- callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnGetMultiFBPrize"))
-
- if callFunc == None:
- return
-
- return callFunc(curPlayer, mapID, lineID, prizeExLV)
## 副本扫荡询问
def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, cnt, isFinish, dataEx):
@@ -2253,72 +2217,6 @@
if callFunc:
callFunc(curPlayer, curNPC, tick)
- return
-
-## 客户端发送结束副本
-def OnClientEndFB(curPlayer, mapID, lineID, dataList):
- do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-
- callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnClientEndFB"))
-
- if callFunc == None:
- return False
-
- return callFunc(curPlayer, mapID, lineID, dataList)
-
-## 客户端发送开始副本
-def OnClientStartFB(curPlayer, tick):
- do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-
- callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnClientStartFB"))
-
- if callFunc == None:
- return False
-
- return callFunc(curPlayer, tick)
-
-## 客户端进入自定义场景
-def OnEnterCustomScene(curPlayer, mapID, lineID):
- do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-
- callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnEnterCustomScene"))
-
- if callFunc == None:
- return
-
- return callFunc(curPlayer, mapID, lineID)
-
-## 判断可否召唤木桩怪
-def OnCanSummonPriWoodPile(curPlayer, mapID, lineID, npcID, count):
- do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-
- callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCanSummonPriWoodPile"))
-
- if callFunc == None:
- return True
-
- return callFunc(curPlayer, mapID, lineID, npcID, count)
-
-## 自定义场景副本击杀NPC
-def DoCustomScene_Player_KillNPC(curPlayer, curNPC, mapID, lineID):
- do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-
- callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoCustomScene_Player_KillNPC"))
-
- if callFunc:
- callFunc(curPlayer, curNPC, mapID, lineID)
-
- return
-
-## 自定义场景采集OK,需自带是否允许采集的判断
-def OnCustomSceneCollectOK(curPlayer, mapID, lineID, npcID):
- do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-
- callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCustomSceneCollectOK"))
-
- if callFunc:
- return callFunc(curPlayer, mapID, lineID, npcID)
-
return
## 进入跨服副本注册数据前逻辑
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
index 1cf4a1e..1f898d3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -205,11 +205,6 @@
PlayerControl.NotifyCode(curPlayer, notifyMark, [mapID])
return ShareDefine.EntFBAskRet_NoEnterCnt
- #进入CD判断
- if CheckIsEnterCD(curPlayer, mapID):
- if isNotify:
- PlayerControl.NotifyCode(curPlayer, "SingleEnterCD", [mapID])
- return ShareDefine.EntFBAskRet_EnterCD
# 功能线路通用检查
if fbLineIpyData:
#等级判断
@@ -482,15 +477,6 @@
GameWorld.GetGameFB().SetPlayerGameFBDict(curPlayer.GetID(), ChConfig.FBPlayerDict_IsDelTicket, delSign)
return
-## 自定义场景阶段
-def GetCustomMapStep(curPlayer, mapID, lineID):
- return curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_CustomMapStep % (mapID, lineID))
-def SetCustomMapStep(curPlayer, mapID, lineID, step):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_CustomMapStep % (mapID, lineID), step)
- if step == ChConfig.CustomMapStep_Over:
- PlayerControl.SetCustomMap(curPlayer, 0, 0)
- return
-
def GetCurSingleFBPlayer():
''' 获取当前单人副本玩家 '''
curPlayer = None
@@ -564,44 +550,6 @@
FBLogic.DoFBHelp(curPlayer, tick)
if updGrade != lowest:
curPlayer.Sync_TimeTick(timeType, 0, diffSecond * 1000, True)
- return updGrade
-
-def UpdateCustomFBGrade(curPlayer, tick, gradeTimeList, timeType=IPY_GameWorld.tttFlagTake):
- '''更新当前副本星级、评级
- @param gradeTimeList: 评级分段时间列表,单位秒 [最高评级可用时间, 下级可用时间, ..., 最低级可用时间]
- @param curPlayer: 触发的玩家,一般是DoEnter时调用,会同步更新一次副本评级并将信息通知该玩家
- @note: 星级:1-1星;2-2星 ... [60, 20, 10]
- 评级:1-D;2-C;3-B;4-A;5-S; [60, 30, 30, 20, 10]
- '''
- lowest = 1
- curGrade = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneGrade)
- #最后一个评级了,不再处理
- if curGrade == lowest:
- return curGrade
-
- fbStepTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneStepTick)
- useSecond = int((tick - fbStepTick) / 1000.0) # 战斗阶段已耗总秒数
- diffSecond = 0
- updGrade = len(gradeTimeList)
- gSecondTotal = 0
- for gSecond in gradeTimeList:
- gSecondTotal += gSecond
- diffSecond = gSecondTotal - useSecond
- # 还在当前评级段
- if diffSecond > 0:
- break
- updGrade -= 1 # 用时超过当前评级段,降级
- updGrade = max(lowest, updGrade) # 保底最低级
- if curGrade == updGrade:
- return curGrade
- curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomSceneGrade, updGrade)
-
- GameWorld.DebugLog("UpdateCustomFBGrade useSecond=%s,gradeTimeList=%s,curGrade=%s,updGrade=%s,diffSecond=%s"
- % (useSecond, gradeTimeList, curGrade, updGrade, diffSecond))
-
- Notify_FBHelp(curPlayer, {Help_grade:updGrade})
- if updGrade != lowest:
- curPlayer.Sync_TimeTick(timeType, 0, diffSecond * 1000, True)
return updGrade
def NotifyFBOver(curPlayer, dataMapID, lineID, isPass, overDict={}):
@@ -1579,54 +1527,15 @@
if not fbIpyData:
return 0
maxTimes = fbIpyData.GetDayTimes()
- MWPrivilegeID = fbIpyData.GetExtraTimesMWPriID()
mwAddCnt = 0#wmpIpyData.GetEffectValue() if wmpIpyData else 0
- extraTimesVIPPriID = fbIpyData.GetExtraTimesVIPPriID()
extraCnt = 0
buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_BuyFbCntDay % mapID)
- recoverFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RecoverFbCnt % mapID)
itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID)
- regainFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RegainFbCnt % mapID)
+ regainFbCnt = 0
investFBCnt = PlayerGoldInvest.GetAddFBCnt(curPlayer, mapID)
- maxCnt = maxTimes + regainFbCnt + extraCnt + buyCnt + recoverFbCnt + mwAddCnt + itemAddCnt + investFBCnt
+ maxCnt = maxTimes + regainFbCnt + extraCnt + buyCnt + mwAddCnt + itemAddCnt + investFBCnt
return maxCnt
-
-def GetFBDetailCntInfo(curPlayer, mapID):
- #返回FB剩余正常次数、时间恢复次数、vip额外次数、已买次数、道具增加次数、未买次数
- fbIpyData = GetFBIpyData(mapID)
- enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mapID)
- maxTimes = fbIpyData.GetDayTimes()
- maxRegainFbCnt = 0
- recoverIntervalDict = IpyGameDataPY.GetFuncEvalCfg('FBCntRegainInterval', 1)
- if str(mapID) in recoverIntervalDict:
- maxRegainFbCnt = recoverIntervalDict[str(mapID)][0]
-
- MWPrivilegeID = fbIpyData.GetExtraTimesMWPriID()
-
- mwAddCnt = 0#wmpIpyData.GetEffectValue() if wmpIpyData else 0
- maxTimes += mwAddCnt #法宝增加的次数加到基础次数里
- extraTimesVIPPriID = fbIpyData.GetExtraTimesVIPPriID()
- extraCnt = 0
- buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_BuyFbCntDay % mapID)
- recoverFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RecoverFbCnt % mapID)
- itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID)
- #先用找回来的次数,再用Vip额外次数,再用每日刷新次数、时间恢复次数、和Vip买回来的次数,最后用卷轴加的次数
- cntList = [recoverFbCnt, extraCnt, maxTimes, maxRegainFbCnt, buyCnt, itemAddCnt]
- rCntList = copy.deepcopy(cntList)
- sumCnt = 0
- for i, cnt in enumerate(cntList):
- sumCnt += cnt
- rCntList[i] = max(0, sumCnt - enterCnt)
- if enterCnt <= sumCnt:
- break
- rRecoverFbCnt, rExtraCnt, rCommonCnt, rRegainFbCnt, rBuyCnt, rItemAddCnt = rCntList
-
- #未买次数
- buyTimesVIPPriID = fbIpyData.GetBuyTimesVIPPriID()
- canBuyCnt = 0
- noBuyCnt = max(0, canBuyCnt - buyCnt)
- return [[rCommonCnt, rRegainFbCnt, rExtraCnt, rBuyCnt, rItemAddCnt, noBuyCnt], [maxTimes, maxRegainFbCnt, extraCnt, canBuyCnt, 10000, canBuyCnt]]
## 玩家进入副本次数
# @param curPlayer 玩家实例
@@ -1646,7 +1555,6 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID, itemAddCnt + addCnt)
Sync_FBPlayerFBInfoData(curPlayer, mapID)
PlayerControl.NotifyCode(curPlayer, 'AddActivityCount_1', [itemID, mapID, addCnt])
- OnFBCountChangeEffectRecoverCount(curPlayer, mapID)
return
## 增加玩家进入副本次数
@@ -1683,139 +1591,7 @@
GameWorld.DebugLog(" AddEnterFBCount fbID=%s, addCount=%s, lineBit=%s, enterCnt=%s,updValue=%s,enterCntTotal=%s"
% (fbID, addCount, lineBit, enterCnt, updValue, enterCntTotal), curPlayer.GetPlayerID())
Sync_FBPlayerFBInfoData(curPlayer, fbID)
- OnFBCountChangeEffectRecoverCount(curPlayer, fbID)
return True
-
-def OnFBCountChangeEffectRecoverCount(curPlayer, mapID):
- ## 副本相关次数变更,包含增加、扣除等影响副本按时间恢复次数相关逻辑处理
-
- recoverIntervalDict = IpyGameDataPY.GetFuncEvalCfg('FBCntRegainInterval', 1)
- if str(mapID) not in recoverIntervalDict:
- return
- maxCanRecoverCnt, recoverInterval = recoverIntervalDict[str(mapID)]
- curRegainFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RegainFbCnt % mapID) # 当前已恢复次数
- if curRegainFbCnt >= maxCanRecoverCnt:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID, 0)
- GameWorld.DebugLog("副本时间恢复次数已达当日上限!")
- else:
- curTime = int(time.time())
- fbIpyData = GetFBIpyData(mapID)
- maxFreeTimes = fbIpyData.GetDayTimes() # 常规封顶次数
- enterCnt = GetEnterFBCount(curPlayer, mapID) # 已经进入次数
- maxCnt = GetEnterFBMaxCnt(curPlayer, mapID) # 当前可用最大次数
- remainCanEnterCnt = maxCnt - enterCnt # 剩余可进入次数
- regainStartTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID)
- passTime = curTime - regainStartTime
- # 到达常规次数上限,暂时恢复时间
- if remainCanEnterCnt >= maxFreeTimes:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID, 0)
- GameWorld.DebugLog("副本时间恢复次数已达常规次数!")
- elif passTime < recoverInterval:
- pass
- #GameWorld.DebugLog("副本时间恢复次数还未到达恢复CD!")
- else:
- if not regainStartTime:
- updRegainTotalTime = recoverInterval
- else:
- updRegainTotalTime = recoverInterval - passTime % recoverInterval
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID, curTime)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID, updRegainTotalTime)
- GameWorld.DebugLog("副本还可按时间恢复次数!curTime=%s,regainStartTime=%s,passTime=%s,updRegainTotalTime=%s"
- % (curTime, regainStartTime, passTime, updRegainTotalTime))
- NotifyFBCntRegainInfo(curPlayer, [mapID])
- return
-
-def RegainFBCntProcess(curPlayer):
- ## 按时间恢复副本次数
-
- curTime = int(time.time())
- recoverIntervalDict = IpyGameDataPY.GetFuncEvalCfg('FBCntRegainInterval', 1)
- for mapIDStr, recoverInfo in recoverIntervalDict.items():
- mapID = int(mapIDStr)
- maxCanRecoverCnt, recoverInterval = recoverInfo
- curRegainFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RegainFbCnt % mapID) # 当前已恢复次数
- if maxCanRecoverCnt and curRegainFbCnt >= maxCanRecoverCnt:
- #GameWorld.DebugLog("已到达副本恢复次数上限!mapID=%s,curRegainFbCnt(%s) >= maxCanRecoverCnt(%s)" % (mapID, curRegainFbCnt, maxCanRecoverCnt))
- continue
- fbIpyData = GetFBIpyData(mapID)
- maxFreeTimes = fbIpyData.GetDayTimes() # 常规封顶次数
- enterCnt = GetEnterFBCount(curPlayer, mapID) # 已经进入次数
- maxCnt = GetEnterFBMaxCnt(curPlayer, mapID) # 当前可用最大次数
- remainCanEnterCnt = maxCnt - enterCnt # 剩余可进入次数
- if remainCanEnterCnt >= maxFreeTimes:
- #GameWorld.DebugLog("可进入次数已经到达常规封顶次数!mapID=%s,remainCanEnterCnt=%s" % (mapID, remainCanEnterCnt))
- continue
- regainStartTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID)
- if not regainStartTime:
- #GameWorld.DebugLog("还未设置副本恢复次数倒计时!mapID=%s" % mapID)
- continue
- needTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID)
- passTime = curTime - regainStartTime
- if passTime < needTime:
- continue
- remainTime = passTime - needTime # 扣除恢复单次后剩余的时间,离线上线后可能一次性恢复多次
- recoverCnt = 1 + remainTime / recoverInterval # 倒计时时间可恢复总次数
- realRecoverCnt = min(maxFreeTimes - remainCanEnterCnt, recoverCnt) # 实际最大可恢复总次数
- if maxCanRecoverCnt:
- realRecoverCnt = min(realRecoverCnt, maxCanRecoverCnt - curRegainFbCnt)
- if realRecoverCnt <= 0:
- continue
-
- # 更新时间倒计时已恢复次数
- updRegainFbCnt = curRegainFbCnt + realRecoverCnt
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RegainFbCnt % mapID, updRegainFbCnt)
-
- OnFBCountChangeEffectRecoverCount(curPlayer, mapID)
-
- return
-
-def NotifyFBCntRegainInfo(curPlayer, syncMapIDList=[]):
- ##通知副本次数恢复剩余时间
- recoverIntervalDict = IpyGameDataPY.GetFuncEvalCfg('FBCntRegainInterval', 1) # {mapID:[次数, 每次间隔], ...}
- if not recoverIntervalDict:
- return
- if not syncMapIDList:
- syncMapIDList = [int(mapIDStr) for mapIDStr in recoverIntervalDict.keys()]
-
- infoList = []
- curTime = int(time.time())
- for mapID in syncMapIDList:
- if str(mapID) not in recoverIntervalDict:
- continue
- mapInfo = ChPyNetSendPack.tagMCFBCntRegain()
- mapInfo.Clear()
- mapInfo.DataMapID = mapID
- lastRegainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID)
- needTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID)
- passTime = curTime - lastRegainTime
- mapInfo.RemainTime = max(0, needTime - passTime)
- mapInfo.RegainCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RegainFbCnt % mapID)
- infoList.append(mapInfo)
- if not infoList:
- return
- regainData = ChPyNetSendPack.tagMCFBCntRegainRemainTime()
- regainData.Clear()
- regainData.InfoList = infoList
- regainData.Cnt = len(regainData.InfoList)
- NetPackCommon.SendFakePack(curPlayer, regainData)
- return
-
-def SetIsHelpFight(curPlayer):
- ##设置是否助战 注意!需要在增加副本次数之前设置
- mapID = GameWorld.GetMap().GetMapID()
- mapID = GetRecordMapID(mapID)
- enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mapID)
- maxCnt = GetEnterFBMaxCnt(curPlayer, mapID)
- if enterCnt >= maxCnt:
- GameWorld.GetGameFB().SetPlayerGameFBDict(curPlayer.GetID(), ChConfig.FBPlayerDict_IsHelpFight, 1)
- return True
- return False
-
-def GetIsHelpFight(curPlayer):
- ##获取是否助战
- return GameWorld.GetGameFB().GetPlayerGameFBDictByKey(curPlayer.GetID(), ChConfig.FBPlayerDict_IsHelpFight)
def FBOnWeek(curPlayer, onWeekType):
@@ -1880,32 +1656,19 @@
buyCnt = curPlayer.NomalDictGetProperty(buyCntKey)
PlayerControl.NomalDictSetProperty(curPlayer, buyCntKey, 0)
- # 找回次数
- recoverCntKey = ChConfig.Def_Player_Dict_RecoverFbCnt % mapID
- recoverCnt = curPlayer.NomalDictGetProperty(recoverCntKey)
- PlayerControl.NomalDictSetProperty(curPlayer, recoverCntKey, 0)
-
# 物品增加次数
itemAddCntKey = ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID
itemAddCnt = curPlayer.NomalDictGetProperty(itemAddCntKey)
PlayerControl.NomalDictSetProperty(curPlayer, itemAddCntKey, 0)
- # 时间恢复次数
- regainFBCntKey = ChConfig.Def_Player_Dict_RegainFbCnt % mapID
- regainFBCnt = curPlayer.NomalDictGetProperty(regainFBCntKey)
- PlayerControl.NomalDictSetProperty(curPlayer, regainFBCntKey, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainStartTime % mapID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FbCntRegainTotalTime % mapID, 0)
-
- GameWorld.DebugLog(" 重置:mapID=%s,dayTimes=%s,buyCnt=%s,recoverCnt=%s,itemAddCnt=%s,regainFBCnt=%s,maxCnt=%s,enterCnt=%s"
- % (mapID, dayTimes, buyCnt, recoverCnt, itemAddCnt, regainFBCnt, maxCnt, enterCnt))
+ GameWorld.DebugLog(" 重置:mapID=%s,dayTimes=%s,buyCnt=%s,itemAddCnt=%s,maxCnt=%s,enterCnt=%s"
+ % (mapID, dayTimes, buyCnt, itemAddCnt, maxCnt, enterCnt))
mapIDInfo.append(mapID)
if mapIDInfo:
Sync_FBPlayerFBInfoData(curPlayer, mapIDInfo)
Sync_FBPlayerFBBuyCount(curPlayer, mapIDInfo)
- NotifyFBCntRegainInfo(curPlayer, mapIDInfo)
return
@@ -1915,27 +1678,7 @@
def FBOnLogin(curPlayer):
FBLogic.OnFBPlayerOnLogin(curPlayer)
Sync_FBPlayerFBInfoData(curPlayer)
- SyncFBEnterTick(curPlayer)
Sync_FBPlayerFBBuyCount(curPlayer)
- #PlayerFB.Sync_PubFBSweepData(curPlayer)
- NotifyFBCntRegainInfo(curPlayer)
- #判断副本里离线超过一定时间则退出副本
- CheckFBPlayerOffine(curPlayer)
- return
-
-def CheckFBPlayerOffine(curPlayer):
- mapid = curPlayer.GetMapID()
-
- ipyData = GetFBIpyData(mapid)
- if not ipyData:
- return
- OfflineTime = ipyData.GetOfflineTime()
- if not OfflineTime:
- return
- leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer) #离线时间秒
- if leaveServerSecond >= OfflineTime:
- GameWorld.DebugLog('判断副本里离线超过一定时间则退出副本 leaveServerSecond=%s'%leaveServerSecond)
- PlayerControl.PlayerLeaveFB(curPlayer)
return
#//A5 75 购买副本进入次数#tagCMBuyEnterCount
@@ -1996,183 +1739,12 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_BuyFbCntDay % mapID, hasBuyCnt + 1)
Sync_FBPlayerFBBuyCount(curPlayer, [mapID])
PlayerControl.NotifyCode(curPlayer, 'FBEnterTimeBuy', [mapID])
- OnFBCountChangeEffectRecoverCount(curPlayer, mapID)
if mapID == ChConfig.Def_FBMapID_Love:
coupleID = PlayerControl.GetCoupleID(curPlayer)
if coupleID:
addItemList = IpyGameDataPY.GetFuncEvalCfg("LoveFB", 3)
paramList = [curPlayer.GetPlayerName()]
PlayerControl.SendMailByKey("BuyLoveFBCntCoupleMail", [coupleID], addItemList, paramList)
- return
-
-#---------------------------------------------------------------------
-## 副本开启提示(几分钟)
-# @param openTimeList 开启时间列表[(开启时钟,开启分钟), ]
-# @param notifyMsg 提示mark
-# @param notifyTimeList 提示时间列表
-# @param mergeMinOSD 该提示针对跨服子服有效的最小开服天, >=0时有限制
-# @param mergeMaxOSD 该提示针对跨服子服有效的最大开服天, >=0时有限制
-# @param mergeMapInfo 该提示所属的跨服活动地图信息, 主要用于不同子服对应所跨的活动地图ID
-# @return None
-def FBOpenNotify(openTimeList, notifyMsg, notifyTimeList, mapID = 0, mergeMinOSD=-1,
- mergeMaxOSD=-1, mergeMapInfo=[]):
-
- # 只在第一线中提示
- if GameWorld.GetGameWorld().GetCurGameWorldIndex() != 0 or not notifyTimeList:
- return
-
- curTime = datetime.datetime.today()
- nextTime = curTime + datetime.timedelta(hours=1)
-
- curYear, curMonth, curDay, curHour = curTime.year, curTime.month, curTime.day, curTime.hour
- nextYear, nextMonth, nextDay, nextHour = nextTime.year, nextTime.month, nextTime.day, nextTime.hour
- startTimeStrFormat = "%s-%s-%s %s:%s:%s"
-
- # 需要提示的最大分钟
- maxNotifyMinute = max(notifyTimeList)
-
- remaindMinute = -1
- for hour, minute in openTimeList:
-
- # 当前小时的和下一个小时才有可能需要提示
- if hour not in [curHour, nextHour]:
- continue
-
- # 获取本次比较的开启时间
- if hour == curHour:
- startTimeStr = startTimeStrFormat % (curYear, curMonth, curDay, hour, minute, "00")
- else:
- startTimeStr = startTimeStrFormat % (nextYear, nextMonth, nextDay, hour, minute, "00")
-
- # 字符串转化为datetime
- startTime = datetime.datetime.strptime(startTimeStr, ChConfig.TYPE_Time_Format)
-
- # 还剩多少时间开启
- remainTime = startTime - curTime
-
- # 计算剩余秒数
- seconds = remainTime.seconds
-
- # 计算剩余分钟,提前一秒通知
- remaindMinute = (seconds - 1) / 60 + 1
- if 0 < remaindMinute <= maxNotifyMinute:
- break
-
- # 在配置中需要提示,且未提示过
- if remaindMinute in notifyTimeList \
- and remaindMinute != GameWorld.GetGameFB().GetGameFBDictByKey(ChConfig.Map_FBDict_NotifyOpen):
- if mapID > 0:
- msgParamList = [remaindMinute, mapID]
- else:
- msgParamList = [remaindMinute]
- PlayerControl.WorldNotify(0, notifyMsg, msgParamList, 0, mergeMinOSD, mergeMaxOSD, mergeMapInfo)
- GameWorld.GetGameFB().SetGameFBDict(ChConfig.Map_FBDict_NotifyOpen, remaindMinute)
- return
-
-
-## 判断当前是否时副本进场时间(准备时间)
-# @param openTimeList 开启时间列表[(开启时钟,开启分钟), ]
-# @param prepareSeconds 准备时间(秒)
-# @return bool
-def CheckIsFBPrepareTime(openTimeList, prepareSeconds):
- curTime = GameWorld.GetCurrentTime()
- prevTime = curTime - datetime.timedelta(hours=1)
-
- curYear, curMonth, curDay, curHour = curTime.year, curTime.month, curTime.day, curTime.hour
- prevYear, prevMonth, prevDay, prevHour = prevTime.year, prevTime.month, prevTime.day, prevTime.hour
- startTimeStrFormat = "%s-%s-%s %s:%s:%s"
-
- for hour, minute in openTimeList:
-
- # 当前小时的和上一小时才有可能时进入时间
- if hour not in [curHour, prevHour]:
- continue
-
- # 获取本次比较的开启时间
- if hour == curHour:
- startTimeStr = startTimeStrFormat % (curYear, curMonth, curDay, hour, minute, "00")
- else:
- startTimeStr = startTimeStrFormat % (prevYear, prevMonth, prevDay, hour, minute, "00")
-
- # 字符串转化为datetime
- startTime = datetime.datetime.strptime(startTimeStr, ChConfig.TYPE_Time_Format)
-
- # 距开始时间的时间差
- pastTime = curTime - startTime
-
- # 换算成秒数
- pastSeconds = pastTime.seconds
-
- # 如果在规定准备秒数内,则返回True
- if 0 <= pastSeconds <= prepareSeconds:
- return True
-
- return False
-
-## 获取玩家所在副本区域福利倍值
-# @param curPlayer 玩家
-# @return 倍值-默认为1
-def GetAreaRewardMultiple(curPlayer):
- return max(1, curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AreaRewardMultiple))
-
-## 设置玩家所在副本区域福利倍值
-# @param curPlayer 玩家
-# @param value 更新倍值
-# @return
-def SetAreaRewardMultiple(curPlayer, value):
- curPlayer.SetDict(ChConfig.Def_PlayerKey_AreaRewardMultiple, value)
- return
-
-
-## 检查是否进入副本CD中
-# @param curPlayer 玩家
-# @param mapID
-# @return True-CD中,不可进入;False-非CD中,可进入
-def CheckIsEnterCD(curPlayer, mapID):
- return GetFBEnterCD(curPlayer, mapID) > 0
-
-## 获取进入副本CD时间
-# @param curPlayer 玩家
-# @param mapID
-# @return <=0 代表没有CD, >0表示还剩下的CD tick
-def GetFBEnterCD(curPlayer, mapID):
- mapID = GetRecordMapID(mapID)
- enterCDDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 1)
-
- if mapID not in enterCDDict:
- return 0
- lvLimitDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 3)
- if mapID in lvLimitDict:
- if curPlayer.GetLV() >= lvLimitDict[mapID]:
- return 0
- cdTick = enterCDDict[mapID]
- lastEnterTick = GetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID)
- if not lastEnterTick:
- return 0
-
- timeNum = GameWorld.ChangeTimeStrToNum(GameWorld.GetCurrentDataTimeStr())
- passTick = max(0, timeNum - lastEnterTick)
- curCDTick = max(0, cdTick - passTick)
- if curCDTick > 0:
- GameWorld.DebugLog("副本进入CD中!mapID=%s,timeNum=%s,lastEnterTick=%s,passTick=%s,剩余=%s"
- % (mapID, timeNum, lastEnterTick, passTick, curCDTick))
- return curCDTick
-
-
-## 更新玩家进入副本时间
-# @param curPlayer 玩家
-# @param tick 更新值
-# @return
-def UpdateFBEnterTick(curPlayer):
- mapID = GameWorld.GetMap().GetMapID()
- mapID = GetRecordMapID(mapID)
- enterCDDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 1)
- if mapID not in enterCDDict:
- return
- timeNum = GameWorld.ChangeTimeStrToNum(GameWorld.GetCurrentDataTimeStr())
- SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID, timeNum)
- GameWorld.DebugLog("UpdateFBEnterTick mapID=%s,timeNum=%s" % (mapID, timeNum))
- SyncFBEnterTick(curPlayer, mapID)
return
## 获取记录值的mapID
@@ -2234,48 +1806,6 @@
return GeneralTrainMapIDList
-def GetClientCustomScene():
- ## 获取前端自定义副本场景
- mapIDList = GetGeneralTrainMapIDList()
- return mapIDList + ChConfig.ClientCustomSceneList
-
-## 同步进入副本时间
-# @param curPlayer 玩家
-# @param syncMapID 同步的地图,默认0为全部
-# @return None
-def SyncFBEnterTick(curPlayer, syncMapID=0):
- enterCDDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 1)
- if not enterCDDict:
- return
-
- timeNum = GameWorld.ChangeTimeStrToNum(GameWorld.GetCurrentDataTimeStr())
-
- enterList = ChPyNetSendPack.tagMCFBEnterTickList()
- enterList.Clear()
- enterList.EnterTickList = []
- for mapID in enterCDDict.keys():
-
- if syncMapID not in [0, mapID]:
- continue
-
- lastEnterTick = GetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID)
-
- # 修正副本CD时间
- if timeNum < lastEnterTick:
- SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID, timeNum)
- lastEnterTick = timeNum
- GameWorld.DebugLog("修正玩家副本CD时间 mapID=%s,timeNum=%s" % (mapID, timeNum), curPlayer.GetPlayerID())
-
- enterTickObj = ChPyNetSendPack.tagMCFBEnterTick()
- enterTickObj.Clear()
- enterTickObj.MapID = mapID
- enterTickObj.LastEnterTick = lastEnterTick#max(enterCDDict.get(mapID) - (timeNum - lastEnterTick), 0)
- enterList.EnterTickList.append(enterTickObj)
-
- enterList.Cnt = len(enterList.EnterTickList)
- NetPackCommon.SendFakePack(curPlayer, enterList)
- return
-
## 通知个人通用副本信息
# @param curPlayer: 玩家实例
# @param runTime: 已经进行时间
@@ -2300,7 +1830,7 @@
mapInfo.FBID = mID
mapInfo.EnterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mID)
mapInfo.EnterCntTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntTotal % mID)
- mapInfo.RecoverCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RecoverFbCnt % mID)
+ mapInfo.RecoverCnt = 0
mapInfo.ItemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ItemAddFbCnt % mID)
mapInfo.PassLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mID)
@@ -2313,8 +1843,6 @@
NetPackCommon.SendFakePack(curPlayer, fbInfoData)
return
-
-
#// A3 BD 通知玩家购买副本进入次数 #tagMCBuyEnterInfo
#
@@ -2394,100 +1922,6 @@
group.extend(tmpList[gi])
return groupList
-
-def ClearAreaRewardRecord(playerID):
- ##清除战场区域福利记录
- gameWorld = GameWorld.GetGameWorld()
- gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetCnt%playerID, 0)
- gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetExp%playerID, 0)
- gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetExpPoint%playerID, 0)
- gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetZhenQiTotal%playerID, 0)
- gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetTechPoint%playerID, 0)
- return
-
-##战场区域福利逻辑
-# @param tick 时间戳
-# @return 无意义
-def DoLogicAreaReward(cfgKeyName, tick, needAlive=False):
- gameFB = GameWorld.GetGameFB()
- gameWorld = GameWorld.GetGameWorld()
- rewardInterval = IpyGameDataPY.GetFuncCfg(cfgKeyName, 2)
- rewardFormatDict = IpyGameDataPY.GetFuncEvalCfg(cfgKeyName)
- getCntLimit = IpyGameDataPY.GetFuncCfg(cfgKeyName, 3)
- lastAwardTick = gameFB.GetGameFBDictByKey(ChConfig.Map_FBDict_LastAreaRewardTick)
- if tick - lastAwardTick < rewardInterval:
- return
- gameFB.SetGameFBDict(ChConfig.Map_FBDict_LastAreaRewardTick, tick)
-
- GameWorld.DebugLog("给战场福利 tick=%s,needAlive=%s" % (tick, needAlive))
- # 更新玩家战场持续时间
- playerManager = GameWorld.GetMapCopyPlayerManager()
- for index in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(index)
- if not curPlayer:
- continue
- if needAlive and GameObj.GetHP(curPlayer) <= 0:
- continue
- playerID = curPlayer.GetPlayerID()
- if getCntLimit:
- getCnt = gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetCnt%playerID)
- if getCnt >= getCntLimit:
- continue
- gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetCnt%playerID, getCnt + 1)
-
- multiple = GetAreaRewardMultiple(curPlayer) # 福利倍数
- reLV = curPlayer.GetLV()
- reExp = PlayerControl.GetPlayerReExp(curPlayer)
- playerControl = PlayerControl.PlayerControl(curPlayer)
-
- if "Exp" in rewardFormatDict:
- addExp = eval(rewardFormatDict["Exp"])
- addExp = playerControl.AddExp(addExp)
- if addExp > 0:
- totalExp = GetFBAreaRewardExp(gameWorld, playerID) + addExp
- gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetExp%playerID, totalExp % ChConfig.Def_PerPointValue)
- gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetExpPoint%playerID, totalExp / ChConfig.Def_PerPointValue)
-
-
- if "ZhenQi" in rewardFormatDict:
- addZhenQi = eval(rewardFormatDict["ZhenQi"])
- PlayerControl.PlayerAddZhenQi(curPlayer, addZhenQi, True, True, "FB")
- totalZhenQi = gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetZhenQiTotal%playerID)
- totalZhenQi += addZhenQi
- gameWorld.SetGameWorldDict(ChConfig.Map_Player_AreaReward_GetZhenQiTotal%playerID, totalZhenQi)
-
- #GameWorld.DebugLog(" 战场福利 倍区=%s,reLV=%s,reExp=%s,addExp=%s,addZQ=%s,totalExp=%s,totalZQ=%s"
- # % (multiple, reLV, reExp, addExp, addZhenQi, totalExp, totalZhenQi), playerID)
- return
-
-def GetFBAreaRewardExp(gameWorld, playerID):
- exp = gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetExp%playerID)
- expPoint = gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetExpPoint%playerID)
- return expPoint * ChConfig.Def_PerPointValue + exp
-
-def GetFBAreaRewardZhenQi(gameWorld, playerID):
- return gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetZhenQiTotal%playerID)
-
-def GetFBAreaRewardTechPoint(gameWorld, playerID):
- return gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetTechPoint%playerID)
-
-def NotifyCopyMapPlayerFBHelp(tick, fbHelpFunc, interval=10000, befLogicFunc=None):
- gameFB = GameWorld.GetGameFB()
- lastTick = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_NotifyFBHelpTick)
- if tick - lastTick < interval:
- return
- gameFB.SetGameFBDict(ChConfig.Def_FB_NotifyFBHelpTick, tick)
-
- if befLogicFunc:
- befLogicFunc(tick)
-
- playerManager = GameWorld.GetMapCopyPlayerManager()
- for index in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(index)
- if not curPlayer:
- continue
- fbHelpFunc(curPlayer, tick)
- return
def GetCrossDynamicLineMapZoneID():
## 获取跨服动态线路地图本线路跨服分区
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py
index cd69137..795d006 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GeneralTrain.py
@@ -17,10 +17,8 @@
import FBCommon
import GameWorld
-import PlayerControl
import IpyGameDataPY
import ItemControler
-import NPCCommon
import ChConfig
## 是否能够通过活动查询进入
@@ -49,30 +47,7 @@
## 是否需要做进入副本通用检查条件逻辑,默认需要检查
def OnNeedCheckCanEnterFBComm(curPlayer, mapID, lineID):
## 进行中的不需要重复检查,防止断线重连被禁止进入
- if FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) == ChConfig.CustomMapStep_Fight:
- GameWorld.DebugLog("通用养成副本已经在进行中,本次进入不需要重新检查! mapID=%s,lineID=%s" % (mapID, lineID))
- return False
return True
-
-## 客户端进入自定义场景
-def OnEnterCustomScene(curPlayer, mapID, lineID):
- return
-
-## 判断可否召唤木桩怪
-def OnCanSummonPriWoodPile(curPlayer, mapID, lineID, npcID, count):
-
- if FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) != ChConfig.CustomMapStep_Fight:
- FBCommon.SetCustomMapStep(curPlayer, mapID, lineID, ChConfig.CustomMapStep_Fight)
-
- npcIDList = GetGeneralTrainNPCIDList(mapID, lineID)
- if not npcIDList or npcID not in npcIDList:
- GameWorld.DebugLog("通用养成副本该NPC不能召唤! mapID=%s,lineID=%s,npcID=%s not in %s" % (mapID, lineID, npcID, npcIDList))
- return False
-
- return True
-
-def OnCustomSceneProcess(curPlayer, mapID, lineID, tick):
- return
def GetGeneralTrainNPCIDList(mapID, lineID):
npcIDList = []
@@ -89,41 +64,6 @@
if not ipyData:
return 0
return ipyData.GetBossNPCID()
-
-## 自定义场景副本击杀NPC
-def DoCustomScene_Player_KillNPC(curPlayer, curNPC, mapID, lineID):
-
- npcID = curNPC.GetNPCID()
- bossID = GetGeneralTrainBossID(mapID, lineID)
- GameWorld.DebugLog("击杀副本NPC: mapID=%s,lineID=%s,npcID=%s,bossID=%s" % (mapID, lineID, npcID, bossID), curPlayer.GetPlayerID())
- if npcID != bossID:
- return
-
- if FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) != ChConfig.CustomMapStep_Fight:
- return
-
- ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
- if not ipyData:
- return
-
- passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID)
- if lineID > passLineID:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FBPassLineID % mapID, lineID)
-
- #增加进入次数
- FBCommon.AddEnterFBCount(curPlayer, mapID)
-
- giveItemList = ipyData.GetPassAwardItemList()
- GameWorld.DebugLog("通用养成副本过关! mapID=%s,lineID=%s,giveItemList=%s" % (mapID, lineID, giveItemList))
-
- NPCCommon.DoGiveItemByVirtualDrop(curPlayer, giveItemList, bossID)
-
- FBCommon.SetCustomMapStep(curPlayer, mapID, lineID, ChConfig.CustomMapStep_Over)
-
- isPass = 1
- overDict = {FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(giveItemList)}
- FBCommon.NotifyFBOver(curPlayer, mapID, lineID, isPass, overDict)
- return
## 可否扫荡
def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx):
diff --git "a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/\350\207\252\345\256\232\344\271\211\345\234\272\346\231\257\350\257\264\346\230\216.txt" "b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/\350\207\252\345\256\232\344\271\211\345\234\272\346\231\257\350\257\264\346\230\216.txt"
deleted file mode 100644
index b4faf14..0000000
--- "a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/\350\207\252\345\256\232\344\271\211\345\234\272\346\231\257\350\257\264\346\230\216.txt"
+++ /dev/null
@@ -1,59 +0,0 @@
-目前已开发的自定义前端本
----------------------------------
-场景名 MapID FuncLineID
-创角后动画 0 0
-孙小美法宝认主 4000 0
-缥缈奇遇 0 0
-缥缈宝藏 31190 0
-缥缈妖王 22030 对应功能线路ID
-缥缈灵草园 32040 0
-缥缈仙草园 32050 0
-VIPBoss 31240 对应功能线路ID
-跨服PVP前期 0 0
-守护副本 31250 0
-前期封魔坛 52020 对应功能线路ID
----------------------------------
-
-【开发说明】
-一、大概流程说明
-1. 前端发送封包请求进入自定义场景 A2 31 前端开始自定义场景 #tagCMClientStartCustomScene
-2. 后端根据具体情况判断是否允许进入,回包 B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult
-3. 不允许进入则结束,允许进入的话则前端加载目标场景
-4. 前端自定义场景流程,前端自己控制
-5. 结束时机由后端判断处理,如击杀目标怪、采集目标怪或者其他时机触发
-6. 后端结束还是通知 FBOver
-7. 前端发包退出自定义场景 A2 33 前端退出自定义场景 #tagCMClientExitCustomScene
-
-二、后端开发说明
-总体上和正常的副本开发一致,只是触发的一些函数名不同
-***********************************************************************************************************
-【注意注意注意】
-使用前端自定义地图开发,由于后端不关心副本流程,也没有进行验证,所以结算时机必须由后端进行判断,并且要注意不要重复给奖励
-***********************************************************************************************************
-
-自定义场景地图信息
-GetCustomMapID 可能为0
-GetCustomLineID
-SetCustomMap 进入自定场景MapID有值时会设置,【注意:需要在副本结算给奖励的时候重置为0】
- 前端断线重连如果该值有值,则会重连请求进入自定义场景,所以需要注意一定要有时机重置
-
-GetCustomMapStep 自定义地图当前状态步骤,可通过此状态判断是否可以给奖励,防止重复给奖励
-SetCustomMapStep 自定义地图当前状态步骤,根据功能需要自定义,目前通用定义 0-没有或已结束,1-进行中
-
-如何判断是否自定义场景中
-不能用自定义场景地图ID判断,应为可能为0,取以下值判断
-curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene)
-
-流程
-1. 是否可进入判断,与正常副本开发判断一样, OnEnterFBEvent 通用
-2. 进入自定义场景,如果有自定义地图ID,则会记录 SetCustomMap,注意在结算的时候需要重置为0;
- 进入触发 OnEnterCustomScene,与 DoEnter 类似
- 可以根据需要设置值 SetCustomMapStep
-
-3. 召唤木桩,根据功能需求召唤,如果有需要判断召唤条件,可通过函数 OnCanSummonPriWoodPile 判断
-4. 击杀怪物,触发 DoCustomScene_Player_KillNPC,与 DoFB_Player_KillNPC 类似
-5. 采集成功,触发 OnCustomSceneCollectOK, 与 OnCollectOK 类似
-6 根据某个时机判断是否结算副本,需用 GetCustomMapStep 判断可否给奖励,防止重复给奖励,缥缈相关的由于有事件状态了,所以可不用
- 结算重置状态,并使用 FBOver 通知前端
-
-
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 5059b04..748ffee 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -794,115 +794,6 @@
return
-#// B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile
-#
-#struct tagCMRecyclePriWoodPile
-#{
-# tagHead Head;
-# DWORD ObjID;
-#};
-def OnRecyclePriWoodPile(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- objID = clientData.ObjID
- curNPC = GameWorld.FindNPCByID(objID)
- if not curNPC:
- return
- if curNPC.GetType() not in [ChConfig.ntPriWoodPilePVE, ChConfig.ntPriWoodPilePVP]:
- return
- summonPlayerID = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_PriWoodPilePlayerID)
- if curPlayer.GetPlayerID() != summonPlayerID:
- #GameWorld.DebugLog("非玩家私有木桩...")
- return
- SetDeadEx(curNPC)
- return
-
-#// B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
-#
-#struct tagCMSummonPriWoodPile
-#{
-# tagHead Head;
-# DWORD NPCID;
-# BYTE Count; //默认1个,最多5个
-# DWORD HP; //默认0取最大值,其中一个血量数值大于0则用指定血量
-# DWORD HPEx; //默认0取最大值,其中一个血量数值大于0则用指定血量
-#};
-def OnSummonPriWoodPile(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- npcID = clientData.NPCID
- count = clientData.Count
- hp = clientData.HP
- hpEx = clientData.HPEx
- SummonPriWoodPile(curPlayer, npcID, count, hp, hpEx)
- return
-
-def SummonPriWoodPile(curPlayer, npcID, count, hp=0, hpEx=0):
- ''' 召唤私有专属木桩怪
- '''
-
- mapID = PlayerControl.GetCustomMapID(curPlayer)
- lineID = PlayerControl.GetCustomLineID(curPlayer)
- if mapID:
- if not FBLogic.OnCanSummonPriWoodPile(curPlayer, mapID, lineID, npcID, count):
- GameWorld.ErrLog("无法召唤木桩怪!mapID=%s,lineID=%s,npcID=%s,count=%s" % (mapID, lineID, npcID, count))
- return
-
- if count != 1:
- hp, hpEx = 0, 0 # 指定血量的暂仅适用于单只的
-
- playerID = curPlayer.GetPlayerID()
- if playerID not in PyGameData.g_playerPriWoodPileNPCDict:
- PyGameData.g_playerPriWoodPileNPCDict[playerID] = []
- playerPriWoodNPCList = PyGameData.g_playerPriWoodPileNPCDict[playerID]
- maxCount = 3
- nowCount = len(playerPriWoodNPCList)
- summonCount = min(count, maxCount - nowCount)
- GameWorld.DebugLog("召唤木桩: npcID=%s,count=%s,maxCount=%s,nowCount=%s,summonCount=%s,hp=%s,hpEx=%s"
- % (npcID, count, maxCount, nowCount, summonCount, hp, hpEx))
- if summonCount <= 0:
- return
-
- npcManager = GameWorld.GetNPCManager()
- for _ in xrange(summonCount):
- #summonNPC = curPlayer.SummonNewNPC()
- summonNPC = npcManager.AddPlayerSummonNPC()
-
- #设置召唤兽基础信息
- summonNPC.SetNPCTypeID(npcID)
- summonNPC.SetSightLevel(curPlayer.GetSightLevel())
- #初始化
- InitNPC(summonNPC)
-
- #玩家召唤兽列表添加召唤兽,召唤兽添加主人
- #summonNPC.SetOwner(curPlayer)
- summonNPC.SetDict(ChConfig.Def_NPC_Dict_PriWoodPilePlayerID, playerID)
-
- #将召唤兽召唤出来
- #玩家周围随机出生点
- #技能召唤坐标 ChConfig.Def_SummonAppearDist
- summonPos = GameMap.GetEmptyPlaceInArea(curPlayer.GetPosX(), curPlayer.GetPosY(), 3)
- summonNPC.Reborn(summonPos.GetPosX(), summonPos.GetPosY(), False)
- NPCControl(summonNPC).ResetNPC_Init(isReborn=True)
- if hp or hpEx:
- hpTotal = hpEx * ShareDefine.Def_PerPointValue + hp
- GameObj.SetHP(summonNPC, hpTotal)
- GameObj.SetMaxHP(summonNPC, hpTotal)
- summonNPC.NotifyAppear() # 最终统一通知NPC出现
- playerPriWoodNPCList.append(summonNPC)
-
- return
-
-def ClearPriWoodPile(curPlayer):
- ## 清除私有木桩
- playerID = curPlayer.GetPlayerID()
- if playerID not in PyGameData.g_playerPriWoodPileNPCDict:
- return
- playerPriWoodNPCList = PyGameData.g_playerPriWoodPileNPCDict.pop(playerID)
- for summonNPC in playerPriWoodNPCList:
- if not summonNPC:
- continue
- SetDeadEx(summonNPC)
- return
-
## 设置npc死亡及自身处理(请不要将游戏逻辑加在此函数中)
# @param curNPC:npc实例
# @return
@@ -4049,44 +3940,8 @@
DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData, crossCollectOK=True)
return
-#// A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward
-#
-#struct tagCMGetCustomSceneCollectAward
-#{
-# tagHead Head;
-# DWORD NPCID; //采集的NPCID
-#};
-def OnGetCustomSceneCollectAward(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- npcID = clientData.NPCID
- if not curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
- GameWorld.ErrLog("非自定义场景中,无法获取定义采集奖励!", playerID)
- return
- mapID = PlayerControl.GetCustomMapID(curPlayer)
- lineID = PlayerControl.GetCustomLineID(curPlayer)
- GameWorld.Log("前端场景采集: mapID=%s,lineID=%s,npcID=%s" % (mapID, lineID, npcID), playerID)
- if not mapID:
- GameWorld.ErrLog("无自定义场景地图ID,不允许采集!", playerID)
- return
-
- if not FBLogic.OnCustomSceneCollectOK(curPlayer, mapID, lineID, npcID):
- GameWorld.ErrLog("自定义场景地图不允许采集! mapID=%s,lineID=%s,npcID=%s" % (mapID, lineID, npcID), playerID)
- return
-
- collectNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CollectNPC", npcID)
- if collectNPCIpyData:
- DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData)
- return
-
def DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData, collectCnt=1, crossCollectOK=False, isSweep=False):
return
-
-## 采集结果同步
-# @param None
-# @param None
-def SyncCollectionItemInfo(curPlayer, addExp, addMoney, addZhenQi, syncItemInfoList, collectNPCID=0):
- return #暂不同步
def SyncCollNPCTime(curPlayer, npcIDList=None):
## 同步采集NPC功能号采集次数
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 e0d04c7..4fef199 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -52,7 +52,6 @@
import PlayerSuccess
import PlayerDienstgrad
import PlayerFreeGoods
-import PlayerRecover
import PlayerCrossRealmPK
import PlayerCrossChampionship
import GameFuncComm
@@ -257,9 +256,6 @@
if PlayerControl.GetCrossMapID(curPlayer):
CrossRealmPlayer.DoExitCrossRealm(curPlayer)
-
- if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
- PlayerFB.DoExitCustomScene(curPlayer)
PetControl.DoLogic_PetLoadMapOK(curPlayer)
@@ -585,8 +581,6 @@
#PlayerDienstgrad.RefreshBillBoardDienstgrad(curPlayer)
# 称号
PlayerDienstgrad.Sync_AllDienstgradOnLogin(curPlayer)
- # 资源找回OnLogin
- PlayerRecover.RecoverOnLogin(curPlayer)
# 时装
PlayerCoat.OnLogin_Coat(curPlayer)
@@ -1027,16 +1021,7 @@
PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
if curPlayer.GetSight() != 0:
PlayerControl.SetSight(curPlayer, 0)
- #刷新玩家的视野
- #if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or PlayerControl.GetCustomMapID(curPlayer)):
- # GameWorld.DebugLog("===登录本服地图时,处于跨服或自定义场景状态,不刷新视野!", curPlayer.GetPlayerID())
- # PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
- #elif not GameWorld.IsCrossServer():
- # realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer)
- # if realmDifficulty:
- # GameWorld.DebugLog("===登录本服地图时,处于境界难度地图,自动设置难度! realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID())
- # PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty)
-
+
PlayerState.ChangePlayerSigh(curPlayer, tick)
if GameWorld.IsCrossServer():
@@ -1379,16 +1364,7 @@
PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
if curPlayer.GetSight() != 0:
PlayerControl.SetSight(curPlayer, 0)
- #刷新自己的视野
- #if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene)):
- # GameWorld.DebugLog("===本服LoadMapOK时玩家处于跨服或自定义场景状态,不设置可见!", curPlayer.GetPlayerID())
- # PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
- #elif not GameWorld.IsCrossServer():
- # realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer)
- # if realmDifficulty:
- # GameWorld.DebugLog("===本服LoadMapOK时玩家处于境界难度地图,自动设置难度!realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID())
- # PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty)
-
+
curPlayer.RefreshView()
curPlayer.SetVisible(True)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
index 1699a7f..818c5a2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
@@ -620,13 +620,8 @@
return
def GetMapCanOutPet(curPlayer):
- ## 检查本地图可否出战宠物,支持前端自定义场景
- customMapID = PlayerControl.GetCustomMapID(curPlayer)
- if customMapID:
- ipyMapData = IpyGameDataPY.GetIpyGameData("ChinMap", customMapID)
- canOutPet = True if ipyMapData and ipyMapData.GetCanOutPet() else False
- else:
- canOutPet = GameWorld.GetMap().GetMapCanOutPet()
+ ## 检查本地图可否出战宠物
+ canOutPet = GameWorld.GetMap().GetMapCanOutPet()
return canOutPet
#---------------------------------------------------------------------
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 6acc07c..1dd5d6a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -416,10 +416,6 @@
NotifyCode(curPlayer, "CrossMap10")
return False
- if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
- GameWorld.Log("客户端自定义场景下无法传送!", curPlayer.GetPlayerID())
- return False
-
return True
@@ -1002,7 +998,6 @@
CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
#清除地图玩家缓存
PyGameData.g_playerReqEnterFBEx.pop(playerID, None)
- NPCCommon.ClearPriWoodPile(curPlayer)
#移除地图缓存的境界难度玩家ID信息
for playerIDList in PyGameData.g_realmDiffPlayerDict.values():
if playerID in playerIDList:
@@ -1535,12 +1530,6 @@
if isNotify:
NotifyCode(curPlayer, "Carry_lhs_697674")
return ShareDefine.EntFBAskRet_Sit
-
- if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
- if isNotify:
- NotifyCode(curPlayer, "Carry_lhs_697674")
- GameWorld.Log("客户端自定义场景下无法进入副本!", curPlayer.GetPlayerID())
- return ShareDefine.EntFBAskRet_Other
if playerAction in ChConfig.Def_Player_Cannot_TransState:
#Carry_lhs_697674:您当前所处的状态不能进行传送!
@@ -4217,7 +4206,7 @@
fightExpRate += curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TeamExpRate) # 组队
#地图多倍经验加成,默认是1倍不加成
- mapExpAddMultiple = max(0, FBCommon.GetAreaRewardMultiple(curPlayer) - 1)
+ mapExpAddMultiple = 0
fightExpRate += mapExpAddMultiple * ChConfig.Def_MaxRateValue
if totalExpRate != fightExpRate:
@@ -4436,16 +4425,6 @@
curPlayer.SetExAttr5(value, False, True)
if not value:
CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
- return
-
-## 前端自定义场景
-def GetCustomMapID(curPlayer): return curPlayer.GetExAttr14() / 1000
-def GetCustomLineID(curPlayer): return curPlayer.GetExAttr14() % 1000
-## 自定义场景后端判断已结算后需直接重置为0,防止前端没有退出场景直接下线导致数据没有重置,可能引发可以重复进
-def SetCustomMap(curPlayer, mapID, lineID):
- value = mapID * 1000 + lineID
- if value != curPlayer.GetExAttr14():
- curPlayer.SetExAttr14(value, False, True)
return
## 铜钱点, 支持铜钱超20亿
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 6361081..91f1cd6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -42,7 +42,6 @@
import PlayerCrossRealmPK
import PlayerCrossChampionship
import PlayerPet
-import PlayerRecover
import PlayerFamilyRedPacket
import OpenServerCampaign
import PlayerCostRebate
@@ -312,8 +311,6 @@
# 特殊时间点X点过天
elif onEventType == ShareDefine.Def_OnEventTypeEx:
PlayerHero.PlayerOnDay(curPlayer)
- # 资源找回
- PlayerRecover.RecoverOnDay(curPlayer)
# 仙盟过天
PlayerFamily.PlayerOnDay(curPlayer)
# 重置物品每日使用次数
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py
index 93e4a3b..16b8dcb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py
@@ -23,28 +23,19 @@
#------------------------------------------------------------------------------
#"""Version = 2016-12-02 11:00"""
#------------------------------------------------------------------------------
-import ReadChConfig
import IPY_GameWorld
import PlayerControl
import GameWorld
import FBCommon
import ChConfig
import FBLogic
-import ChPyNetSendPack
-import NetPackCommon
import PlayerSuccess
import ItemCommon
import IpyGameDataPY
import ShareDefine
import GameFuncComm
-import SkillShell
-import PyGameData
-import PetControl
import NPCCommon
-import GameObj
-import time
-import math
#---------------------------------------------------------------------
def OnLogin(curPlayer):
return
@@ -59,180 +50,6 @@
actionType = clientData.ActionType # 行为类型
actionInfo = clientData.ActionInfo # 行为信息
FBLogic.DoFBAction(curPlayer, actionType, actionInfo, tick)
- return
-
-## A2 10 清除副本CD#tagCMClearFBCD
-# @param playerIndex 玩家索引
-# @param clientData 客户端封包
-# @param tick 时间
-# @return None
-def OnClearFBCD(playerIndex, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
- mapID = clientData.MapID # mapID
- GameWorld.DebugLog("OnClearFBCD mapID=%s" % mapID)
- if not mapID:
- return
-
- enterCDTick = FBCommon.GetFBEnterCD(curPlayer, mapID)
- if enterCDTick <= 0:
- GameWorld.DebugLog(" CD时间已过,不需要清除, cdTick=%s" % enterCDTick)
- return
- clearEnterCDDict = IpyGameDataPY.GetFuncEvalCfg('FBEnterCD', 2)
- if mapID not in clearEnterCDDict:
- return
- costMoney = clearEnterCDDict[mapID]
- costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, ShareDefine.TYPE_Price_Gold_Paper_Money, costMoney)
- if not costMoneyList:
- return
- second = enterCDTick # 参数秒
- # 扣除消耗
- infoDict = {"MapID":mapID, "CDSecond":second}
- for moneyType, moneyCnt in costMoneyList:
- if not PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_Cost_ClearFBCD, infoDict):
- return
-
-
- GameWorld.DebugLog(" mapID=%s 清除副本CD second=%s,costMoneyList=%s"
- % (mapID, second, costMoneyList), curPlayer.GetPlayerID())
-
- FBCommon.SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID, 0)
- FBCommon.SyncFBEnterTick(curPlayer)
- return
-
-#---封包开始扫荡-------------------------------------
-
-(
-PCDFB_MapIDList, # 副本地图ID列表
-PCDFB_NeedTime, # 扫荡时间, 秒
-PCDFB_FinishTimeGold, # 立即完成消耗钻石公式
-) = range(3)
-
-
-## 判断是否当前公共CD副本扫荡中
-def IsCurPubCDFBSweeping(curPlayer, mapID):
- sweepCfg = GetPubCDFBSweepCfg(curPlayer, mapID)
- if not sweepCfg:
- return False
- groupNum = sweepCfg[0]
- return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_MapID % groupNum) == mapID
-
-## 获取公共CD副本扫荡配置信息
-def GetPubCDFBSweepCfg(curPlayer, mapID):
- PubCDFBSweepDict = ReadChConfig.GetEvalChConfig("PubCDFBSweep")
- for groupNum, sweepInfo in PubCDFBSweepDict.items():
- mapIDGroup = sweepInfo[0]
- if mapID not in mapIDGroup:
- continue
-
- return groupNum, sweepInfo
-
- return
-
-## 开始公共CD副本扫荡
-def __DoStartPubCDFBSweep(curPlayer, mapID, lineID, cnt, isFinish, dataEx, groupNum, sweepInfo):
- curSweepMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_MapID % groupNum)
- if curSweepMapID > 0:
- GameWorld.DebugLog("公共CD副本扫荡中, 无法扫荡!groupNum=%s,curSweepMapID=%s"
- % (groupNum, curSweepMapID), curPlayer.GetPlayerID())
- return
-
- if not FBLogic.OnStartPubCDFBSweep(curPlayer, mapID, lineID, cnt, dataEx):
- return
-
- curTime = int(time.time())
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_MapID % groupNum, mapID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_LineID % groupNum, lineID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_Cnt % groupNum, cnt)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_DataEx % groupNum, dataEx)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_Time % groupNum, curTime)
- GameWorld.DebugLog("公共CD副本开始扫荡 mapID=%s,lineID=%s,cnt=%s,dataEx=%s,groupNum=%s,curTime=%s"
- % (mapID, lineID, cnt, dataEx, groupNum, curTime), curPlayer.GetPlayerID())
-
-
- Sync_PubFBSweepData(curPlayer, groupNum)
- return
-
-## 完成公共CD副本扫荡
-def __DoFinishPubCDFB(curPlayer, mapID, isFinish, groupNum, sweepInfo):
- playerID = curPlayer.GetPlayerID()
- curSweepMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_MapID % groupNum)
- if curSweepMapID <= 0 or curSweepMapID != mapID:
- GameWorld.DebugLog("未扫荡 或 不是当前正在扫荡的公共CD副本, 无法完成!curSweepMapID=%s,mapID=%s"
- % (curSweepMapID, mapID), playerID)
- return
-
- sweepTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_Time % groupNum)
- lineID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_LineID % groupNum)
- sweepCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_Cnt % groupNum)
- dataEx = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_DataEx % groupNum)
-
- sweepNeedTime = sweepInfo[PCDFB_NeedTime] # 单次耗时
- finishCostGoldFormat = sweepInfo[PCDFB_FinishTimeGold]
- needTotalTime = sweepNeedTime * sweepCnt
-
- curTime = int(time.time())
- passTime = max(0, curTime - sweepTime)
- second = max(0, needTotalTime - passTime)
-
- # 正常完成
- if isFinish == 2 and second > 0:
- GameWorld.DebugLog("扫荡时间未到,无法完成,剩余%s秒, mapID=%s" % (second, mapID), playerID)
- return
-
- addDataDict = {"curTime":curTime, "startSweepTime":sweepTime, "sweepCnt":sweepCnt,
- "needTotalTime":needTotalTime, "passTime":passTime, "remainSecond":second,
- "costGold":0, "mapID":mapID, "lineID":lineID, "dataEx":dataEx, ChConfig.Def_Cost_Reason_SonKey:mapID}
-
- # 钻石立即完成
- if isFinish == 1:
- costGold = eval(finishCostGoldFormat)
- if costGold > 0:
- addDataDict["costGold"] = costGold
- if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, costGold,
- ChConfig.Def_Cost_FinishFBSweep, addDataDict):
- return
-
- GameWorld.DebugLog("公共CD副本扫荡完成: %s" % str(addDataDict), playerID)
- # 给奖励
- FBLogic.OnGivePubCDFBSweepPrize(curPlayer, mapID, lineID, sweepCnt, dataEx)
-
- # 重置扫荡数据
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_MapID % groupNum, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_LineID % groupNum, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_Cnt % groupNum, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_DataEx % groupNum, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PubCDFBS_Time % groupNum, 0)
- Sync_PubFBSweepData(curPlayer, groupNum)
- return
-
-## 同步公共CD副本扫荡信息
-def Sync_PubFBSweepData(curPlayer, groupNum=-1):
-
- PubCDFBSweepDict = ReadChConfig.GetEvalChConfig("PubCDFBSweep")
- allGroupNumList = PubCDFBSweepDict.keys()
- if groupNum == -1:
- groupNumList = allGroupNumList
- else:
- if groupNum not in allGroupNumList:
- return
- groupNumList = [groupNum]
-
- pubSweepData = ChPyNetSendPack.tagMCPubFBSweepData()
- pubSweepData.Clear()
- pubSweepData.SweepDatList = []
-
- for gNum in groupNumList:
- sweepInfo = ChPyNetSendPack.tagMCPubFBSweep()
- sweepInfo.Clear()
- sweepInfo.PubNum = gNum
- sweepInfo.FBMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_MapID % gNum)
- sweepInfo.LineID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_LineID % gNum)
- sweepInfo.SweepTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_Time % gNum)
- sweepInfo.SweepCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PubCDFBS_Cnt % gNum)
- pubSweepData.SweepDatList.append(sweepInfo)
-
- pubSweepData.Cnt = len(pubSweepData.SweepDatList)
- NetPackCommon.SendFakePack(curPlayer, pubSweepData)
return
#//A5 05 玩家开始副本扫荡 #tagCMBeginFBWipeOut
@@ -312,28 +129,6 @@
GameWorld.DebugLog("扫荡消耗道具不足, mapID=%s,lineID=%s,sweepItemID=%s,sweepCostCnt=%s"
% (mapID, lineID, sweepItemID, sweepCostCnt), curPlayer.GetPlayerID())
return
-
-
-
- #公共CD扫荡模式暂屏蔽,有需要再修改
- #===============================================================================================
- # groupNum = -1
- # sweepInfo = None
- # PubCDFBSweepDict = ReadChConfig.GetEvalChConfig("PubCDFBSweep")
- # for gNum, sInfo in PubCDFBSweepDict.items():
- # if mapID in sInfo[PCDFB_MapIDList]:
- # groupNum = gNum
- # sweepInfo = sInfo
- # break
- #
- # # 公共CD副本扫荡
- # if groupNum >= 0:
- # if not isFinish:
- # __DoStartPubCDFBSweep(curPlayer, mapID, lineID, cnt, isFinish, dataEx, groupNum, sweepInfo)
- # else:
- # __DoFinishPubCDFB(curPlayer, mapID, isFinish, groupNum, sweepInfo)
- # return
- #===============================================================================================
# 副本是否可扫荡, 这里只判断副本自身的特殊条件, 公共条件上面已经判断
if not FBLogic.OnPlayerFBSweepAsk(curPlayer, mapID, lineID, cnt, isFinish, dataEx):
@@ -359,193 +154,6 @@
#扫荡结果给奖励等
FBLogic.OnPlayerFBSweepResult(curPlayer, mapID, lineID, cnt, isFinish, dataEx)
- return
-
-
-#// A5 1B 购买挑战副本精力 #tagCMBuyFBEnergy
-#
-#struct tagCMBuyFBEnergy
-#{
-# tagHead Head;
-#};
-def OnPlayerBuyFBEnergy(playerIndex, clientData, tick):
- #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
- return
-
-
-## 玩家副本功能时间处理
-def DoPlayerFBTimeProcess(curPlayer, tick):
-
- checkInterval = ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_FBTimeProcess]
- if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_FBTimeProcess) < checkInterval:
- return
-
- curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_FBTimeProcess, tick)
-
- # 领主霸业玩家功能时间处理
- FBCommon.RegainFBCntProcess(curPlayer)
- return
-
-
-#// B1 02 领取多倍副本奖励 #tagCMGetMultiFBPrize
-#
-#struct tagCMGetMultiFBPrize
-#{
-# tagHead Head;
-# DWORD MapID;
-# WORD LineID;
-# WORD Percent; // 额外奖励百分比奖励等级
-#};
-def OnPlayerGetMultiFBPrize(playerIndex, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
- mapID = clientData.MapID
- lineID = clientData.LineID
- prizeExLV = clientData.Percent
- FBLogic.OnGetMultiFBPrize(curPlayer, mapID, lineID, prizeExLV)
- return
-
-
-#//A5 60 重置副本挑战次数 #tagCMResetFBJoinCnt
-#
-#struct tagCMResetFBJoinCnt
-#{
-# tagHead Head;
-#};
-def OnPlayerResetFBJoinCnt(playerIndex, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
- return
-
-
-#// B1 01 客户端副本发送结束 #tagCMClientEndFB
-#
-#struct tagCMClientEndFB
-#{
-# tagHead Head;
-# DWORD MapID;
-# WORD LineID;
-# DWORD Data; //副本数据
-#};
-def OnClientEndFB(playerIndex, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
- mapID = clientData.MapID
- lineID = clientData.LineID
- data1 = clientData.Data1
- data2 = clientData.Data2
- dataList = [data1, data2]
- FBLogic.OnClientEndFB(curPlayer, mapID, lineID, dataList)
- GameWorld.DebugLog(' 客户端副本发送结束mapID=%s,lineID=%s,dataList=%s'%(mapID,lineID,dataList))
- return
-
-
-#// B1 04 客户端发送开始副本 #tagCMClientStartFB
-#
-#struct tagCMClientStartFB
-#{
-# tagHead Head;
-#};
-def OnClientStartFB(playerIndex, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
- FBLogic.OnClientStartFB(curPlayer, tick)
- return
-
-#// A2 31 前端开始自定义场景 #tagCMClientStartCustomScene
-#
-#struct tagCMClientStartCustomScene
-#{
-# tagHead Head;
-# DWORD MapID;
-# WORD FuncLineID;
-#};
-def OnClientStartCustomScene(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- mapID = clientData.MapID
- funcLineID = clientData.FuncLineID
- DoEnterCustomScene(curPlayer, mapID, funcLineID, tick)
- return
-
-#// A2 33 前端退出自定义场景 #tagCMClientExitCustomScene
-#
-#struct tagCMClientExitCustomScene
-#{
-# tagHead Head;
-#};
-def OnClientExitCustomScene(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- DoExitCustomScene(curPlayer)
- return
-
-def DoEnterCustomScene(curPlayer, mapID, lineID, tick):
- ## 进入自定义场景状态
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("玩家请求进入自定义场景!mapID=%s,lineID=%s" % (mapID, lineID), playerID)
- if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
- curMapID = PlayerControl.GetCustomMapID(curPlayer)
- curLineID = PlayerControl.GetCustomLineID(curPlayer)
- if mapID == curMapID and lineID == curLineID:
- GameWorld.Log(" 玩家当前已经在自定义场景中!无需重新请求!", playerID)
- result = 1
- else:
- GameWorld.Log(" 玩家当前在不同的自定义场景中!不允许进入!curMapID=%s,curLineID=%s"
- % (curMapID, curLineID), playerID)
- result = 0
- StartCustomSceneResult(curPlayer, mapID, lineID, result)
- return result
-
- #进入副本通用检查
- if mapID:
- fbIpyData = FBCommon.GetFBIpyData(mapID)
- fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID)
- if PlayerControl.CheckMoveToFB(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData, tick) != ShareDefine.EntFBAskRet_OK:
- StartCustomSceneResult(curPlayer, mapID, lineID, 0)
- return 0
-
- PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
-
- curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomScene, 1) # 由于前端不一定有发mapID,所以这里额外记录这个状态,不能直接用mapID判断
- curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomSceneStepTick, tick)
- PlayerControl.SetCustomMap(curPlayer, mapID, lineID)
- NPCCommon.ClearPriWoodPile(curPlayer)
- GameWorld.Log("玩家开始自定义场景!mapID=%s,lineID=%s" % (mapID, lineID), playerID)
- if mapID:
- PetControl.DoLogic_PetLoadMapOK(curPlayer)
- FBLogic.OnEnterCustomScene(curPlayer, mapID, lineID)
-
- #默认回满血
- if GameObj.GetHP(curPlayer) < GameObj.GetMaxHP(curPlayer):
- GameObj.SetHPFull(curPlayer)
-
- #通知进入状态
- StartCustomSceneResult(curPlayer, mapID, lineID, 1)
- return 1
-
-def StartCustomSceneResult(curPlayer, mapID, lineID, result):
- if result != 1:
- DoExitCustomScene(curPlayer)
- resultPack = ChPyNetSendPack.tagMCStartCustomSceneResult()
- resultPack.MapID = mapID
- resultPack.FuncLineID = lineID
- resultPack.Result = result
- NetPackCommon.SendFakePack(curPlayer, resultPack)
- return
-
-def DoExitCustomScene(curPlayer):
- ## 退出自定义场景状态
- PlayerControl.SetPlayerSightLevel(curPlayer, 0)
- mapID = PlayerControl.GetCustomMapID(curPlayer)
- lineID = PlayerControl.GetCustomLineID(curPlayer)
- curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomScene, 0)
- curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomSceneStepTick, 0)
- curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomSceneGrade, 0)
- PlayerControl.SetCustomMap(curPlayer, 0, 0)
- if mapID and FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) != ChConfig.CustomMapStep_Over:
- FBCommon.SetCustomMapStep(curPlayer, mapID, lineID, ChConfig.CustomMapStep_Over)
- NPCCommon.ClearPriWoodPile(curPlayer)
-
- #默认回满血
- if GameObj.GetHP(curPlayer) > 0 and curPlayer.GetPlayerAction() != IPY_GameWorld.paDie and GameObj.GetHP(curPlayer) < GameObj.GetMaxHP(curPlayer):
- GameObj.SetHPFull(curPlayer)
-
- GameWorld.Log("玩家退出自定义场景!", curPlayer.GetPlayerID())
return
#// B1 08 快速一键过关副本 #tagCMFBQuickPass
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 3e672e3..968c2b0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -115,17 +115,10 @@
if not curPlayer.GetInitOK():
return
- customMapID = PlayerControl.GetCustomMapID(curPlayer)
- if customMapID:
- ipyMapData = IpyGameDataPY.GetIpyGameData("ChinMap", customMapID)
- if not ipyMapData or not ipyMapData.GetCanRide():
- PlayerControl.NotifyCode(curPlayer, "RideLimit_lhs_0")
- return
- else:
- #地图不允许骑马 RideLimit_lhs_0
- if not GameWorld.GetMap().GetMapCanRide():
- PlayerControl.NotifyCode(curPlayer, "RideLimit_lhs_0")
- return
+ #地图不允许骑马 RideLimit_lhs_0
+ if not GameWorld.GetMap().GetMapCanRide():
+ PlayerControl.NotifyCode(curPlayer, "RideLimit_lhs_0")
+ return
#检查玩家状态,只有在空闲状态才能上马
if curPlayer.GetPlayerVehicle() != IPY_GameWorld.pvNull :
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRecover.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRecover.py
deleted file mode 100644
index 6db971f..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRecover.py
+++ /dev/null
@@ -1,523 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerRecover
-#
-# @todo:资源找回
-# @author xdh
-# @date 2018-01-10 22:20
-# @version 1.0
-#
-#
-# 详细描述: 资源找回
-#---------------------------------------------------------------------
-#"""Version = 2018-01-10 22:20"""
-#---------------------------------------------------------------------
-import GameWorld
-import FormulaControl
-import PlayerControl
-import ChConfig
-import ChPyNetSendPack
-import NetPackCommon
-import IPY_GameWorld
-import ShareDefine
-import ItemControler
-import DataRecordPack
-import ItemCommon
-import IpyGameDataPY
-import FBCommon
-import GameFuncComm
-import PlayerActivity
-import PlayerSuccess
-import PyGameData
-
-import copy
-import datetime
-
-(
-RecoverWay1, #绑玉找回
-RecoverWay2, #铜钱找回
-) = range(2)
-
-Def_TJGRecoverID = 1 #脱机挂找回索引ID
-Def_QueenRelics = 11 #娲皇遗迹找回索引ID
-## OnDay处理
-# @param curPlayer
-# @return None
-def RecoverOnDay(curPlayer):
- AddRecoverTimes(curPlayer)
- curTime = GameWorld.GetCurrentTime()
-
- curTimeNum = GameWorld.ChangeTimeStrToNum(str(curTime)[:10], ChConfig.TYPE_Time_Format_Day)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverGainLastTime, curTimeNum)
- return
-
-## OnLogin处理
-# @param curPlayer
-# @return None
-def RecoverOnLogin(curPlayer):
- __NotifyRecoverNum(curPlayer)
- return
-
-
-#增加可找回次数
-def AddRecoverTimes(curPlayer):
- playerLV = curPlayer.GetLV()
- if playerLV <= 1: #刚创角不增加次数
- return
- RecoverMaxDay = 2 # 最多可找回X天总次数
- lostOnDayNum = __GetLastRecoverPastDay(curPlayer)
- lostOnDayNum = max(0, lostOnDayNum - 1)
- GameWorld.DebugLog(' 增加可找回次数 lostOnDayNum=%s'%lostOnDayNum)
- recoverNumList = []
- curTime = GameWorld.GetCurrentTime()
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyDataMgr.GetResourcesBackCount()):
- recoverData = ipyDataMgr.GetResourcesBackByIndex(i)
- index = recoverData.GetID()
- if index == Def_TJGRecoverID:
- continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HaveRecover % index, 0)
- relatedID = recoverData.GetRelatedID()
- dailyQuestData = IpyGameDataPY.GetIpyGameDataNotLog('DailyQuest', relatedID)
- if not dailyQuestData:
- continue
- unLockFuncID = dailyQuestData.GetUnLockFuncID()
- if unLockFuncID and not GameFuncComm.GetFuncCanUse(curPlayer, unLockFuncID):
- continue
-
- if dailyQuestData.GetRelatedType() == 2: #副本类
- dataMapID = dailyQuestData.GetRelatedID()
- fbIpyData = FBCommon.GetFBIpyData(dataMapID)
- if not fbIpyData:
- continue
- maxTimes = fbIpyData.GetDayTimes()
- if not maxTimes:
- #没有每日可挑战次数
- continue
- historyMaxLine = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBHistoryMaxLine % dataMapID)
- if dataMapID in ChConfig.Def_UnRecoverNoPassMap and not historyMaxLine:
- #没通关过的特殊副本不可找回
- continue
-
- remainInfo, limitInfo = FBCommon.GetFBDetailCntInfo(curPlayer, dataMapID)
- rCommonCnt, rRegainFbCnt, rExtraCnt, rBuyCnt, rItemAddCnt, noBuyCnt = remainInfo
- rCommonCntlimit, rRegainFbCntLimit, rExtraCntlimit, rBuyCntlimit, rItemAddCntlimit, noBuyCntlimit = limitInfo
- if max(remainInfo) == 0 and not lostOnDayNum:
- continue
- #限时活动判断当天是否有开启
- if dataMapID in PyGameData.FBEnterTimeLimiitMapID:
- fbOpenCnt = __GetLimitFBCnt(curPlayer, lostOnDayNum+1, dataMapID)
- if not fbOpenCnt:
- continue
- addCommonCnt = rCommonCnt + (fbOpenCnt-1)*rCommonCntlimit
- else:
- addCommonCnt = rCommonCnt + lostOnDayNum * rCommonCntlimit
-
- addRegainCnt = rRegainFbCnt + lostOnDayNum * rRegainFbCntLimit
- addExtraCnt = rExtraCnt + lostOnDayNum * rExtraCntlimit
- addBuyCnt = rBuyCnt
- addItemAddCnt = rItemAddCnt #使用物品增加的次数
- addnoBuyCnt = noBuyCnt + lostOnDayNum * noBuyCntlimit
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverGainData % index, historyMaxLine)
- if dataMapID == ChConfig.Def_FBMapID_MunekadoTrial:
- historyStar = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, historyMaxLine-1, False, [dataMapID])
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverGainDataEx % index, historyStar)
-
- #更新可找回次数
- curCommonCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBCommonCnt % index, 0)
- addCommonCnt = min(addCommonCnt + curCommonCnt, rCommonCntlimit * RecoverMaxDay)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBCommonCnt % index, addCommonCnt)
-
- curRegainCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBRegainCnt % index, 0)
- addRegainCnt = min(addRegainCnt + curRegainCnt, rRegainFbCntLimit * RecoverMaxDay)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBRegainCnt % index, addRegainCnt)
-
- curExtraCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBExtraCnt % index, 0)
- addExtraCnt = min(addExtraCnt + curExtraCnt, rExtraCntlimit * RecoverMaxDay)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBExtraCnt % index, addExtraCnt)
-
- curBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBBuyCnt % index, 0)
- addBuyCnt = min(addBuyCnt + curBuyCnt, rBuyCntlimit * RecoverMaxDay)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBBuyCnt % index, addBuyCnt)
-
- curItemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBItemAddCnt % index, 0)
- addItemAddCnt = min(addItemAddCnt + curItemAddCnt, rItemAddCntlimit * RecoverMaxDay)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBItemAddCnt % index, addItemAddCnt)
-
- curnoBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBNoBuyCnt % index, 0)
- addnoBuyCnt = min(addnoBuyCnt + curnoBuyCnt, noBuyCntlimit * RecoverMaxDay)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBNoBuyCnt % index, addnoBuyCnt)
-
- GameWorld.DebugLog('增加找回次数index=%s,addCommonCnt=%s,addRegainCnt=%s,addExtraCnt=%s,addBuyCnt=%s,addItemAddCnt=%s,addnoBuyCnt=%s'
- % (index, addCommonCnt, addRegainCnt, addExtraCnt, addBuyCnt, addItemAddCnt, addnoBuyCnt))
-
-
- recoverNumList.append(index)
- elif dailyQuestData.GetRelatedType() == 1:#每日活动
- dailyID = dailyQuestData.GetRelatedID()
- lostOnDay = lostOnDayNum
- curDayTimes, dayTimesLimit = PlayerActivity.GetDailyActionFinishCnt(curPlayer, dailyID)
- if dailyID in [ShareDefine.DailyActionID_Dice, ShareDefine.DailyActionID_IceLode]:#我要太极只分是否参加过,没参加过才能找回,次数算1次
- dayTimesLimit = 1
- if curDayTimes:
- curDayTimes = dayTimesLimit
- elif dailyID is ShareDefine.DailyActionID_WorldBOSS:
- pass
- if curDayTimes >= dayTimesLimit and not lostOnDay:
- continue
- addCommonCnt = (dayTimesLimit - curDayTimes) + lostOnDay * dayTimesLimit
- if addCommonCnt <=0:
- continue
- curCommonCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBCommonCnt % index, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBCommonCnt % index,
- min(addCommonCnt + curCommonCnt, dayTimesLimit * RecoverMaxDay))
- recoverNumList.append(index)
- GameWorld.DebugLog('增加找回次数index=%s,addCommonCnt=%s'
- % (index, addCommonCnt))
-
- __NotifyRecoverNum(curPlayer)
- return
-
-
-
-## 获取当前距离上一次增加资源找回的天数
-def __GetLastRecoverPastDay(curPlayer):
- recoverGainLastTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverGainLastTime, 0)
- if not recoverGainLastTime:
- return 0
-
- curTime = GameWorld.ChangeTimeStrToNum(GameWorld.GetCurrentDataTimeStr())
- passTick = max(0, curTime - recoverGainLastTime)
- pastDay = passTick / 3600 / 24
- return pastDay
-
-def __GetLimitFBCnt(curPlayer, pastDay, dataMapID):
- # 获取限时副本在几天前共开启了几次
- if not pastDay:
- return 0
- curTime = GameWorld.GetCurrentTime()
- fbOpenCnt = 0
- for diffDays in range(pastDay):
- timeData = curTime - datetime.timedelta(days = diffDays+1)
- dayStr = '%02d%02d'%(timeData.month, timeData.day)
- #GameWorld.DebugLog(' dataMapID=%s,pastDay=%s,dayStr=%s'%(dataMapID, pastDay, dayStr))
- if not FBCommon.GetFBHasOpenToday(dataMapID, dayStr):
- continue
- fbOpenCnt += 1
- #GameWorld.DebugLog(' 111111111111dataMapID=%s,fbOpenCnt=%s'%(dataMapID,fbOpenCnt))
- return fbOpenCnt
-
-#// A5 53 资源找回 #tagCMRecoverGain
-#
-#struct tagCMRecoverGain
-#{
-# tagHead Head;
-# BYTE Type; // 找回方式 0 仙玉 1铜钱
-# BYTE Cnt;
-# BYTE IndexList[Cnt]; // 找回索引列表
-# BYTE RecoverCntList[Cnt]; // 索引对应找回次数列表
-#};
-def OnRecoverGain(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
- GameWorld.DebugLog("==[PlayerRecover]== In->OnRecoverGain(), Name:%s" % curPlayer.GetPlayerName())
-
- recoverWay = clientData.Type
- if recoverWay not in [0, 1]:
- GameWorld.DebugLog("OnRecoverGain() hasn't recover way(%s)" % recoverWay)
- return
- if not clientData.Cnt:
- return
- recoverIndexList = clientData.IndexList
- recoverCntList = clientData.RecoverCntList
- costMoneyDict = {}
- recoverCntDict = {}
- mapIDInfo = []
- totalExp, totalSP, totalMoney, totalItemDict = 0, 0, 0, {}
- for i, index in enumerate(recoverIndexList):
- if index == Def_TJGRecoverID:
- recoverCnt = 1
- else:
- recoverCnt = recoverCntList[i]
- ipyData = IpyGameDataPY.GetIpyGameData('ResourcesBack', index)
- if not ipyData:
- continue
-
- costMoneyList, recoverCnt = __GetRecoverCost(curPlayer, recoverWay, recoverCnt, ipyData)
- if not costMoneyList:
- continue
- for moneyType, moneyCnt in costMoneyList:
- costMoneyDict[moneyType] = costMoneyDict.get(moneyType, 0) + moneyCnt
- #奖励
- if ipyData.GetCanBackTimes() and recoverWay == RecoverWay1:
- dataMapID = __DoLogicBackTimes(curPlayer, ipyData, recoverCnt)
- if dataMapID:
- mapIDInfo.append(dataMapID)
- else:
- exp, sp, money, itemDict = __GetRecoverGain(curPlayer, recoverWay, recoverCnt, ipyData)
- totalExp += exp
- totalSP += sp
- totalMoney += money
- for itemID, itemCnt in itemDict.items():
- totalItemDict[itemID] = totalItemDict.get(itemID, 0) + itemCnt
- recoverCntDict[index] = recoverCnt
-
- if not recoverCntDict:
- return
-
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:recoverWay}
- for moneyType, moneyCnt in costMoneyDict.items():
- costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, moneyType, moneyCnt)
- GameWorld.DebugLog(' moneyType=%s,moneyCnt=%s,costMoneyList=%s'%(moneyType, moneyCnt, costMoneyList))
- if not costMoneyList:
- return
- for mType, mCnt in costMoneyList:
- PlayerControl.PayMoney(curPlayer, mType, mCnt, ChConfig.Def_Cost_RecoverGain, infoDict)
-
-
- if totalExp > 0:
- PlayerControl.PlayerControl(curPlayer).AddExp(totalExp)
-
- giveMoneyType = IPY_GameWorld.TYPE_Price_Silver_Money
- if totalMoney > 0:
- PlayerControl.GiveMoney(curPlayer, giveMoneyType, totalMoney, ChConfig.Def_GiveMoney_Recover)
-
- if totalSP > 0:
- PlayerControl.PlayerAddZhenQi(curPlayer, totalSP, True, True, "Recover")
-
-
- if totalItemDict:
- emptySpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)
- if len(totalItemDict) > emptySpace:
- #邮件
- prizeItemList = [[itemID, itemCnt, 1] for itemID, itemCnt in totalItemDict.items()]
- PlayerControl.SendMailByKey('', [curPlayer.GetPlayerID()], prizeItemList)
-
- else:
- for itemID, itemCnt in totalItemDict.items():
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere])
- if Def_QueenRelics in recoverCntDict:
- PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_QueenRelicsEx, recoverCntDict[Def_QueenRelics])
- DataRecordPack.DR_PlayerRecover(curPlayer, recoverWay, recoverCntDict, totalExp, totalMoney, totalSP, totalItemDict)
- __SetRecoverNum(curPlayer, recoverCntDict)
- __NotifyRecoverNum(curPlayer)
- if mapIDInfo:
- FBCommon.Sync_FBPlayerFBInfoData(curPlayer, mapIDInfo)
- GameWorld.DebugLog("==[PlayerRecover]== Out->OnRecoverGain() recoverWay=%s, costMoneyDict=%s, recoverCntDict=%s, totalExp=%s, totalMoney=%s, totalSP=%s, totalItemDict=%s" % (recoverWay, costMoneyDict, recoverCntDict, totalExp, totalMoney, totalSP, totalItemDict))
- ItemControler.NotifyGiveAwardInfo(curPlayer, totalItemDict, "Recover", totalExp, moneyInfo={giveMoneyType:totalMoney})
- return
-
-def __DoLogicBackTimes(curPlayer, recoverData, recoverCnt):
- #副本或活动恢复次数
- relatedID = recoverData.GetRelatedID()
- dailyQuestData = IpyGameDataPY.GetIpyGameData('DailyQuest', relatedID)
- if not dailyQuestData:
- return 0
- if dailyQuestData.GetRelatedType() == 2: #副本类
- dataMapID = dailyQuestData.GetRelatedID()
- recoverFbCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RecoverFbCnt % dataMapID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RecoverFbCnt % dataMapID, recoverFbCnt + recoverCnt)
- else:
- return 0
- return dataMapID
-
-## 获取消耗
-# @param curPlayer
-# @param recoverWay 找回方式
-# @param recoverIndex 找回索引
-# @return 金钱类型,金钱数量,找回百分比
-def __GetRecoverCost(curPlayer, recoverWay, recoverCnt, ipyData):
- index = ipyData.GetID()
- if index != Def_TJGRecoverID:
- commonCnt, vipExtraCnt = __GetCanRecoverCnt(curPlayer, index)
- recoverCnt = min(recoverCnt, commonCnt + vipExtraCnt)
-
- recoverSecond = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TJGDeadPayTime) #可找回多少秒的脱机挂经验
- if recoverWay == RecoverWay1: #绑玉+仙玉
- normalCostJade = ipyData.GetNormalCostJade()
- vipCostJade = ipyData.GetVipCostJade()
- if index == Def_TJGRecoverID:
- costMoney = int(normalCostJade * recoverSecond / float(3600))
- else:
- costMoney = min(commonCnt, recoverCnt) * normalCostJade + vipCostJade * max(0, recoverCnt - commonCnt)
- costMoneyList = [[ShareDefine.TYPE_Price_Gold_Paper_Money, costMoney]]
- else:
- costCopper = ipyData.GetCostCopper()
- if index == Def_TJGRecoverID:
- costMoney = int(costCopper * recoverSecond / float(3600))
- else:
- costMoney = recoverCnt * costCopper
-
- costMoneyList = [[IPY_GameWorld.TYPE_Price_Silver_Money, costMoney]]
-
- return costMoneyList, recoverCnt
-
-def __GetCanRecoverCnt(curPlayer, index):
- #获取可找回普通次数,vip次数
- curCommonCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBCommonCnt % index, 0)
- curRegainCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBRegainCnt % index, 0)
- curExtraCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBExtraCnt % index, 0)
- curBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBBuyCnt % index, 0)
- curItemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBItemAddCnt % index, 0)
- curnoBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBNoBuyCnt % index, 0)
- return curCommonCnt + curRegainCnt + curExtraCnt + curBuyCnt + curItemAddCnt, curnoBuyCnt
-
-def __SetRecoverNum(curPlayer, recoverCntDict):
- #更新找回次数
- #每日刷新次数>Vip买回来没用的次数>卷轴加的没用的次数>每日恢复次数>Vip额外次数>Vip可购买但未买次数
-
- for index, recoverCnt in recoverCntDict.items():
- curCommonCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBCommonCnt % index, 0)
- curRegainCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBRegainCnt % index, 0)
- curExtraCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBExtraCnt % index, 0)
- curBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBBuyCnt % index, 0)
- curItemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBItemAddCnt % index, 0)
- curnoBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverFBNoBuyCnt % index, 0)
- cntList = [curCommonCnt, curBuyCnt, curItemAddCnt, curRegainCnt, curExtraCnt, curnoBuyCnt]
- newCntList = copy.deepcopy(cntList)
-
- sumCnt = 0
- for i, cnt in enumerate(cntList):
- sumCnt += cnt
- newCntList[i] = max(0, sumCnt - recoverCnt)
- if recoverCnt <= sumCnt:
- break
- newCommonCnt, newBuyCnt, newItemAddCnt, newRegainCnt, newExtraCnt, newnoBuyCnt = newCntList
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBCommonCnt % index, newCommonCnt)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBRegainCnt % index, newRegainCnt)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBBuyCnt % index, newBuyCnt)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBItemAddCnt % index, newItemAddCnt)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBExtraCnt % index, newExtraCnt)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RecoverFBNoBuyCnt % index, newnoBuyCnt)
- GameWorld.DebugLog("资源找回次数: index=%s,recoverCnt=%s" % (index, recoverCnt))
- GameWorld.DebugLog(" curCommonCnt=%s,curBuyCnt=%s,curItemAddCnt=%s,curRegainCnt=%s,curExtraCnt=%s,curnoBuyCnt=%s"
- % (curCommonCnt, curBuyCnt, curItemAddCnt, curRegainCnt, curExtraCnt, curnoBuyCnt))
- GameWorld.DebugLog(" newCommonCnt=%s,newBuyCnt=%s,newItemAddCnt=%s,newRegainCnt=%s,newExtraCnt=%s,newnoBuyCnt=%s"
- % (newCommonCnt, newBuyCnt, newItemAddCnt, newRegainCnt, newExtraCnt, newnoBuyCnt))
- if index != Def_TJGRecoverID:
- #1:找回了普通 2:找回了vip 3:2个都有找回
- recoverData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HaveRecover % index, 0)
- updData = recoverData
- if i < len(cntList) -1:
- if recoverData == 2:
- updData = 3
- elif recoverData == 0:
- updData = 1
- else:
- if max(curCommonCnt, curBuyCnt, curItemAddCnt, curRegainCnt, curExtraCnt) == 0:
- if recoverData == 0:
- updData = 2
- elif recoverData == 1:
- updData = 3
- else:
- updData = 3
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HaveRecover % index, updData)
-
-
- return
-
-## 获取资源
-# @param curPlayer
-# @param recoverWay 找回方式
-# @param recoverIndex 找回索引
-# @param recoverNumList 找回次数列表
-# @return 经验,金币,魔魂
-def __GetRecoverGain(curPlayer, recoverWay, recoverCnt, ipyData):
- index = ipyData.GetID()
- reLV = curPlayer.GetLV()
- reExp = PlayerControl.GetPlayerReExp(curPlayer)
- expRate = PlayerControl.GetLimitExpRate(curPlayer, ChConfig.ExpRateLimitType_Recover)
- extraData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverGainData % index, 0)
- dataEx = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverGainDataEx % index, 0)
- realmLV = curPlayer.GetOfficialRank()
- tjgExp = 0 #脱机挂找回经验
- exp = 0
- sp = 0
- money = 0
- itemDict = {}
- if index == Def_TJGRecoverID:
- Exp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TJGDeadExp)
- Exp1 = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TJGDeadExp1)
- tjgExp = Exp1 * ChConfig.Def_PerPointValue + Exp
-
-
- awardDict = ipyData.GetJadeReward() if recoverWay == RecoverWay1 else ipyData.GetCopperReward()
- expFormula = awardDict.get("exp", '')
- if expFormula:
- exp = recoverCnt * eval(FormulaControl.GetCompileFormula('ResourcesBackEXP%s_%s' % (recoverWay, index), expFormula))
- moneyFormula = awardDict.get("money", '')
- if moneyFormula:
- money = recoverCnt * eval(FormulaControl.GetCompileFormula('ResourcesBackMoney%s_%s' % (recoverWay, index), moneyFormula))
- spFormula = awardDict.get("sp", '')
- if spFormula:
- sp = recoverCnt * eval(FormulaControl.GetCompileFormula('ResourcesBacksp%s_%s' % (recoverWay, index), spFormula))
-
- itemInfoList = awardDict.get("item", [])
- if itemInfoList:
- job = curPlayer.GetJob()
- jobItemList = ipyData.GetJobItemList()
- for itemInfo in itemInfoList:
- itemID = itemInfo.get('ItemID', 0)
- itemcntFormula = itemInfo.get('ItemCount', '')
- if not itemcntFormula:
- continue
- itemcnt = recoverCnt * eval(FormulaControl.GetCompileFormula('ResourcesBackitem%s_%s_%s' % (recoverWay, index, itemID), itemcntFormula))
- if not itemcnt:
- continue
- itemID = __GetJobItem(job, itemID, jobItemList)
- itemDict[itemID] = itemcnt
-
- return exp, sp, money, itemDict
-
-def __GetJobItem(job, itemID, jobItemList):
- ## 获取物品对应的职业物品, 职业从1开始
- for jobItemIDList in jobItemList:
- if type(jobItemIDList) not in [list, tuple]:
- GameWorld.ErrLog("资源找回职业物品组格式错误!itemID=%s,jobItemList=%s" % (itemID, jobItemList))
- return itemID
- if itemID in jobItemIDList:
- if job <= 0 or job > len(jobItemIDList):
- GameWorld.ErrLog("资源找回职业物品配置错误,没有该职业对应物品ID!itemID=%s,job=%s" % (itemID, job))
- return itemID
- return jobItemIDList[job - 1]
- return itemID
-
-## 通知找回次数
-# @param curPlayer
-# @param recoverIndex 找回索引
-# @param recoverNumList 找回次数列表
-# @return None
-def __NotifyRecoverNum(curPlayer, recoverNumList=[]):
- sendPack = ChPyNetSendPack.tagMCRecoverNum()
- sendPack.Clear()
- sendPack.NumInfo = []
-
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyDataMgr.GetResourcesBackCount()):
- recoverData = ipyDataMgr.GetResourcesBackByIndex(i)
- index = recoverData.GetID()
- if recoverNumList and index not in recoverNumList:
- continue
- commonCnt, vipExtraCnt = __GetCanRecoverCnt(curPlayer, index)
- haveRecover = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HaveRecover % index, 0)
- if not commonCnt and not vipExtraCnt and not haveRecover:
- continue
- numInfoPack = ChPyNetSendPack.tagMCRecoverNumInfo()
- numInfoPack.Clear()
- numInfoPack.Index = index
- numInfoPack.RecoverCnt = commonCnt
- numInfoPack.ExtraCnt = vipExtraCnt
- numInfoPack.HaveRecover = haveRecover
- numInfoPack.ExtraData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverGainData % index, 0)
- numInfoPack.ExtraData2 = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RecoverGainDataEx % index, 0)
- sendPack.NumInfo.append(numInfoPack)
- sendPack.Num = len(sendPack.NumInfo)
- NetPackCommon.SendFakePack(curPlayer, sendPack)
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
index caf58b5..fef7d1b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -1032,16 +1032,11 @@
#反外挂验证
#PlayerAutoCheckOnline.HackDefense(curPlayer, tick)
- #副本相关时间处理
- #PlayerFB.DoPlayerFBTimeProcess(curPlayer, tick)
-
#恶意攻击时间处理
#AttackCommon.ProcessMaliciousAttackPlayer(curPlayer, tick)
#活跃放置
#PlayerActivity.ProcessActivityPlace(curPlayer)
- #自定义场景
- #FBLogic.OnCustomSceneProcess(curPlayer, tick)
#炼器
#PlayerActLianqi.OnProcess(curPlayer)
#仙盟攻城战
@@ -1227,36 +1222,4 @@
return
curPlayer.SetDict(ChConfig.Def_PDict_BossStateTick, 0)
PlayerControl.SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_BossState, 0)
- return
-
-def ProcessAreaExp(curPlayer, tick):
- ##给场景经验
- if GameWorld.IsCrossServer():
- return
- if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
- return
- crossMapID = PlayerControl.GetCrossMapID(curPlayer)
- mapID = crossMapID if crossMapID else GameWorld.GetMap().GetMapID()
- if not FBLogic.OnCanGetAreaExp(curPlayer, mapID):
- return
- neutralMapExpAwardDict = IpyGameDataPY.GetFuncEvalCfg('NeutralMapExpAward', 1, {})
- expAwardInfo = GameWorld.GetDictValueByKey(neutralMapExpAwardDict, mapID)
- if not expAwardInfo:
- return
- if len(expAwardInfo) != 2:
- return
- secondCD, expFormula = expAwardInfo
- lastTick = curPlayer.GetDictByKey(ChConfig.Def_PDict_MapAreaExpTick)
- if not lastTick:
- curPlayer.SetDict(ChConfig.Def_PDict_MapAreaExpTick, tick)
- return
- if tick - lastTick < secondCD:
- return
- curPlayer.SetDict(ChConfig.Def_PDict_MapAreaExpTick, tick)
-
- reExp = PlayerControl.GetPlayerReExp(curPlayer)
- reLV = curPlayer.GetLV()
- worldLV = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv)
- addExp = eval(FormulaControl.GetCompileFormula('NeutralMapExpAward%s'%mapID, expFormula))
- PlayerControl.PlayerControl(curPlayer).AddExp(addExp, ShareDefine.Def_ViewExpType_SysEx)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/MapBuff_3017.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/MapBuff_3017.py
deleted file mode 100644
index 3960819..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/MapBuff_3017.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Skill.GameBuffs.MapBuff_3017
-#
-# @todo:多倍福利区
-# @author hxp
-# @date 2014-05-29
-# @version 1.0
-#
-# 详细描述: 多倍福利区
-#
-#---------------------------------------------------------------------
-import FBCommon
-
-"""Version = 2014-05-29 12:00"""
-
-#导入
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-## 多倍福利区区域Buff
-# @param defender Buff承受者
-# @param curEffect 技能效果
-# @return 无意义
-# @remarks 自由PK区域区域Buff
-def OnMapBuff(defender, curEffect):
- # 20013,20014,20015
- effValue = curEffect.GetEffectValue(0)
- FBCommon.SetAreaRewardMultiple(defender, effValue)
- #GameWorld.DebugLog("MapBuff_3017 OnMapBuff effValue=%s" % effValue)
- return
-
-
-## 多倍福利区区域Buff
-# @param defender Buff承受者
-# @param curEffect 技能效果
-# @return 无意义
-def OnMapBuffDel(defender, curEffect):
- # 重置为1倍
- FBCommon.SetAreaRewardMultiple(defender, 1)
- #GameWorld.DebugLog("MapBuff_3017 OnMapBuffDel...")
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
index 9560250..6a298b6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -1352,10 +1352,6 @@
if GameObj.GetHP(curPlayer) <= 0:
return
- if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
- #GameWorld.DebugLog("自定义场景中,不检查!")
- return True
-
#===========================================================================
# if curPlayer.IsMoving():
# GameWorld.DebugLog("移动中不可使用技能")
--
Gitblit v1.8.0