From 80760d7bb7ae12f127bd67613dab8a8a02d4400c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 二月 2026 15:29:30 +0800
Subject: [PATCH] 16 卡牌服务端(删除不需要旧功能:法器、炼体、魅力、情缘、仙宫、神兽、系统特权、印记;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 9
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 1528 ----------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 2831 -------------------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1027.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py | 122 -
/dev/null | 26
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 145 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 323 ---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 229 --
PySysDB/PySysDBPY.h | 123 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 43
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 34
20 files changed, 23 insertions(+), 5,427 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 0156339..1904918 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -554,23 +554,6 @@
list AwardItemList; //奖励物品列表
};
-//境界炼体属性表
-
-struct tagLianTi
-{
- BYTE _LianTiLV; //炼体等级
- list FixedAttrType; //固定属性类型(非累积)
- list FixedAttrValue; //固定属性值(非累积)
- list PlusAttrType; //增强属性类型(非累积)
- list PlusAttrRate; //增强属性万分率(非累积)
- list EatItemAttrType; //每x个培养丹增加属性类型,x=UpEatItemPerCount
- list EatItemAttrValue; //每x个培养丹增加属性值,x=UpEatItemPerCount
- WORD NeedEatCount; //升级所需个数(非累计)
- WORD EatPerCount; //每次培养消耗x个
- list LVUpCostItemInfo; //突破等级道具ID|个数
- DWORD ActivateSkillID; //激活技能ID
-};
-
//功能配置表格 #tagFuncConfig
struct tagFuncConfig
@@ -788,30 +771,6 @@
dict LVLegendAttrLibNumInfo; //属性ID等级段对应数值库编号 {属性ID:{等级:库编号, ...}}
};
-//神兽表
-
-struct tagDogz
-{
- BYTE _DogzID; //神兽ID
- list BaseAttrTypes; //基础属性类型列表
- list BaseAttrValues; //基础属性值列表
- list HelpBattleSkills; //助战技能ID列表
- DWORD FightPowerEx; //助战附加战力
- list EquipPlaceColorList; //穿戴装备颜色限制
- list HelpBattleNotify; //助战广播 ["广播key",[参数1,参数2,...],广播CD分钟]
-};
-
-//神兽强化表
-
-struct tagDogzEquipPlus
-{
- BYTE _EquipPlace; //装备位
- BYTE _PlusLV; //强化等级
- list PlusAttrTypes; //强化属性类型列表
- list PlusAttrValues; //强化属性值列表
- DWORD PlusLVUPTotalExp; //升级所需累计熟练度总值
-};
-
//洗练表 #tagEquipWash
struct tagEquipWash
@@ -858,19 +817,6 @@
WORD _LV; //等级
DWORD UpNeedExp; //升级所需经验数
dict Attr; //属性加成
-};
-
-//法器升级表
-
-struct tagFaQiLVUp
-{
- BYTE _FaQiLV; //法器等级
- WORD NeedEatCount; //升级所需个数(非累计)
- list LVAttrType; //每级额外属性类型(非累积)
- list LVAttrValue; //每级额外属性值(非累积)
- list UpItemAttrType; //每x个培养丹增加属性类型,x=UpEatItemPerCount
- list UpItemAttrValue; //每x个培养丹增加属性值,x=UpEatItemPerCount
- DWORD UpEatItemPerCount; //每次培养消耗x个
};
//坐骑阶级表
@@ -2109,50 +2055,6 @@
BYTE _QualityLV; //品级
};
-//情缘礼物表
-
-struct tagLoveGift
-{
- BYTE _GiftNum; //聘礼ID
- DWORD GiftItemID; //物品ID
- BYTE AllowBatch; //是否允许批量赠送
-};
-
-//情缘提亲表
-
-struct tagMarry
-{
- BYTE _BridePriceID; //聘礼ID
- list CostMoneyInfo; //消耗货币类型|数值
-};
-
-//情缘情戒表
-
-struct tagLoveRing
-{
- BYTE _RingClassLV; //情戒阶级
- BYTE _RingStarLV; //情戒星级
- list CoupleAttrType; //仙侣属性类型(非累积)
- list CoupleAttrValue; //仙侣属性值(非累积)
- list StarAttrType; //星级额外属性类型(非累积)
- list StarAttrValue; //星级额外属性值(非累积)
- list UpItemAttrType; //每x个培养丹增加属性类型,x=UpEatItemPerCount
- list UpItemAttrValue; //每x个培养丹增加属性值,x=UpEatItemPerCount
- DWORD NeedEatCount; //升级所需个数(非累计)
- DWORD UpEatItemPerCount; //每次培养消耗x个
-};
-
-//情缘魅力属性表
-
-struct tagLoveCharm
-{
- BYTE _CharmLV; //魅力等级
- DWORD UpNeedCharm; //升下级所需总魅力
- list LVAttrType; //属性类型
- list LVAttrValue; //总属性值
- list LVAwardItemInfo; //等级物品奖励[[物品ID,个数,是否拍品], ...]
-};
-
//骑宠觉醒表
struct tagHorsePetSkin
@@ -2163,15 +2065,6 @@
DWORD NeedExp; //升级需要经验
dict AttrInfo; //属性
BYTE SkinIndex; //外观
-};
-
-//功能特权奖励表
-
-struct tagFuncSysPrivilege
-{
- BYTE _FuncSysID; //功能系统ID
- BYTE DayNum; //第X天
- list DayAwardItemInfo; // 奖励物品信息 [[物品ID,个数,是否拍品], ...]
};
//累计充值奖励表
@@ -2201,22 +2094,6 @@
list FreeRewardItemList; //免费奖励物品列表 [[物品ID,个数,是否拍品],...]
list ZLRewardItemList; //战令奖励物品列表 [[物品ID,个数,是否拍品],...]
list ZLRewardItemListH; //高级战令奖励物品列表 [[物品ID,个数,是否拍品],...]
-};
-
-//仙宫表
-
-struct tagXiangong
-{
- WORD _XiangongID; //仙宫ID
-};
-
-//仙宫天道树
-
-struct tagTiandaoTree
-{
- WORD _AwardIndex; //奖励索引
- DWORD NeedQiyun; //所需气运值
- list AwardItemList; //奖励物品列表
};
//祝福树
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index 3461340..774f6b1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -58,18 +58,6 @@
PacketSubCMD_1=0x30
PacketCallFunc_1=OnViewBillboard
-;法器
-[PlayerFaQi]
-ScriptName = Player\PlayerFaQi.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xA5
-PacketSubCMD_1=0x32
-PacketCallFunc_1=OnFaQiLVUp
-
;坐骑培养
[PlayerHorse]
ScriptName = Player\PlayerHorse.py
@@ -402,9 +390,9 @@
PacketSubCMD_18=0x30
PacketCallFunc_18=
-PacketCMD_19=0xA1
-PacketSubCMD_19=0x08
-PacketCallFunc_19=OnRefreshMainServerRole
+PacketCMD_19=
+PacketSubCMD_19=
+PacketCallFunc_19=
PacketCMD_20=0xB2
PacketSubCMD_20=0x06
@@ -422,13 +410,13 @@
PacketSubCMD_23=0x35
PacketCallFunc_23=OnSelectRealmDifficulty
-PacketCMD_24=0xA1
-PacketSubCMD_24=0x21
-PacketCallFunc_24=OnChangeJob
+PacketCMD_24=
+PacketSubCMD_24=
+PacketCallFunc_24=
-PacketCMD_25=0xA1
-PacketSubCMD_25=0x20
-PacketCallFunc_25=OnMoneyExchange
+PacketCMD_25=
+PacketSubCMD_25=
+PacketCallFunc_25=
PacketCMD_26=0xA0
PacketSubCMD_26=0x08
@@ -457,22 +445,6 @@
PacketCMD_1 = 0xA5
PacketSubCMD_1 = 0x23
PacketCallFunc_1 = DoRealmLVUp
-
-;炼体
-[PlayerLianTi]
-ScriptName = Player\PlayerLianTi.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 2
-
-PacketCMD_1 = 0xA5
-PacketSubCMD_1 = 0x33
-PacketCallFunc_1 = OnLianTiUp
-
-PacketCMD_2 = 0xA5
-PacketSubCMD_2 = 0x34
-PacketCallFunc_2 = OnLianTiLVUp
;改名功能
[UpdatePlayerName]
@@ -611,19 +583,6 @@
PacketSubCMD_4=0x16
PacketCallFunc_4=OnSelectSkillElement
-
-;印记
-[yinji]
-ScriptName = Player\PlayerYinji.py
-Writer = Alee
-Releaser = Alee
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xB4
-PacketSubCMD_1=0x0D
-PacketCallFunc_1=OnYinji
-
;副本
[FBCommon]
ScriptName = GameWorldLogic\FBProcess\FBCommon.py
@@ -674,34 +633,6 @@
PacketCMD_4=A3
PacketSubCMD_4=27
PacketCallFunc_4=OnLingQiTrain
-
-;神兽
-[PlayerDogz]
-ScriptName = Player\PlayerDogz.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 5
-
-PacketCMD_1=0xA5
-PacketSubCMD_1=0xC0
-PacketCallFunc_1=OnDogzEquipItem
-
-PacketCMD_2=0xA5
-PacketSubCMD_2=0xC1
-PacketCallFunc_2=OnDogzUnEquipItem
-
-PacketCMD_3=0xA5
-PacketSubCMD_3=0xC2
-PacketCallFunc_3=OnDogzBattleStateChange
-
-PacketCMD_4=0xA5
-PacketSubCMD_4=0xC3
-PacketCallFunc_4=OnDogzBuyBatteCount
-
-PacketCMD_5=0xA5
-PacketSubCMD_5=0xC4
-PacketCallFunc_5=OnDogzEquipPlus
;充值
[PlayerCoin]
@@ -757,67 +688,11 @@
Writer = hxp
Releaser = hxp
RegType = 0
-RegisterPackCount = 2
+RegisterPackCount = 1
PacketCMD_1=0xB2
PacketSubCMD_1=0x09
PacketCallFunc_1=OnArenaMatch
-
-PacketCMD_2=
-PacketSubCMD_2=
-PacketCallFunc_2=
-
-;功能系统特权
-[PlayerFuncSysPrivilege]
-ScriptName = Player\PlayerFuncSysPrivilege.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 2
-
-PacketCMD_1=0xB2
-PacketSubCMD_1=0x11
-PacketCallFunc_1=OnActivateFuncSysPrivilege
-
-PacketCMD_2=0xB2
-PacketSubCMD_2=0x12
-PacketCallFunc_2=OnGetFuncSysPrivilegeAward
-
-;情缘
-[PlayerLove]
-ScriptName = Player\PlayerLove.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 7
-
-PacketCMD_1=0xB3
-PacketSubCMD_1=0x10
-PacketCallFunc_1=OnSendGifts
-
-PacketCMD_2=0xB3
-PacketSubCMD_2=0x11
-PacketCallFunc_2=OnMarryReq
-
-PacketCMD_3=0xB3
-PacketSubCMD_3=0x13
-PacketCallFunc_3=OnMarryEatCandy
-
-PacketCMD_4=0xB3
-PacketSubCMD_4=0x14
-PacketCallFunc_4=OnMarryBuyFireworks
-
-PacketCMD_5=0xB3
-PacketSubCMD_5=0x15
-PacketCallFunc_5=OnMarryBreak
-
-PacketCMD_6=0xB3
-PacketSubCMD_6=0x17
-PacketCallFunc_6=OnLoveRingUnlock
-
-PacketCMD_7=0xB3
-PacketSubCMD_7=0x18
-PacketCallFunc_7=OnLoveRingUp
;古宝
[PlayerGubao]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index ca959be..ae89eb9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3554,14 +3554,6 @@
Def_PDict_FamilyGCZSQGridItemCnt = "FamilyGCZSQItemCnt_%s" # 圣泉当前层格子抽中物品个数,参数(格子编号)
#-------------------------------------------------------------------------------
-# 法器
-Def_PDict_FaQiLV = "FaQiLV" # 法器等级
-Def_PDict_FaQiEatItemCount = "FaQiEatItemCount" # 当前阶已吃丹个数
-
-# 炼体
-Def_PDict_LianTiLV = "LianTiLV" # 炼体等级
-Def_PDict_LianTiEatItemCount = "LianTiEatItemCount" # 当前级已吃丹个数
-
# 坐骑
Def_PDict_HorseClassLV = "HorseClassLV" # 坐骑阶级
Def_PDict_HorseLV = "HorseLV" # 坐骑阶等级
@@ -3608,10 +3600,6 @@
Def_PDict_EquipPartSuiteLV = "EQPartSuiteLV_%s_%s" #部位套装等级 参数 部位、套装类型
Def_PDict_EquipPartSuiteActivate = "EQPartSuiteActivate_%s" #套装激活记录 参数 key编号
-#神兽
-Def_PDict_DogzFightState = "DogzFightState_%s" # 神兽助战状态,参数为key编号,按神兽ID二进制位存储
-Def_PDict_DogzBuyHelpbattleCount = "DogzBuyHelpbattleCount" # 额外购买的神兽助战位
-
#装备部位星数
Def_PDict_TotalEquipStar = "TotalEquipStar" #装备部位星数总数
Def_PDict_EquipPartStar = "EQPartStar_%s" #装备部位星数 参数 装备背包格子索引
@@ -3623,18 +3611,6 @@
#竞技场
Def_PDict_ArenaScore = "ArenaScore" # 当前积分
Def_PDict_ArenaWinCnt = "ArenaWinCnt" # 累计胜利次数
-
-#功能系统特权
-Def_PDict_FuncSysPrivilegeActTime = "FuncSysPrivilegeActTime_%s" # 系统功能特权激活时间戳,参数(系统功能ID)
-Def_PDict_FuncSysPrivilegeAward = "FuncSysPrivilegeAward_%s" # 系统功能特权领奖记录,参数(系统功能ID)
-
-#情缘
-Def_PDict_LoveRingClassLV = "LoveRingClassLV" # 情戒 - 阶级
-Def_PDict_LoveRingStarLV = "LoveRingStarLV" # 情戒 - 星级
-Def_PDict_LoveRingEatCount = "LoveRingEatCount" # 情戒 - 本星已淬炼道具数
-Def_PDict_LoveCoupleIntimacy = "LoveCoupleIntimacy" # 伴侣亲密度
-Def_PDict_LoveEatCandyToday = "LoveEatCandyToday" # 今日已吃喜糖次数
-Def_PDict_CharmLV = "CharmLV" # 魅力等级
#古宝
Def_PDict_GubaoInfo = "Gubao_%s" # 古宝信息,参数(古宝ID),特殊效果层*100000 + 等级*100 + 星级
@@ -3678,11 +3654,6 @@
Def_PDict_GoldRushWarehouse = "GoldRushWarehouse_%s" # 仓库完成淘金ID,参数(仓库位置索引)
Def_PDict_GoldRushRecoverTime = "GoldRushRecoverTime" # 上次恢复淘金令时间戳
Def_PDict_GoldRushAutoEndTime = "GoldRushAutoEndTime" # 自动淘金到期时间戳
-
-#仙宫
-Def_PDict_XiangongLikeState = "XiangongLikeState_%s" # 指定仙宫今日是否已点赞,参数(仙宫ID),仙宫ID为0时代表每日的仙宫功能点赞
-Def_PDict_TiandaoQiyun = "TiandaoQiyun" # 天道树当前气运
-Def_PDict_TiandaoAward = "TiandaoAward_%s" # 天道树领奖记录,按奖励索引记录是否已领取,参数(key编号)
#武将
Def_PDict_HeroSkin = "HeroSkin_%s" # 武将皮肤解锁状态,按皮肤索引二进制存储,参数(武将ID)
@@ -4247,11 +4218,8 @@
Def_Cost_BuyKillBossCnt:"BuyKillBossCnt",
Def_Cost_EquipStar:"EquipStar",
Def_Cost_ActivityPlace:"ActivityPlace",
-Def_Cost_FaQi:"FaQi",
-Def_Cost_Love:"Love",
Def_Cost_BuyOrderInfo:"BuyOrderInfo",
Def_Cost_CrossBattlefield:"CrossBattlefield",
-Def_Cost_LianTi:"LianTi",
}
## -----------------------------------------------------
@@ -4465,9 +4433,7 @@
ItemDel_HorsePetAwake:"HorsePetAwake",
ItemDel_ActivityPlace:"ActivityPlace",
ItemDel_AuctionHouse:"AuctionHouse",
- ItemDel_FaQi:"FaQi",
ItemDel_BTGM:"BTGM",
- ItemDel_LianTi:"LianTi",
}
##==================================================================================================
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 7f6125f..8bb63c4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -331,58 +331,6 @@
#------------------------------------------------------
-# A1 21 转职业 #tagCMChangeJob
-
-class tagCMChangeJob(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("TagJob", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA1
- self.SubCmd = 0x21
- 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 = 0xA1
- self.SubCmd = 0x21
- self.TagJob = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMChangeJob)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A1 21 转职业 //tagCMChangeJob:
- Cmd:%s,
- SubCmd:%s,
- TagJob:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.TagJob
- )
- return DumpString
-
-
-m_NAtagCMChangeJob=tagCMChangeJob()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeJob.Cmd,m_NAtagCMChangeJob.SubCmd))] = m_NAtagCMChangeJob
-
-
-#------------------------------------------------------
# A1 25 代币购买充值商品编号商品 #tagCMCoinBuyOrderInfo
class tagCMCoinBuyOrderInfo(Structure):
@@ -461,66 +409,6 @@
#------------------------------------------------------
-# A1 20 货币兑换 #tagCMMoneyExchange
-
-class tagCMMoneyExchange(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("SrcMoneyType", c_ubyte), # 源货币类型
- ("TagMoneyType", c_ubyte), # 目标货币类型
- ("ExchangeValue", c_int), # 兑换数量(消耗源货币的数量)
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA1
- self.SubCmd = 0x20
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA1
- self.SubCmd = 0x20
- self.SrcMoneyType = 0
- self.TagMoneyType = 0
- self.ExchangeValue = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMMoneyExchange)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A1 20 货币兑换 //tagCMMoneyExchange:
- Cmd:%s,
- SubCmd:%s,
- SrcMoneyType:%d,
- TagMoneyType:%d,
- ExchangeValue:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.SrcMoneyType,
- self.TagMoneyType,
- self.ExchangeValue
- )
- return DumpString
-
-
-m_NAtagCMMoneyExchange=tagCMMoneyExchange()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMoneyExchange.Cmd,m_NAtagCMMoneyExchange.SubCmd))] = m_NAtagCMMoneyExchange
-
-
-#------------------------------------------------------
# A1 23 查询充值次数 #tagCMQueryCoinToGoldCount
class tagCMQueryCoinToGoldCount(Structure):
@@ -570,54 +458,6 @@
m_NAtagCMQueryCoinToGoldCount=tagCMQueryCoinToGoldCount()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryCoinToGoldCount.Cmd,m_NAtagCMQueryCoinToGoldCount.SubCmd))] = m_NAtagCMQueryCoinToGoldCount
-
-
-#------------------------------------------------------
-# A1 08 刷新主服角色信息 #tagCMRefreshMainServerRole
-
-class tagCMRefreshMainServerRole(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA1
- self.SubCmd = 0x08
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA1
- self.SubCmd = 0x08
- return
-
- def GetLength(self):
- return sizeof(tagCMRefreshMainServerRole)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A1 08 刷新主服角色信息 //tagCMRefreshMainServerRole:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMRefreshMainServerRole=tagCMRefreshMainServerRole()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMainServerRole.Cmd,m_NAtagCMRefreshMainServerRole.SubCmd))] = m_NAtagCMRefreshMainServerRole
#------------------------------------------------------
@@ -5414,331 +5254,6 @@
#------------------------------------------------------
-# A5 C2 神兽变更助战状态 #tagCMDogzBattleStateChange
-
-class tagCMDogzBattleStateChange(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("DogzID", c_ubyte), # 神兽ID
- ("BatteState", c_ubyte), #助战状态,0-召回,1-助战
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0xC2
- 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 = 0xC2
- self.DogzID = 0
- self.BatteState = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMDogzBattleStateChange)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 C2 神兽变更助战状态 //tagCMDogzBattleStateChange:
- Cmd:%s,
- SubCmd:%s,
- DogzID:%d,
- BatteState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.DogzID,
- self.BatteState
- )
- return DumpString
-
-
-m_NAtagCMDogzBattleStateChange=tagCMDogzBattleStateChange()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBattleStateChange.Cmd,m_NAtagCMDogzBattleStateChange.SubCmd))] = m_NAtagCMDogzBattleStateChange
-
-
-#------------------------------------------------------
-# A5 C3 神兽购买助战位 #tagCMDogzBuyBatteCount
-
-class tagCMDogzBuyBatteCount(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0xC3
- 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 = 0xC3
- return
-
- def GetLength(self):
- return sizeof(tagCMDogzBuyBatteCount)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 C3 神兽购买助战位 //tagCMDogzBuyBatteCount:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMDogzBuyBatteCount=tagCMDogzBuyBatteCount()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBuyBatteCount.Cmd,m_NAtagCMDogzBuyBatteCount.SubCmd))] = m_NAtagCMDogzBuyBatteCount
-
-
-#------------------------------------------------------
-# A5 C0 神兽穿戴装备 #tagCMDogzEquipItem
-
-class tagCMDogzEquipItem(Structure):
- Head = tagHead()
- DogzID = 0 #(BYTE DogzID)// 神兽ID
- EquipIndexCount = 0 #(BYTE EquipIndexCount)
- EquipIndexList = list() #(vector<BYTE> EquipIndexList)//神兽装备所在神兽背包索引列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0xC0
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.DogzID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.EquipIndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.EquipIndexCount):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.EquipIndexList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0xC0
- self.DogzID = 0
- self.EquipIndexCount = 0
- self.EquipIndexList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 1 * self.EquipIndexCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.DogzID)
- data = CommFunc.WriteBYTE(data, self.EquipIndexCount)
- for i in range(self.EquipIndexCount):
- data = CommFunc.WriteBYTE(data, self.EquipIndexList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- DogzID:%d,
- EquipIndexCount:%d,
- EquipIndexList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.DogzID,
- self.EquipIndexCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagCMDogzEquipItem=tagCMDogzEquipItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipItem.Head.Cmd,m_NAtagCMDogzEquipItem.Head.SubCmd))] = m_NAtagCMDogzEquipItem
-
-
-#------------------------------------------------------
-# A5 C4 神兽装备强化 #tagCMDogzEquipPlus
-
-class tagCMDogzEquipPlus(Structure):
- Head = tagHead()
- EquipIndex = 0 #(BYTE EquipIndex)//神兽装备背包中索引
- IndexCount = 0 #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
- IndexList = list() #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
- IndexUseCountList = list() #(vector<DWORD> IndexUseCountList)//材料所在神兽物品背包索引对应使用个数列表
- IsDouble = 0 #(BYTE IsDouble)//是否双倍强化
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0xC4
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.IndexCount):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.IndexList.append(value)
- for i in range(self.IndexCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.IndexUseCountList.append(value)
- self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0xC4
- self.EquipIndex = 0
- self.IndexCount = 0
- self.IndexList = list()
- self.IndexUseCountList = list()
- self.IsDouble = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 1 * self.IndexCount
- length += 4 * self.IndexCount
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.EquipIndex)
- data = CommFunc.WriteBYTE(data, self.IndexCount)
- for i in range(self.IndexCount):
- data = CommFunc.WriteBYTE(data, self.IndexList[i])
- for i in range(self.IndexCount):
- data = CommFunc.WriteDWORD(data, self.IndexUseCountList[i])
- data = CommFunc.WriteBYTE(data, self.IsDouble)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- EquipIndex:%d,
- IndexCount:%d,
- IndexList:%s,
- IndexUseCountList:%s,
- IsDouble:%d
- '''\
- %(
- self.Head.OutputString(),
- self.EquipIndex,
- self.IndexCount,
- "...",
- "...",
- self.IsDouble
- )
- return DumpString
-
-
-m_NAtagCMDogzEquipPlus=tagCMDogzEquipPlus()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipPlus.Head.Cmd,m_NAtagCMDogzEquipPlus.Head.SubCmd))] = m_NAtagCMDogzEquipPlus
-
-
-#------------------------------------------------------
-# A5 C1 神兽卸下装备 #tagCMDogzUnEquipItem
-
-class tagCMDogzUnEquipItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("DogzID", c_ubyte), # 神兽ID
- ("EquipPlace", c_ubyte), #卸下的装备位, 0代表卸下全部
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0xC1
- 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 = 0xC1
- self.DogzID = 0
- self.EquipPlace = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMDogzUnEquipItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 C1 神兽卸下装备 //tagCMDogzUnEquipItem:
- Cmd:%s,
- SubCmd:%s,
- DogzID:%d,
- EquipPlace:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.DogzID,
- self.EquipPlace
- )
- return DumpString
-
-
-m_NAtagCMDogzUnEquipItem=tagCMDogzUnEquipItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzUnEquipItem.Cmd,m_NAtagCMDogzUnEquipItem.SubCmd))] = m_NAtagCMDogzUnEquipItem
-
-
-#------------------------------------------------------
# A5 C5 装备部位升星 #tagCMEquipPartStarUp
class tagCMEquipPartStarUp(Structure):
@@ -5894,62 +5409,6 @@
#------------------------------------------------------
-# A5 32 法器升级 #tagCMFaQiLVUp
-
-class tagCMFaQiLVUp(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("UseItemCnt", c_ushort), #消耗材料个数
- ("IsAutoBuy", c_ubyte), #是否自动购买
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x32
- 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 = 0x32
- self.UseItemCnt = 0
- self.IsAutoBuy = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMFaQiLVUp)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 32 法器升级 //tagCMFaQiLVUp:
- Cmd:%s,
- SubCmd:%s,
- UseItemCnt:%d,
- IsAutoBuy:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.UseItemCnt,
- self.IsAutoBuy
- )
- return DumpString
-
-
-m_NAtagCMFaQiLVUp=tagCMFaQiLVUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaQiLVUp.Cmd,m_NAtagCMFaQiLVUp.SubCmd))] = m_NAtagCMFaQiLVUp
-
-
-#------------------------------------------------------
# A5 41 领取投资理财回报 #tagCMGetInvestReward
class tagCMGetInvestReward(Structure):
@@ -6059,110 +5518,6 @@
m_NAtagCMGoldInvest=tagCMGoldInvest()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGoldInvest.Cmd,m_NAtagCMGoldInvest.SubCmd))] = m_NAtagCMGoldInvest
-
-
-#------------------------------------------------------
-# A5 34 炼体突破 #tagCMLianTiLVUp
-
-class tagCMLianTiLVUp(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- 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 = 0xA5
- self.SubCmd = 0x34
- return
-
- def GetLength(self):
- return sizeof(tagCMLianTiLVUp)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 34 炼体突破 //tagCMLianTiLVUp:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMLianTiLVUp=tagCMLianTiLVUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiLVUp.Cmd,m_NAtagCMLianTiLVUp.SubCmd))] = m_NAtagCMLianTiLVUp
-
-
-#------------------------------------------------------
-# A5 33 炼体提升 #tagCMLianTiUp
-
-class tagCMLianTiUp(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("UseItemCnt", c_int), #消耗材料个数
- ("IsAutoBuy", c_ubyte), #是否自动购买
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- 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 = 0xA5
- self.SubCmd = 0x33
- self.UseItemCnt = 0
- self.IsAutoBuy = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMLianTiUp)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 33 炼体提升 //tagCMLianTiUp:
- Cmd:%s,
- SubCmd:%s,
- UseItemCnt:%d,
- IsAutoBuy:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.UseItemCnt,
- self.IsAutoBuy
- )
- return DumpString
-
-
-m_NAtagCMLianTiUp=tagCMLianTiUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiUp.Cmd,m_NAtagCMLianTiUp.SubCmd))] = m_NAtagCMLianTiUp
#------------------------------------------------------
@@ -8293,58 +7648,6 @@
#------------------------------------------------------
-# A9 07 点赞仙宫 #tagCGLikeXiangong
-
-class tagCGLikeXiangong(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("XiangongID", c_ushort), # 仙宫ID,为0时代表每日的仙宫点赞
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA9
- self.SubCmd = 0x07
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA9
- self.SubCmd = 0x07
- self.XiangongID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCGLikeXiangong)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A9 07 点赞仙宫 //tagCGLikeXiangong:
- Cmd:%s,
- SubCmd:%s,
- XiangongID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.XiangongID
- )
- return DumpString
-
-
-m_NAtagCGLikeXiangong=tagCGLikeXiangong()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGLikeXiangong.Cmd,m_NAtagCGLikeXiangong.SubCmd))] = m_NAtagCGLikeXiangong
-
-
-#------------------------------------------------------
# A9 A5 查看竞技场对战玩家最新信息 #tagCGQueryArenaBattlePlayer
class tagCGQueryArenaBattlePlayer(Structure):
@@ -8662,58 +7965,6 @@
m_NAtagCGQueryRecommendFriends=tagCGQueryRecommendFriends()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryRecommendFriends.Cmd,m_NAtagCGQueryRecommendFriends.SubCmd))] = m_NAtagCGQueryRecommendFriends
-
-
-#------------------------------------------------------
-# A9 06 查看仙宫仙名录 #tagCGQueryXiangongRecPlayers
-
-class tagCGQueryXiangongRecPlayers(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("XiangongID", c_ushort), # 仙宫ID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA9
- self.SubCmd = 0x06
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA9
- self.SubCmd = 0x06
- self.XiangongID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCGQueryXiangongRecPlayers)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A9 06 查看仙宫仙名录 //tagCGQueryXiangongRecPlayers:
- Cmd:%s,
- SubCmd:%s,
- XiangongID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.XiangongID
- )
- return DumpString
-
-
-m_NAtagCGQueryXiangongRecPlayers=tagCGQueryXiangongRecPlayers()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryXiangongRecPlayers.Cmd,m_NAtagCGQueryXiangongRecPlayers.SubCmd))] = m_NAtagCGQueryXiangongRecPlayers
#------------------------------------------------------
@@ -9701,73 +8952,6 @@
#------------------------------------------------------
-# B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
-
-class tagCMActivateFuncSysPrivilege(Structure):
- Head = tagHead()
- ActivateCount = 0 #(BYTE ActivateCount)// 激活个数
- ActivateFuncSysIDList = list() #(vector<BYTE> ActivateFuncSysIDList)// 激活功能系统ID列表,全部激活则需要发所有ID列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB2
- self.Head.SubCmd = 0x11
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ActivateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ActivateCount):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.ActivateFuncSysIDList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB2
- self.Head.SubCmd = 0x11
- self.ActivateCount = 0
- self.ActivateFuncSysIDList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1 * self.ActivateCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ActivateCount)
- for i in range(self.ActivateCount):
- data = CommFunc.WriteBYTE(data, self.ActivateFuncSysIDList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ActivateCount:%d,
- ActivateFuncSysIDList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ActivateCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagCMActivateFuncSysPrivilege=tagCMActivateFuncSysPrivilege()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateFuncSysPrivilege.Head.Cmd,m_NAtagCMActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagCMActivateFuncSysPrivilege
-
-
-#------------------------------------------------------
# B2 06 玩家加点 #tagCMAddPoint
class tagCMAddPoint(Structure):
@@ -10316,62 +9500,6 @@
m_NAtagCSFuncPresetUpdName=tagCSFuncPresetUpdName()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSFuncPresetUpdName.Head.Cmd,m_NAtagCSFuncPresetUpdName.Head.SubCmd))] = m_NAtagCSFuncPresetUpdName
-
-
-#------------------------------------------------------
-# B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
-
-class tagCMGetFuncSysPrivilegeAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("FuncSysID", c_ubyte), # 功能系统ID
- ("DayNum", c_ubyte), # 第X天,1为第1天
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB2
- self.SubCmd = 0x12
- 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 = 0x12
- self.FuncSysID = 0
- self.DayNum = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetFuncSysPrivilegeAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B2 12 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
- Cmd:%s,
- SubCmd:%s,
- FuncSysID:%d,
- DayNum:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.FuncSysID,
- self.DayNum
- )
- return DumpString
-
-
-m_NAtagCMGetFuncSysPrivilegeAward=tagCMGetFuncSysPrivilegeAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFuncSysPrivilegeAward.Cmd,m_NAtagCMGetFuncSysPrivilegeAward.SubCmd))] = m_NAtagCMGetFuncSysPrivilegeAward
#------------------------------------------------------
@@ -11863,606 +10991,6 @@
#------------------------------------------------------
-# B3 19 提升魅力等级 #tagCGCharmLVUp
-
-class tagCGCharmLVUp(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x19
- 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 = 0xB3
- self.SubCmd = 0x19
- return
-
- def GetLength(self):
- return sizeof(tagCGCharmLVUp)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 19 提升魅力等级 //tagCGCharmLVUp:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCGCharmLVUp=tagCGCharmLVUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmLVUp.Cmd,m_NAtagCGCharmLVUp.SubCmd))] = m_NAtagCGCharmLVUp
-
-
-#------------------------------------------------------
-# B3 09 魅力贡献榜查看 #tagCGCharmOfferBillboardQuery
-
-class tagCGCharmOfferBillboardQuery(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PlayerID", c_int), # 魅力玩家ID
- ("QueryType", c_ubyte), # 查看类型: 1-总榜,2-周榜,3-日榜
- ("QueryCount", c_ubyte), # 查看名次数量,最大255
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x09
- 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 = 0xB3
- self.SubCmd = 0x09
- self.PlayerID = 0
- self.QueryType = 0
- self.QueryCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagCGCharmOfferBillboardQuery)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 09 魅力贡献榜查看 //tagCGCharmOfferBillboardQuery:
- Cmd:%s,
- SubCmd:%s,
- PlayerID:%d,
- QueryType:%d,
- QueryCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PlayerID,
- self.QueryType,
- self.QueryCount
- )
- return DumpString
-
-
-m_NAtagCGCharmOfferBillboardQuery=tagCGCharmOfferBillboardQuery()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmOfferBillboardQuery.Cmd,m_NAtagCGCharmOfferBillboardQuery.SubCmd))] = m_NAtagCGCharmOfferBillboardQuery
-
-
-#------------------------------------------------------
-# B3 17 情戒解锁 #tagCMLoveRingUnlock
-
-class tagCMLoveRingUnlock(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x17
- 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 = 0xB3
- self.SubCmd = 0x17
- return
-
- def GetLength(self):
- return sizeof(tagCMLoveRingUnlock)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 17 情戒解锁 //tagCMLoveRingUnlock:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMLoveRingUnlock=tagCMLoveRingUnlock()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUnlock.Cmd,m_NAtagCMLoveRingUnlock.SubCmd))] = m_NAtagCMLoveRingUnlock
-
-
-#------------------------------------------------------
-# B3 18 情戒升级 #tagCMLoveRingUp
-
-class tagCMLoveRingUp(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("UseItemCnt", c_int), #消耗材料个数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x18
- 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 = 0xB3
- self.SubCmd = 0x18
- self.UseItemCnt = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMLoveRingUp)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 18 情戒升级 //tagCMLoveRingUp:
- Cmd:%s,
- SubCmd:%s,
- UseItemCnt:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.UseItemCnt
- )
- return DumpString
-
-
-m_NAtagCMLoveRingUp=tagCMLoveRingUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUp.Cmd,m_NAtagCMLoveRingUp.SubCmd))] = m_NAtagCMLoveRingUp
-
-
-#------------------------------------------------------
-# B3 15 离婚 #tagCMMarryBreak
-
-class tagCMMarryBreak(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("BreakType", c_ubyte), # 0-和平离婚;1-强制离婚
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x15
- 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 = 0xB3
- self.SubCmd = 0x15
- self.BreakType = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMMarryBreak)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 15 离婚 //tagCMMarryBreak:
- Cmd:%s,
- SubCmd:%s,
- BreakType:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.BreakType
- )
- return DumpString
-
-
-m_NAtagCMMarryBreak=tagCMMarryBreak()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBreak.Cmd,m_NAtagCMMarryBreak.SubCmd))] = m_NAtagCMMarryBreak
-
-
-#------------------------------------------------------
-# B3 16 和平离婚回应 #tagGCMarryBreakResponse
-
-class tagGCMarryBreakResponse(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("IsOK", c_ubyte), # 是否同意,0-否,1-是
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- 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 = 0xB3
- self.SubCmd = 0x16
- self.IsOK = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCMarryBreakResponse)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 16 和平离婚回应 //tagGCMarryBreakResponse:
- Cmd:%s,
- SubCmd:%s,
- IsOK:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.IsOK
- )
- return DumpString
-
-
-m_NAtagGCMarryBreakResponse=tagGCMarryBreakResponse()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryBreakResponse.Cmd,m_NAtagGCMarryBreakResponse.SubCmd))] = m_NAtagGCMarryBreakResponse
-
-
-#------------------------------------------------------
-# B3 14 购买婚礼烟花 #tagCMMarryBuyFireworks
-
-class tagCMMarryBuyFireworks(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PlayerIDA", c_int), # 喜糖所属玩家IDA
- ("PlayerIDB", c_int), # 喜糖所属玩家IDB
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x14
- 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 = 0xB3
- self.SubCmd = 0x14
- self.PlayerIDA = 0
- self.PlayerIDB = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMMarryBuyFireworks)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 14 购买婚礼烟花 //tagCMMarryBuyFireworks:
- Cmd:%s,
- SubCmd:%s,
- PlayerIDA:%d,
- PlayerIDB:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PlayerIDA,
- self.PlayerIDB
- )
- return DumpString
-
-
-m_NAtagCMMarryBuyFireworks=tagCMMarryBuyFireworks()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBuyFireworks.Cmd,m_NAtagCMMarryBuyFireworks.SubCmd))] = m_NAtagCMMarryBuyFireworks
-
-
-#------------------------------------------------------
-# B3 13 吃喜糖 #tagCMMarryEatCandy
-
-class tagCMMarryEatCandy(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PlayerIDA", c_int), # 喜糖所属玩家IDA
- ("PlayerIDB", c_int), # 喜糖所属玩家IDB
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x13
- 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 = 0xB3
- self.SubCmd = 0x13
- self.PlayerIDA = 0
- self.PlayerIDB = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMMarryEatCandy)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 13 吃喜糖 //tagCMMarryEatCandy:
- Cmd:%s,
- SubCmd:%s,
- PlayerIDA:%d,
- PlayerIDB:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PlayerIDA,
- self.PlayerIDB
- )
- return DumpString
-
-
-m_NAtagCMMarryEatCandy=tagCMMarryEatCandy()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryEatCandy.Cmd,m_NAtagCMMarryEatCandy.SubCmd))] = m_NAtagCMMarryEatCandy
-
-
-#------------------------------------------------------
-# B3 11 提亲 #tagCMMarryReq
-
-class tagCMMarryReq(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("TagPlayerID", c_int), # 目标玩家ID
- ("BridePriceID", c_ubyte), # 聘礼ID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x11
- 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 = 0xB3
- self.SubCmd = 0x11
- self.TagPlayerID = 0
- self.BridePriceID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMMarryReq)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 11 提亲 //tagCMMarryReq:
- Cmd:%s,
- SubCmd:%s,
- TagPlayerID:%d,
- BridePriceID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.TagPlayerID,
- self.BridePriceID
- )
- return DumpString
-
-
-m_NAtagCMMarryReq=tagCMMarryReq()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryReq.Cmd,m_NAtagCMMarryReq.SubCmd))] = m_NAtagCMMarryReq
-
-
-#------------------------------------------------------
-# B3 12 提亲回应 #tagCGMarryResponse
-
-class tagCGMarryResponse(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ReqPlayerID", c_int), # 提亲的玩家ID
- ("IsOK", c_ubyte), # 是否同意,0-否,1-是
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x12
- 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 = 0xB3
- self.SubCmd = 0x12
- self.ReqPlayerID = 0
- self.IsOK = 0
- return
-
- def GetLength(self):
- return sizeof(tagCGMarryResponse)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 12 提亲回应 //tagCGMarryResponse:
- Cmd:%s,
- SubCmd:%s,
- ReqPlayerID:%d,
- IsOK:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ReqPlayerID,
- self.IsOK
- )
- return DumpString
-
-
-m_NAtagCGMarryResponse=tagCGMarryResponse()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMarryResponse.Cmd,m_NAtagCGMarryResponse.SubCmd))] = m_NAtagCGMarryResponse
-
-
-#------------------------------------------------------
-# B3 10 送礼物 #tagCMSendGifts
-
-class tagCMSendGifts(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("TagPlayerID", c_int), # 目标玩家ID
- ("GiftNum", c_ushort), # 赠送礼物编号
- ("GiftCount", c_int), # 赠送礼物数量
- ("IsAutoBuy", c_ubyte), # 是否自动购买
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- 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 = 0xB3
- self.SubCmd = 0x10
- self.TagPlayerID = 0
- self.GiftNum = 0
- self.GiftCount = 0
- self.IsAutoBuy = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMSendGifts)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 10 送礼物 //tagCMSendGifts:
- Cmd:%s,
- SubCmd:%s,
- TagPlayerID:%d,
- GiftNum:%d,
- GiftCount:%d,
- IsAutoBuy:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.TagPlayerID,
- self.GiftNum,
- self.GiftCount,
- self.IsAutoBuy
- )
- return DumpString
-
-
-m_NAtagCMSendGifts=tagCMSendGifts()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendGifts.Cmd,m_NAtagCMSendGifts.SubCmd))] = m_NAtagCMSendGifts
-
-
-#------------------------------------------------------
#B3 04 加入黑名单 #tagCGAddBlackList
class tagCGAddBlackList(Structure):
@@ -13900,62 +12428,6 @@
m_NAtagCMUseSkillEx=tagCMUseSkillEx()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseSkillEx.Cmd,m_NAtagCMUseSkillEx.SubCmd))] = m_NAtagCMUseSkillEx
-
-
-#------------------------------------------------------
-# B4 0D 战斗印记 #tagCMYinji
-
-class tagCMYinji(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Count", c_ubyte),
- ("Type", c_ubyte), # 0 加,1减
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB4
- self.SubCmd = 0x0D
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB4
- self.SubCmd = 0x0D
- self.Count = 0
- self.Type = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMYinji)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B4 0D 战斗印记 //tagCMYinji:
- Cmd:%s,
- SubCmd:%s,
- Count:%d,
- Type:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Count,
- self.Type
- )
- return DumpString
-
-
-m_NAtagCMYinji=tagCMYinji()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMYinji.Cmd,m_NAtagCMYinji.SubCmd))] = m_NAtagCMYinji
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index aad6ec3..f22632b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -1218,742 +1218,6 @@
#------------------------------------------------------
-# A1 12 玩家初始化 #tagMCDBPlayer
-
-class tagMCDBPlayer(Structure):
- Head = tagHead()
- AccID = "" #(char AccID[65])//帐号名, 该角色所在的帐号的用户名
- PlayerID = 0 #(DWORD PlayerID)
- PlayerName = "" #(char PlayerName[33])//size = 14
- AccState = 0 #(BYTE AccState)//0: 未创建, 1: 创建OK,正常登录 2:封号 3:已删除
- GMLevel = 0 #(BYTE GMLevel)//GM等级, 0:不是GM >=1 : GM的等级
- Sex = 0 #(BYTE Sex)//性别
- Job = 0 #(BYTE Job)//职业, 0.新手 1.游侠 2.战士 3.弓箭手 4.术士 5.道士
- ReincarnationLv = 0 #(WORD ReincarnationLv)// 转生等级
- LV = 0 #(WORD LV)//等级
- LVEx = 0 #(WORD LVEx)//玩家等级副本,用于转生
- LV2 = 0 #(WORD LV2)//大师等级
- ExpPoint = 0 #(DWORD ExpPoint)//扩充经验点数
- TotalExp = 0 #(DWORD TotalExp)//总经验
- Family = 0 #(DWORD Family)//家族
- FamilyName = "" #(char FamilyName[33])//家族名称
- TeamHornor = 0 #(int TeamHornor)//组队荣誉
- FamilyHornor = 0 #(int FamilyHornor)//家族荣耀
- FamilyActiveValue = 0 #(int FamilyActiveValue)//家族活跃度
- LastWeekFamilyActiveValue = 0 #(int LastWeekFamilyActiveValue)//上周家族活跃度
- CountryHornor = 0 #(int CountryHornor)//本周国家功勋值
- CountryLastWeekHornor = 0 #(int CountryLastWeekHornor)//上周国家功勋值
- Mate = 0 #(DWORD Mate)
- Gold = 0 #(DWORD Gold)//金子
- GoldPaper = 0 #(DWORD GoldPaper)//金票
- Silver = 0 #(DWORD Silver)//银子
- SilverPaper = 0 #(DWORD SilverPaper)//银票
- FightPoint = 0 #(DWORD FightPoint)//战斗值
- HappyPoint = 0 #(DWORD HappyPoint)//脱机挂时长(秒)
- LineID = 0 #(BYTE LineID)//角色所在线路
- MapID = 0 #(WORD MapID)//角色所在地图
- PosX = 0 #(WORD PosX)//角色坐标
- PosY = 0 #(WORD PosY)
- RebornMapID = 0 #(WORD RebornMapID)//重生点地图ID
- RebornPosX = 0 #(WORD RebornPosX)
- RebornPosY = 0 #(WORD RebornPosY)
- State = 0 #(BYTE State)//角色状态 0.正常在线1.脱机挂在线 2脱机挂死亡
- HP = 0 #(DWORD HP)//当前HP
- XP = 0 #(DWORD XP)//当前XP
- HPRestoreSetting = 0 #(WORD HPRestoreSetting)//少于这个值%自动喝血
- MPRestoreSetting = 0 #(WORD MPRestoreSetting)//少于这个值%自动喝魔
- FreePoint = 0 #(DWORD FreePoint)//未分配点数
- FreeSkillPoint = 0 #(DWORD FreeSkillPoint)//未分配的技能点
- BaseSTR = 0 #(int BaseSTR)//裸体力量
- BasePNE = 0 #(int BasePNE)//裸体真元
- BasePHY = 0 #(int BasePHY)//裸体筋骨
- BaseCON = 0 #(int BaseCON)//裸体体魄
- STR = 0 #(int STR)//力量
- PNE = 0 #(int PNE)//真元
- PHY = 0 #(int PHY)//筋骨
- CON = 0 #(int CON)//体魄
- PKValue = 0 #(WORD PKValue)//衡量PK能力的一项属性,由攻防计算而得
- BackpackLV = 0 #(BYTE BackpackLV)//背包等级
- WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
- TeamID = 0 #(DWORD TeamID)//队伍ID
- UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
- UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
- AttackMode = 0 #(BYTE AttackMode)//攻击模式
- LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
- FBID = 0 #(BYTE FBID)//fb id
- FamilyLV = 0 #(BYTE FamilyLV)//家族等级
- FriendFavor = 0 #(DWORD FriendFavor)//好友人气值
- Energy = 0 #(DWORD Energy)//精力值
- EquipShowSwitch = 0 #(DWORD EquipShowSwitch)//装备显示开关
- LuckValue = 0 #(DWORD LuckValue)//幸运值
- ExAttr1 = 0 #(DWORD ExAttr1)//扩展属性1,各项目专用
- ExAttr2 = 0 #(DWORD ExAttr2)//扩展属性2,各项目专用
- ExAttr3 = 0 #(DWORD ExAttr3)//扩展属性3,各项目专用
- ExAttr4 = 0 #(DWORD ExAttr4)//扩展属性4,各项目专用
- ExAttr5 = 0 #(DWORD ExAttr5)//扩展属性5,各项目专用
- Faction = 0 #(BYTE Faction)//阵营
- InfamyValue = 0 #(DWORD InfamyValue)//恶名值
- OfficialRank = 0 #(BYTE OfficialRank)//官阶,官职等级
- ChangeCoinPointTotal = 0 #(DWORD ChangeCoinPointTotal)//兑换的点数总计
- VIPLv = 0 #(BYTE VIPLv)//VIP等级
- VIPLvForPhone = 0 #(BYTE VIPLvForPhone)//移动VIP等级
- ExAttr6 = 0 #(DWORD ExAttr6)//扩展属性6,各项目专用
- ExAttr7 = 0 #(DWORD ExAttr7)//扩展属性7,各项目专用
- ExAttr8 = 0 #(DWORD ExAttr8)//扩展属性8,各项目专用
- ExAttr9 = 0 #(DWORD ExAttr9)//扩展属性9,各项目专用
- ExAttr10 = 0 #(DWORD ExAttr10)//扩展属性10,各项目专用
- ModelMark = 0 #(DWORD ModelMark)// 变形模型mark
- ExAttr11 = 0 #(DWORD ExAttr11)//预留的扩展属性字段,用来存放项目特定的属性
- ExAttr12 = 0 #(DWORD ExAttr12)//预留的扩展属性字段,用来存放项目特定的属性
- ExAttr13 = 0 #(DWORD ExAttr13)//预留的扩展属性字段,用来存放项目特定的属性
- ExAttr14 = 0 #(DWORD ExAttr14)//预留的扩展属性字段,用来存放项目特定的属性
- OperateInfo = 0 #(DWORD OperateInfo)//玩家附加运营商信息
- Operate = "" #(char Operate[15])//所属运营商平台名
- ServerID = 0 #(DWORD ServerID)//所属区服ID
- ExAttr15 = 0 #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
- ExAttr16 = 0 #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
- ExAttr17 = 0 #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
- ExAttr18 = 0 #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
- ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
- ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
- HPEx = 0 #(DWORD HPEx)//当前血量 超过E的记录
- Face = 0 #(DWORD Face)//基本脸型
- FacePic = 0 #(DWORD FacePic)//头像框
- RoleType = 0 #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA1
- self.Head.SubCmd = 0x12
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.AccID,_pos = CommFunc.ReadString(_lpData, _pos,65)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
- self.AccState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.GMLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Sex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ReincarnationLv,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LVEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LV2,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.TotalExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Family,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
- self.TeamHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FamilyHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LastWeekFamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.CountryHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.CountryLastWeekHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Mate,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Gold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.GoldPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Silver,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.SilverPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FightPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.HappyPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.MapID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.PosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RebornMapID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RebornPosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RebornPosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.XP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.HPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.MPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.FreePoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FreeSkillPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.BaseSTR,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.BasePNE,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.BasePHY,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.BaseCON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.STR,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PNE,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PHY,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.CON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PKValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.BackpackLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.WarehouseLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.UseGoldType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.UseSilverType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.AttackMode,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LastWeekOnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FBID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.FriendFavor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Energy,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LuckValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr4,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Faction,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.InfamyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.OfficialRank,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ChangeCoinPointTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.VIPLv,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.VIPLvForPhone,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ExAttr6,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr7,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr8,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr9,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr10,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr11,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr12,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr13,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr14,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.OperateInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Operate,_pos = CommFunc.ReadString(_lpData, _pos,15)
- self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr15,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr16,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr17,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.RoleType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA1
- self.Head.SubCmd = 0x12
- self.AccID = ""
- self.PlayerID = 0
- self.PlayerName = ""
- self.AccState = 0
- self.GMLevel = 0
- self.Sex = 0
- self.Job = 0
- self.ReincarnationLv = 0
- self.LV = 0
- self.LVEx = 0
- self.LV2 = 0
- self.ExpPoint = 0
- self.TotalExp = 0
- self.Family = 0
- self.FamilyName = ""
- self.TeamHornor = 0
- self.FamilyHornor = 0
- self.FamilyActiveValue = 0
- self.LastWeekFamilyActiveValue = 0
- self.CountryHornor = 0
- self.CountryLastWeekHornor = 0
- self.Mate = 0
- self.Gold = 0
- self.GoldPaper = 0
- self.Silver = 0
- self.SilverPaper = 0
- self.FightPoint = 0
- self.HappyPoint = 0
- self.LineID = 0
- self.MapID = 0
- self.PosX = 0
- self.PosY = 0
- self.RebornMapID = 0
- self.RebornPosX = 0
- self.RebornPosY = 0
- self.State = 0
- self.HP = 0
- self.XP = 0
- self.HPRestoreSetting = 0
- self.MPRestoreSetting = 0
- self.FreePoint = 0
- self.FreeSkillPoint = 0
- self.BaseSTR = 0
- self.BasePNE = 0
- self.BasePHY = 0
- self.BaseCON = 0
- self.STR = 0
- self.PNE = 0
- self.PHY = 0
- self.CON = 0
- self.PKValue = 0
- self.BackpackLV = 0
- self.WarehouseLV = 0
- self.TeamID = 0
- self.UseGoldType = 0
- self.UseSilverType = 0
- self.AttackMode = 0
- self.LastWeekOnlineTime = 0
- self.FBID = 0
- self.FamilyLV = 0
- self.FriendFavor = 0
- self.Energy = 0
- self.EquipShowSwitch = 0
- self.LuckValue = 0
- self.ExAttr1 = 0
- self.ExAttr2 = 0
- self.ExAttr3 = 0
- self.ExAttr4 = 0
- self.ExAttr5 = 0
- self.Faction = 0
- self.InfamyValue = 0
- self.OfficialRank = 0
- self.ChangeCoinPointTotal = 0
- self.VIPLv = 0
- self.VIPLvForPhone = 0
- self.ExAttr6 = 0
- self.ExAttr7 = 0
- self.ExAttr8 = 0
- self.ExAttr9 = 0
- self.ExAttr10 = 0
- self.ModelMark = 0
- self.ExAttr11 = 0
- self.ExAttr12 = 0
- self.ExAttr13 = 0
- self.ExAttr14 = 0
- self.OperateInfo = 0
- self.Operate = ""
- self.ServerID = 0
- self.ExAttr15 = 0
- self.ExAttr16 = 0
- self.ExAttr17 = 0
- self.ExAttr18 = 0
- self.ExAttr19 = 0
- self.ExAttr20 = 0
- self.HPEx = 0
- self.Face = 0
- self.FacePic = 0
- self.RoleType = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 65
- length += 4
- length += 33
- length += 1
- length += 1
- length += 1
- length += 1
- length += 2
- length += 2
- length += 2
- length += 2
- length += 4
- length += 4
- length += 4
- length += 33
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 1
- length += 2
- length += 2
- length += 2
- length += 2
- length += 2
- length += 2
- length += 1
- length += 4
- length += 4
- length += 2
- length += 2
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 2
- length += 1
- length += 1
- length += 4
- length += 1
- length += 1
- length += 1
- length += 4
- length += 1
- length += 1
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 1
- length += 4
- length += 1
- length += 4
- length += 1
- length += 1
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 15
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 65, self.AccID)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteString(data, 33, self.PlayerName)
- data = CommFunc.WriteBYTE(data, self.AccState)
- data = CommFunc.WriteBYTE(data, self.GMLevel)
- data = CommFunc.WriteBYTE(data, self.Sex)
- data = CommFunc.WriteBYTE(data, self.Job)
- data = CommFunc.WriteWORD(data, self.ReincarnationLv)
- data = CommFunc.WriteWORD(data, self.LV)
- data = CommFunc.WriteWORD(data, self.LVEx)
- data = CommFunc.WriteWORD(data, self.LV2)
- data = CommFunc.WriteDWORD(data, self.ExpPoint)
- data = CommFunc.WriteDWORD(data, self.TotalExp)
- data = CommFunc.WriteDWORD(data, self.Family)
- data = CommFunc.WriteString(data, 33, self.FamilyName)
- data = CommFunc.WriteDWORD(data, self.TeamHornor)
- data = CommFunc.WriteDWORD(data, self.FamilyHornor)
- data = CommFunc.WriteDWORD(data, self.FamilyActiveValue)
- data = CommFunc.WriteDWORD(data, self.LastWeekFamilyActiveValue)
- data = CommFunc.WriteDWORD(data, self.CountryHornor)
- data = CommFunc.WriteDWORD(data, self.CountryLastWeekHornor)
- data = CommFunc.WriteDWORD(data, self.Mate)
- data = CommFunc.WriteDWORD(data, self.Gold)
- data = CommFunc.WriteDWORD(data, self.GoldPaper)
- data = CommFunc.WriteDWORD(data, self.Silver)
- data = CommFunc.WriteDWORD(data, self.SilverPaper)
- data = CommFunc.WriteDWORD(data, self.FightPoint)
- data = CommFunc.WriteDWORD(data, self.HappyPoint)
- data = CommFunc.WriteBYTE(data, self.LineID)
- data = CommFunc.WriteWORD(data, self.MapID)
- data = CommFunc.WriteWORD(data, self.PosX)
- data = CommFunc.WriteWORD(data, self.PosY)
- data = CommFunc.WriteWORD(data, self.RebornMapID)
- data = CommFunc.WriteWORD(data, self.RebornPosX)
- data = CommFunc.WriteWORD(data, self.RebornPosY)
- data = CommFunc.WriteBYTE(data, self.State)
- data = CommFunc.WriteDWORD(data, self.HP)
- data = CommFunc.WriteDWORD(data, self.XP)
- data = CommFunc.WriteWORD(data, self.HPRestoreSetting)
- data = CommFunc.WriteWORD(data, self.MPRestoreSetting)
- data = CommFunc.WriteDWORD(data, self.FreePoint)
- data = CommFunc.WriteDWORD(data, self.FreeSkillPoint)
- data = CommFunc.WriteDWORD(data, self.BaseSTR)
- data = CommFunc.WriteDWORD(data, self.BasePNE)
- data = CommFunc.WriteDWORD(data, self.BasePHY)
- data = CommFunc.WriteDWORD(data, self.BaseCON)
- data = CommFunc.WriteDWORD(data, self.STR)
- data = CommFunc.WriteDWORD(data, self.PNE)
- data = CommFunc.WriteDWORD(data, self.PHY)
- data = CommFunc.WriteDWORD(data, self.CON)
- data = CommFunc.WriteWORD(data, self.PKValue)
- data = CommFunc.WriteBYTE(data, self.BackpackLV)
- data = CommFunc.WriteBYTE(data, self.WarehouseLV)
- data = CommFunc.WriteDWORD(data, self.TeamID)
- data = CommFunc.WriteBYTE(data, self.UseGoldType)
- data = CommFunc.WriteBYTE(data, self.UseSilverType)
- data = CommFunc.WriteBYTE(data, self.AttackMode)
- data = CommFunc.WriteDWORD(data, self.LastWeekOnlineTime)
- data = CommFunc.WriteBYTE(data, self.FBID)
- data = CommFunc.WriteBYTE(data, self.FamilyLV)
- data = CommFunc.WriteDWORD(data, self.FriendFavor)
- data = CommFunc.WriteDWORD(data, self.Energy)
- data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
- data = CommFunc.WriteDWORD(data, self.LuckValue)
- data = CommFunc.WriteDWORD(data, self.ExAttr1)
- data = CommFunc.WriteDWORD(data, self.ExAttr2)
- data = CommFunc.WriteDWORD(data, self.ExAttr3)
- data = CommFunc.WriteDWORD(data, self.ExAttr4)
- data = CommFunc.WriteDWORD(data, self.ExAttr5)
- data = CommFunc.WriteBYTE(data, self.Faction)
- data = CommFunc.WriteDWORD(data, self.InfamyValue)
- data = CommFunc.WriteBYTE(data, self.OfficialRank)
- data = CommFunc.WriteDWORD(data, self.ChangeCoinPointTotal)
- data = CommFunc.WriteBYTE(data, self.VIPLv)
- data = CommFunc.WriteBYTE(data, self.VIPLvForPhone)
- data = CommFunc.WriteDWORD(data, self.ExAttr6)
- data = CommFunc.WriteDWORD(data, self.ExAttr7)
- data = CommFunc.WriteDWORD(data, self.ExAttr8)
- data = CommFunc.WriteDWORD(data, self.ExAttr9)
- data = CommFunc.WriteDWORD(data, self.ExAttr10)
- data = CommFunc.WriteDWORD(data, self.ModelMark)
- data = CommFunc.WriteDWORD(data, self.ExAttr11)
- data = CommFunc.WriteDWORD(data, self.ExAttr12)
- data = CommFunc.WriteDWORD(data, self.ExAttr13)
- data = CommFunc.WriteDWORD(data, self.ExAttr14)
- data = CommFunc.WriteDWORD(data, self.OperateInfo)
- data = CommFunc.WriteString(data, 15, self.Operate)
- data = CommFunc.WriteDWORD(data, self.ServerID)
- data = CommFunc.WriteDWORD(data, self.ExAttr15)
- data = CommFunc.WriteDWORD(data, self.ExAttr16)
- data = CommFunc.WriteDWORD(data, self.ExAttr17)
- data = CommFunc.WriteDWORD(data, self.ExAttr18)
- data = CommFunc.WriteDWORD(data, self.ExAttr19)
- data = CommFunc.WriteDWORD(data, self.ExAttr20)
- data = CommFunc.WriteDWORD(data, self.HPEx)
- data = CommFunc.WriteDWORD(data, self.Face)
- data = CommFunc.WriteDWORD(data, self.FacePic)
- data = CommFunc.WriteDWORD(data, self.RoleType)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- AccID:%s,
- PlayerID:%d,
- PlayerName:%s,
- AccState:%d,
- GMLevel:%d,
- Sex:%d,
- Job:%d,
- ReincarnationLv:%d,
- LV:%d,
- LVEx:%d,
- LV2:%d,
- ExpPoint:%d,
- TotalExp:%d,
- Family:%d,
- FamilyName:%s,
- TeamHornor:%d,
- FamilyHornor:%d,
- FamilyActiveValue:%d,
- LastWeekFamilyActiveValue:%d,
- CountryHornor:%d,
- CountryLastWeekHornor:%d,
- Mate:%d,
- Gold:%d,
- GoldPaper:%d,
- Silver:%d,
- SilverPaper:%d,
- FightPoint:%d,
- HappyPoint:%d,
- LineID:%d,
- MapID:%d,
- PosX:%d,
- PosY:%d,
- RebornMapID:%d,
- RebornPosX:%d,
- RebornPosY:%d,
- State:%d,
- HP:%d,
- XP:%d,
- HPRestoreSetting:%d,
- MPRestoreSetting:%d,
- FreePoint:%d,
- FreeSkillPoint:%d,
- BaseSTR:%d,
- BasePNE:%d,
- BasePHY:%d,
- BaseCON:%d,
- STR:%d,
- PNE:%d,
- PHY:%d,
- CON:%d,
- PKValue:%d,
- BackpackLV:%d,
- WarehouseLV:%d,
- TeamID:%d,
- UseGoldType:%d,
- UseSilverType:%d,
- AttackMode:%d,
- LastWeekOnlineTime:%d,
- FBID:%d,
- FamilyLV:%d,
- FriendFavor:%d,
- Energy:%d,
- EquipShowSwitch:%d,
- LuckValue:%d,
- ExAttr1:%d,
- ExAttr2:%d,
- ExAttr3:%d,
- ExAttr4:%d,
- ExAttr5:%d,
- Faction:%d,
- InfamyValue:%d,
- OfficialRank:%d,
- ChangeCoinPointTotal:%d,
- VIPLv:%d,
- VIPLvForPhone:%d,
- ExAttr6:%d,
- ExAttr7:%d,
- ExAttr8:%d,
- ExAttr9:%d,
- ExAttr10:%d,
- ModelMark:%d,
- ExAttr11:%d,
- ExAttr12:%d,
- ExAttr13:%d,
- ExAttr14:%d,
- OperateInfo:%d,
- Operate:%s,
- ServerID:%d,
- ExAttr15:%d,
- ExAttr16:%d,
- ExAttr17:%d,
- ExAttr18:%d,
- ExAttr19:%d,
- ExAttr20:%d,
- HPEx:%d,
- Face:%d,
- FacePic:%d,
- RoleType:%d
- '''\
- %(
- self.Head.OutputString(),
- self.AccID,
- self.PlayerID,
- self.PlayerName,
- self.AccState,
- self.GMLevel,
- self.Sex,
- self.Job,
- self.ReincarnationLv,
- self.LV,
- self.LVEx,
- self.LV2,
- self.ExpPoint,
- self.TotalExp,
- self.Family,
- self.FamilyName,
- self.TeamHornor,
- self.FamilyHornor,
- self.FamilyActiveValue,
- self.LastWeekFamilyActiveValue,
- self.CountryHornor,
- self.CountryLastWeekHornor,
- self.Mate,
- self.Gold,
- self.GoldPaper,
- self.Silver,
- self.SilverPaper,
- self.FightPoint,
- self.HappyPoint,
- self.LineID,
- self.MapID,
- self.PosX,
- self.PosY,
- self.RebornMapID,
- self.RebornPosX,
- self.RebornPosY,
- self.State,
- self.HP,
- self.XP,
- self.HPRestoreSetting,
- self.MPRestoreSetting,
- self.FreePoint,
- self.FreeSkillPoint,
- self.BaseSTR,
- self.BasePNE,
- self.BasePHY,
- self.BaseCON,
- self.STR,
- self.PNE,
- self.PHY,
- self.CON,
- self.PKValue,
- self.BackpackLV,
- self.WarehouseLV,
- self.TeamID,
- self.UseGoldType,
- self.UseSilverType,
- self.AttackMode,
- self.LastWeekOnlineTime,
- self.FBID,
- self.FamilyLV,
- self.FriendFavor,
- self.Energy,
- self.EquipShowSwitch,
- self.LuckValue,
- self.ExAttr1,
- self.ExAttr2,
- self.ExAttr3,
- self.ExAttr4,
- self.ExAttr5,
- self.Faction,
- self.InfamyValue,
- self.OfficialRank,
- self.ChangeCoinPointTotal,
- self.VIPLv,
- self.VIPLvForPhone,
- self.ExAttr6,
- self.ExAttr7,
- self.ExAttr8,
- self.ExAttr9,
- self.ExAttr10,
- self.ModelMark,
- self.ExAttr11,
- self.ExAttr12,
- self.ExAttr13,
- self.ExAttr14,
- self.OperateInfo,
- self.Operate,
- self.ServerID,
- self.ExAttr15,
- self.ExAttr16,
- self.ExAttr17,
- self.ExAttr18,
- self.ExAttr19,
- self.ExAttr20,
- self.HPEx,
- self.Face,
- self.FacePic,
- self.RoleType
- )
- return DumpString
-
-
-m_NAtagMCDBPlayer=tagMCDBPlayer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDBPlayer.Head.Cmd,m_NAtagMCDBPlayer.Head.SubCmd))] = m_NAtagMCDBPlayer
-
-
-#------------------------------------------------------
#A1 05 元宝消费记录 #tagMCGoldCostReport
class tagMCGoldCostReport(Structure):
@@ -4395,114 +3659,6 @@
#------------------------------------------------------
-# A3 C1 神兽助战状态刷新 #tagMCDogzHelpbattleState
-
-class tagMCDogzHelpbattleState(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("DogzID", c_ubyte), # 神兽ID
- ("BatteState", c_ubyte), #是否已助战, 0否1是
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0xC1
- 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 = 0xA3
- self.SubCmd = 0xC1
- self.DogzID = 0
- self.BatteState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCDogzHelpbattleState)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 C1 神兽助战状态刷新 //tagMCDogzHelpbattleState:
- Cmd:%s,
- SubCmd:%s,
- DogzID:%d,
- BatteState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.DogzID,
- self.BatteState
- )
- return DumpString
-
-
-m_NAtagMCDogzHelpbattleState=tagMCDogzHelpbattleState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzHelpbattleState.Cmd,m_NAtagMCDogzHelpbattleState.SubCmd))] = m_NAtagMCDogzHelpbattleState
-
-
-#------------------------------------------------------
-# A3 C0 神兽信息 #tagMCDogzInfo
-
-class tagMCDogzInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("BuyHelpbattleCount", c_ubyte), #额外购买的助战数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0xC0
- 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 = 0xA3
- self.SubCmd = 0xC0
- self.BuyHelpbattleCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCDogzInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 C0 神兽信息 //tagMCDogzInfo:
- Cmd:%s,
- SubCmd:%s,
- BuyHelpbattleCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.BuyHelpbattleCount
- )
- return DumpString
-
-
-m_NAtagMCDogzInfo=tagMCDogzInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzInfo.Cmd,m_NAtagMCDogzInfo.SubCmd))] = m_NAtagMCDogzInfo
-
-
-#------------------------------------------------------
# A3 1C 通知装备分解信息 #tagMCEquipDecomposeInfo
class tagMCEquipDecomposeInfo(Structure):
@@ -5020,62 +4176,6 @@
m_NAtagMCEquipPartXLAttrInfo=tagMCEquipPartXLAttrInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartXLAttrInfo.Head.Cmd,m_NAtagMCEquipPartXLAttrInfo.Head.SubCmd))] = m_NAtagMCEquipPartXLAttrInfo
-
-
-#------------------------------------------------------
-# A3 54 法器信息 #tagMCFaQiInfo
-
-class tagMCFaQiInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("LV", c_ubyte), #等阶
- ("EatItemCount", c_int), #当前阶已吃丹个数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x54
- 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 = 0xA3
- self.SubCmd = 0x54
- self.LV = 0
- self.EatItemCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFaQiInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 54 法器信息 //tagMCFaQiInfo:
- Cmd:%s,
- SubCmd:%s,
- LV:%d,
- EatItemCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.LV,
- self.EatItemCount
- )
- return DumpString
-
-
-m_NAtagMCFaQiInfo=tagMCFaQiInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFaQiInfo.Cmd,m_NAtagMCFaQiInfo.SubCmd))] = m_NAtagMCFaQiInfo
#------------------------------------------------------
@@ -5815,62 +4915,6 @@
m_NAtagSCInvestInfo=tagSCInvestInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCInvestInfo.Cmd,m_NAtagSCInvestInfo.SubCmd))] = m_NAtagSCInvestInfo
-
-
-#------------------------------------------------------
-# A3 55 炼体信息 #tagMCLianTiInfo
-
-class tagMCLianTiInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("LianTiLV", c_ubyte), #炼体等级
- ("EatItemCount", c_int), #当前等级已吃丹个数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x55
- 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 = 0xA3
- self.SubCmd = 0x55
- self.LianTiLV = 0
- self.EatItemCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCLianTiInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 55 炼体信息 //tagMCLianTiInfo:
- Cmd:%s,
- SubCmd:%s,
- LianTiLV:%d,
- EatItemCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.LianTiLV,
- self.EatItemCount
- )
- return DumpString
-
-
-m_NAtagMCLianTiInfo=tagMCLianTiInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLianTiInfo.Cmd,m_NAtagMCLianTiInfo.SubCmd))] = m_NAtagMCLianTiInfo
#------------------------------------------------------
@@ -15590,114 +14634,6 @@
#------------------------------------------------------
-# A9 04 通知神兽副本NPC刷新时间 #tagGCDogzNPCRefreshTime
-
-class tagDogzTimeInfoObj(Structure):
- _pack_ = 1
- _fields_ = [
- ("NPCID", c_int), # npcid
- ("RefreshSecond", 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.NPCID = 0
- self.RefreshSecond = 0
- return
-
- def GetLength(self):
- return sizeof(tagDogzTimeInfoObj)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A9 04 通知神兽副本NPC刷新时间 //tagGCDogzNPCRefreshTime:
- NPCID:%d,
- RefreshSecond:%d
- '''\
- %(
- self.NPCID,
- self.RefreshSecond
- )
- return DumpString
-
-
-class tagGCDogzNPCRefreshTime(Structure):
- Head = tagHead()
- Cnt = 0 #(BYTE Cnt)//信息个数
- InfoList = list() #(vector<tagDogzTimeInfoObj> InfoList)//信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x04
- 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 = tagDogzTimeInfoObj()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x04
- 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_NAtagGCDogzNPCRefreshTime=tagGCDogzNPCRefreshTime()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDogzNPCRefreshTime.Head.Cmd,m_NAtagGCDogzNPCRefreshTime.Head.SubCmd))] = m_NAtagGCDogzNPCRefreshTime
-
-
-#------------------------------------------------------
# A9 A9 通知好友互赠精力信息 #tagGCFriendSendEnergyInfo
class tagGCFriendSendEnergyInfo(Structure):
@@ -17120,384 +16056,6 @@
m_NAtagGCStoreServerBuyCntInfo=tagGCStoreServerBuyCntInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCStoreServerBuyCntInfo.Head.Cmd,m_NAtagGCStoreServerBuyCntInfo.Head.SubCmd))] = m_NAtagGCStoreServerBuyCntInfo
-
-
-#------------------------------------------------------
-# A9 27 仙宫新晋玩家信息 #tagGCXiangongNewPlayerInfo
-
-class tagGCXiangongNewPlayer(Structure):
- AddTime = 0 #(DWORD AddTime)// 新晋时间戳
- ServerID = 0 #(DWORD ServerID)
- PlayerID = 0 #(DWORD PlayerID)
- NameLen = 0 #(BYTE NameLen)
- Name = "" #(String Name)// 玩家名,size = NameLen
- LV = 0 #(WORD LV)// 玩家等级
- Job = 0 #(BYTE Job)// 玩家职业
- RealmLV = 0 #(WORD RealmLV)// 玩家境界
- Face = 0 #(DWORD Face)//基本脸型
- FacePic = 0 #(DWORD FacePic)//头像框
- EquipShowSwitch = 0 #(DWORD EquipShowSwitch)
- EquipShowIDCount = 0 #(BYTE EquipShowIDCount)
- EquipShowID = list() #(vector<DWORD> EquipShowID)
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.EquipShowIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.EquipShowIDCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.EquipShowID.append(value)
- return _pos
-
- def Clear(self):
- self.AddTime = 0
- self.ServerID = 0
- self.PlayerID = 0
- self.NameLen = 0
- self.Name = ""
- self.LV = 0
- self.Job = 0
- self.RealmLV = 0
- self.Face = 0
- self.FacePic = 0
- self.EquipShowSwitch = 0
- self.EquipShowIDCount = 0
- self.EquipShowID = list()
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 4
- length += 4
- length += 1
- length += len(self.Name)
- length += 2
- length += 1
- length += 2
- length += 4
- length += 4
- length += 4
- length += 1
- length += 4 * self.EquipShowIDCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.AddTime)
- data = CommFunc.WriteDWORD(data, self.ServerID)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.Name)
- data = CommFunc.WriteWORD(data, self.LV)
- data = CommFunc.WriteBYTE(data, self.Job)
- data = CommFunc.WriteWORD(data, self.RealmLV)
- data = CommFunc.WriteDWORD(data, self.Face)
- data = CommFunc.WriteDWORD(data, self.FacePic)
- data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
- data = CommFunc.WriteBYTE(data, self.EquipShowIDCount)
- for i in range(self.EquipShowIDCount):
- data = CommFunc.WriteDWORD(data, self.EquipShowID[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- AddTime:%d,
- ServerID:%d,
- PlayerID:%d,
- NameLen:%d,
- Name:%s,
- LV:%d,
- Job:%d,
- RealmLV:%d,
- Face:%d,
- FacePic:%d,
- EquipShowSwitch:%d,
- EquipShowIDCount:%d,
- EquipShowID:%s
- '''\
- %(
- self.AddTime,
- self.ServerID,
- self.PlayerID,
- self.NameLen,
- self.Name,
- self.LV,
- self.Job,
- self.RealmLV,
- self.Face,
- self.FacePic,
- self.EquipShowSwitch,
- self.EquipShowIDCount,
- "..."
- )
- return DumpString
-
-
-class tagGCXiangongNewPlayerInfo(Structure):
- Head = tagHead()
- XiangongID = 0 #(WORD XiangongID)// 仙宫ID
- NewPlayerCount = 0 #(BYTE NewPlayerCount)
- NewPlayerList = list() #(vector<tagGCXiangongNewPlayer> NewPlayerList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x27
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.NewPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.NewPlayerCount):
- temNewPlayerList = tagGCXiangongNewPlayer()
- _pos = temNewPlayerList.ReadData(_lpData, _pos)
- self.NewPlayerList.append(temNewPlayerList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x27
- self.XiangongID = 0
- self.NewPlayerCount = 0
- self.NewPlayerList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- length += 1
- for i in range(self.NewPlayerCount):
- length += self.NewPlayerList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.XiangongID)
- data = CommFunc.WriteBYTE(data, self.NewPlayerCount)
- for i in range(self.NewPlayerCount):
- data = CommFunc.WriteString(data, self.NewPlayerList[i].GetLength(), self.NewPlayerList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- XiangongID:%d,
- NewPlayerCount:%d,
- NewPlayerList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.XiangongID,
- self.NewPlayerCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCXiangongNewPlayerInfo=tagGCXiangongNewPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongNewPlayerInfo.Head.Cmd,m_NAtagGCXiangongNewPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongNewPlayerInfo
-
-
-#------------------------------------------------------
-# A9 28 仙宫仙名录玩家信息 #tagGCXiangongRecPlayerInfo
-
-class tagGCXiangongRecPlayer(Structure):
- AddTime = 0 #(DWORD AddTime)// 新晋时间戳
- ServerID = 0 #(DWORD ServerID)
- PlayerID = 0 #(DWORD PlayerID)
- NameLen = 0 #(BYTE NameLen)
- Name = "" #(String Name)// 玩家名,size = NameLen
- LV = 0 #(WORD LV)// 玩家等级
- Job = 0 #(BYTE Job)// 玩家职业
- RealmLV = 0 #(WORD RealmLV)// 玩家境界
- Face = 0 #(DWORD Face)//基本脸型
- FacePic = 0 #(DWORD FacePic)//头像框
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.AddTime = 0
- self.ServerID = 0
- self.PlayerID = 0
- self.NameLen = 0
- self.Name = ""
- self.LV = 0
- self.Job = 0
- self.RealmLV = 0
- self.Face = 0
- self.FacePic = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 4
- length += 4
- length += 1
- length += len(self.Name)
- length += 2
- length += 1
- length += 2
- length += 4
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.AddTime)
- data = CommFunc.WriteDWORD(data, self.ServerID)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.Name)
- data = CommFunc.WriteWORD(data, self.LV)
- data = CommFunc.WriteBYTE(data, self.Job)
- data = CommFunc.WriteWORD(data, self.RealmLV)
- data = CommFunc.WriteDWORD(data, self.Face)
- data = CommFunc.WriteDWORD(data, self.FacePic)
- return data
-
- def OutputString(self):
- DumpString = '''
- AddTime:%d,
- ServerID:%d,
- PlayerID:%d,
- NameLen:%d,
- Name:%s,
- LV:%d,
- Job:%d,
- RealmLV:%d,
- Face:%d,
- FacePic:%d
- '''\
- %(
- self.AddTime,
- self.ServerID,
- self.PlayerID,
- self.NameLen,
- self.Name,
- self.LV,
- self.Job,
- self.RealmLV,
- self.Face,
- self.FacePic
- )
- return DumpString
-
-
-class tagGCXiangongRecPlayerInfo(Structure):
- Head = tagHead()
- XiangongID = 0 #(WORD XiangongID)// 仙宫ID
- RecPlayerCount = 0 #(BYTE RecPlayerCount)
- RecPlayerList = list() #(vector<tagGCXiangongRecPlayer> RecPlayerList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x28
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RecPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.RecPlayerCount):
- temRecPlayerList = tagGCXiangongRecPlayer()
- _pos = temRecPlayerList.ReadData(_lpData, _pos)
- self.RecPlayerList.append(temRecPlayerList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA9
- self.Head.SubCmd = 0x28
- self.XiangongID = 0
- self.RecPlayerCount = 0
- self.RecPlayerList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- length += 1
- for i in range(self.RecPlayerCount):
- length += self.RecPlayerList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.XiangongID)
- data = CommFunc.WriteBYTE(data, self.RecPlayerCount)
- for i in range(self.RecPlayerCount):
- data = CommFunc.WriteString(data, self.RecPlayerList[i].GetLength(), self.RecPlayerList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- XiangongID:%d,
- RecPlayerCount:%d,
- RecPlayerList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.XiangongID,
- self.RecPlayerCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCXiangongRecPlayerInfo=tagGCXiangongRecPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongRecPlayerInfo.Head.Cmd,m_NAtagGCXiangongRecPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongRecPlayerInfo
#------------------------------------------------------
@@ -23891,118 +22449,6 @@
#------------------------------------------------------
-# B1 11 功能系统特权信息 #tagMCFuncSysPrivilegeInfoList
-
-class tagMCFuncSysPrivilegeInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("FuncSysID", c_ubyte), # 功能系统ID
- ("ActivateTime", c_int), # 激活时间戳
- ("AwardState", 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.FuncSysID = 0
- self.ActivateTime = 0
- self.AwardState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFuncSysPrivilegeInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B1 11 功能系统特权信息 //tagMCFuncSysPrivilegeInfoList:
- FuncSysID:%d,
- ActivateTime:%d,
- AwardState:%d
- '''\
- %(
- self.FuncSysID,
- self.ActivateTime,
- self.AwardState
- )
- return DumpString
-
-
-class tagMCFuncSysPrivilegeInfoList(Structure):
- Head = tagHead()
- PrivilegeCount = 0 #(BYTE PrivilegeCount)// 特权个数
- PrivilegeInfoList = list() #(vector<tagMCFuncSysPrivilegeInfo> PrivilegeInfoList)// 特权信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB1
- self.Head.SubCmd = 0x11
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.PrivilegeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.PrivilegeCount):
- temPrivilegeInfoList = tagMCFuncSysPrivilegeInfo()
- _pos = temPrivilegeInfoList.ReadData(_lpData, _pos)
- self.PrivilegeInfoList.append(temPrivilegeInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB1
- self.Head.SubCmd = 0x11
- self.PrivilegeCount = 0
- self.PrivilegeInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.PrivilegeCount):
- length += self.PrivilegeInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.PrivilegeCount)
- for i in range(self.PrivilegeCount):
- data = CommFunc.WriteString(data, self.PrivilegeInfoList[i].GetLength(), self.PrivilegeInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- PrivilegeCount:%d,
- PrivilegeInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.PrivilegeCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCFuncSysPrivilegeInfoList=tagMCFuncSysPrivilegeInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncSysPrivilegeInfoList.Head.Cmd,m_NAtagMCFuncSysPrivilegeInfoList.Head.SubCmd))] = m_NAtagMCFuncSysPrivilegeInfoList
-
-
-#------------------------------------------------------
# B1 31 宿缘信息 #tagSCHeroFatesInfo
class tagSCHeroFates(Structure):
@@ -25176,54 +23622,6 @@
#------------------------------------------------------
-#B1 08 开始印记流失时间 #tagMCYinjiStartTime
-
-class tagMCYinjiStartTime(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB1
- self.SubCmd = 0x08
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB1
- self.SubCmd = 0x08
- return
-
- def GetLength(self):
- return sizeof(tagMCYinjiStartTime)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''//B1 08 开始印记流失时间 //tagMCYinjiStartTime:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagMCYinjiStartTime=tagMCYinjiStartTime()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime
-
-
-#------------------------------------------------------
# B1 10 当前任务信息 #tagMCTaskInfo
class tagMCTask(Structure):
@@ -25337,80 +23735,6 @@
m_NAtagMCTaskInfo=tagMCTaskInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTaskInfo.Head.Cmd,m_NAtagMCTaskInfo.Head.SubCmd))] = m_NAtagMCTaskInfo
-
-
-#------------------------------------------------------
-# B1 15 天道树信息 #tagMCTiandaoTreeInfo
-
-class tagMCTiandaoTreeInfo(Structure):
- Head = tagHead()
- Qiyun = 0 #(DWORD Qiyun)// 当前气运值
- AwardCount = 0 #(BYTE AwardCount)// 天道果领取记录值个数
- AwardStateList = list() #(vector<DWORD> AwardStateList)// 天道果领取记录值列表,按奖励索引位二进制记录是否已领取,一个值可存31位,如值1存0~30,值2存31~61,...
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB1
- self.Head.SubCmd = 0x15
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Qiyun,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.AwardStateList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB1
- self.Head.SubCmd = 0x15
- self.Qiyun = 0
- self.AwardCount = 0
- self.AwardStateList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += 4 * self.AwardCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.Qiyun)
- data = CommFunc.WriteBYTE(data, self.AwardCount)
- for i in range(self.AwardCount):
- data = CommFunc.WriteDWORD(data, self.AwardStateList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Qiyun:%d,
- AwardCount:%d,
- AwardStateList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Qiyun,
- self.AwardCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCTiandaoTreeInfo=tagMCTiandaoTreeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTiandaoTreeInfo.Head.Cmd,m_NAtagMCTiandaoTreeInfo.Head.SubCmd))] = m_NAtagMCTiandaoTreeInfo
#------------------------------------------------------
@@ -25811,121 +24135,6 @@
m_NAtagMCUseMoneyTotalInfo=tagMCUseMoneyTotalInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCUseMoneyTotalInfo.Head.Cmd,m_NAtagMCUseMoneyTotalInfo.Head.SubCmd))] = m_NAtagMCUseMoneyTotalInfo
-
-
-#------------------------------------------------------
-# B1 14 仙宫信息 #tagMCXiangongInfo
-
-class tagMCXiangong(Structure):
- _pack_ = 1
- _fields_ = [
- ("XiangongID", c_ushort), # 仙宫ID
- ("LikeStateToday", 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.XiangongID = 0
- self.LikeStateToday = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCXiangong)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B1 14 仙宫信息 //tagMCXiangongInfo:
- XiangongID:%d,
- LikeStateToday:%d
- '''\
- %(
- self.XiangongID,
- self.LikeStateToday
- )
- return DumpString
-
-
-class tagMCXiangongInfo(Structure):
- Head = tagHead()
- LikeStateToday = 0 #(BYTE LikeStateToday)// 今日是否已点赞,指仙宫的外层点赞,非某个指定仙宫
- XiangongCount = 0 #(BYTE XiangongCount)
- XiangongList = list() #(vector<tagMCXiangong> XiangongList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB1
- self.Head.SubCmd = 0x14
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.LikeStateToday,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.XiangongCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.XiangongCount):
- temXiangongList = tagMCXiangong()
- _pos = temXiangongList.ReadData(_lpData, _pos)
- self.XiangongList.append(temXiangongList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB1
- self.Head.SubCmd = 0x14
- self.LikeStateToday = 0
- self.XiangongCount = 0
- self.XiangongList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- for i in range(self.XiangongCount):
- length += self.XiangongList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.LikeStateToday)
- data = CommFunc.WriteBYTE(data, self.XiangongCount)
- for i in range(self.XiangongCount):
- data = CommFunc.WriteString(data, self.XiangongList[i].GetLength(), self.XiangongList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- LikeStateToday:%d,
- XiangongCount:%d,
- XiangongList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.LikeStateToday,
- self.XiangongCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCXiangongInfo=tagMCXiangongInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXiangongInfo.Head.Cmd,m_NAtagMCXiangongInfo.Head.SubCmd))] = m_NAtagMCXiangongInfo
#------------------------------------------------------
@@ -26407,904 +24616,6 @@
#------------------------------------------------------
-# B3 24 喜糖列表 #tagGCCandyList
-
-class tagGCCandyInfo(Structure):
- PlayerIDA = 0 #(DWORD PlayerIDA)// 玩家ID - 请求方
- NameALen = 0 #(BYTE NameALen)
- PlayerNameA = "" #(String PlayerNameA)
- PlayerIDB = 0 #(DWORD PlayerIDB)// 玩家ID - 接受方
- NameBLen = 0 #(BYTE NameBLen)
- PlayerNameB = "" #(String PlayerNameB)
- BridePriceID = 0 #(BYTE BridePriceID)// 聘礼ID
- MarryTime = 0 #(DWORD MarryTime)// 成亲时间戳,秒
- EndTime = 0 #(DWORD EndTime)// 结束时间戳,秒
- Prosperity = 0 #(DWORD Prosperity)// 当前繁荣度
- FireworksTotalBuyCount = 0 #(BYTE FireworksTotalBuyCount)// 烟花总已购买次数
- FireworksPlayerBuyCount = 0 #(BYTE FireworksPlayerBuyCount)// 烟花玩家已购买次数
- PlayerFreeEatCandyCount = 0 #(BYTE PlayerFreeEatCandyCount)// 玩家已免费吃该喜糖总次数,包含免费次数、烟花赠送次数
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameALen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerNameA,_pos = CommFunc.ReadString(_lpData, _pos,self.NameALen)
- self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameBLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerNameB,_pos = CommFunc.ReadString(_lpData, _pos,self.NameBLen)
- self.BridePriceID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.MarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.EndTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Prosperity,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FireworksTotalBuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.FireworksPlayerBuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerFreeEatCandyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.PlayerIDA = 0
- self.NameALen = 0
- self.PlayerNameA = ""
- self.PlayerIDB = 0
- self.NameBLen = 0
- self.PlayerNameB = ""
- self.BridePriceID = 0
- self.MarryTime = 0
- self.EndTime = 0
- self.Prosperity = 0
- self.FireworksTotalBuyCount = 0
- self.FireworksPlayerBuyCount = 0
- self.PlayerFreeEatCandyCount = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 1
- length += len(self.PlayerNameA)
- length += 4
- length += 1
- length += len(self.PlayerNameB)
- length += 1
- length += 4
- length += 4
- length += 4
- length += 1
- length += 1
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.PlayerIDA)
- data = CommFunc.WriteBYTE(data, self.NameALen)
- data = CommFunc.WriteString(data, self.NameALen, self.PlayerNameA)
- data = CommFunc.WriteDWORD(data, self.PlayerIDB)
- data = CommFunc.WriteBYTE(data, self.NameBLen)
- data = CommFunc.WriteString(data, self.NameBLen, self.PlayerNameB)
- data = CommFunc.WriteBYTE(data, self.BridePriceID)
- data = CommFunc.WriteDWORD(data, self.MarryTime)
- data = CommFunc.WriteDWORD(data, self.EndTime)
- data = CommFunc.WriteDWORD(data, self.Prosperity)
- data = CommFunc.WriteBYTE(data, self.FireworksTotalBuyCount)
- data = CommFunc.WriteBYTE(data, self.FireworksPlayerBuyCount)
- data = CommFunc.WriteBYTE(data, self.PlayerFreeEatCandyCount)
- return data
-
- def OutputString(self):
- DumpString = '''
- PlayerIDA:%d,
- NameALen:%d,
- PlayerNameA:%s,
- PlayerIDB:%d,
- NameBLen:%d,
- PlayerNameB:%s,
- BridePriceID:%d,
- MarryTime:%d,
- EndTime:%d,
- Prosperity:%d,
- FireworksTotalBuyCount:%d,
- FireworksPlayerBuyCount:%d,
- PlayerFreeEatCandyCount:%d
- '''\
- %(
- self.PlayerIDA,
- self.NameALen,
- self.PlayerNameA,
- self.PlayerIDB,
- self.NameBLen,
- self.PlayerNameB,
- self.BridePriceID,
- self.MarryTime,
- self.EndTime,
- self.Prosperity,
- self.FireworksTotalBuyCount,
- self.FireworksPlayerBuyCount,
- self.PlayerFreeEatCandyCount
- )
- return DumpString
-
-
-class tagGCCandyList(Structure):
- Head = tagHead()
- CandyCount = 0 #(WORD CandyCount)
- CandyInfoList = list() #(vector<tagGCCandyInfo> CandyInfoList)// 可吃喜糖列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x24
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.CandyCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.CandyCount):
- temCandyInfoList = tagGCCandyInfo()
- _pos = temCandyInfoList.ReadData(_lpData, _pos)
- self.CandyInfoList.append(temCandyInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x24
- self.CandyCount = 0
- self.CandyInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- for i in range(self.CandyCount):
- length += self.CandyInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.CandyCount)
- for i in range(self.CandyCount):
- data = CommFunc.WriteString(data, self.CandyInfoList[i].GetLength(), self.CandyInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- CandyCount:%d,
- CandyInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.CandyCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCCandyList=tagGCCandyList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCandyList.Head.Cmd,m_NAtagGCCandyList.Head.SubCmd))] = m_NAtagGCCandyList
-
-
-#------------------------------------------------------
-# B3 19 魅力贡献榜 #tagGCCharmOfferBillboardDataList
-
-class tagGCCharmOfferBillboardData(Structure):
- OrderIndex = 0 #(DWORD OrderIndex)//名次索引,0代表第一名
- PlayerID = 0 #(DWORD PlayerID)// 玩家ID - 贡献者
- NameLen = 0 #(BYTE NameLen)
- PlayerName = "" #(String PlayerName)
- CharmValue = 0 #(DWORD CharmValue)//贡献魅力值
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.OrderIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.CharmValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.OrderIndex = 0
- self.PlayerID = 0
- self.NameLen = 0
- self.PlayerName = ""
- self.CharmValue = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 4
- length += 1
- length += len(self.PlayerName)
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.OrderIndex)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
- data = CommFunc.WriteDWORD(data, self.CharmValue)
- return data
-
- def OutputString(self):
- DumpString = '''
- OrderIndex:%d,
- PlayerID:%d,
- NameLen:%d,
- PlayerName:%s,
- CharmValue:%d
- '''\
- %(
- self.OrderIndex,
- self.PlayerID,
- self.NameLen,
- self.PlayerName,
- self.CharmValue
- )
- return DumpString
-
-
-class tagGCCharmOfferBillboardDataList(Structure):
- Head = tagHead()
- PlayerID = 0 #(DWORD PlayerID)// 魅力玩家ID
- QueryType = 0 #(BYTE QueryType)// 查看类型: 1-总榜,2-周榜,3-日榜
- DataCount = 0 #(BYTE DataCount)
- OfferBillboardDataList = list() #(vector<tagGCCharmOfferBillboardData> OfferBillboardDataList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x19
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.QueryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.DataCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.DataCount):
- temOfferBillboardDataList = tagGCCharmOfferBillboardData()
- _pos = temOfferBillboardDataList.ReadData(_lpData, _pos)
- self.OfferBillboardDataList.append(temOfferBillboardDataList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x19
- self.PlayerID = 0
- self.QueryType = 0
- self.DataCount = 0
- self.OfferBillboardDataList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += 1
- for i in range(self.DataCount):
- length += self.OfferBillboardDataList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.QueryType)
- data = CommFunc.WriteBYTE(data, self.DataCount)
- for i in range(self.DataCount):
- data = CommFunc.WriteString(data, self.OfferBillboardDataList[i].GetLength(), self.OfferBillboardDataList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- PlayerID:%d,
- QueryType:%d,
- DataCount:%d,
- OfferBillboardDataList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.PlayerID,
- self.QueryType,
- self.DataCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCCharmOfferBillboardDataList=tagGCCharmOfferBillboardDataList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCharmOfferBillboardDataList.Head.Cmd,m_NAtagGCCharmOfferBillboardDataList.Head.SubCmd))] = m_NAtagGCCharmOfferBillboardDataList
-
-
-#------------------------------------------------------
-# B3 26 伴侣信息 #tagGCCoupleInfo
-
-class tagGCCoupleInfo(Structure):
- Head = tagHead()
- CoupleID = 0 #(DWORD CoupleID)// 伴侣玩家ID,一定是好友,社交信息从好友系统中获取
- NameLen = 0 #(BYTE NameLen)
- CoupleName = "" #(String CoupleName)
- NewMarryTime = 0 #(DWORD NewMarryTime)// 新婚时间戳, 秒,计算结婚天数按该时间计算
- MarryTime = 0 #(DWORD MarryTime)// 最近一次提亲成功时间戳, 秒,计算可离婚时间按该时间计算
- BridePriceState = 0 #(DWORD BridePriceState)// 聘礼状态,按位存储已购买次数,如205代表ID1买了5次,ID2买了0次,ID3买了2次,最高9次
- BreakRequestID = 0 #(DWORD BreakRequestID)// 当前请求中的和离时间戳 - 请求方ID,0代表没人发起请求
- BreakRequestTime = 0 #(DWORD BreakRequestTime)// 当前请求中的和离时间戳, 秒,用于计算和离回应有效期
- PlayerBreakRequestTime = 0 #(DWORD PlayerBreakRequestTime)// 玩家最近一次和离请求时间戳, 秒,用于计算自身的请求和离CD
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x26
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.CoupleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.CoupleName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.NewMarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.BridePriceState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.BreakRequestID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.BreakRequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.PlayerBreakRequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x26
- self.CoupleID = 0
- self.NameLen = 0
- self.CoupleName = ""
- self.NewMarryTime = 0
- self.MarryTime = 0
- self.BridePriceState = 0
- self.BreakRequestID = 0
- self.BreakRequestTime = 0
- self.PlayerBreakRequestTime = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += len(self.CoupleName)
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.CoupleID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.CoupleName)
- data = CommFunc.WriteDWORD(data, self.NewMarryTime)
- data = CommFunc.WriteDWORD(data, self.MarryTime)
- data = CommFunc.WriteDWORD(data, self.BridePriceState)
- data = CommFunc.WriteDWORD(data, self.BreakRequestID)
- data = CommFunc.WriteDWORD(data, self.BreakRequestTime)
- data = CommFunc.WriteDWORD(data, self.PlayerBreakRequestTime)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- CoupleID:%d,
- NameLen:%d,
- CoupleName:%s,
- NewMarryTime:%d,
- MarryTime:%d,
- BridePriceState:%d,
- BreakRequestID:%d,
- BreakRequestTime:%d,
- PlayerBreakRequestTime:%d
- '''\
- %(
- self.Head.OutputString(),
- self.CoupleID,
- self.NameLen,
- self.CoupleName,
- self.NewMarryTime,
- self.MarryTime,
- self.BridePriceState,
- self.BreakRequestID,
- self.BreakRequestTime,
- self.PlayerBreakRequestTime
- )
- return DumpString
-
-
-m_NAtagGCCoupleInfo=tagGCCoupleInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCoupleInfo.Head.Cmd,m_NAtagGCCoupleInfo.Head.SubCmd))] = m_NAtagGCCoupleInfo
-
-
-#------------------------------------------------------
-# B3 30 情缘相关信息 #tagMCLoveInfo
-
-class tagMCLoveInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("EatCandyToday", c_int), # 今日已吃喜糖次数,包含免费及付费的所有次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x30
- 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 = 0xB3
- self.SubCmd = 0x30
- self.EatCandyToday = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCLoveInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 30 情缘相关信息 //tagMCLoveInfo:
- Cmd:%s,
- SubCmd:%s,
- EatCandyToday:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.EatCandyToday
- )
- return DumpString
-
-
-m_NAtagMCLoveInfo=tagMCLoveInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveInfo.Cmd,m_NAtagMCLoveInfo.SubCmd))] = m_NAtagMCLoveInfo
-
-
-#------------------------------------------------------
-# B3 27 情戒信息 #tagMCLoveRingInfo
-
-class tagMCLoveRingInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ClassLV", c_ubyte), # 阶
- ("StarLV", c_ubyte), # 星
- ("EatCount", c_int), # 本星已淬炼道具数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x27
- 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 = 0xB3
- self.SubCmd = 0x27
- self.ClassLV = 0
- self.StarLV = 0
- self.EatCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCLoveRingInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 27 情戒信息 //tagMCLoveRingInfo:
- Cmd:%s,
- SubCmd:%s,
- ClassLV:%d,
- StarLV:%d,
- EatCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ClassLV,
- self.StarLV,
- self.EatCount
- )
- return DumpString
-
-
-m_NAtagMCLoveRingInfo=tagMCLoveRingInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveRingInfo.Cmd,m_NAtagMCLoveRingInfo.SubCmd))] = m_NAtagMCLoveRingInfo
-
-
-#------------------------------------------------------
-# B3 29 情戒解锁成功 #tagMCLoveRingUnlockOK
-
-class tagMCLoveRingUnlockOK(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x29
- 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 = 0xB3
- self.SubCmd = 0x29
- return
-
- def GetLength(self):
- return sizeof(tagMCLoveRingUnlockOK)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 29 情戒解锁成功 //tagMCLoveRingUnlockOK:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagMCLoveRingUnlockOK=tagMCLoveRingUnlockOK()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveRingUnlockOK.Cmd,m_NAtagMCLoveRingUnlockOK.SubCmd))] = m_NAtagMCLoveRingUnlockOK
-
-
-#------------------------------------------------------
-# B3 22 收到提亲信息 #tagGCMarryReqInfo
-
-class tagGCMarryReqInfo(Structure):
- Head = tagHead()
- PlayerID = 0 #(DWORD PlayerID)// 同一个玩家ID多次提亲时可能同步多次,前端覆盖数据即可
- NameLen = 0 #(BYTE NameLen)
- PlayerName = "" #(String PlayerName)
- BridePriceID = 0 #(BYTE BridePriceID)// 聘礼ID
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x22
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.BridePriceID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x22
- self.PlayerID = 0
- self.NameLen = 0
- self.PlayerName = ""
- self.BridePriceID = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += len(self.PlayerName)
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
- data = CommFunc.WriteBYTE(data, self.BridePriceID)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- PlayerID:%d,
- NameLen:%d,
- PlayerName:%s,
- BridePriceID:%d
- '''\
- %(
- self.Head.OutputString(),
- self.PlayerID,
- self.NameLen,
- self.PlayerName,
- self.BridePriceID
- )
- return DumpString
-
-
-m_NAtagGCMarryReqInfo=tagGCMarryReqInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryReqInfo.Head.Cmd,m_NAtagGCMarryReqInfo.Head.SubCmd))] = m_NAtagGCMarryReqInfo
-
-
-#------------------------------------------------------
-# B3 21 提亲发送成功 #tagGCMarryReqOK
-
-class tagGCMarryReqOK(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x21
- 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 = 0xB3
- self.SubCmd = 0x21
- return
-
- def GetLength(self):
- return sizeof(tagGCMarryReqOK)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 21 提亲发送成功 //tagGCMarryReqOK:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagGCMarryReqOK=tagGCMarryReqOK()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryReqOK.Cmd,m_NAtagGCMarryReqOK.SubCmd))] = m_NAtagGCMarryReqOK
-
-
-#------------------------------------------------------
-# B3 23 提亲回应结果 #tagGCMarryResponseRet
-
-class tagGCMarryResponseRet(Structure):
- Head = tagHead()
- PlayerIDA = 0 #(DWORD PlayerIDA)// 玩家ID - 请求方
- NameALen = 0 #(BYTE NameALen)
- PlayerNameA = "" #(String PlayerNameA)
- PlayerIDB = 0 #(DWORD PlayerIDB)// 玩家ID - 接受方
- NameBLen = 0 #(BYTE NameBLen)
- PlayerNameB = "" #(String PlayerNameB)
- IsOK = 0 #(BYTE IsOK)// 是否同意,0-否,1-是; 如果同意则双方都会收到该包,根据玩家ID判断自己是请求或接受方,显示不同的同意结果界面;不同意只有请求方会收到
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x23
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameALen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerNameA,_pos = CommFunc.ReadString(_lpData, _pos,self.NameALen)
- self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NameBLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerNameB,_pos = CommFunc.ReadString(_lpData, _pos,self.NameBLen)
- self.IsOK,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x23
- self.PlayerIDA = 0
- self.NameALen = 0
- self.PlayerNameA = ""
- self.PlayerIDB = 0
- self.NameBLen = 0
- self.PlayerNameB = ""
- self.IsOK = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += len(self.PlayerNameA)
- length += 4
- length += 1
- length += len(self.PlayerNameB)
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.PlayerIDA)
- data = CommFunc.WriteBYTE(data, self.NameALen)
- data = CommFunc.WriteString(data, self.NameALen, self.PlayerNameA)
- data = CommFunc.WriteDWORD(data, self.PlayerIDB)
- data = CommFunc.WriteBYTE(data, self.NameBLen)
- data = CommFunc.WriteString(data, self.NameBLen, self.PlayerNameB)
- data = CommFunc.WriteBYTE(data, self.IsOK)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- PlayerIDA:%d,
- NameALen:%d,
- PlayerNameA:%s,
- PlayerIDB:%d,
- NameBLen:%d,
- PlayerNameB:%s,
- IsOK:%d
- '''\
- %(
- self.Head.OutputString(),
- self.PlayerIDA,
- self.NameALen,
- self.PlayerNameA,
- self.PlayerIDB,
- self.NameBLen,
- self.PlayerNameB,
- self.IsOK
- )
- return DumpString
-
-
-m_NAtagGCMarryResponseRet=tagGCMarryResponseRet()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryResponseRet.Head.Cmd,m_NAtagGCMarryResponseRet.Head.SubCmd))] = m_NAtagGCMarryResponseRet
-
-
-#------------------------------------------------------
-# B3 25 玩家魅力值信息 #tagGCPlayerCharmValueInfo
-
-class tagGCPlayerCharmValueInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("CharmValueTotal", c_int), #当前魅力值 - 总
- ("CharmValueWeek", c_int), #当前魅力值 - 周
- ("CharmValueDay", c_int), #当前魅力值 - 日
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB3
- self.SubCmd = 0x25
- 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 = 0xB3
- self.SubCmd = 0x25
- self.CharmValueTotal = 0
- self.CharmValueWeek = 0
- self.CharmValueDay = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCPlayerCharmValueInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B3 25 玩家魅力值信息 //tagGCPlayerCharmValueInfo:
- Cmd:%s,
- SubCmd:%s,
- CharmValueTotal:%d,
- CharmValueWeek:%d,
- CharmValueDay:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.CharmValueTotal,
- self.CharmValueWeek,
- self.CharmValueDay
- )
- return DumpString
-
-
-m_NAtagGCPlayerCharmValueInfo=tagGCPlayerCharmValueInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerCharmValueInfo.Cmd,m_NAtagGCPlayerCharmValueInfo.SubCmd))] = m_NAtagGCPlayerCharmValueInfo
-
-
-#------------------------------------------------------
# B3 15 相关玩家在线状态变更同步 #tagGCRelatedPlayerOnlineState
class tagGCRelatedPlayerOnlineState(Structure):
@@ -27362,148 +24673,6 @@
m_NAtagGCRelatedPlayerOnlineState=tagGCRelatedPlayerOnlineState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRelatedPlayerOnlineState.Cmd,m_NAtagGCRelatedPlayerOnlineState.SubCmd))] = m_NAtagGCRelatedPlayerOnlineState
-
-
-#------------------------------------------------------
-# B3 20 送礼物成功通知 #tagGCSendGiftsOKList
-
-class tagGCSendGiftsOK(Structure):
- NameLen = 0 #(BYTE NameLen)
- Name = "" #(String Name)// 赠送方玩家名
- PlayerID = 0 #(DWORD PlayerID)// 赠送方玩家ID
- GiftNum = 0 #(WORD GiftNum)// 赠送礼物编号
- GiftCount = 0 #(DWORD GiftCount)// 赠送礼物数量
- SendTime = 0 #(DWORD SendTime)// 赠送时间戳
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.GiftNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.GiftCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.SendTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.NameLen = 0
- self.Name = ""
- self.PlayerID = 0
- self.GiftNum = 0
- self.GiftCount = 0
- self.SendTime = 0
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += len(self.Name)
- length += 4
- length += 2
- length += 4
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.Name)
- data = CommFunc.WriteDWORD(data, self.PlayerID)
- data = CommFunc.WriteWORD(data, self.GiftNum)
- data = CommFunc.WriteDWORD(data, self.GiftCount)
- data = CommFunc.WriteDWORD(data, self.SendTime)
- return data
-
- def OutputString(self):
- DumpString = '''
- NameLen:%d,
- Name:%s,
- PlayerID:%d,
- GiftNum:%d,
- GiftCount:%d,
- SendTime:%d
- '''\
- %(
- self.NameLen,
- self.Name,
- self.PlayerID,
- self.GiftNum,
- self.GiftCount,
- self.SendTime
- )
- return DumpString
-
-
-class tagGCSendGiftsOKList(Structure):
- Head = tagHead()
- Count = 0 #(WORD Count)
- SendGiftsOKList = list() #(vector<tagGCSendGiftsOK> SendGiftsOKList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x20
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.Count):
- temSendGiftsOKList = tagGCSendGiftsOK()
- _pos = temSendGiftsOKList.ReadData(_lpData, _pos)
- self.SendGiftsOKList.append(temSendGiftsOKList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB3
- self.Head.SubCmd = 0x20
- self.Count = 0
- self.SendGiftsOKList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- for i in range(self.Count):
- length += self.SendGiftsOKList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.SendGiftsOKList[i].GetLength(), self.SendGiftsOKList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- SendGiftsOKList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCSendGiftsOKList=tagGCSendGiftsOKList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSendGiftsOKList.Head.Cmd,m_NAtagGCSendGiftsOKList.Head.SubCmd))] = m_NAtagGCSendGiftsOKList
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Charm.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Charm.py
deleted file mode 100644
index a98ddbb..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Charm.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.Charm
-#
-# @todo:魅力
-# @author hxp
-# @date 2021-12-03
-# @version 1.0
-#
-# 详细描述: 魅力
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-12-03 19:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerControl
-import IpyGameDataPY
-import PlayerCharm
-
-
-def __Help(curPlayer):
- GameWorld.DebugAnswer(curPlayer, "---------- %s" % GameWorld.GetCurrentDataTimeStr())
- GameWorld.DebugAnswer(curPlayer, "清空魅力: Charm 0")
- GameWorld.DebugAnswer(curPlayer, "魅力等级: Charm 等级")
- GameWorld.DebugAnswer(curPlayer, "随机魅力: Charm 1 人数 贡献人数 [选填 随机范围值A B]")
- GameWorld.DebugAnswer(curPlayer, "随机范围值不填的话默认10~1000")
- GameWorld.DebugAnswer(curPlayer, "增加魅力: Charm 2 数值 [选填 贡献玩家ID 获得玩家ID]")
- GameWorld.DebugAnswer(curPlayer, "玩家ID不填的话均默认自己")
- return
-
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param msgList 参数列表 [addSkillID]
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
-
- if not msgList:
- __Help(curPlayer)
- return
-
- value1 = msgList[0]
-
- # 设置魅力等级
- if value1 > 0 and len(msgList) == 1:
- maxIpyData = IpyGameDataPY.IPY_Data().GetLoveCharmByIndex(IpyGameDataPY.IPY_Data().GetLoveCharmCount() - 1)
- if maxIpyData:
- value1 = min(value1, maxIpyData.GetCharmLV())
- GameWorld.DebugAnswer(curPlayer, "设置魅力等级: %s" % value1)
- PlayerControl.SetCharmLV(curPlayer, value1)
- PlayerCharm.RefreshCharmAttr(curPlayer)
- return
-
- isSendGameServer = True
- # 清空魅力
- if value1 == 0:
- PlayerControl.SetCharmLV(curPlayer, value1)
- PlayerCharm.RefreshCharmAttr(curPlayer)
-
- # 随机魅力
- elif value1 == 1 and len(msgList) >= 3:
- pass
-
- # 增加魅力
- elif value1 == 2 and len(msgList) >= 2:
- pass
-
- else:
- __Help(curPlayer)
- return
-
- return isSendGameServer
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFuncSysPrivilege.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFuncSysPrivilege.py
deleted file mode 100644
index f10ea68..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFuncSysPrivilege.py
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.ClearFuncSysPrivilege
-#
-# @todo:重置功能系统特权
-# @author hxp
-# @date 2021-04-13
-# @version 1.0
-#
-# 详细描述: 重置功能系统特权
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-04-13 16:00"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import PlayerControl
-import PlayerFuncSysPrivilege
-import IpyGameDataPY
-import GameWorld
-
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param list 参数列表 [npcID]
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, paramList):
-
- if not paramList:
- GameWorld.DebugAnswer(curPlayer, "重置所有: ClearFuncSysPrivilege 0")
- GameWorld.DebugAnswer(curPlayer, "重置指定: ClearFuncSysPrivilege 功能系统ID")
- return
-
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- lastIpyData = ipyDataMgr.GetFuncSysPrivilegeByIndex(ipyDataMgr.GetFuncSysPrivilegeCount() - 1)
- maxFuncID = lastIpyData.GetFuncSysID()
-
- resetID = paramList[0]
- if resetID == 0:
- resetIDList = range(1, maxFuncID + 1)
- elif resetID > maxFuncID:
- GameWorld.DebugAnswer(curPlayer, "该功能系统ID不存在!")
- return
- else:
- resetIDList = [resetID]
-
- for funcSysID in resetIDList:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FuncSysPrivilegeActTime % funcSysID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FuncSysPrivilegeAward % funcSysID, 0)
-
- GameWorld.DebugAnswer(curPlayer, "重置功能系统特权OK!%s" % resetIDList)
- PlayerFuncSysPrivilege.Sync_FuncSysPrivilege(curPlayer, resetIDList)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FaQi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FaQi.py
deleted file mode 100644
index 0db5f2c..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FaQi.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.FaQi
-#
-# @todo:法器
-# @author hxp
-# @date 2021-10-14
-# @version 1.0
-#
-# 详细描述: 法器
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-10-14 15:00"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import GameWorld
-import PlayerControl
-import PlayerFaQi
-
-#---------------------------------------------------------------------
-#逻辑实现
-
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param msgList 参数列表
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
-
- if not msgList:
- GameWorld.DebugAnswer(curPlayer, "重置法器: FaQi 0")
- GameWorld.DebugAnswer(curPlayer, "设置法器: FaQi 等阶 本阶已吃丹数")
- return
-
- if len(msgList) == 1:
- if msgList[0] == 0:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaQiLV, 1)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaQiEatItemCount, 0)
-
- elif len(msgList) == 2:
- lv, eatItemCount = msgList
- if lv < 1:
- GameWorld.DebugAnswer(curPlayer, "等级不能小于1")
- return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaQiLV, lv)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaQiEatItemCount, eatItemCount)
-
- else:
- return
-
- PlayerFaQi.RefreshFaQiAttr(curPlayer)
- PlayerFaQi.PlayerFaQiLogin(curPlayer)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LianTi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LianTi.py
deleted file mode 100644
index 042ca6f..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LianTi.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.LianTi
-#
-# @todo:炼体
-# @author hxp
-# @date 2022-22-23
-# @version 1.0
-#
-# 详细描述: 炼体
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-22-23 15:30"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import GameWorld
-import PlayerControl
-import PlayerLianTi
-import IpyGameDataPY
-import SkillCommon
-
-#---------------------------------------------------------------------
-#逻辑实现
-
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param msgList 参数列表
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
-
- if not msgList:
- GameWorld.DebugAnswer(curPlayer, "重置炼体: LianTi 0")
- GameWorld.DebugAnswer(curPlayer, "设置炼体: LianTi 等级 本级已吃丹数")
- return
-
- if len(msgList) == 1:
- if msgList[0] == 0:
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LianTiLV):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LianTiLV, 1)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LianTiEatItemCount, 0)
-
- elif len(msgList) == 2:
- lv, eatItemCount = msgList
- if lv < 1:
- GameWorld.DebugAnswer(curPlayer, "等级不能小于1")
- return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LianTiLV, lv)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LianTiEatItemCount, eatItemCount)
-
- skillIDList = []
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for index in xrange(ipyDataMgr.GetLianTiCount()):
- lvupIpyData = ipyDataMgr.GetLianTiByIndex(index)
- dataLV = lvupIpyData.GetLianTiLV()
- if dataLV > lv:
- break
- activateSkillID = lvupIpyData.GetActivateSkillID()
- if activateSkillID:
- skillIDList.append(activateSkillID)
-
- if skillIDList:
- SkillCommon.GivePlayerSkillByJobSkill(curPlayer, skillIDList)
-
- else:
- return
-
- PlayerLianTi.RefreshLianTiAttr(curPlayer)
- PlayerLianTi.SyncLianTiInfo(curPlayer)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LoveRing.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LoveRing.py
deleted file mode 100644
index aff06ab..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LoveRing.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.LoveRing
-#
-# @todo:情戒
-# @author hxp
-# @date 2021-11-09
-# @version 1.0
-#
-# 详细描述: 情戒
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-11-09 20:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerControl
-import PlayerLove
-import ChConfig
-
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param msgList 参数列表 [addSkillID]
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
-
- if not msgList:
- GameWorld.DebugAnswer(curPlayer, "重置情戒: LoveRing 0")
- GameWorld.DebugAnswer(curPlayer, "设置情戒: LoveRing 阶 [可选星 已吃个数]")
- return
-
- classLV = msgList[0] if len(msgList) > 0 else 1
- if classLV == 0:
- starLV, eatCount = 0, 0
- else:
- starLV = msgList[1] if len(msgList) > 1 else 1
- eatCount = msgList[2] if len(msgList) > 2 else 0
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingClassLV, classLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingStarLV, starLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingEatCount, eatCount)
- PlayerLove.Sync_LoveRingInfo(curPlayer)
- PlayerLove.RefreshLoveAttr(curPlayer)
- GameWorld.DebugAnswer(curPlayer, "设置情戒: 阶:%s 星:%s 颗:%s" % (classLV, starLV, eatCount))
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Xiangong.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Xiangong.py
deleted file mode 100644
index 4f1a805..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Xiangong.py
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.Xiangong
-#
-# @todo:仙宫
-# @author hxp
-# @date 2024-09-04
-# @version 1.0
-#
-# 详细描述: 仙宫
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2024-09-04 16:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerControl
-import IpyGameDataPY
-import PlayerXiangong
-import ChConfig
-
-#-------------------------------------------------------------------------------
-#逻辑实现
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param list 参数列表 [npcID]
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
-
- if not msgList:
- GameWorld.DebugAnswer(curPlayer, "---------- %s" % GameWorld.GetCurrentDataTimeStr())
- GameWorld.DebugAnswer(curPlayer, "重置仙宫点赞: Xiangong 0 like")
- GameWorld.DebugAnswer(curPlayer, "重置气运奖励: Xiangong 0 tree")
- GameWorld.DebugAnswer(curPlayer, "设置当前气运: Xiangong q 气运值")
- return True
-
- if msgList[0] == 0:
- if len(msgList) == 1 or msgList[1] == "like":
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_XiangongLikeState % 0, 0)
- xiangongIDList = []
- ipyMgr = IpyGameDataPY.IPY_Data()
- for index in range(ipyMgr.GetXiangongCount()):
- ipyData = ipyMgr.GetXiangongByIndex(index)
- xiangongID = ipyData.GetXiangongID()
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_XiangongLikeState % xiangongID):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_XiangongLikeState % xiangongID, 0)
- xiangongIDList.append(xiangongID)
- PlayerXiangong.SyncXiangongInfo(curPlayer, xiangongIDList)
- GameWorld.DebugAnswer(curPlayer, "重置仙宫点赞:%s" % xiangongIDList)
-
- if len(msgList) == 1 or msgList[1] == "tree":
- for keyNum in range(50):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TiandaoAward % keyNum, 0)
- PlayerXiangong.SyncTiandaoTreeInfo(curPlayer)
- GameWorld.DebugAnswer(curPlayer, "重置气运奖励!")
-
- return
-
- if msgList[0] == "q":
- setQiyun = msgList[1] if len(msgList) > 1 else 0
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TiandaoQiyun, setQiyun)
- PlayerXiangong.SyncTiandaoTreeInfo(curPlayer)
- GameWorld.DebugAnswer(curPlayer, "设置当前气运:%s" % setQiyun)
- return
-
- return True
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 6ae3f33..8f85a04 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -500,20 +500,6 @@
("list", "AwardItemList", 0),
),
- "LianTi":(
- ("BYTE", "LianTiLV", 1),
- ("list", "FixedAttrType", 0),
- ("list", "FixedAttrValue", 0),
- ("list", "PlusAttrType", 0),
- ("list", "PlusAttrRate", 0),
- ("list", "EatItemAttrType", 0),
- ("list", "EatItemAttrValue", 0),
- ("WORD", "NeedEatCount", 0),
- ("WORD", "EatPerCount", 0),
- ("list", "LVUpCostItemInfo", 0),
- ("DWORD", "ActivateSkillID", 0),
- ),
-
"FuncConfig":(
("char", "Key", 1),
("char", "Numerical1", 0),
@@ -672,24 +658,6 @@
("dict", "LVLegendAttrLibNumInfo", 0),
),
- "Dogz":(
- ("BYTE", "DogzID", 1),
- ("list", "BaseAttrTypes", 0),
- ("list", "BaseAttrValues", 0),
- ("list", "HelpBattleSkills", 0),
- ("DWORD", "FightPowerEx", 0),
- ("list", "EquipPlaceColorList", 0),
- ("list", "HelpBattleNotify", 0),
- ),
-
- "DogzEquipPlus":(
- ("BYTE", "EquipPlace", 1),
- ("BYTE", "PlusLV", 1),
- ("list", "PlusAttrTypes", 0),
- ("list", "PlusAttrValues", 0),
- ("DWORD", "PlusLVUPTotalExp", 0),
- ),
-
"EquipWash":(
("BYTE", "WashType", 1),
("BYTE", "WashLV", 1),
@@ -726,16 +694,6 @@
("WORD", "LV", 1),
("DWORD", "UpNeedExp", 0),
("dict", "Attr", 0),
- ),
-
- "FaQiLVUp":(
- ("BYTE", "FaQiLV", 1),
- ("WORD", "NeedEatCount", 0),
- ("list", "LVAttrType", 0),
- ("list", "LVAttrValue", 0),
- ("list", "UpItemAttrType", 0),
- ("list", "UpItemAttrValue", 0),
- ("DWORD", "UpEatItemPerCount", 0),
),
"HorseClass":(
@@ -1687,38 +1645,6 @@
("BYTE", "QualityLV", 1),
),
- "LoveGift":(
- ("BYTE", "GiftNum", 1),
- ("DWORD", "GiftItemID", 0),
- ("BYTE", "AllowBatch", 0),
- ),
-
- "Marry":(
- ("BYTE", "BridePriceID", 1),
- ("list", "CostMoneyInfo", 0),
- ),
-
- "LoveRing":(
- ("BYTE", "RingClassLV", 1),
- ("BYTE", "RingStarLV", 1),
- ("list", "CoupleAttrType", 0),
- ("list", "CoupleAttrValue", 0),
- ("list", "StarAttrType", 0),
- ("list", "StarAttrValue", 0),
- ("list", "UpItemAttrType", 0),
- ("list", "UpItemAttrValue", 0),
- ("DWORD", "NeedEatCount", 0),
- ("DWORD", "UpEatItemPerCount", 0),
- ),
-
- "LoveCharm":(
- ("BYTE", "CharmLV", 1),
- ("DWORD", "UpNeedCharm", 0),
- ("list", "LVAttrType", 0),
- ("list", "LVAttrValue", 0),
- ("list", "LVAwardItemInfo", 0),
- ),
-
"HorsePetSkin":(
("BYTE", "Type", 1),
("DWORD", "ID", 1),
@@ -1726,12 +1652,6 @@
("DWORD", "NeedExp", 0),
("dict", "AttrInfo", 0),
("BYTE", "SkinIndex", 0),
- ),
-
- "FuncSysPrivilege":(
- ("BYTE", "FuncSysID", 1),
- ("BYTE", "DayNum", 0),
- ("list", "DayAwardItemInfo", 0),
),
"HistoryRechargeAward":(
@@ -1752,16 +1672,6 @@
("list", "FreeRewardItemList", 0),
("list", "ZLRewardItemList", 0),
("list", "ZLRewardItemListH", 0),
- ),
-
- "Xiangong":(
- ("WORD", "XiangongID", 1),
- ),
-
- "TiandaoTree":(
- ("WORD", "AwardIndex", 1),
- ("DWORD", "NeedQiyun", 0),
- ("list", "AwardItemList", 0),
),
"TreeLV":(
@@ -2468,25 +2378,6 @@
def GetNeedValueList(self): return self.attrTuple[3] # 所需值列表 list
def GetAwardItemList(self): return self.attrTuple[4] # 奖励物品列表 list
-# 境界炼体属性表
-class IPY_LianTi():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetLianTiLV(self): return self.attrTuple[0] # 炼体等级 BYTE
- def GetFixedAttrType(self): return self.attrTuple[1] # 固定属性类型(非累积) list
- def GetFixedAttrValue(self): return self.attrTuple[2] # 固定属性值(非累积) list
- def GetPlusAttrType(self): return self.attrTuple[3] # 增强属性类型(非累积) list
- def GetPlusAttrRate(self): return self.attrTuple[4] # 增强属性万分率(非累积) list
- def GetEatItemAttrType(self): return self.attrTuple[5] # 每x个培养丹增加属性类型,x=UpEatItemPerCount list
- def GetEatItemAttrValue(self): return self.attrTuple[6] # 每x个培养丹增加属性值,x=UpEatItemPerCount list
- def GetNeedEatCount(self): return self.attrTuple[7] # 升级所需个数(非累计) WORD
- def GetEatPerCount(self): return self.attrTuple[8] # 每次培养消耗x个 WORD
- def GetLVUpCostItemInfo(self): return self.attrTuple[9] # 突破等级道具ID|个数 list
- def GetActivateSkillID(self): return self.attrTuple[10] # 激活技能ID DWORD
-
# 功能配置表格
class IPY_FuncConfig():
@@ -2740,34 +2631,6 @@
def GetItemQuality(self): return self.attrTuple[4] # 物品星级 BYTE
def GetLVLegendAttrLibNumInfo(self): return self.attrTuple[5] # 属性ID等级段对应数值库编号 {属性ID:{等级:库编号, ...}} dict
-# 神兽表
-class IPY_Dogz():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetDogzID(self): return self.attrTuple[0] # 神兽ID BYTE
- def GetBaseAttrTypes(self): return self.attrTuple[1] # 基础属性类型列表 list
- def GetBaseAttrValues(self): return self.attrTuple[2] # 基础属性值列表 list
- def GetHelpBattleSkills(self): return self.attrTuple[3] # 助战技能ID列表 list
- def GetFightPowerEx(self): return self.attrTuple[4] # 助战附加战力 DWORD
- def GetEquipPlaceColorList(self): return self.attrTuple[5] # 穿戴装备颜色限制 list
- def GetHelpBattleNotify(self): return self.attrTuple[6] # 助战广播 ["广播key",[参数1,参数2,...],广播CD分钟] list
-
-# 神兽强化表
-class IPY_DogzEquipPlus():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetEquipPlace(self): return self.attrTuple[0] # 装备位 BYTE
- def GetPlusLV(self): return self.attrTuple[1] # 强化等级 BYTE
- def GetPlusAttrTypes(self): return self.attrTuple[2] # 强化属性类型列表 list
- def GetPlusAttrValues(self): return self.attrTuple[3] # 强化属性值列表 list
- def GetPlusLVUPTotalExp(self): return self.attrTuple[4] # 升级所需累计熟练度总值 DWORD
-
# 洗练表
class IPY_EquipWash():
@@ -2820,21 +2683,6 @@
def GetLV(self): return self.attrTuple[0] # 等级 WORD
def GetUpNeedExp(self): return self.attrTuple[1] # 升级所需经验数 DWORD
def GetAttr(self): return self.attrTuple[2] # 属性加成 dict
-
-# 法器升级表
-class IPY_FaQiLVUp():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetFaQiLV(self): return self.attrTuple[0] # 法器等级 BYTE
- def GetNeedEatCount(self): return self.attrTuple[1] # 升级所需个数(非累计) WORD
- def GetLVAttrType(self): return self.attrTuple[2] # 每级额外属性类型(非累积) list
- def GetLVAttrValue(self): return self.attrTuple[3] # 每级额外属性值(非累积) list
- def GetUpItemAttrType(self): return self.attrTuple[4] # 每x个培养丹增加属性类型,x=UpEatItemPerCount list
- def GetUpItemAttrValue(self): return self.attrTuple[5] # 每x个培养丹增加属性值,x=UpEatItemPerCount list
- def GetUpEatItemPerCount(self): return self.attrTuple[6] # 每次培养消耗x个 DWORD
# 坐骑阶级表
class IPY_HorseClass():
@@ -4275,58 +4123,6 @@
def GetPointID(self): return self.attrTuple[1] # 灵根ID DWORD
def GetQualityLV(self): return self.attrTuple[2] # 品级 BYTE
-# 情缘礼物表
-class IPY_LoveGift():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetGiftNum(self): return self.attrTuple[0] # 聘礼ID BYTE
- def GetGiftItemID(self): return self.attrTuple[1] # 物品ID DWORD
- def GetAllowBatch(self): return self.attrTuple[2] # 是否允许批量赠送 BYTE
-
-# 情缘提亲表
-class IPY_Marry():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetBridePriceID(self): return self.attrTuple[0] # 聘礼ID BYTE
- def GetCostMoneyInfo(self): return self.attrTuple[1] # 消耗货币类型|数值 list
-
-# 情缘情戒表
-class IPY_LoveRing():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetRingClassLV(self): return self.attrTuple[0] # 情戒阶级 BYTE
- def GetRingStarLV(self): return self.attrTuple[1] # 情戒星级 BYTE
- def GetCoupleAttrType(self): return self.attrTuple[2] # 仙侣属性类型(非累积) list
- def GetCoupleAttrValue(self): return self.attrTuple[3] # 仙侣属性值(非累积) list
- def GetStarAttrType(self): return self.attrTuple[4] # 星级额外属性类型(非累积) list
- def GetStarAttrValue(self): return self.attrTuple[5] # 星级额外属性值(非累积) list
- def GetUpItemAttrType(self): return self.attrTuple[6] # 每x个培养丹增加属性类型,x=UpEatItemPerCount list
- def GetUpItemAttrValue(self): return self.attrTuple[7] # 每x个培养丹增加属性值,x=UpEatItemPerCount list
- def GetNeedEatCount(self): return self.attrTuple[8] # 升级所需个数(非累计) DWORD
- def GetUpEatItemPerCount(self): return self.attrTuple[9] # 每次培养消耗x个 DWORD
-
-# 情缘魅力属性表
-class IPY_LoveCharm():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetCharmLV(self): return self.attrTuple[0] # 魅力等级 BYTE
- def GetUpNeedCharm(self): return self.attrTuple[1] # 升下级所需总魅力 DWORD
- def GetLVAttrType(self): return self.attrTuple[2] # 属性类型 list
- def GetLVAttrValue(self): return self.attrTuple[3] # 总属性值 list
- def GetLVAwardItemInfo(self): return self.attrTuple[4] # 等级物品奖励[[物品ID,个数,是否拍品], ...] list
-
# 骑宠觉醒表
class IPY_HorsePetSkin():
@@ -4340,17 +4136,6 @@
def GetNeedExp(self): return self.attrTuple[3] # 升级需要经验 DWORD
def GetAttrInfo(self): return self.attrTuple[4] # 属性 dict
def GetSkinIndex(self): return self.attrTuple[5] # 外观 BYTE
-
-# 功能特权奖励表
-class IPY_FuncSysPrivilege():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetFuncSysID(self): return self.attrTuple[0] # 功能系统ID BYTE
- def GetDayNum(self): return self.attrTuple[1] # 第X天 BYTE
- def GetDayAwardItemInfo(self): return self.attrTuple[2] # 奖励物品信息 [[物品ID,个数,是否拍品], ...] list
# 累计充值奖励表
class IPY_HistoryRechargeAward():
@@ -4386,26 +4171,6 @@
def GetFreeRewardItemList(self): return self.attrTuple[3] # 免费奖励物品列表 [[物品ID,个数,是否拍品],...] list
def GetZLRewardItemList(self): return self.attrTuple[4] # 战令奖励物品列表 [[物品ID,个数,是否拍品],...] list
def GetZLRewardItemListH(self): return self.attrTuple[5] # 高级战令奖励物品列表 [[物品ID,个数,是否拍品],...] list
-
-# 仙宫表
-class IPY_Xiangong():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetXiangongID(self): return self.attrTuple[0] # 仙宫ID WORD
-
-# 仙宫天道树
-class IPY_TiandaoTree():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetAwardIndex(self): return self.attrTuple[0] # 奖励索引 WORD
- def GetNeedQiyun(self): return self.attrTuple[1] # 所需气运值 DWORD
- def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表 list
# 祝福树
class IPY_TreeLV():
@@ -4577,7 +4342,6 @@
self.__LoadFileData("RealmXXZL", onlyCheck)
self.__LoadFileData("Realm", onlyCheck)
self.__LoadFileData("RealmLVUPTask", onlyCheck)
- self.__LoadFileData("LianTi", onlyCheck)
self.__LoadFileData("FuncConfig", onlyCheck)
self.__LoadFileData("FuncOpenLV", onlyCheck)
self.__LoadFileData("ItemCompound", onlyCheck)
@@ -4597,12 +4361,9 @@
self.__LoadFileData("EquipLegendAttrType", onlyCheck)
self.__LoadFileData("EquipLegendAttrLib", onlyCheck)
self.__LoadFileData("EquipLegendAttrValue", onlyCheck)
- self.__LoadFileData("Dogz", onlyCheck)
- self.__LoadFileData("DogzEquipPlus", onlyCheck)
self.__LoadFileData("EquipWash", onlyCheck)
self.__LoadFileData("AttrFruit", onlyCheck)
self.__LoadFileData("EquipDecompose", onlyCheck)
- self.__LoadFileData("FaQiLVUp", onlyCheck)
self.__LoadFileData("HorseClass", onlyCheck)
self.__LoadFileData("HorseSkin", onlyCheck)
self.__LoadFileData("Gubao", onlyCheck)
@@ -4701,17 +4462,10 @@
self.__LoadFileData("ItemWashMax", onlyCheck)
self.__LoadFileData("SkillElement", onlyCheck)
self.__LoadFileData("LingGenEffect", onlyCheck)
- self.__LoadFileData("LoveGift", onlyCheck)
- self.__LoadFileData("Marry", onlyCheck)
- self.__LoadFileData("LoveRing", onlyCheck)
- self.__LoadFileData("LoveCharm", onlyCheck)
self.__LoadFileData("HorsePetSkin", onlyCheck)
- self.__LoadFileData("FuncSysPrivilege", onlyCheck)
self.__LoadFileData("HistoryRechargeAward", onlyCheck)
self.__LoadFileData("CustomAward", onlyCheck)
self.__LoadFileData("Zhanling", onlyCheck)
- self.__LoadFileData("Xiangong", onlyCheck)
- self.__LoadFileData("TiandaoTree", onlyCheck)
self.__LoadFileData("TreeLV", onlyCheck)
self.__LoadFileData("LLMJ", onlyCheck)
self.__LoadFileData("GoldRushCamp", onlyCheck)
@@ -5202,13 +4956,6 @@
self.CheckLoadData("RealmLVUPTask")
return self.ipyRealmLVUPTaskCache[index]
- def GetLianTiCount(self):
- self.CheckLoadData("LianTi")
- return self.ipyLianTiLen
- def GetLianTiByIndex(self, index):
- self.CheckLoadData("LianTi")
- return self.ipyLianTiCache[index]
-
def GetFuncConfigCount(self):
self.CheckLoadData("FuncConfig")
return self.ipyFuncConfigLen
@@ -5342,20 +5089,6 @@
self.CheckLoadData("EquipLegendAttrValue")
return self.ipyEquipLegendAttrValueCache[index]
- def GetDogzCount(self):
- self.CheckLoadData("Dogz")
- return self.ipyDogzLen
- def GetDogzByIndex(self, index):
- self.CheckLoadData("Dogz")
- return self.ipyDogzCache[index]
-
- def GetDogzEquipPlusCount(self):
- self.CheckLoadData("DogzEquipPlus")
- return self.ipyDogzEquipPlusLen
- def GetDogzEquipPlusByIndex(self, index):
- self.CheckLoadData("DogzEquipPlus")
- return self.ipyDogzEquipPlusCache[index]
-
def GetEquipWashCount(self):
self.CheckLoadData("EquipWash")
return self.ipyEquipWashLen
@@ -5376,13 +5109,6 @@
def GetEquipDecomposeByIndex(self, index):
self.CheckLoadData("EquipDecompose")
return self.ipyEquipDecomposeCache[index]
-
- def GetFaQiLVUpCount(self):
- self.CheckLoadData("FaQiLVUp")
- return self.ipyFaQiLVUpLen
- def GetFaQiLVUpByIndex(self, index):
- self.CheckLoadData("FaQiLVUp")
- return self.ipyFaQiLVUpCache[index]
def GetHorseClassCount(self):
self.CheckLoadData("HorseClass")
@@ -6070,47 +5796,12 @@
self.CheckLoadData("LingGenEffect")
return self.ipyLingGenEffectCache[index]
- def GetLoveGiftCount(self):
- self.CheckLoadData("LoveGift")
- return self.ipyLoveGiftLen
- def GetLoveGiftByIndex(self, index):
- self.CheckLoadData("LoveGift")
- return self.ipyLoveGiftCache[index]
-
- def GetMarryCount(self):
- self.CheckLoadData("Marry")
- return self.ipyMarryLen
- def GetMarryByIndex(self, index):
- self.CheckLoadData("Marry")
- return self.ipyMarryCache[index]
-
- def GetLoveRingCount(self):
- self.CheckLoadData("LoveRing")
- return self.ipyLoveRingLen
- def GetLoveRingByIndex(self, index):
- self.CheckLoadData("LoveRing")
- return self.ipyLoveRingCache[index]
-
- def GetLoveCharmCount(self):
- self.CheckLoadData("LoveCharm")
- return self.ipyLoveCharmLen
- def GetLoveCharmByIndex(self, index):
- self.CheckLoadData("LoveCharm")
- return self.ipyLoveCharmCache[index]
-
def GetHorsePetSkinCount(self):
self.CheckLoadData("HorsePetSkin")
return self.ipyHorsePetSkinLen
def GetHorsePetSkinByIndex(self, index):
self.CheckLoadData("HorsePetSkin")
return self.ipyHorsePetSkinCache[index]
-
- def GetFuncSysPrivilegeCount(self):
- self.CheckLoadData("FuncSysPrivilege")
- return self.ipyFuncSysPrivilegeLen
- def GetFuncSysPrivilegeByIndex(self, index):
- self.CheckLoadData("FuncSysPrivilege")
- return self.ipyFuncSysPrivilegeCache[index]
def GetHistoryRechargeAwardCount(self):
self.CheckLoadData("HistoryRechargeAward")
@@ -6132,20 +5823,6 @@
def GetZhanlingByIndex(self, index):
self.CheckLoadData("Zhanling")
return self.ipyZhanlingCache[index]
-
- def GetXiangongCount(self):
- self.CheckLoadData("Xiangong")
- return self.ipyXiangongLen
- def GetXiangongByIndex(self, index):
- self.CheckLoadData("Xiangong")
- return self.ipyXiangongCache[index]
-
- def GetTiandaoTreeCount(self):
- self.CheckLoadData("TiandaoTree")
- return self.ipyTiandaoTreeLen
- def GetTiandaoTreeByIndex(self, index):
- self.CheckLoadData("TiandaoTree")
- return self.ipyTiandaoTreeCache[index]
def GetTreeLVCount(self):
self.CheckLoadData("TreeLV")
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
index 0674ece..e7cd57d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -585,7 +585,6 @@
itemEffIdCallFuncDic = {
ChConfig.Def_Effect_ItemAddLV:"Item_AddLV", #升级道具
ChConfig.Def_Effect_PrizeCoin:"Item_PrizeCoin", # 奖励充值点券
- ChConfig.Def_Effect_TiandaoQiyun:"Item_TiandaoQiyun", # 天道树气运
ChConfig.Def_Effect_TrainRealmLV:"Item_TrainRealmLV", # 境界培养卡
ChConfig.Def_Effect_AddFBCnt:"Item_AddFBCnt", # 增加副本可进入次数
ChConfig.Def_Effect_EmojiPack:"Item_EmojiPack",
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
index 824ef4f..5c90268 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -28,7 +28,6 @@
import PlayerActivity
import ChPyNetSendPack
import NetPackCommon
-import PlayerXiangong
import IpyGameDataPY
import PlayerGubao
import PyGameData
@@ -924,14 +923,6 @@
tagItem.Clear()
return True
- #气运
- if itemEff.GetEffectID() == ChConfig.Def_Effect_TiandaoQiyun:
- isAutoUse = itemEff.GetEffectValue(1)
- if isAutoUse:
- addQiyun = itemEff.GetEffectValue(0) * tagItemCount
- PlayerXiangong.AddTiandaoQiyun(curPlayer, addQiyun, {"ItemID":itemID, "ItemCount":tagItemCount, "isAutoUse":1})
- tagItem.Clear()
- return True
#增加副本次数
if itemEff.GetEffectID() == ChConfig.Def_Effect_AddFBCnt:
isAutoUse = itemEff.GetEffectValue(1)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
index 19e6d2b..ca1fdfe 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -913,10 +913,6 @@
initCount = IpyGameDataPY.GetFuncCfg("InitDepotCellCount", 1)
elif packType == ShareDefine.rptTreasure:
initCount = IpyGameDataPY.GetFuncCfg("TreasureSet", 3)
- elif packType == ShareDefine.rptDogzItem:
- initCount = IpyGameDataPY.GetFuncCfg("DogzPack", 1)
- elif packType == ShareDefine.rptDogzEquip:
- initCount = IpyGameDataPY.GetFuncCfg("DogzPack", 2)
if not initCount:
bagInitCntDict = IpyGameDataPY.GetFuncEvalCfg("InitBagCellCount", 2, {})
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_TiandaoQiyun.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_TiandaoQiyun.py
deleted file mode 100644
index 40d6dc1..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_TiandaoQiyun.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package UseItem.Item_TiandaoQiyun
-#
-# @todo:天道气运
-# @author hxp
-# @date 2024-09-04
-# @version 1.0
-#
-# 详细描述: 天道气运
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2024-09-04 16:30"""
-#-------------------------------------------------------------------------------
-
-import ItemCommon
-import PlayerXiangong
-
-def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData):
- ##批量使用物品
-
- curEff = curRoleItem.GetEffectByIndex(0)
- addValue = curEff.GetEffectValue(0) * useCnt
-
- PlayerXiangong.AddTiandaoQiyun(curPlayer, addValue, {"ItemID":curRoleItem.GetItemTypeID(), "ItemCount":useCnt})
-
- succCnt = useCnt # 默认值使用1个
- ItemCommon.DelItem(curPlayer, curRoleItem, succCnt)
- return True, succCnt
-
-
-
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 2764be9..25906c0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -56,29 +56,20 @@
import PlayerActFamilyCTGAssist
import PlayerActManyDayRecharge
import PlayerActSingleRecharge
-import PlayerFuncSysPrivilege
import OpenServerActivity
import ChNetSendPack
import PlayerArena
import PyGameData
import PlayerCoin
-import PlayerCharm
-import PlayerDogz
import PlayerFB
-import PlayerFaQi
import SkillShell
import PlayerGubao
import PlayerCustomAward
import PlayerZhanling
import PlayerTree
import PlayerLLMJ
-import PlayerLianTi
import PlayerTask
-import PlayerYinji
-import PlayerLove
import GameObj
-import PlayerChangeJob
-import PlayerXiangong
import PlayerGoldRush
import PlayerActLoginNew
import PlayerActBuyCountGift
@@ -148,194 +139,6 @@
if FBLogic.PlayerLoginInFBCheck(curPlayer, tick):
#玩家是第一次登录, 并且玩家需要踢回原来地图
return
- return
-
-#// A1 20 货币兑换 #tagCMMoneyExchange
-#
-#struct tagCMMoneyExchange
-#{
-# tagHead Head;
-# BYTE SrcMoneyType; // 源货币类型
-# BYTE TagMoneyType; // 目标货币类型
-# DWORD ExchangeValue; // 兑换数量(消耗源货币的数量)
-#};
-def OnMoneyExchange(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- srcMoneyType = clientData.SrcMoneyType
- tagMoneyType = clientData.TagMoneyType
- exchangeValue = clientData.ExchangeValue
-
- exchangeMoneyInfo = IpyGameDataPY.GetFuncEvalCfg("EqualValueMoney", 1, {})
- if str(srcMoneyType) not in exchangeMoneyInfo:
- return
- exchangeInfo = exchangeMoneyInfo[str(srcMoneyType)]
- if tagMoneyType != exchangeInfo[0]:
- return
- multiple = exchangeInfo[1]
- if exchangeValue <= 0:
- return
-
- if not PlayerControl.PayMoney(curPlayer, srcMoneyType, exchangeValue, "MoneyExchange"):
- return
-
- tagMoneyAdd = exchangeValue * multiple
- PlayerControl.GiveMoney(curPlayer, tagMoneyType, tagMoneyAdd, "MoneyExchange")
- GameWorld.Log("货币兑换: srcMoneyType=%s,exchangeValue=%s,tagMoneyType=%s,tagMoneyAdd=%s"
- % (srcMoneyType, exchangeValue, tagMoneyType, tagMoneyAdd), curPlayer.GetPlayerID())
- return
-
-#// A1 21 转职业 #tagCMChangeJob
-#
-#struct tagCMChangeJob
-#{
-# tagHead Head;
-# BYTE TagJob;
-#};
-def OnChangeJob(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- PlayerChangeJob.DoChangeJob(curPlayer, curPlayer.GetJob(), clientData.TagJob)
- return
-
-#// A1 08 刷新主服角色信息 #tagCMRefreshMainServerRole
-#
-#struct tagCMRefreshMainServerRole
-#{
-# tagHead Head;
-#};
-def OnRefreshMainServerRole(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
- Sync_DBPlayer(curPlayer)
-
- # 死亡复活
- if GameObj.GetHP(curPlayer) <=0 or curPlayer.GetPlayerAction() == IPY_GameWorld.paDie:
- PlayerRebornByType(curPlayer, ChConfig.rebornType_System, tick)
-
- # 强刷一次属性,刷之前重置还没同步过所有属性
- curPlayer.SetDict(ChConfig.Def_PlayerKey_NotifyAllAttrState, 0)
- playerControl = PlayerControl.PlayerControl(curPlayer)
- playerControl.ReCalcAllState()
-
- # 同步所有buff
- __Sync_ClientBuff(curPlayer)
-
- PlayerState.Sync_PKBossState(curPlayer)
-
- # 恢复视野,刷新自己的视野
- curPlayer.SetVisible(True)
- PlayerControl.SetSight(curPlayer, 0)
- curPlayer.RefreshView()
- PlayerControl.SetSight(curPlayer, ChConfig.Def_PlayerSight_Default)
- curPlayer.RefreshView()
-
- msgInfo = ""
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetPlayerID(), 0, 0, "RefreshMainServerRole", msgInfo, len(msgInfo))
- return
-
-def Sync_DBPlayer(curPlayer):
- ## 同步DBPlayer信息,同0102封包
- dbPlayer = ChPyNetSendPack.tagMCDBPlayer()
- dbPlayer.AccID = curPlayer.GetAccID()
- dbPlayer.PlayerID = curPlayer.GetPlayerID()
- dbPlayer.PlayerName = curPlayer.GetPlayerName()
- dbPlayer.AccState = curPlayer.GetAccState()
- dbPlayer.GMLevel = curPlayer.GetGMLevel()
- dbPlayer.Sex = curPlayer.GetSex()
- dbPlayer.Job = curPlayer.GetJob()
- dbPlayer.ReincarnationLv = curPlayer.GetReincarnationLv()
- dbPlayer.LV = curPlayer.GetLV()
- dbPlayer.LVEx = curPlayer.GetLVEx()
- dbPlayer.LV2 = curPlayer.GetLV2()
- dbPlayer.ExpPoint = curPlayer.GetExpPoint()
- dbPlayer.TotalExp = curPlayer.GetTotalExp()
- dbPlayer.Family = curPlayer.GetFamilyID()
- dbPlayer.FamilyName = curPlayer.GetFamilyName()
- dbPlayer.TeamHornor = curPlayer.GetTeamHornor()
- dbPlayer.FamilyHornor = curPlayer.GetFamilyHornor()
- dbPlayer.FamilyActiveValue = curPlayer.GetFamilyActiveValue()
- dbPlayer.LastWeekFamilyActiveValue = curPlayer.GetLastWeekFamilyActiveValue()
- dbPlayer.CountryHornor = curPlayer.GetCountryHornor()
- dbPlayer.CountryLastWeekHornor = curPlayer.GetCountryLastWeekHornor()
- dbPlayer.Mate = curPlayer.GetMate()
- dbPlayer.Gold = curPlayer.GetGold()
- dbPlayer.GoldPaper = curPlayer.GetGoldPaper()
- dbPlayer.Silver = curPlayer.GetSilver()
- dbPlayer.SilverPaper = curPlayer.GetSilverPaper()
- dbPlayer.FightPoint = curPlayer.GetFightPoint()
- dbPlayer.HappyPoint = curPlayer.GetHappyPoint()
- dbPlayer.LineID = curPlayer.GetLineID()
- dbPlayer.MapID = curPlayer.GetMapID() # 玩家身上的 GetMapID 返回的就是 GetDataMapID
- dbPlayer.PosX = curPlayer.GetPosX()
- dbPlayer.PosY = curPlayer.GetPosY()
- dbPlayer.RebornMapID = curPlayer.GetRebornMapID()
- dbPlayer.RebornPosX = curPlayer.GetRebornPosX()
- dbPlayer.RebornPosY = curPlayer.GetRebornPosY()
- dbPlayer.State = curPlayer.GetState()
- dbPlayer.HP = curPlayer.GetHP()
- dbPlayer.HPEx = curPlayer.GetHPEx()
- dbPlayer.XP = curPlayer.GetXP()
- dbPlayer.HPRestoreSetting = curPlayer.GetHPRestoreSetting()
- dbPlayer.MPRestoreSetting = curPlayer.GetMPRestoreSetting()
- dbPlayer.FreePoint = curPlayer.GetFreePoint()
- dbPlayer.FreeSkillPoint = curPlayer.GetFreeSkillPoint()
- dbPlayer.BaseSTR = curPlayer.GetBaseSTR()
- dbPlayer.BasePNE = curPlayer.GetBasePNE()
- dbPlayer.BasePHY = curPlayer.GetBasePHY()
- dbPlayer.BaseCON = curPlayer.GetBaseCON()
- dbPlayer.STR = curPlayer.GetSTR()
- dbPlayer.PNE = curPlayer.GetPNE()
- dbPlayer.PHY = curPlayer.GetPHY()
- dbPlayer.CON = curPlayer.GetCON()
- #dbPlayer.Setting = curPlayer.GetSetting() # 没有
- dbPlayer.PKValue = curPlayer.GetPKValue()
- #dbPlayer.ActiveValue = curPlayer.GetActiveValue() # 没有
- dbPlayer.BackpackLV = curPlayer.GetBackpackLV()
- dbPlayer.WarehouseLV = curPlayer.GetWarehouseLV()
- dbPlayer.TeamID = curPlayer.GetTeamID()
- dbPlayer.UseGoldType = curPlayer.GetUseGoldType()
- dbPlayer.UseSilverType = curPlayer.GetUseSilverType()
- dbPlayer.AttackMode = curPlayer.GetAttackMode()
- dbPlayer.LastWeekOnlineTime = curPlayer.GetLastWeekOnlineTime()
- dbPlayer.FBID = curPlayer.GetClientLineID()
- dbPlayer.FamilyLV = curPlayer.GetFamilyLV()
- dbPlayer.FriendFavor = curPlayer.GetFriendFavor()
- dbPlayer.Energy = curPlayer.GetEnergy()
- dbPlayer.EquipShowSwitch = curPlayer.GetEquipShowSwitch()
- dbPlayer.LuckValue = curPlayer.GetLuckValue()
- dbPlayer.ExAttr1 = curPlayer.GetExAttr1()
- dbPlayer.ExAttr2 = curPlayer.GetExAttr2()
- dbPlayer.ExAttr3 = curPlayer.GetExAttr3()
- dbPlayer.ExAttr4 = curPlayer.GetExAttr4()
- dbPlayer.ExAttr5 = curPlayer.GetExAttr5()
- dbPlayer.Faction = curPlayer.GetFaction()
- dbPlayer.InfamyValue = curPlayer.GetInfamyValue()
- dbPlayer.OfficialRank = curPlayer.GetOfficialRank()
- dbPlayer.ChangeCoinPointTotal = curPlayer.GetChangeCoinPointTotal()
- dbPlayer.VIPLv = curPlayer.GetVIPLv()
- dbPlayer.VIPLvForPhone = curPlayer.GetVIPLvForPhone()
- dbPlayer.ExAttr6 = curPlayer.GetExAttr6()
- dbPlayer.ExAttr7 = curPlayer.GetExAttr7()
- dbPlayer.ExAttr8 = curPlayer.GetExAttr8()
- dbPlayer.ExAttr9 = curPlayer.GetExAttr9()
- dbPlayer.ExAttr10 = curPlayer.GetExAttr10()
- dbPlayer.ModelMark = curPlayer.GetModelMark()
- dbPlayer.ExAttr11 = curPlayer.GetExAttr11()
- dbPlayer.ExAttr12 = curPlayer.GetExAttr12()
- dbPlayer.ExAttr13 = curPlayer.GetExAttr13()
- dbPlayer.ExAttr14 = curPlayer.GetExAttr14()
- dbPlayer.OperateInfo = curPlayer.GetOperateInfo()
- dbPlayer.Operate = curPlayer.GetOperate()
- dbPlayer.ServerID = curPlayer.GetServerID()
- dbPlayer.ExAttr15 = curPlayer.GetExAttr15()
- dbPlayer.ExAttr16 = curPlayer.GetExAttr16()
- dbPlayer.ExAttr17 = curPlayer.GetExAttr17()
- dbPlayer.ExAttr18 = curPlayer.GetExAttr18()
- dbPlayer.ExAttr19 = curPlayer.GetExAttr19()
- dbPlayer.ExAttr20 = curPlayer.GetExAttr20()
- dbPlayer.Face = curPlayer.GetFace()
- dbPlayer.FacePic = curPlayer.GetFacePic()
- dbPlayer.RoleType = curPlayer.GetRoleType()
- NetPackCommon.SendFakePack(curPlayer, dbPlayer)
return
#---------------------------------------------------------------------
@@ -490,12 +293,6 @@
# 坐骑相关通知
PlayerHorse.PlayerHorseLogin(curPlayer)
- # 法器
- PlayerFaQi.PlayerFaQiLogin(curPlayer)
-
- # 炼体
- PlayerLianTi.OnPlayerLogin(curPlayer)
-
PlayerTreasure.OnTreasureLogin(curPlayer)
# 副本进入时间
@@ -506,12 +303,6 @@
#成就
PlayerSuccess.SuccOnLogin(curPlayer)
-
- #魅力
- PlayerCharm.OnPlayerLogin(curPlayer)
-
- #情缘
- PlayerLove.DoPlayerLogin(curPlayer)
#同步自动战斗配置记录
# Sync_AutoFightSetting(curPlayer)
@@ -553,8 +344,6 @@
SyncPackDownloadAward(curPlayer)
# 登录触发功能开启(老号处理)
GameFuncComm.DoFuncOpenLogic(curPlayer)
- # 神兽
- PlayerDogz.OnPlayerLogin(curPlayer)
# 小助手
SyncLittleHelper(curPlayer)
PlayerFB.OnLogin(curPlayer)
@@ -564,8 +353,6 @@
Sync_CreateRoleAwardInfo(curPlayer)
#自定义奖励
PlayerCustomAward.OnPlayerLogin(curPlayer)
- #功能系统特权
- PlayerFuncSysPrivilege.OnPlayerLogin(curPlayer)
#玩法前瞻奖励
gameNoticeAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GameNoticeAwardState)
if gameNoticeAwardState:
@@ -615,7 +402,6 @@
PlayerHero.OnPlayerLogin(curPlayer)
PlayerMail.OnPlayerLogin(curPlayer)
PlayerHJG.OnPlayerLogin(curPlayer)
- PlayerXiangong.OnPlayerLogin(curPlayer)
PlayerGubao.OnPlayerLogin(curPlayer)
PlayerZhanling.OnPlayerLogin(curPlayer)
PlayerTask.OnPlayerLogin(curPlayer)
@@ -1324,13 +1110,6 @@
#初始化寻宝背包
PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTreasure)
- #初始化神兽物品背包
- #curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzItem)
- #curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptDogzItem))
- #curPack.Sync_PackCanUseCount()
- #初始化神兽装备背包
- #curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
- #curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptDogzEquip))
#curPack.Sync_PackCanUseCount()
#初始化垃圾分类背包
#curPack = itemManager.GetPack(ShareDefine.rptGarbage)
@@ -1536,8 +1315,7 @@
SyncPKModel(curPlayer)
GameWorld.DebugLog("进入地图强制切换PK模式: %s" % initAttackModel)
- PassiveBuffEffMng.OnLoadMapGFPassive(curPlayer)
- PlayerYinji.OnLoadMap(curPlayer)
+ #PassiveBuffEffMng.OnLoadMapGFPassive(curPlayer)
#EndLoadMap需放在最后, 0403 tagPlayerLoginLoadOK
curPlayer.EndLoadMap()
@@ -2881,7 +2659,7 @@
GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer) * resetHpPercent / ChConfig.Def_MaxRateValue)
#curPlayer.SetMP(curPlayer.GetMaxMP() * resetMpPercent / ChConfig.Def_MaxRateValue)
#护盾
- PlayerControl.SetProDef(curPlayer, PlayerControl.GetMaxProDef(curPlayer))
+ #PlayerControl.SetProDef(curPlayer, PlayerControl.GetMaxProDef(curPlayer))
#玩家复活后副本处理
FBLogic.OnPlayerRebornOver(curPlayer, rebornType)
@@ -3384,9 +3162,6 @@
# 仙盟攻城战活动奖励
elif rewardType == ChConfig.Def_RewardType_FamilyGCZ:
PlayerActFamilyGCZ.GetFamilyGCZAward(curPlayer, dataEx, tick)
- # 天道树奖励
- elif rewardType == ChConfig.Def_RewardType_TiandaoTree:
- PlayerXiangong.GetTiandaoTreeAward(curPlayer, dataEx)
# 寻宝累计次数奖励
elif rewardType == ChConfig.Def_RewardType_TreasureCntAward:
PlayerTreasure.GetTreasureCntAward(curPlayer, dataEx, dataExStr)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChangeJob.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChangeJob.py
deleted file mode 100644
index 2f22959..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChangeJob.py
+++ /dev/null
@@ -1,312 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerChangeJob
-#
-# @todo:转职业
-# @author hxp
-# @date 2022-10-14
-# @version 1.0
-#
-# 详细描述: 转职业
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-10-14 19:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import ShareDefine
-import IpyGameDataPY
-import IPY_GameWorld
-import PlayerBillboard
-import DataRecordPack
-import PlayerControl
-import ItemControler
-import ItemCommon
-import ChConfig
-
-
-def DoChangeJob(curPlayer, curJob, tagJob, isFree=False):
- ''' 转换职业,为防止转职业过程失败,该函数可重复执行调用,如果玩家转职出现异常,可通过后台GM直接执行命令重复操作转职
- '''
-
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("玩家转职业: playerJob=%s,curJob=%s,tagJob=%s,isFree=%s"
- % (curPlayer.GetJob(), curJob, tagJob, isFree), playerID)
- if curJob == tagJob:
- return
- jobList = IpyGameDataPY.GetFuncEvalCfg("OpenJob", 1)
- if curJob not in jobList or tagJob not in jobList:
- return
-
- if not isFree:
- costItemInfo = IpyGameDataPY.GetFuncEvalCfg("ChangeJob", 1) # 所需物品ID|个数
- costItemID, costItemCount = costItemInfo
-
- costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, costItemID, costItemCount)
- lackCnt = costItemCount - bindCnt - unBindCnt
- if lackCnt > 0:
- GameWorld.DebugLog("转职业所需道具不足! costItemID=%s,costItemCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%s"
- % (costItemID, costItemCount, bindCnt, unBindCnt, lackCnt), playerID)
- return
-
- ipyDataMgr = IpyGameDataPY.IPY_Data()
-
- # 1.技能(人族法宝技能,普攻技能,驭灵卷技能,翻滚技能,境界技能,专精)
- # 五行专精 直接重置
- delSkillIDList = [] # 需要删除的技能ID列表
- replaceSkillDict = {} # 需要替换的技能信息 {skillID:替换技能ID, ...}
- skillManager = curPlayer.GetSkillManager()
- for i in range(skillManager.GetSkillCount()):
- curSkill = skillManager.GetSkillByIndex(i)
- if not curSkill:
- continue
-
- skillUseType = curSkill.GetUseType()
- if skillUseType == 0:
- # 无职业限制
- continue
- if not skillUseType & pow(2, curJob):
- continue
-
- funcType = curSkill.GetFuncType()
- skillID = curSkill.GetSkillID()
- skillTypeID = curSkill.GetSkillTypeID()
- if funcType in [ChConfig.Def_SkillFuncType_FbSPSkill]:
- delSkillIDList.append(skillID)
- else:
- replaceSkillDict[skillTypeID] = [skillID, curSkill.GetSkillLV(), 0]
-
- # 1.1 普攻
- curJobCommAtkSkillIDList = IpyGameDataPY.GetFuncEvalCfg("JobFitterSkill", curJob)
- tagJobCommAtkSkillIDList = IpyGameDataPY.GetFuncEvalCfg("JobFitterSkill", tagJob)
- if len(curJobCommAtkSkillIDList) != len(tagJobCommAtkSkillIDList):
- GameWorld.ErrLog("转职业普攻对应技能配置错误! curJob=%s,tagJob=%s" % (curJob, tagJob), playerID)
- return
- for i, skillTypeID in enumerate(curJobCommAtkSkillIDList):
- if skillTypeID in replaceSkillDict:
- replaceSkillDict[skillTypeID][-1] = tagJobCommAtkSkillIDList[i]
-
- # 1.2 法宝 - 主动技能
- for index in range(ipyDataMgr.GetTreasureUpCount()):
- ipyData = ipyDataMgr.GetTreasureUpByIndex(index)
- UnLockSkillList = ipyData.GetUnLockSkill()
- for skillTypeID in UnLockSkillList:
- if skillTypeID not in replaceSkillDict:
- continue
- if tagJob > len(UnLockSkillList):
- GameWorld.ErrLog("法宝升级表未配置转职业对应技能! skillTypeID=%s,tagJob=%s" % (skillTypeID, tagJob), playerID)
- return
- replaceSkillDict[skillTypeID][-1] = UnLockSkillList[tagJob - 1]
- break
-
- # 1.3 境界 - 被动技能
- for index in range(ipyDataMgr.GetRealmCount()):
- ipyData = ipyDataMgr.GetRealmByIndex(index)
- LearnSkillIDInfo = {}
- if str(curJob) not in LearnSkillIDInfo:
- continue
- curJobLearnSkillIDList = LearnSkillIDInfo[str(curJob)]
- tagJobLearnSkillIDList = LearnSkillIDInfo.get(str(tagJob), [])
- for i, skillTypeID in enumerate(curJobLearnSkillIDList):
- if skillTypeID not in replaceSkillDict:
- continue
- if i >= len(tagJobLearnSkillIDList):
- GameWorld.ErrLog("境界表未配置转职业对应技能! skillTypeID=%s,tagJob=%s" % (skillTypeID, tagJob), playerID)
- return
- replaceSkillDict[skillTypeID][-1] = tagJobLearnSkillIDList[i]
- break
-
- for skillTypeID, repInfo in replaceSkillDict.items():
- skillID, skillLV, repSkillTypeID = repInfo
- if not repSkillTypeID or not GameWorld.GetGameData().GetSkillBySkillID(repSkillTypeID):
- GameWorld.ErrLog("玩家转职业时找不到可替换的目标职业技能数据! skillTypeID=%s,skillID=%s,skillLV=%s,repSkillTypeID=%s,tagJob=%s"
- % (skillTypeID, skillID, skillLV, repSkillTypeID, tagJob), playerID)
- return
-
- # 2. 物品: 职业装备、翅膀、时装
- itemColorMin = IpyGameDataPY.GetFuncCfg("ChangeJob", 2) # 背包中需要转换的最低装备颜色品质
- auctionItemNeed = IpyGameDataPY.GetFuncCfg("ChangeJob", 3) # 背包中拍品是否转换
- jobWingIDListInfo = IpyGameDataPY.GetFuncEvalCfg("ChangeJob", 4, {}) # 职业对应翅膀ID突破顺序列表 {职业:[翅膀物品ID, ...], ...}
- costItemIDList = [] # 时装装备物品ID组列表 [[职业1时装ID, 职业2时装ID, ...], ...]
- for index in range(ipyDataMgr.GetCoatCount()):
- ipyData = ipyDataMgr.GetCoatByIndex(index)
- costItemIDList.append(ipyData.GetEquipItemID())
-
- replaceItemList = []
- for packType in [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse, IPY_GameWorld.rptEquip]:
- equipPack = curPlayer.GetItemManager().GetPack(packType)
- for index in range(equipPack.GetCount()):
- curItem = equipPack.GetAt(index)
- if not curItem or curItem.IsEmpty():
- continue
-
- itemID = curItem.GetItemTypeID()
- itemPlace = curItem.GetEquipPlace()
- itemColor = curItem.GetItemColor()
-
- # 背包、仓库 额外条件
- if packType in [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse]:
- if ItemCommon.CheckItemIsEquip(curItem) and itemPlace != ShareDefine.retWing:
- if itemColor < itemColorMin:
- continue
- if not auctionItemNeed and ItemControler.GetIsAuctionItem(curItem):
- continue
-
- itemJobLimit = curItem.GetJobLimit()
- if not itemJobLimit:
- continue
-
- if itemJobLimit != curJob:
- # 非需要转换的职业物品不处理
- continue
-
- # 基础部位, 直接按装备物品ID首位为对应职业进行替换
- if itemPlace in ChConfig.EquipPlace_Base:
- tagJobItemID = GameWorld.ToIntDef("%s%s" % (tagJob, str(itemID)[1:]))
- replaceItemList.append([packType, curItem, tagJobItemID])
-
- # 时装
- elif itemPlace in [ShareDefine.retWeaponSkin, ShareDefine.retClothesSkin, ShareDefine.retWeapon2Skin]:
- tagJobItemID = 0
- for costJobItemIDList in costItemIDList:
- if itemID not in costJobItemIDList:
- continue
- if tagJob > len(costJobItemIDList):
- GameWorld.ErrLog("时装表未配置转职业对应时装! itemID=%s,tagJob=%s" % (itemID, tagJob), playerID)
- return
- tagJobItemID = costJobItemIDList[tagJob - 1]
- break
- replaceItemList.append([packType, curItem, tagJobItemID])
-
- # 翅膀
- elif itemPlace == ShareDefine.retWing:
- curJobWingIDList = jobWingIDListInfo.get(curJob, [])
- tagJobWingIDList = jobWingIDListInfo.get(tagJob, [])
- if len(curJobWingIDList) != len(tagJobWingIDList):
- GameWorld.ErrLog("功能配置表转职业对应翅膀ID长度配置不一致! curJob=%s,tagJob=%s" % (curJob, tagJob), playerID)
- return
- if itemID in curJobWingIDList:
- tagJobItemID = tagJobWingIDList[curJobWingIDList.index(itemID)]
- replaceItemList.append([packType, curItem, tagJobItemID])
-
- else:
- GameWorld.ErrLog("转职业未知转换逻辑的物品ID! itemID=%s,tagJob=%s" % (itemID, tagJob), playerID)
-
- assignItemList = []
- for packType, curItem, tagJobItemID in replaceItemList:
- tagItem = ItemControler.GetOutPutItemObj(tagJobItemID, curItem.GetCount(), curPlayer=curPlayer)
- if not tagItem:
- GameWorld.ErrLog("转职业时创建物品异常! tagJobItemID=%s,tagJob=%s" % (tagJobItemID, tagJob), playerID)
- return
- assignItemList.append([packType, curItem, tagItem])
-
- ## -------- 以上为验证都没有任何问题后,开始执行转职业替换 ----------
- DR_ChangeJob(curPlayer, {"curJob":curJob, "tagJob":tagJob})
- delSkillIDList.sort()
- DR_ChangeJob(curPlayer, {"delSkillIDList":delSkillIDList, "replaceSkillDict":replaceSkillDict, "assignItemCount":len(assignItemList)})
- # 处理技能
- GameWorld.Log("删除技能: 个数=%s,delSkillIDList=%s" % (len(delSkillIDList), delSkillIDList), playerID)
- for num, delSkillID in enumerate(delSkillIDList, 1):
- skillData = GameWorld.GetGameData().GetSkillBySkillID(delSkillID)
- skillName = skillData.GetSkillName() if skillData else ""
- skillManager.DeleteSkillBySkillID(delSkillID, False)
- GameWorld.Log(" 删除技能 %s: delSkillID=%s(%s)" % (num, delSkillID, skillName), playerID)
- DR_ChangeJob(curPlayer, {"delSkillID":delSkillID, "skillName":skillName})
-
- repSkillTypeIDList = replaceSkillDict.keys()
- repSkillTypeIDList.sort()
- GameWorld.Log("替换技能: 个数=%s,repSkillTypeIDList=%s" % (len(repSkillTypeIDList), repSkillTypeIDList), playerID)
- for num, skillTypeID in enumerate(repSkillTypeIDList, 1):
- skillID, skillLV, repSkillTypeID = replaceSkillDict[skillTypeID]
- skillManager.DeleteSkillBySkillID(skillID, False)
- for _ in range(skillLV):
- skillManager.LVUpSkillBySkillTypeID(repSkillTypeID)
- repSkill = skillManager.FindSkillBySkillTypeID(repSkillTypeID)
- repSkillID = repSkill.GetSkillID() if repSkill else 0
- skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
- skillName = skillData.GetSkillName() if skillData else ""
- repSkillData = GameWorld.GetGameData().GetSkillBySkillID(repSkillID)
- repSkillName = repSkillData.GetSkillName() if repSkillData else ""
- GameWorld.Log(" 替换技能 %s: skillTypeID=%s,skillID=%s(%s),skillLV=%s,tagJob=%s,repSkillTypeID=%s,repSkillID=%s(%s)"
- % (num, skillTypeID, skillID, skillName, skillLV, tagJob, repSkillTypeID, repSkillID, repSkillName), playerID)
- DR_ChangeJob(curPlayer, {"skillTypeID":skillTypeID, "skillID":skillID, "skillLV":skillLV, "skillName":skillName,
- "repSkillTypeID":repSkillTypeID, "repSkillID":repSkillID, "repSkillName":repSkillName})
-
- GameWorld.Log("删除专精相关字典记录数据", playerID)
- for index in range(ipyDataMgr.GetSkillElementCount()):
- ipyData = ipyDataMgr.GetSkillElementByIndex(index)
- elementSkillID = ipyData.GetElementSkillID()
- mainSkillID = ipyData.GetMainSkillID()
- selectElementSkillID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SkillElementID % mainSkillID)
- if selectElementSkillID:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SkillElementID % mainSkillID, 0)
- mainSkillData = GameWorld.GetGameData().GetSkillBySkillID(mainSkillID)
- mainSkillName = mainSkillData.GetSkillName() if mainSkillData else ""
- selSkillData = GameWorld.GetGameData().GetSkillBySkillID(selectElementSkillID)
- selSkillName = selSkillData.GetSkillName() if selSkillData else ""
- GameWorld.Log(" 取消使用中的专精: mainSkillID=%s(%s),selectElementSkillID=%s(%s)"
- % (mainSkillID, mainSkillName, selectElementSkillID, selSkillName), playerID)
-
- elementSkillIDLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SkillElementLV % elementSkillID)
- if elementSkillIDLV:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SkillElementLV % elementSkillID, 0)
- elmSkillData = GameWorld.GetGameData().GetSkillBySkillID(elementSkillID)
- elmSkillName = elmSkillData.GetSkillName() if elmSkillData else ""
- GameWorld.Log(" 重置专精记录等级: elementSkillID=%s(%s),elementSkillIDLV=%s" % (elementSkillID, elmSkillName, elementSkillIDLV), playerID)
-
- #Item_ResetAttrPoint.DoResetAttrPoint(curPlayer, 0, 0)
-
- # 处理物品
- GameWorld.Log("替换物品: 个数=%s" % len(assignItemList), playerID)
- for num, itemInfo in enumerate(assignItemList, 1):
- packType, curItem, tagItem = itemInfo
- curItemID = curItem.GetItemTypeID()
- curItemName = curItem.GetName()
- curUserData = curItem.GetUserData()
- curAuctionItem = ItemControler.GetIsAuctionItem(curItem)
- curItemScore = ItemCommon.GetEquipGearScore(curItem)
-
- tagItemID = tagItem.GetItemTypeID()
- tagItemName = tagItem.GetName()
- tagUserData = tagItem.GetUserData()
- tagAuctionItem = ItemControler.GetIsAuctionItem(tagItem)
-
- if curAuctionItem != tagAuctionItem:
- ItemControler.SetIsAuctionItem(tagItem, curAuctionItem, curPlayer)
- tagItem.SetUserData(curUserData, len(curUserData)) # 继承物品自定义数据
- ItemCommon.MakeEquipGS(tagItem)
- tagItemScore = ItemCommon.GetEquipGearScore(tagItem)
-
- GameWorld.Log(" 替换物品 %s: packType=%s,curItemID=%s(%s),curAuctionItem=%s,curItemScore=%s,tagJob=%s,tagItemID=%s(%s),tagItemScore=%s,curUserData=%s,tagUserData=%s"
- % (num, packType, curItemID, curItemName, curAuctionItem, curItemScore, tagJob, tagItemID, tagItemName, tagItemScore, curUserData, tagUserData), playerID)
-
- curItemDRDict = ItemCommon.GetItemNoteDict(curItem, curItem.GetCount())
- curItemDRDict.update({"ItemScore":curItemScore})
- tagItemDRDict = ItemCommon.GetItemNoteDict(tagItem, tagItem.GetCount())
- tagItemDRDict.update({"ItemScore":tagItemScore})
- DR_ChangeJob(curPlayer, {"packType":packType, "curItem":curItemDRDict, "tagItem":tagItemDRDict})
- curItem.AssignItem(tagItem)
-
- # 扣除消耗
- if not isFree and costItemCount:
- ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, costItemCount, "ChangeJob")
-
- curPlayer.SetJob(tagJob)
- GameWorld.Log("=== 转职业完毕: SetJob=%s ===" % tagJob, playerID)
- DR_ChangeJob(curPlayer, {"SetJob":tagJob})
-
- PlayerControl.PlayerControl(curPlayer).ReCalcAllState()
- PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer, isAll=True)
-
- # 踢下线
- curPlayer.Kick(IPY_GameWorld.disMapServerClose)
- return
-
-def DR_ChangeJob(curPlayer, dataDict):
- dataDict.update({"PlayerID":curPlayer.GetPlayerID(), "AccID":curPlayer.GetAccID()})
- DataRecordPack.SendEventPack("ChangeJob", dataDict, curPlayer)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCharm.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCharm.py
deleted file mode 100644
index d969883..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCharm.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerCharm
-#
-# @todo:魅力
-# @author hxp
-# @date 2021-12-03
-# @version 1.0
-#
-# 详细描述: 魅力
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-12-03 19:00"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import PlayerControl
-import IpyGameDataPY
-import ItemControler
-import GameWorld
-
-def OnPlayerLogin(curPlayer):
-
- # 重新设置,触发上线通知
- if PlayerControl.GetCharmLV(curPlayer):
- PlayerControl.SetCharmLV(curPlayer, PlayerControl.GetCharmLV(curPlayer))
-
- return
-
-def GameServer_DoLogic_Charm(curPlayer, msgData):
-
- msgType = msgData[0]
-
- ## 魅力等级提升
- if msgType == "CharmLVUp":
- totalCharm = msgData[1]
- __DoCharmLVUp(curPlayer, totalCharm)
-
- return
-
-def __DoCharmLVUp(curPlayer, totalCharm):
-
- playerID = curPlayer.GetPlayerID()
- charmLV = PlayerControl.GetCharmLV(curPlayer)
- ipyData = IpyGameDataPY.GetIpyGameData("LoveCharm", charmLV)
- if not ipyData:
- return
-
- if not ipyData.GetUpNeedCharm():
- GameWorld.DebugLog("魅力等级已满级,无法升级! charmLV=%s" % charmLV, playerID)
- return
-
- if totalCharm < ipyData.GetUpNeedCharm():
- GameWorld.DebugLog("魅力值不足,无法升级! totalCharm=%s < %s, charmLV=%s" % (totalCharm, ipyData.GetUpNeedCharm(), charmLV), playerID)
- return
-
- charmLV += 1
- nextLVIpyData = IpyGameDataPY.GetIpyGameData("LoveCharm", charmLV)
- if not nextLVIpyData:
- return
- awardItemList = nextLVIpyData.GetLVAwardItemInfo()
- GameWorld.DebugLog("魅力等级升级! charmLV=%s" % charmLV, playerID)
- PlayerControl.SetCharmLV(curPlayer, charmLV)
- ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList)
- RefreshCharmAttr(curPlayer)
- return
-
-def RefreshCharmAttr(curPlayer):
- CalcCharmAttr(curPlayer)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
- return
-
-def CalcCharmAttr(curPlayer):
-
- allAttrList = [{} for _ in range(4)]
-
- charmLV = PlayerControl.GetCharmLV(curPlayer)
-
- ipyData = IpyGameDataPY.GetIpyGameData("LoveCharm", charmLV)
- if ipyData:
- lvAttrTypeList = ipyData.GetLVAttrType()
- lvAttrValueList = ipyData.GetLVAttrValue()
- for i, attrID in enumerate(lvAttrTypeList):
- attrValue = lvAttrValueList[i]
- PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
-
- # 保存计算值
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Charm, allAttrList)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 143459c..8347eea 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4532,17 +4532,6 @@
NetPackCommon.SendFakePack(curPlayer, clientPack)
return
-## 魅力等级
-def GetCharmLV(curPlayer): return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CharmLV)
-def SetCharmLV(curPlayer, charmLV):
- NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CharmLV, charmLV)
- SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_CharmLV, charmLV)
- return
-
-def GetTotalLingGenPoint(curPlayer):
- # 总灵根点数(金木水火土+自由点数)
- return 0
-
# 灵根 - 金木水火土
def GetMetal(curPlayer): return 0
def GetWood(curPlayer): return 0
@@ -4556,9 +4545,6 @@
def GetReduceSkillCDPer(curPlayer): return 0
def SetReduceSkillCDPer(curPlayer, reducePer): return
-# 血瓶恢复效果
-def GetHPCureEnhance(curPlayer): return 0
-
# 仙盟职位,使用 GetReceivedSalary,因为FamilyMemberLV没有入库
def GetFamilyMemberLV(curPlayer): return curPlayer.GetReceivedSalary()
def SetFamilyMemberLV(curPlayer, fmLV):
@@ -4566,35 +4552,6 @@
curPlayer.SetReceivedSalary(fmLV)
curPlayer.SetFamilyMemberLV(fmLV) # 也同步设置该值,防止有些地方直接调用 curPlayer.GetFamilyMemberLV()
return
-
-#---当前防护值,需存DB----
-def GetProDef(curPlayer): return 0
-def SetProDef(curPlayer, value): return
-
-#---最大防护值----
-def GetMaxProDef(curPlayer): return 0
-def SetMaxProDef(curPlayer, value): return
-
-# 每X秒自动消失一个印记, 毫秒记录
-def GetLostYinjiTime(curPlayer): return 0
-def SetLostYinjiTime(curPlayer, value): return
-
-# 当前印记数
-def GetYinjiCnt(curPlayer): return 0
-def SetYinjiCnt(curPlayer, value): return
-
-# 减少指定技能组CD XX%
-def GetTheFBSkillsCD(curPlayer): return 0
-def SetTheFBSkillsCD(curPlayer, value): return
-# 灼烧固定伤害
-def GetBurnValue(curPlayer): return 0
-def SetBurnValue(curPlayer, value): return
-# 延长灼烧时间百分比
-def GetBurnTimePer(curPlayer): return 0
-def SetBurnTimePer(curPlayer, value): return
-# 减移动速度百分比
-def GetSubSpeedPer(curPlayer): return 0
-def SetSubSpeedPer(curPlayer, value): return
#-------------------------------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
deleted file mode 100644
index 94d6dd6..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
+++ /dev/null
@@ -1,690 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerDogz
-#
-# @todo:神兽系统
-# @author hxp
-# @date 2018-08-20
-# @version 1.0
-#
-# 详细描述: 神兽系统
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-08-20 17:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import ItemCommon
-import ShareDefine
-import PlayerControl
-import ChPyNetSendPack
-import NetPackCommon
-import IPY_GameWorld
-import IpyGameDataPY
-import ChConfig
-import ChEquip
-import PassiveBuffEffMng
-import SkillCommon
-import SkillShell
-import DataRecordPack
-
-import time
-
-'''
-神兽编号: 1~20,上线后不可修改
-神兽装备位: 101~105 物品表中的装备位配置
-神兽装备类型:119~123,策划说打死不会再加类型了,固定5个神兽装备类型
-
-神兽物品背包(类型32,暂开放100格),存放神兽装备(类型119~123),及强化材料(类型70),
-神兽装备背包(类型33,暂开放100格),所有神兽共用,每只神兽5格,(格子索引/5)+1=对应神兽编号,(格子索引%5)+100+1=对应神兽装备位
-'''
-
-DogzEquipCount = 5 # 神兽装备位数量,固定5个,策划说打死也不改
-
-g_helpBattleNotifyTimeDict = {} # 助战广播时间记录 {神兽ID:广播time, ...}
-
-def GetDogzEquipPlaceIndex(equipPlace):
- ## 获取神兽装备位对应的索引
- return equipPlace - 1 - 100
-
-def GetDogzEquipPackIndex(dogzID, equipPlaceIndex):
- ## 获取神兽装备在神兽装备背包中的固定位置索引
- return (dogzID - 1) * DogzEquipCount + equipPlaceIndex
-
-def GetDogzIsHelpFight(curPlayer, dogzID):
- ## 神兽是否助战状态
- return GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, dogzID - 1)
-
-def SetDogzIsHelpFight(curPlayer, dogzID, isFight):
- ## 设置神兽是否助战状态
- GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, dogzID - 1, 1 if isFight else 0)
- Sync_DogzHelpbattleState(curPlayer, dogzID, isFight)
-
- # 设置成功后才能刷技能
- PassiveBuffEffMng.PlayerDogzSkill(curPlayer)
- if not isFight:
- DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_Dogz, {'dogzID':dogzID})
- return
-
-
-def OnPlayerLogin(curPlayer):
-
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DogzBuyHelpbattleCount):
- Sync_DogzInfo(curPlayer)
-
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyDataMgr.GetDogzCount()):
- ipyData = ipyDataMgr.GetDogzByIndex(i)
- if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
- Sync_DogzHelpbattleState(curPlayer, ipyData.GetDogzID(), 1)
-
- return
-
-#// A5 C0 神兽穿戴装备 #tagCMDogzEquipItem
-#
-#struct tagCMDogzEquipItem
-#
-#{
-# tagHead Head;
-# BYTE DogzID; // 神兽ID
-# BYTE EquipIndexCount;
-# BYTE EquipIndexList[EquipIndexCount]; //神兽装备所在神兽背包索引列表
-#};
-def OnDogzEquipItem(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- dogzID = clientData.DogzID
- equipIndexList = clientData.EquipIndexList
-
- ipyData = IpyGameDataPY.GetIpyGameData("Dogz", dogzID)
- if not ipyData:
- return
-
- GameWorld.DebugLog("神兽穿戴装备: dogzID=%s,equipIndexList=%s" % (dogzID, equipIndexList), playerID)
- if not equipIndexList:
- return
-
- succIndexList = []
- for equipIndex in equipIndexList:
- dogzItemPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzItem)
- curEquip = dogzItemPack.GetAt(equipIndex)
- if not ItemCommon.CheckItemCanUse(curEquip):
- GameWorld.DebugLog("物品为空或不可用: equipIndex=%s" % equipIndex, playerID)
- continue
- if not ItemCommon.GetIsDogzEquip(curEquip):
- GameWorld.DebugLog("非神兽装备: equipIndex=%s" % equipIndex, playerID)
- continue
-
- equipPlace = curEquip.GetEquipPlace()
- equipPlaceIndex = GetDogzEquipPlaceIndex(equipPlace)
- equipPlaceColorList = ipyData.GetEquipPlaceColorList()
- if equipPlaceIndex < 0 or equipPlaceIndex >= len(equipPlaceColorList):
- GameWorld.ErrLog("神兽装备位异常: equipIndex=%s,equipPlace=%s,equipPlaceIndex=%s"
- % (equipIndex, equipPlace, equipPlaceIndex), playerID)
- continue
-
- dogzEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
- equipPackIndex = GetDogzEquipPackIndex(dogzID, equipPlaceIndex)
- if equipPackIndex < 0 or equipPackIndex >= dogzEquipPack.GetCount():
- GameWorld.ErrLog("神兽装备背包索引异常: dogzID=%s,equipIndex=%s,equipPlace=%s,equipPackIndex=%s"
- % (dogzID, equipIndex, equipPlace, equipPackIndex), playerID)
- continue
-
- equipColor = curEquip.GetItemColor()
- limitColor = equipPlaceColorList[equipPlaceIndex]
- if equipColor < limitColor:
- GameWorld.Log("神兽装备位穿戴颜色限制:dogzID=%s,equipIndex=%s,equipPlaceIndex=%s,limitColor=%s > equipColor=%s"
- % (dogzID, equipIndex, equipPlaceIndex, limitColor, equipColor), playerID)
- continue
-
- destEquip = dogzEquipPack.GetAt(equipPackIndex)
- desItemID, desUserData = [0, ''] if destEquip.IsEmpty() else [destEquip.GetItemTypeID(), destEquip.GetUserData()]
- srcItemID, srcUserData = curEquip.GetItemTypeID(), curEquip.GetUserData()
- if ItemCommon.DoLogicSwitchItem(curPlayer, curEquip, destEquip, ShareDefine.rptDogzEquip):
- succIndexList.append(equipIndex)
- dataDict = {'dotype':'EquipDogzItem', 'desItemID':desItemID, 'desUserData':desUserData,'srcItemID':srcItemID,'srcUserData':srcUserData}
- DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipChange, dataDict)
-
- GameWorld.DebugLog(" 穿戴成功索引列表: %s" % succIndexList, playerID)
- if not succIndexList:
- return
-
- # 助战状态换装需要刷属性
- if GetDogzIsHelpFight(curPlayer, dogzID):
- RefreshDogzAttr(curPlayer, True)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
- return
-
-
-#// A5 C1 神兽卸下装备 #tagCMDogzUnEquipItem
-#
-#struct tagCMDogzUnEquipItem
-#
-#{
-# tagHead Head;
-# BYTE DogzID; // 神兽ID
-# BYTE EquipPlace; //卸下的装备位, 0代表卸下全部
-#};
-def OnDogzUnEquipItem(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- dogzID = clientData.DogzID
- equipPlace = clientData.EquipPlace
-
- if equipPlace and equipPlace not in ShareDefine.DogzEquipPlace:
- GameWorld.DebugLog("非神兽装备位,无法卸下!equipPlace=%s" % equipPlace, playerID)
- return
-
- ipyData = IpyGameDataPY.GetIpyGameData("Dogz", dogzID)
- if not ipyData:
- return
-
- # 卸下全部
- if equipPlace == 0:
- unEquipIndexList = [] # 需要脱下的神兽装备索引
- dogzEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
- equipPackCount = dogzEquipPack.GetCount()
- startIndex = (dogzID - 1) * DogzEquipCount
- for i in range(startIndex, startIndex + DogzEquipCount):
- if i < 0 or i >= equipPackCount:
- return
- curItem = dogzEquipPack.GetAt(i)
- if not curItem.IsEmpty():
- unEquipIndexList.append(i)
-
- if not unEquipIndexList:
- GameWorld.DebugLog("没有穿戴神兽装备!dogzID=%s" % dogzID, playerID)
- return
-
- unEquipCount = len(unEquipIndexList)
- emptyIndexList = []
-
- dogzItemPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzItem)
- for i in xrange(dogzItemPack.GetCount()):
- curItem = dogzItemPack.GetAt(i)
- if curItem.IsEmpty():
- emptyIndexList.append(i)
- if len(emptyIndexList) >= unEquipCount:
- break
-
- if len(emptyIndexList) < unEquipCount:
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [ShareDefine.rptDogzItem])
- #GameWorld.DebugLog("神兽背包空格不足,无法脱下所有装备")
- return
-
- for i in xrange(unEquipCount):
- ItemCommon.DoLogicSwitchItemEx(curPlayer, ShareDefine.rptDogzEquip, ShareDefine.rptDogzItem,
- unEquipIndexList[i], emptyIndexList[i])
-
- else:
- equipPackIndex = GetDogzEquipPackIndex(dogzID, GetDogzEquipPlaceIndex(equipPlace))
- emptyIndex = ItemCommon.GetEmptyIndexInPack(curPlayer, ShareDefine.rptDogzItem)
-
- if not ItemCommon.DoLogicSwitchItemEx(curPlayer, ShareDefine.rptDogzEquip, ShareDefine.rptDogzItem, equipPackIndex, emptyIndex):
- GameWorld.DebugLog("神兽卸下装备失败: dogzID=%s,equipPlace=%s" % (dogzID, equipPlace), playerID)
- return
-
- # 助战状态换装需要刷属性
- if GetDogzIsHelpFight(curPlayer, dogzID):
- SetDogzIsHelpFight(curPlayer, dogzID, False) # 因为脱下了状态,所以必须设置为非助战状态
- RefreshDogzAttr(curPlayer, True)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
-
- return
-
-
-#// A5 C2 神兽变更助战状态 #tagCMDogzBattleStateChange
-#
-#struct tagCMDogzBattleStateChange
-#
-#{
-# tagHead Head;
-# BYTE DogzID; // 神兽ID
-# BYTE BatteState; //助战状态,0-召回,1-助战
-#};
-def OnDogzBattleStateChange(index, clientData, tick):
- global g_helpBattleNotifyTimeDict
-
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- dogzID = clientData.DogzID
- batteState = clientData.BatteState
-
- ipyData = IpyGameDataPY.GetIpyGameData("Dogz", dogzID)
- if not ipyData:
- return
-
- curState = GetDogzIsHelpFight(curPlayer, dogzID)
- if curState == batteState:
- GameWorld.DebugLog("神兽已经是该状态,无需变更助战状态! dogzID=%s,batteState=%s,curState=%s"
- % (dogzID, batteState, curState), playerID)
- return
-
- # 变为助战状态需检查神兽装备是否穿满
- if batteState:
- helpbattleInitCount = IpyGameDataPY.GetFuncEvalCfg("DogzAssist", 1)[0]
- helpbattleBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DogzBuyHelpbattleCount)
- canHelpFightCount = helpbattleInitCount + helpbattleBuyCount
-
- curHelpFightCount = 0
- dogzCount = IpyGameDataPY.IPY_Data().GetDogzCount()
- for i in xrange(dogzCount):
- if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
- curHelpFightCount += 1
-
- if curHelpFightCount >= canHelpFightCount:
- GameWorld.DebugLog("当前神兽助战数已满,无法助战!canHelpFightCount=%s <= curHelpFightCount=%s"
- % (canHelpFightCount, curHelpFightCount), playerID)
- return
-
- dogzEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
- equipPackCount = dogzEquipPack.GetCount()
- startIndex = (dogzID - 1) * DogzEquipCount
- for i in range(startIndex, startIndex + DogzEquipCount):
- if i < 0 or i >= equipPackCount:
- return
- curItem = dogzEquipPack.GetAt(i)
- if curItem.IsEmpty():
- GameWorld.DebugLog("神兽有装备未穿戴,无法助战!dogzID=%s,packIndex=%s" % (dogzID, i), playerID)
- return
-
- isFight = True if batteState else False
- GameWorld.DebugLog("神兽助战状态变更!dogzID=%s,isFight=%s" % (dogzID, isFight), playerID)
- SetDogzIsHelpFight(curPlayer, dogzID, isFight)
- RefreshDogzAttr(curPlayer, True)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
-
- #if isFight and ipyData.GetHelpBattleNotify():
- # curTime = int(time.time())
- # playerName = curPlayer.GetPlayerName()
- # notifyKey, notifyParamList, notifyCD = ipyData.GetHelpBattleNotify()
- # lastNotifyTime = g_helpBattleNotifyTimeDict.get(dogzID, 0)
- # if curTime - lastNotifyTime >= notifyCD * 60:
- # PlayerControl.WorldNotify(0, notifyKey, [playerName] + notifyParamList)
- # g_helpBattleNotifyTimeDict[dogzID] = curTime
- return
-
-
-#// A5 C3 神兽购买助战位 #tagCMDogzBuyBatteCount
-#
-#struct tagCMDogzBuyBatteCount
-#
-#{
-# tagHead Head;
-#};
-def OnDogzBuyBatteCount(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
-
- helpbattleInitCount, helpbattleMaxCount = IpyGameDataPY.GetFuncEvalCfg("DogzAssist", 1)
- helpbattleBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DogzBuyHelpbattleCount)
- curHelpFightCount = helpbattleInitCount + helpbattleBuyCount
- if curHelpFightCount >= helpbattleMaxCount:
- GameWorld.DebugLog("已超过最大神兽助战数,无法购买!curHelpFightCount=%s,helpbattleMaxCount=%s"
- % (curHelpFightCount, helpbattleMaxCount), playerID)
- return
-
- needItemID = IpyGameDataPY.GetFuncCfg("DogzAssist", 2)
- needCountList = IpyGameDataPY.GetFuncEvalCfg("DogzAssist", 3)
- needCount = needCountList[-1] if helpbattleBuyCount >= len(needCountList) else needCountList[helpbattleBuyCount]
-
- itemData = GameWorld.GetGameData().GetItemByTypeID(needItemID)
- if not itemData:
- return
-
- packType = ChConfig.GetItemPackType(itemData)
- costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, needItemID, packType=packType)
- if bindCnt + unBindCnt < needCount:
- GameWorld.DebugLog("购买神兽助战位所需道具不足 !needItemID=%s,needCount=%s,packType=%s" % (needItemID, needCount, packType), playerID)
- return
- ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, needCount, "DogzBuyHelpFight", packType=packType)
-
- updBuyCount = helpbattleBuyCount + 1
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DogzBuyHelpbattleCount, updBuyCount)
- GameWorld.DebugLog("购买神兽助战位! updBuyCount=%s" % updBuyCount, playerID)
-
- Sync_DogzInfo(curPlayer)
- PlayerControl.WorldNotify(0, "DogzNumberUp", [curPlayer.GetPlayerName(), needItemID, curHelpFightCount + 1])
- return
-
-
-#// A5 C4 神兽装备强化 #tagCMDogzEquipPlus
-#
-#struct tagCMDogzEquipPlus
-#
-#{
-# tagHead Head;
-# BYTE EquipIndex; //神兽装备背包中索引
-# BYTE IndexCount; //材料所在神兽物品背包索引的数量
-# BYTE IndexList[IndexCount]; //材料所在神兽物品背包索引列表
-# BYTE IndexUseCountList[IndexCount]; //材料所在神兽物品背包索引对应使用个数列表
-# BYTE IsDouble; //是否双倍强化
-#};
-def OnDogzEquipPlus(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- equipIndex = clientData.EquipIndex
- indexList = clientData.IndexList
- indexUseCountList = clientData.IndexUseCountList
- isDouble = clientData.IsDouble
- GameWorld.DebugLog("神兽装备强化: equipIndex=%s,indexList=%s,indexUseCountList=%s,isDouble=%s"
- % (equipIndex, indexList, indexUseCountList, isDouble), playerID)
-
- if len(indexList) != len(indexUseCountList):
- GameWorld.DebugLog(" 指定消耗的个数数据长度错误!")
- return
-
- dogzEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
- curEquip = dogzEquipPack.GetAt(equipIndex)
- if not ItemCommon.CheckItemCanUse(curEquip) or not ItemCommon.GetIsDogzEquip(curEquip):
- GameWorld.DebugLog(" 非神兽装备,无法强化!equipIndex=%s,itemID=%s"
- % (equipIndex, curEquip.GetItemTypeID()), playerID)
- return
-
- equipColor = curEquip.GetItemColor()
- colorPlusMaxLVDict = IpyGameDataPY.GetFuncEvalCfg("DogzAssist", 4) # {颜色:等级上限, ...}
- if equipColor not in colorPlusMaxLVDict:
- return
- maxPlusLV = colorPlusMaxLVDict[equipColor]
-
- equipPlace = curEquip.GetEquipPlace()
- curPlusLV = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 0)
- curPlusExpTotal = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 1)
- if curPlusLV >= maxPlusLV:
- GameWorld.Log("神兽装备已满级, 无法强化!equipColor=%s,curPlusLV=%s,maxPlusLV=%s" % (equipColor, curPlusLV, maxPlusLV), playerID)
- return
-
- ipyData = IpyGameDataPY.GetIpyGameData("DogzEquipPlus", equipPlace, curPlusLV)
- if not ipyData:
- return
- lvUPTotalExp = ipyData.GetPlusLVUPTotalExp()
- if not lvUPTotalExp:
- GameWorld.Log("神兽装备升级所需总经验为0, 无法强化!equipPlace=%s,curPlusLV=%s" % (equipPlace, curPlusLV), playerID)
- return
-
- costGoldTotal = 0
- addExpTotal = 0
- delItemList = []
- dogzItemPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzItem)
- dogzItemPackCount = dogzItemPack.GetCount()
- for listIndex, i in enumerate(indexList):
- if i < 0 or i >= dogzItemPackCount:
- GameWorld.ErrLog("神兽背包索引不存在,无法强化!i=%s" % (i), playerID)
- return
- curItem = dogzItemPack.GetAt(i)
- if curItem.IsEmpty():
- GameWorld.ErrLog("神兽背包物品为空,无法强化!i=%s" % (i), playerID)
- return
- effect = ItemCommon.GetItemEffectByEffectID(curItem, ChConfig.Def_Effect_DogzEquipPlusExp)
- if not effect:
- GameWorld.ErrLog("神兽背包物品无经验效果,无法强化!i=%s,itemID=%s" % (i, curItem.GetItemTypeID()), playerID)
- return
-
- delCount = max(1, min(curItem.GetCount(), indexUseCountList[listIndex]))
- baseExp = effect.GetEffectValue(0)
- doubleCostGold = effect.GetEffectValue(1)
-
- addExp = baseExp * delCount
- plusInfoCount = curItem.GetUserAttrCount(ShareDefine.Def_IudetDogzEquipPlus)
- if not plusInfoCount:
- if isDouble and doubleCostGold:
- addExp = (baseExp * 2 * delCount)
- costGoldTotal += doubleCostGold * delCount
- GameWorld.DebugLog(" 强化: addExp=%s,delCount=%s,baseExp=%s,isDouble=%s,doubleCostGold=%s,costGoldTotal=%s"
- % (addExp, delCount, baseExp, isDouble, doubleCostGold, costGoldTotal), playerID)
- else:
- #plusLV = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 0)
- plusExpTotal = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 1)
- addExp += plusExpTotal
- GameWorld.DebugLog(" 强化: addExp=%s,delCount=%s,baseExp=%s,plusExpTotal=%s" % (addExp, delCount, baseExp, plusExpTotal), playerID)
- addExpTotal += addExp
- delItemList.append([curItem, delCount])
-
- if not delItemList:
- GameWorld.DebugLog(" 没有材料可强化!", playerID)
- return
-
- updPlusExpTotal = curPlusExpTotal + addExpTotal
- infoDict = {"updPlusExpTotal":updPlusExpTotal}
-
- if costGoldTotal:
- if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, costGoldTotal,
- ChConfig.Def_Cost_DogzEquipPlus, infoDict):
- return
-
- for delItem, delCount in delItemList:
- ItemCommon.DelItem(curPlayer, delItem, delCount, False, ChConfig.ItemDel_DogzEquipPlus, infoDict)
-
- updPlusLV = curPlusLV
- doCount, maxDoCount = 0, maxPlusLV * 2
- while updPlusExpTotal >= lvUPTotalExp and updPlusLV < maxPlusLV and doCount < maxDoCount:
- doCount += 1
- nextLV = updPlusLV + 1
- nextLVIpyData = IpyGameDataPY.GetIpyGameDataNotLog("DogzEquipPlus", equipPlace, nextLV)
- if not nextLVIpyData:
- GameWorld.DebugLog(" 没有下一级数据,不能升级!nextLV=%s" % (nextLV), playerID)
- break
- updPlusLV = nextLV
- lvUPTotalExp = nextLVIpyData.GetPlusLVUPTotalExp()
- GameWorld.DebugLog(" 升级: equipPlace=%s,maxPlusLV=%s,updPlusLV=%s,updPlusExpTotal=%s,lvUPTotalExp=%s"
- % (equipPlace, maxPlusLV, updPlusLV, updPlusExpTotal, lvUPTotalExp), playerID)
-
- isRefreshAtrr = False
- # 未强化过
- if not curPlusExpTotal:
- curEquip.AddUserAttr(ShareDefine.Def_IudetDogzEquipPlus, updPlusLV)
- curEquip.AddUserAttr(ShareDefine.Def_IudetDogzEquipPlus, updPlusExpTotal)
- isRefreshAtrr = (updPlusLV > 0)
- else:
- if curPlusLV != updPlusLV:
- isRefreshAtrr = True
- curEquip.UpdataUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 0, updPlusLV)
- curEquip.UpdataUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 1, updPlusExpTotal)
-
- GameWorld.DebugLog(" curPlus(LV=%s,EXP=%s),addExpTotal=%s,updPlus(LV=%s,EXP=%s)"
- % (curPlusLV, curPlusExpTotal, addExpTotal, updPlusLV, updPlusExpTotal), playerID)
-
- if isRefreshAtrr:
- RefreshDogzAttr(curPlayer, True)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
-
- curPlayer.Sync_MakeItemAnswer(ShareDefine.Def_mitDogzEquipPlus, 1)
- return
-
-def GetDogzEquipPlusLVExpInfo(equipColor, equipPlace, totalExp):
- ## 获取当前神兽装备最高强化等级的强化熟练度
- retLV, retExp = 0, 0
- colorPlusMaxLVDict = IpyGameDataPY.GetFuncEvalCfg("DogzAssist", 4) # {颜色:等级上限, ...}
- if equipColor not in colorPlusMaxLVDict:
- return retLV, retExp
- maxPlusLV = colorPlusMaxLVDict[equipColor]
- for lv in xrange(maxPlusLV + 1):
- ipyData = IpyGameDataPY.GetIpyGameDataNotLog("DogzEquipPlus", equipPlace, lv)
- if lv and not ipyData:
- break
-
- lvUPTotalExp = ipyData.GetPlusLVUPTotalExp()
- if not lvUPTotalExp:
- break
-
- if totalExp < lvUPTotalExp:
- return lv, totalExp
- retLV, retExp = lv, lvUPTotalExp
-
- return retLV, retExp
-
-def RefreshDogzAttr(curPlayer, isUpdateSucc=False):
- ## 刷新神兽属性
- return
- totalPlusLv = 0 #出战神兽装备总强化等级
- fightPowerEx = 0
- allAttrList = [{} for _ in range(4)]
- allAttrListEquip = [{} for _ in range(4)]
- allAttrListEquipPlus = [{} for _ in range(4)]
- equipScoreTotal = 0 #为解决装备评分、战力不一致的情况,装备战力改为由评分作为参数计算战力
-
- dogzEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
- equipPackCount = dogzEquipPack.GetCount()
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for dogzIndex in xrange(ipyDataMgr.GetDogzCount()):
- if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, dogzIndex):
- continue
-
- ipyData = ipyDataMgr.GetDogzByIndex(dogzIndex)
- dogzID = ipyData.GetDogzID()
- #GameWorld.DebugLog("神兽属性: dogzID=%s" % dogzID)
-
- # 1. 基础属性
- attrTypeList = ipyData.GetBaseAttrTypes()
- attrValueList = ipyData.GetBaseAttrValues()
- if attrTypeList and len(attrTypeList) == len(attrValueList):
- for attrIndex, baseAttrID in enumerate(attrTypeList):
- baseAttrValue = attrValueList[attrIndex]
- PlayerControl.CalcAttrDict_Type(baseAttrID, baseAttrValue, allAttrList)
- #GameWorld.DebugLog(" 基础属性: baseAttrID=%s,baseAttrValue=%s, %s" % (baseAttrID, baseAttrValue, allAttrList))
-
- # 2. 装备属性
- startIndex = (dogzID - 1) * DogzEquipCount
- for equipIndex in range(startIndex, startIndex + DogzEquipCount):
- if equipIndex < 0 or equipIndex >= equipPackCount:
- break
- curEquip = dogzEquipPack.GetAt(equipIndex)
- if curEquip.IsEmpty():
- continue
-
- equipScoreTotal += ItemCommon.GetEquipGearScore(curEquip)
-
- #itemID = curEquip.GetItemTypeID()
- # 装备基础属性
- for effIndex in xrange(curEquip.GetEffectCount()):
- curEffect = curEquip.GetEffectByIndex(effIndex)
- if not curEffect or not curEffect.GetEffectID():
- break
- effID = curEffect.GetEffectID()
- if not effID or effID == ChConfig.Def_Effect_DogzEquipPlusExp:
- continue
- effValue = curEffect.GetEffectValue(0)
- PlayerControl.CalcAttrDict_Type(effID, effValue, allAttrListEquip)
- #GameWorld.DebugLog(" 装备基础: itemID=%s,effID=%s,effValue=%s, %s" % (itemID, effID, effValue, allAttrListEquip))
-
- # 强化属性
- curPlusLV = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 0)
- totalPlusLv += curPlusLV
- plusIpyData = IpyGameDataPY.GetIpyGameData("DogzEquipPlus", curEquip.GetEquipPlace(), curPlusLV)
- if plusIpyData:
- plusAttrTypeList = plusIpyData.GetPlusAttrTypes()
- plusAttrValueList = plusIpyData.GetPlusAttrValues()
- if plusAttrTypeList and len(plusAttrTypeList) == len(plusAttrValueList):
- for plusIndex, plusAttrID in enumerate(plusAttrTypeList):
- plusAttrValue = plusAttrValueList[plusIndex]
- PlayerControl.CalcAttrDict_Type(plusAttrID, plusAttrValue, allAttrListEquipPlus)
- #GameWorld.DebugLog(" 装备强化: itemID=%s,plusAttrID=%s, plusAttrValue=%s, %s" % (itemID, plusAttrID, plusAttrValue, allAttrListEquipPlus))
-
- # 传奇属性
- ChEquip.CalcAttr_LegendAttr(curPlayer, curEquip, allAttrListEquip)
- #GameWorld.DebugLog(" 装备传奇: itemID=%s,%s" % (itemID, allAttrListEquip))
-
- # 附加战力
- fightPowerEx += ipyData.GetFightPowerEx()
-
- # 保存计算值
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Dogz, allAttrList)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_DogzEquip, allAttrListEquip)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_DogzEquipPlus, allAttrListEquipPlus)
-
- #计算装备基础属性附加战力 (目前组成: 评分战力 + ...)
- equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
- #GameWorld.DebugLog("神兽装备评分战力: equipScoreTotal=%s,equipFightPowerEx=%s" % (equipScoreTotal, equipFightPowerEx))
- fightPowerEx += equipFightPowerEx
- PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Dogz, fightPowerEx)
-
- # 技能属性,从Def_CalcAttrFunc_Dogz获取
- skillAttrList = CalcDogzBattleSkillAttr(curPlayer)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_DogzBattleSkill, skillAttrList)
- return
-
-def GetFightDogzTotalPlusLv(curPlayer):
- #出战的神兽装备总强化等级
- totalPlusLv = 0
- dogzEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
- equipPackCount = dogzEquipPack.GetCount()
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for dogzIndex in xrange(ipyDataMgr.GetDogzCount()):
- if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, dogzIndex):
- continue
- ipyData = ipyDataMgr.GetDogzByIndex(dogzIndex)
- dogzID = ipyData.GetDogzID()
- startIndex = (dogzID - 1) * DogzEquipCount
- for equipIndex in range(startIndex, startIndex + DogzEquipCount):
- if equipIndex < 0 or equipIndex >= equipPackCount:
- break
- curEquip = dogzEquipPack.GetAt(equipIndex)
- if curEquip.IsEmpty():
- continue
- curPlusLV = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 0)
- totalPlusLv += curPlusLV
- return totalPlusLv
-
-# 助战神兽技能属性,必须在 SetDogzIsHelpFight后调用
-def CalcDogzBattleSkillAttr(curPlayer):
- skillAttrList = [{} for _ in range(4)]
- skillManager = curPlayer.GetSkillManager()
-
- for i in range(0 , skillManager.GetSkillCount()):
- curSkill = skillManager.GetSkillByIndex(i)
- if not curSkill:
- continue
-
- if curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_Dogz:
- continue
-
- if not SkillCommon.isPassiveAttr(curSkill):
- continue
-
-
- for effectIndex in xrange(curSkill.GetEffectCount()):
- curEffect = curSkill.GetEffect(effectIndex)
- SkillShell.CalcBuffEffAttr(curPlayer, curEffect, skillAttrList)
-
- # Def_SkillType_AttrSkillNoLearn 非学习属性技能 叠加属性计算
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyDataMgr.GetDogzCount()):
- ipyData = ipyDataMgr.GetDogzByIndex(i)
- if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
- #未助战
- continue
-
- for skillID in ipyData.GetHelpBattleSkills():
-
- skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
- if not skillData:
- continue
- # 同技能类型ID可多个叠加的属性时直接取表
- if skillData.GetSkillType() != ChConfig.Def_SkillType_AttrSkillNoLearn:
- continue
-
- for effectIndex in xrange(skillData.GetEffectCount()):
- curEffect = skillData.GetEffect(effectIndex)
- SkillShell.CalcBuffEffAttr(curPlayer, curEffect, skillAttrList)
-
- #GameWorld.DebugLog("神兽技能属性: skillFPEx=%s, %s" % ( skillFPEx, skillAttrList))
- return skillAttrList
-
-
-def Sync_DogzInfo(curPlayer):
- ## 同步神兽信息
- dogzInfoPack = ChPyNetSendPack.tagMCDogzInfo()
- dogzInfoPack.BuyHelpbattleCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DogzBuyHelpbattleCount)
- NetPackCommon.SendFakePack(curPlayer, dogzInfoPack)
- return
-
-def Sync_DogzHelpbattleState(curPlayer, dogzID, batteState):
- ## 同步神兽助战状态
- helpbattleState = ChPyNetSendPack.tagMCDogzHelpbattleState()
- helpbattleState.DogzID = dogzID
- helpbattleState.BatteState = 1 if batteState else 0
- NetPackCommon.SendFakePack(curPlayer, helpbattleState)
- return
-
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 e191eca..9cf7868 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -41,12 +41,10 @@
import PlayerOfflineSupport
import PlayerTreasure
import PlayerZhanling
-import PlayerLove
import IpyGameDataPY
import PlayerArena
import PyGameData
import OpenServerActivity
-import PlayerXiangong
import PlayerBillboard
import PlayerViewCache
import GameFuncComm
@@ -288,10 +286,6 @@
#寻宝
PlayerTreasure.OnDay(curPlayer)
PlayerGoldGift.OnDay(curPlayer)
- #情缘
- PlayerLove.DoPlayerOnDay(curPlayer)
- #仙宫
- PlayerXiangong.PlayerOnDay(curPlayer)
PlayerControl.PlayerOnDay(curPlayer)
ChPlayer.PlayerOnDay(curPlayer)
PlayerActivity.OnDay(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFaQi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFaQi.py
deleted file mode 100644
index 6704927..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFaQi.py
+++ /dev/null
@@ -1,178 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerFaQi
-#
-# @todo:法器系统
-# @author hxp
-# @date 2021-10-13
-# @version 1.0
-#
-# 详细描述: 法器系统
-#
-# 注: 与法宝系统没有关系
-#-------------------------------------------------------------------------------
-#"""Version = 2021-10-14 15:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import IPY_GameWorld
-import PlayerControl
-import ChPyNetSendPack
-import FunctionNPCCommon
-import NetPackCommon
-import IpyGameDataPY
-import ItemCommon
-import ChConfig
-
-def DoFaQiOpen(curPlayer):
- ## 功能开启
- faQiLV = 1
- ipyData = IpyGameDataPY.GetIpyGameData("FaQiLVUp", faQiLV)
- if not ipyData:
- return
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaQiLV, faQiLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaQiEatItemCount, 0)
-
- GameWorld.DebugLog("法器功能开启! faQiLV=%s" % faQiLV)
- Sync_FaQiLVInfo(curPlayer)
- RefreshFaQiAttr(curPlayer)
- return True
-
-def PlayerFaQiLogin(curPlayer):
- if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaQiLV):
- return
- Sync_FaQiLVInfo(curPlayer)
- return
-
-#// A5 32 法器升级 #tagCMFaQiLVUp
-#
-#struct tagCMFaQiLVUp
-#{
-# tagHead Head;
-# WORD UseItemCnt; //消耗材料个数
-# BYTE IsAutoBuy; //是否自动购买
-#};
-def OnFaQiLVUp(index, curPackData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- costItemCount = curPackData.UseItemCnt # 消耗材料个数
- isAutoBuy = curPackData.IsAutoBuy # 是否自动购买
-
- faQiLV = max(1, curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaQiLV))
- curEatItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaQiEatItemCount)
-
- ipyData = IpyGameDataPY.GetIpyGameData("FaQiLVUp", faQiLV)
- if not ipyData:
- return
-
- needEatCount = ipyData.GetNeedEatCount()
- if not needEatCount:
- GameWorld.DebugLog("法器已满级!faQiLV=%s" % faQiLV)
- return
-
- costItemID = IpyGameDataPY.GetFuncCfg("FaQiUpItem", 1)
- autoBuyShopIndex = IpyGameDataPY.GetFuncCfg("FaQiUpItem", 2)
- if not costItemID or not costItemCount:
- return
-
- costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, costItemID, costItemCount)
- lackCnt = costItemCount - bindCnt - unBindCnt
- if lackCnt > 0 and not isAutoBuy:
- GameWorld.DebugLog("消耗道具不足,无法升级法器!costItemID=%s,costItemCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%s"
- % (costItemID, costItemCount, bindCnt, unBindCnt, lackCnt))
- return
-
- delCnt = costItemCount
- if lackCnt > 0:
- autoBuyMoneyType = IPY_GameWorld.TYPE_Price_Gold_Money
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:costItemID}
- if not FunctionNPCCommon.PayAutoBuyItem(curPlayer, {costItemID:lackCnt}, autoBuyMoneyType, ChConfig.Def_Cost_FaQi, infoDict, shopItemIndexDict={costItemID:autoBuyShopIndex}):
- return
- delCnt -= lackCnt
-
- # 扣除消耗
- if delCnt:
- ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, delCnt, ChConfig.ItemDel_FaQi)
-
- updClassLV = faQiLV
- updEatItemCount = curEatItemCount + costItemCount
- GameWorld.DebugLog("法器培养: faQiLV=%s,curEatItemCount=%s,costItemCount=%s,updEatItemCount=%s,needEatCount=%s"
- % (faQiLV, curEatItemCount, costItemCount, updEatItemCount, needEatCount))
-
- if updEatItemCount >= needEatCount:
- updClassLV += 1
- updEatItemCount -= needEatCount
- GameWorld.DebugLog(" 升阶: updClassLV=%s,updEatItemCount=%s" % (updClassLV, updEatItemCount))
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaQiLV, updClassLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaQiEatItemCount, updEatItemCount)
-
- # 升阶
- if updClassLV > faQiLV:
- pass
-
- Sync_FaQiLVInfo(curPlayer)
- # 刷属性,更新排行榜
- RefreshFaQiAttr(curPlayer)
- return
-
-def RefreshFaQiAttr(curPlayer):
- CalcFaQiAttr(curPlayer)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
- return
-
-def CalcFaQiAttr(curPlayer):
-
- faQiLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaQiLV)
- if not faQiLV:
- return
-
- allAttrList = [{} for _ in range(4)]
- customAttrDictFaQi = {}
- faQiAllAttrInfo = {}
-
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for index in xrange(ipyDataMgr.GetFaQiLVUpCount()):
- lvupIpyData = ipyDataMgr.GetFaQiLVUpByIndex(index)
- dataLV = lvupIpyData.GetFaQiLV()
- if dataLV > faQiLV:
- break
- elif dataLV == faQiLV:
- upItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaQiEatItemCount)
- else:
- upItemCount = lvupIpyData.GetNeedEatCount()
-
- # 等阶额外属性
- lvAttrTypeList = lvupIpyData.GetLVAttrType()
- lvAttrValueList = lvupIpyData.GetLVAttrValue()
- for i, attrID in enumerate(lvAttrTypeList):
- attrValue = lvAttrValueList[i]
- faQiAllAttrInfo[attrID] = faQiAllAttrInfo.get(attrID, 0) + attrValue
- PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
-
- # 培养丹增加属性
- upItemPerCount = lvupIpyData.GetUpEatItemPerCount()
- if upItemCount and upItemPerCount:
- upItemAttrTypeList = lvupIpyData.GetUpItemAttrType()
- upItemAttrValueList = lvupIpyData.GetUpItemAttrValue()
- attrMultiple = upItemCount / upItemPerCount
- for i, attrID in enumerate(upItemAttrTypeList):
- attrValue = upItemAttrValueList[i]
- faQiAllAttrInfo[attrID] = faQiAllAttrInfo.get(attrID, 0) + attrValue
- PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrList)
-
- customAttrDictFaQi["faQiAllAttrInfo"] = faQiAllAttrInfo
- # 保存计算值
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_FaQi, allAttrList, customAttrDict=customAttrDictFaQi)
- return
-
-def Sync_FaQiLVInfo(curPlayer):
- clientPack = ChPyNetSendPack.tagMCFaQiInfo()
- clientPack.Clear()
- clientPack.LV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaQiLV)
- clientPack.EatItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaQiEatItemCount)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncSysPrivilege.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncSysPrivilege.py
deleted file mode 100644
index ab71e39..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncSysPrivilege.py
+++ /dev/null
@@ -1,177 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerFuncSysPrivilege
-#
-# @todo:功能系统特权奖励
-# @author hxp
-# @date 2021-04-13
-# @version 1.0
-#
-# 详细描述: 功能系统特权奖励
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-04-13 16:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import IpyGameDataPY
-import PlayerControl
-import ItemControler
-import ChPyNetSendPack
-import NetPackCommon
-import IPY_GameWorld
-import ShareDefine
-import ChConfig
-
-import time
-
-def OnPlayerLogin(curPlayer):
- Sync_FuncSysPrivilege(curPlayer)
- return
-
-#// B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
-#
-#struct tagCMActivateFuncSysPrivilege
-#{
-# tagHead Head;
-# BYTE ActivateCount; // 激活个数
-# BYTE ActivateFuncSysIDList[ActivateCount]; // 激活功能系统ID列表,全部激活则需要发所有ID列表
-#};
-def OnActivateFuncSysPrivilege(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- activateFuncSysIDList = clientData.ActivateFuncSysIDList
-
- GameWorld.DebugLog("请求激活功能系统特权: %s" % activateFuncSysIDList)
-
- curTime = int(time.time())
- canActivateList = []
- for funcSysID in activateFuncSysIDList:
- ipyDatList = IpyGameDataPY.GetIpyGameDataList("FuncSysPrivilege", funcSysID)
- if not ipyDatList:
- continue
-
- actTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FuncSysPrivilegeActTime % funcSysID)
- if actTime:
- maxDays = len(ipyDatList)
- diffDays = GameWorld.GetDiff_Day(curTime, actTime)
- if diffDays < maxDays:
- GameWorld.DebugLog(" 未超过奖励最大天,不可激活: funcSysID=%s,diffDays(%s) < maxDays(%s)" % (funcSysID, diffDays, maxDays))
- continue
-
- isGetAll = True
- awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FuncSysPrivilegeAward % funcSysID)
- for ipyData in ipyDatList:
- dayNum = ipyData.GetDayNum()
- if not awardState & pow(2, dayNum):
- isGetAll = False
- GameWorld.DebugLog(" 还有未领取的奖励,不可激活: funcSysID=%s,dayNum=%s" % (funcSysID, dayNum))
- break
-
- if not isGetAll:
- continue
- canActivateList.append(funcSysID)
-
- GameWorld.DebugLog(" 可激活的功能系统特权: %s" % canActivateList)
- if not canActivateList:
- return
-
- needMoney = len(canActivateList) # 开通1个花费1
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:canActivateList}
- if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_FuncSysPrivilege, needMoney, infoDict=infoDict):
- GameWorld.DebugLog(" 货币不足! needMoney=%s" % needMoney)
- return
-
- for funcSysID in canActivateList:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FuncSysPrivilegeActTime % funcSysID, curTime)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FuncSysPrivilegeAward % funcSysID, 0)
-
- Sync_FuncSysPrivilege(curPlayer, canActivateList)
- return
-
-#// B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
-#
-#struct tagCMGetFuncSysPrivilegeAward
-#{
-# tagHead Head;
-# BYTE FuncSysID; // 功能系统ID
-# BYTE DayNum; // 第X天,1为第1天
-#};
-def OnGetFuncSysPrivilegeAward(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- funcSysID = clientData.FuncSysID
- dayNum = clientData.DayNum
-
- actTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FuncSysPrivilegeActTime % funcSysID)
- if not actTime:
- GameWorld.DebugLog("未激活,不可领奖!funcSysID=%s" % (funcSysID))
- return
-
- curTime = int(time.time())
- canGetMaxDayNum = GameWorld.GetDiff_Day(curTime, actTime) + 1
- if dayNum > canGetMaxDayNum:
- GameWorld.DebugLog("未达到领奖天,不可领奖!funcSysID=%s,dayNum(%s) > canGetMaxDayNum(%s), actTime=%s"
- % (funcSysID, dayNum, canGetMaxDayNum, GameWorld.ChangeTimeNumToStr(actTime)))
- return
-
- awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FuncSysPrivilegeAward % funcSysID)
- if awardState & pow(2, dayNum):
- GameWorld.DebugLog("已领取过该天奖励!funcSysID=%s,dayNum=%s,awardState=%s" % (funcSysID, dayNum, awardState))
- return
-
- ipyDatList = IpyGameDataPY.GetIpyGameDataList("FuncSysPrivilege", funcSysID)
- if not ipyDatList:
- return
-
- findIpyData = None
- for ipyData in ipyDatList:
- if ipyData.GetFuncSysID() == funcSysID and ipyData.GetDayNum() == dayNum:
- findIpyData = ipyData
- break
- if not findIpyData:
- GameWorld.DebugLog("找不到该天奖励!funcSysID=%s,dayNum=%s" % (funcSysID, dayNum))
- return
-
- awardItemList = findIpyData.GetDayAwardItemInfo()
- if not ItemControler.CheckPackSpaceEnough(curPlayer, awardItemList):
- return
-
- updAwardState = awardState | pow(2, dayNum)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FuncSysPrivilegeAward % funcSysID, updAwardState)
-
- for itemID, itemCount, isAuctionItem in awardItemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem],
- event=["FuncSysPrivilegeAward", False, {}])
- ItemControler.NotifyGiveAwardInfo(curPlayer, awardItemList, "FuncSysPrivilegeAward")
-
- Sync_FuncSysPrivilege(curPlayer, [funcSysID])
- return
-
-def Sync_FuncSysPrivilege(curPlayer, syncIDList=None):
- if syncIDList == None:
- syncIDList = []
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- lastIpyData = ipyDataMgr.GetFuncSysPrivilegeByIndex(ipyDataMgr.GetFuncSysPrivilegeCount() - 1)
- maxFuncID = lastIpyData.GetFuncSysID()
- for funcSysID in xrange(1, maxFuncID + 1):
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FuncSysPrivilegeActTime % funcSysID):
- syncIDList.append(funcSysID)
-
- if not syncIDList:
- return
-
- clientPack = ChPyNetSendPack.tagMCFuncSysPrivilegeInfoList()
- clientPack.PrivilegeInfoList = []
- for funcSysID in syncIDList:
- info = ChPyNetSendPack.tagMCFuncSysPrivilegeInfo()
- info.FuncSysID = funcSysID
- info.ActivateTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FuncSysPrivilegeActTime % funcSysID)
- info.AwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FuncSysPrivilegeAward % funcSysID)
-
- clientPack.PrivilegeInfoList.append(info)
- clientPack.PrivilegeCount = len(clientPack.PrivilegeInfoList)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLianTi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLianTi.py
deleted file mode 100644
index bbf4056..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLianTi.py
+++ /dev/null
@@ -1,248 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerLianTi
-#
-# @todo:炼体
-# @author hxp
-# @date 2022-22-23
-# @version 1.0
-#
-# 详细描述: 炼体
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-22-23 15:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import IpyGameDataPY
-import PlayerControl
-import FunctionNPCCommon
-import ChPyNetSendPack
-import NetPackCommon
-import ItemCommon
-import ChConfig
-import SkillCommon
-
-def DoLianTiOpen(curPlayer):
- ## 功能开启
- lianTiLV = 1
- ipyData = IpyGameDataPY.GetIpyGameData("LianTi", lianTiLV)
- if not ipyData:
- return
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LianTiLV, lianTiLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LianTiEatItemCount, 0)
-
- GameWorld.DebugLog("炼体功能开启! lianTiLV=%s" % lianTiLV)
- SyncLianTiInfo(curPlayer)
- RefreshLianTiAttr(curPlayer)
- return True
-
-def OnPlayerLogin(curPlayer):
- if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LianTiLV):
- return
- SyncLianTiInfo(curPlayer)
- return
-
-#// A5 33 炼体提升 #tagCMLianTiUp
-#
-#struct tagCMLianTiUp
-#{
-# tagHead Head;
-# DWORD UseItemCnt; //消耗材料个数
-# BYTE IsAutoBuy; //是否自动购买
-#};
-def OnLianTiUp(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- costItemCount = clientData.UseItemCnt # 消耗材料个数
- isAutoBuy = clientData.IsAutoBuy # 是否自动购买
-
- lianTiLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LianTiLV)
- curEatItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LianTiEatItemCount)
-
- if not lianTiLV:
- return
-
- ipyData = IpyGameDataPY.GetIpyGameData("LianTi", lianTiLV)
- if not ipyData:
- return
-
- needEatCount = ipyData.GetNeedEatCount()
- if not needEatCount:
- GameWorld.DebugLog("炼体已满级! lianTiLV=%s" % lianTiLV)
- return
-
- if curEatItemCount >= needEatCount:
- GameWorld.DebugLog("本级已吃满! lianTiLV=%s,curEatItemCount=%s >= %s" % (lianTiLV, curEatItemCount, needEatCount))
- return
-
- costItemID = IpyGameDataPY.GetFuncCfg("LianTiUpItem", 1)
- if not costItemID or not costItemCount:
- return
-
- costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, costItemID, costItemCount)
- lackCnt = costItemCount - bindCnt - unBindCnt
- if lackCnt > 0 and not isAutoBuy:
- GameWorld.DebugLog("道具不足,无法提升炼体! costItemID=%s,costItemCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%s"
- % (costItemID, costItemCount, bindCnt, unBindCnt, lackCnt))
- return
-
- delCnt = costItemCount
- if lackCnt > 0:
- autoBuyMoneyType = IpyGameDataPY.GetFuncCfg("LianTiUpItem", 2)
- if not autoBuyMoneyType:
- return
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:costItemID}
- if not FunctionNPCCommon.PayAutoBuyItem(curPlayer, {costItemID:lackCnt}, autoBuyMoneyType, ChConfig.Def_Cost_LianTi, infoDict):
- return
- delCnt -= lackCnt
-
- # 扣除消耗
- if delCnt:
- ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, delCnt, ChConfig.ItemDel_LianTi)
-
- updEatItemCount = curEatItemCount + costItemCount
- GameWorld.DebugLog("炼体提升: lianTiLV=%s,curEatItemCount=%s,costItemCount=%s,updEatItemCount=%s,needEatCount=%s"
- % (lianTiLV, curEatItemCount, costItemCount, updEatItemCount, needEatCount))
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LianTiEatItemCount, updEatItemCount)
-
- SyncLianTiInfo(curPlayer)
- RefreshLianTiAttr(curPlayer)
- return
-
-#// A5 34 炼体突破 #tagCMLianTiLVUp
-#
-#struct tagCMLianTiLVUp
-#{
-# tagHead Head;
-#};
-def OnLianTiLVUp(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
- lianTiLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LianTiLV)
- curEatItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LianTiEatItemCount)
-
- if not lianTiLV:
- return
-
- ipyData = IpyGameDataPY.GetIpyGameData("LianTi", lianTiLV)
- if not ipyData:
- return
-
- needEatCount = ipyData.GetNeedEatCount()
- if not needEatCount:
- GameWorld.DebugLog("炼体已满级! lianTiLV=%s" % lianTiLV)
- return
-
- if curEatItemCount < needEatCount:
- GameWorld.DebugLog("炼体培养物品个数不足,无法突破! lianTiLV=%s,curEatItemCount=%s < %s" % (lianTiLV, curEatItemCount, needEatCount))
- return
-
- costItemInfo = ipyData.GetLVUpCostItemInfo()
- if not costItemInfo or len(costItemInfo) != 2:
- return
- costItemID, costItemCount = costItemInfo
- if not costItemID or not costItemCount:
- return
- costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, costItemID, costItemCount)
- lackCnt = costItemCount - bindCnt - unBindCnt
- if lackCnt > 0:
- GameWorld.DebugLog("道具不足,无法突破炼体! costItemID=%s,costItemCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%s"
- % (costItemID, costItemCount, bindCnt, unBindCnt, lackCnt))
- return
-
- nextLianTiLv = lianTiLV + 1
- nextIpyData = IpyGameDataPY.GetIpyGameDataNotLog("LianTi", nextLianTiLv)
- if not nextIpyData:
- return
-
- curRealmLV = curPlayer.GetOfficialRank()
- if nextLianTiLv > curRealmLV:
- GameWorld.DebugLog("炼体突破不能超过当前境界! nextLianTiLv=%s > curRealmLV(%s)" % (nextLianTiLv, curRealmLV))
- return
-
- # 扣除消耗
- ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, costItemCount, ChConfig.ItemDel_LianTi)
-
- updEatItemCount = curEatItemCount - needEatCount
- activateSkillID = nextIpyData.GetActivateSkillID()
- GameWorld.DebugLog("炼体突破: lianTiLV=%s,curEatItemCount=%s,needEatCount=%s,updEatItemCount=%s,nextLianTiLv=%s,activateSkillID=%s"
- % (lianTiLV, curEatItemCount, needEatCount, updEatItemCount, nextLianTiLv, activateSkillID))
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LianTiLV, nextLianTiLv)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LianTiEatItemCount, updEatItemCount)
-
- if activateSkillID:
- SkillCommon.GivePlayerSkillByJobSkill(curPlayer, [activateSkillID])
-
- SyncLianTiInfo(curPlayer)
- RefreshLianTiAttr(curPlayer)
- return
-
-def RefreshLianTiAttr(curPlayer):
- CalcLianTiAttr(curPlayer)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
- return
-
-def CalcLianTiAttr(curPlayer):
-
- lianTiLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LianTiLV)
- if not lianTiLV:
- return
-
- allAttrList = [{} for _ in range(4)]
-
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for index in xrange(ipyDataMgr.GetLianTiCount()):
- lvupIpyData = ipyDataMgr.GetLianTiByIndex(index)
- dataLV = lvupIpyData.GetLianTiLV()
- if dataLV > lianTiLV:
- break
-
- upItemCount = lvupIpyData.GetNeedEatCount()
- if dataLV == lianTiLV:
- upItemCount = min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LianTiEatItemCount), upItemCount)
- #GameWorld.DebugLog("dataLV=%s,upItemCount=%s" % (dataLV, upItemCount))
-
- # 固定属性
- fixedAttrTypeList = lvupIpyData.GetFixedAttrType()
- fixedAttrValueList = lvupIpyData.GetFixedAttrValue()
- for i, attrID in enumerate(fixedAttrTypeList):
- attrValue = fixedAttrValueList[i] if len(fixedAttrValueList) > i else 0
- PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
- #GameWorld.DebugLog(" %s, attrID=%s,attrValue=%s,%s" % (i, attrID, attrValue, allAttrList))
-
- # 培养丹增加属性
- upItemPerCount = lvupIpyData.GetEatPerCount()
- if upItemCount and upItemPerCount:
- upItemAttrTypeList = lvupIpyData.GetEatItemAttrType()
- upItemAttrValueList = lvupIpyData.GetEatItemAttrValue()
- attrMultiple = upItemCount / upItemPerCount
- #GameWorld.DebugLog(" upItemCount=%s,upItemPerCount=%s,attrMultiple=%s" % (upItemCount, upItemPerCount, attrMultiple))
- for i, attrID in enumerate(upItemAttrTypeList):
- attrValue = upItemAttrValueList[i] if len(upItemAttrValueList) > i else 0
- attrValue *= attrMultiple
- PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
- #GameWorld.DebugLog(" %s, attrID=%s,attrValue=%s,%s" % (i, attrID, attrValue, allAttrList))
-
- # 增强属性万分率累加
- plusAttrTypeList = lvupIpyData.GetPlusAttrType()
- plusAttrRateList = lvupIpyData.GetPlusAttrRate()
- for i, attrID in enumerate(plusAttrTypeList):
- attrValue = plusAttrRateList[i] if len(plusAttrRateList) > i else 0
- PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
-
- #GameWorld.DebugLog(" allAttrList=%s" % allAttrList)
- # 保存计算值
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LianTi, allAttrList)
- return
-
-def SyncLianTiInfo(curPlayer):
- clientPack = ChPyNetSendPack.tagMCLianTiInfo()
- clientPack.LianTiLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LianTiLV)
- clientPack.EatItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LianTiEatItemCount)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLove.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLove.py
deleted file mode 100644
index e86bf90..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLove.py
+++ /dev/null
@@ -1,625 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerLove
-#
-# @todo:情缘系统
-# @author hxp
-# @date 2021-11-09
-# @version 1.0
-#
-# 详细描述: 情缘系统
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-11-09 20:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import ItemCommon
-import PlayerControl
-import IpyGameDataPY
-import ChPyNetSendPack
-import FunctionNPCCommon
-import IPY_GameWorld
-import ItemControler
-import NetPackCommon
-import ChConfig
-import SkillCommon
-import BuffSkill
-import PyGameData
-
-def DoPlayerOnDay(curPlayer):
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveEatCandyToday):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveEatCandyToday, 0)
- Sync_LoveInfo(curPlayer)
- return
-
-def DoPlayerLogin(curPlayer):
- Sync_LoveInfo(curPlayer)
- Sync_LoveRingInfo(curPlayer)
- return
-
-#// B3 10 送礼物 #tagCMSendGifts
-#
-#struct tagCMSendGifts
-#{
-# tagHead Head;
-# DWORD TagPlayerID; // 目标玩家ID
-# WORD GiftNum; // 赠送礼物编号
-# DWORD GiftCount; // 赠送礼物数量
-# BYTE IsAutoBuy; // 是否自动购买
-#};
-def OnSendGifts(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- tagPlayerID = clientData.TagPlayerID
- giftNum = clientData.GiftNum
- giftCount = clientData.GiftCount
- isAutoBuy = clientData.IsAutoBuy
-
- if giftNum <= 0 or giftCount <= 0:
- return
-
- ipyData = IpyGameDataPY.GetIpyGameData("LoveGift", giftNum)
- if not ipyData:
- return
-
- giftItemID = ipyData.GetGiftItemID()
- if not ipyData.GetAllowBatch():
- giftCount = 1 # 不允许批量赠送的默认赠送1个
-
- _, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, giftItemID, giftCount)
- lackCnt = giftCount - bindCnt - unBindCnt
- if lackCnt > 0:
- if not isAutoBuy:
- GameWorld.DebugLog("礼物道具不足,无法赠送! giftItemID=%s,giftCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%s"
- % (giftItemID, giftCount, bindCnt, unBindCnt, lackCnt))
- return
-
- moneyType = IpyGameDataPY.GetFuncCfg("LoveGift", 1)
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:giftItemID}
- if not FunctionNPCCommon.PayAutoBuyItem(curPlayer, {giftItemID:lackCnt}, moneyType, ChConfig.Def_Cost_Love, infoDict, isCheck=True):
- return
-
- if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_Love, tick):
- PlayerControl.NotifyCode(curPlayer, "RequestLater")
- return
-
- dataMsg = [tagPlayerID, giftNum, giftItemID, giftCount, isAutoBuy]
- SendToGameServer_Love(curPlayer, "SendGiftsReq", dataMsg)
- return
-
-#// B3 11 提亲 #tagCMMarryReq
-#
-#struct tagCMMarryReq
-#{
-# tagHead Head;
-# DWORD TagPlayerID; // 目标玩家ID
-# BYTE BridePriceID; // 聘礼ID
-#};
-def OnMarryReq(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- tagPlayerID = clientData.TagPlayerID
- bridePriceID = clientData.BridePriceID
-
- ipyData = IpyGameDataPY.GetIpyGameData("Marry", bridePriceID)
- if not ipyData:
- return
- costMoneyInfo = ipyData.GetCostMoneyInfo()
- if len(costMoneyInfo) != 2:
- return
- moneyType, moneyValue = costMoneyInfo
-
- if not PlayerControl.HaveMoney(curPlayer, moneyType, moneyValue):
- return
-
- if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_Love, tick):
- PlayerControl.NotifyCode(curPlayer, "RequestLater")
- return
-
- dataMsg = [tagPlayerID, bridePriceID]
- SendToGameServer_Love(curPlayer, "MarryReq", dataMsg)
- return
-
-#// B3 13 吃喜糖 #tagCMMarryEatCandy
-#
-#struct tagCMMarryEatCandy
-#{
-# tagHead Head;
-# DWORD PlayerIDA; // 喜糖所属玩家IDA
-# DWORD PlayerIDB; // 喜糖所属玩家IDB
-#};
-def OnMarryEatCandy(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
- playerIDA = clientData.PlayerIDA
- playerIDB = clientData.PlayerIDB
-
- playerID = curPlayer.GetPlayerID()
-
- EatCandyMax = IpyGameDataPY.GetFuncCfg("LoveCandy", 4)
- if EatCandyMax:
- eatCandyToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveEatCandyToday)
- if eatCandyToday >= EatCandyMax:
- GameWorld.DebugLog("已达今日吃喜糖次数上限. eatCandyToday=%s >= %s" % (eatCandyToday, EatCandyMax), playerID)
- return
-
- if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_Love, tick):
- PlayerControl.NotifyCode(curPlayer, "RequestLater")
- return
-
- costMoneyType, costMoneyValue = IpyGameDataPY.GetFuncEvalCfg("LoveCandy", 2)
- playerMoneyValue = PlayerControl.GetMoney(curPlayer, costMoneyType)
-
- dataMsg = [playerIDA, playerIDB, playerID, costMoneyType, costMoneyValue, playerMoneyValue]
- SendToGameServer_Love(curPlayer, "MarryEatCandy", dataMsg)
- return
-
-
-#// B3 14 购买婚礼烟花 #tagCMMarryBuyFireworks
-#
-#struct tagCMMarryBuyFireworks
-#{
-# tagHead Head;
-# DWORD PlayerIDA; // 喜糖所属玩家IDA
-# DWORD PlayerIDB; // 喜糖所属玩家IDB
-#};
-def OnMarryBuyFireworks(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
- playerIDA = clientData.PlayerIDA
- playerIDB = clientData.PlayerIDB
-
- playerID = curPlayer.GetPlayerID()
-
- costMoneyType, costMoneyValue = IpyGameDataPY.GetFuncEvalCfg("LoveCandyFire", 2)
- if not PlayerControl.HaveMoney(curPlayer, costMoneyType, costMoneyValue):
- return
- playerMoneyValue = PlayerControl.GetMoney(curPlayer, costMoneyType)
-
- if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_Love, tick):
- PlayerControl.NotifyCode(curPlayer, "RequestLater")
- return
-
- dataMsg = [playerIDA, playerIDB, playerID, costMoneyType, costMoneyValue, playerMoneyValue]
- SendToGameServer_Love(curPlayer, "MarryBuyFireworks", dataMsg)
- return
-
-#// B3 15 离婚 #tagCMMarryBreak
-#
-#struct tagCMMarryBreak
-#{
-# tagHead Head;
-# BYTE BreakType; // 0-和平离婚;1-强制离婚
-#};
-def OnMarryBreak(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- breakType = clientData.BreakType
- playerID = curPlayer.GetPlayerID()
-
- moneyType, moneyValue = 0, 0
- if breakType == 1:
- costMoneyInfo = IpyGameDataPY.GetFuncEvalCfg("LoveMarryBreak", 3)
- if len(costMoneyInfo) != 2:
- return
- moneyType, moneyValue = costMoneyInfo
-
- if not PlayerControl.HaveMoney(curPlayer, moneyType, moneyValue):
- return
-
- if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_Love, tick):
- PlayerControl.NotifyCode(curPlayer, "RequestLater")
- return
-
- dataMsg = [playerID, breakType, moneyType, moneyValue]
- SendToGameServer_Love(curPlayer, "MarryBreakReq", dataMsg)
- return
-
-def SendToGameServer_Love(curPlayer, msgType, dataMsg):
- ## 发送信息到跨服服务器
- msgList = str([msgType, dataMsg])
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetPlayerID(), 0, 0, "Love", msgList, len(msgList))
- GameWorld.Log("情缘发送GameServer: %s, %s" % (msgType, dataMsg), curPlayer.GetPlayerID())
- return
-
-def GameServer_Love_DoLogic(curPlayer, msgData):
-
- msgType, dataMsg = msgData[:2]
-
- ## 结婚成功
- if msgType == "MarrySuccess":
- __DoMarrySuccess(curPlayer, dataMsg)
-
- ## 离婚成功
- elif msgType == "ClearCoupleSocial":
- __ClearCoupleSocial(curPlayer, dataMsg)
-
- ## 同步亲密度
- elif msgType == "SyncMapServerIntimacy":
- SyncMapServerIntimacy(curPlayer, dataMsg)
-
- return
-
-def GameServer_Love_DoResult(curPlayer, msgData):
-
- msgType, dataMsg, ret = msgData
-
- ## 送礼物请求返回
- if msgType == "SendGiftsReq":
- if not ret:
- return
- __DoSendGiftsReq(curPlayer, dataMsg)
-
- ## 吃喜糖返回
- elif msgType == "MarryEatCandy":
- if not ret:
- return
- __DoMarryEatCandy(curPlayer, ret)
-
- ## 购买婚礼烟花返回
- elif msgType == "MarryBuyFireworks":
- if not ret:
- return
- __DoMarryBuyFireworks(curPlayer, ret)
-
- ## 离婚请求返回
- elif msgType == "MarryBreakReq":
- if not ret:
- return
- __DoMarryBreakReq(curPlayer, ret)
-
- return
-
-def __DoSendGiftsReq(curPlayer, dataMsg):
- ## 送礼物方处理
-
- playerID = curPlayer.GetPlayerID()
- tagPlayerID, giftNum, giftItemID, giftCount, isAutoBuy = dataMsg
-
- costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, giftItemID, giftCount)
- lackCnt = giftCount - bindCnt - unBindCnt
- delCnt = giftCount
- if lackCnt > 0:
- if not isAutoBuy:
- GameWorld.ErrLog("礼物道具不足,无法赠送! giftItemID=%s,giftCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%s"
- % (giftItemID, giftCount, bindCnt, unBindCnt, lackCnt))
- return
-
- moneyType = IpyGameDataPY.GetFuncCfg("LoveGift", 1)
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:giftItemID}
- if not FunctionNPCCommon.PayAutoBuyItem(curPlayer, {giftItemID:lackCnt}, moneyType, ChConfig.Def_Cost_Love, infoDict):
- return
- delCnt -= lackCnt
-
- GameWorld.Log("赠送礼物: tagPlayerID=%s,giftNum=%s,giftItemID=%s,giftCount=%s,isAutoBuy=%s"
- % (tagPlayerID, giftNum, giftItemID, giftCount, isAutoBuy), playerID)
-
- # 扣除消耗
- if delCnt > 0:
- ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, delCnt, "Love")
-
- SendToGameServer_Love(curPlayer, "SendGiftsOK", dataMsg)
- return
-
-def __DoMarryEatCandy(curPlayer, retInfo):
- ## 执行吃喜糖结果
-
- canBuy, isFree, costMoneyType, costMoneyValue, candyItemInfo = retInfo
-
- if not isFree:
- if not PlayerControl.HaveMoney(curPlayer, costMoneyType, costMoneyValue):
- return
-
- if not canBuy:
- return
-
- updEatCandyToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveEatCandyToday) + 1
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveEatCandyToday, updEatCandyToday)
- Sync_LoveInfo(curPlayer)
-
- GameWorld.Log("吃喜糖结果: isFree=%s,updEatCandyToday=%s" % (isFree, updEatCandyToday), curPlayer.GetPlayerID())
-
- if not isFree:
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:"EatCandy"}
- PlayerControl.PayMoney(curPlayer, costMoneyType, costMoneyValue, ChConfig.Def_Cost_Love, infoDict, isMinus=True)
-
- ItemControler.GivePlayerItemOrMail(curPlayer, candyItemInfo)
- return
-
-def __DoMarryBuyFireworks(curPlayer, retInfo):
- ## 执行购买婚礼烟花结果
-
- costMoneyType, costMoneyValue = retInfo
- GameWorld.Log("执行购买婚礼烟花结果: costMoneyType=%s, costMoneyValue=%s" % (costMoneyType, costMoneyValue), curPlayer.GetPlayerID())
-
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:"MarryBuyFireworks"}
- PlayerControl.PayMoney(curPlayer, costMoneyType, costMoneyValue, ChConfig.Def_Cost_Love, infoDict, isMinus=True)
- return
-
-def __DoMarryBreakReq(curPlayer, retInfo):
- ## 离婚请求结果返回
-
- costMoneyType, costMoneyValue = retInfo
- GameWorld.Log("执行强制离婚请求结果: costMoneyType=%s, costMoneyValue=%s" % (costMoneyType, costMoneyValue), curPlayer.GetPlayerID())
-
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:"MarryBreak"}
- PlayerControl.PayMoney(curPlayer, costMoneyType, costMoneyValue, ChConfig.Def_Cost_Love, infoDict, isMinus=True)
- return
-
-def __DoMarrySuccess(curPlayer, dataMsg):
- ## 执行成亲成功
- reqPlayerID, bridePriceID, mapServerCoupleInfo, coupleIntimacy = dataMsg
- playerID = curPlayer.GetPlayerID()
- PlayerControl.SetCoupleInfo(playerID, mapServerCoupleInfo)
-
- GameWorld.Log("执行成亲成功! reqPlayerID=%s,bridePriceID=%s,coupleIntimacy=%s" % (reqPlayerID, bridePriceID, coupleIntimacy), playerID)
-
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveRingClassLV) == 0:
- GameWorld.DebugLog("激活情戒!")
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingClassLV, 1)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingStarLV, 1)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingEatCount, 0)
- Sync_LoveRingInfo(curPlayer)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveCoupleIntimacy, coupleIntimacy)
- RefreshCoupleTeamBuff(curPlayer)
-
- # 提亲的玩家扣除消耗
- if playerID == reqPlayerID:
- ipyData = IpyGameDataPY.GetIpyGameData("Marry", bridePriceID)
- if ipyData:
- moneyType, moneyValue = ipyData.GetCostMoneyInfo()
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:"MarrySuccess", "bridePriceID":bridePriceID}
- PlayerControl.PayMoney(curPlayer, moneyType, moneyValue, ChConfig.Def_Cost_Love, infoDict, isMinus=True)
-
- RefreshLoveAttr(curPlayer)
- return
-
-def __ClearCoupleSocial(curPlayer, dataMsg):
- ## 离婚 - 清除伴侣关系
-
- playerID = curPlayer.GetPlayerID()
-
- coupleID = PlayerControl.GetCoupleID(curPlayer)
- PlayerControl.SetCoupleInfo(playerID, None)
-
- GameWorld.Log("清除伴侣关系成功! coupleID=%s" % (coupleID), playerID)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveCoupleIntimacy, 0)
- RefreshCoupleTeamBuff(curPlayer)
-
- RefreshLoveAttr(curPlayer)
- return
-
-#// B3 17 情戒解锁 #tagCMLoveRingUnlock
-#
-#struct tagCMLoveRingUnlock
-#{
-# tagHead Head;
-#};
-def OnLoveRingUnlock(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- unlockItemID = IpyGameDataPY.GetFuncCfg("LoveRing", 1)
-
- unlockItem = ItemCommon.FindItemInPackByItemID(curPlayer, unlockItemID, IPY_GameWorld.rptItem)
- if not ItemCommon.CheckItemCanUse(unlockItem):
- GameWorld.DebugLog("物品解锁情戒缺少道具! unlockItemID=%s" % unlockItemID, playerID)
- return
- ItemCommon.DelItem(curPlayer, unlockItem, 1)
-
- classLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveRingClassLV)
- if classLV < 1:
- GameWorld.DebugLog("物品解锁情戒!", playerID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingClassLV, 1)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingStarLV, 1)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingEatCount, 0)
- Sync_LoveRingInfo(curPlayer)
- RefreshLoveAttr(curPlayer)
-
- NetPackCommon.SendFakePack(curPlayer, ChPyNetSendPack.tagMCLoveRingUnlockOK())
- return
-
-#// B3 18 情戒升级 #tagCMLoveRingUp
-#
-#struct tagCMLoveRingUp
-#{
-# tagHead Head;
-# DWORD UseItemCnt; //消耗材料个数
-#};
-def OnLoveRingUp(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- costItemCount = clientData.UseItemCnt # 消耗材料个数
- #isAutoBuy = False # 本功能暂不提供自动购买
- playerID = curPlayer.GetPlayerID()
-
- classLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveRingClassLV)
- if not classLV:
- GameWorld.DebugLog("情戒未解锁!", playerID)
- return
-
- starLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveRingStarLV)
- curEatItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveRingEatCount)
-
- ringIpyData = IpyGameDataPY.GetIpyGameData("LoveRing", classLV, starLV)
- if not ringIpyData:
- return
- needEatCount = ringIpyData.GetNeedEatCount()
-
- if not needEatCount:
- GameWorld.DebugLog("情戒已满级!classLV=%s,starLV=%s" % (classLV, starLV), playerID)
- return
-
- costItemID = IpyGameDataPY.GetFuncCfg("LoveRing", 2)
- if not costItemID or costItemCount <= 0:
- return
-
- costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, costItemID, costItemCount)
- lackCnt = costItemCount - bindCnt - unBindCnt
- if lackCnt > 0:
- GameWorld.DebugLog("消耗道具不足,无法升级情戒! costItemID=%s,costItemCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%s"
- % (costItemID, costItemCount, bindCnt, unBindCnt, lackCnt), playerID)
- return
- delCnt = costItemCount
-
- updClassLV, updStarLV = classLV, starLV
- updEatItemCount = curEatItemCount + costItemCount
- GameWorld.DebugLog("情戒升级: classLV=%s,starLV=%s,curEatItemCount=%s,costItemCount=%s,updEatItemCount=%s,needEatCount=%s"
- % (classLV, starLV, curEatItemCount, costItemCount, updEatItemCount, needEatCount), playerID)
-
- ringUpType = ""
- if updEatItemCount >= needEatCount:
- ringUpType = "starUp"
- updStarLV += 1
- nextRingIpyData = IpyGameDataPY.GetIpyGameDataNotLog("LoveRing", updClassLV, updStarLV)
- if not nextRingIpyData:
- updClassLV += 1
- updStarLV = 1
- nextRingIpyData = IpyGameDataPY.GetIpyGameData("LoveRing", updClassLV, updStarLV)
- if not nextRingIpyData:
- GameWorld.ErrLog("情戒升级数据异常: classLV=%s,starLV=%s,curEatItemCount=%s,costItemCount=%s,updEatItemCount=%s,needEatCount=%s"
- % (classLV, starLV, curEatItemCount, costItemCount, updEatItemCount, needEatCount), playerID)
- return
- ringUpType = "classUp"
- updEatItemCount -= needEatCount
-
- # 扣除消耗
- if delCnt:
- ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, delCnt, "Love")
-
- # 升星
- if ringUpType == "starUp":
- GameWorld.DebugLog(" 升星: updClassLV=%s,updStarLV=%s,updEatItemCount=%s" % (updClassLV, updStarLV, updEatItemCount), playerID)
-
- # 升阶
- elif ringUpType == "classUp":
- GameWorld.DebugLog(" 升阶: updClassLV=%s,updStarLV=%s,updEatItemCount=%s" % (updClassLV, updStarLV, updEatItemCount), playerID)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingClassLV, updClassLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingStarLV, updStarLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveRingEatCount, updEatItemCount)
-
- Sync_LoveRingInfo(curPlayer)
- RefreshLoveAttr(curPlayer)
- return
-
-def RefreshLoveAttr(curPlayer):
- CalcLoveAttr(curPlayer)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
- return
-
-def CalcLoveAttr(curPlayer):
-
- classLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveRingClassLV)
- starLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveRingStarLV)
-
- coupleID = PlayerControl.GetCoupleID(curPlayer)
-
- allAttrList = [{} for _ in range(4)]
- allAttrListCouple = [{} for _ in range(4)]
-
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for index in xrange(ipyDataMgr.GetLoveRingCount()):
- ringIpyData = ipyDataMgr.GetLoveRingByIndex(index)
- dataClassLV = ringIpyData.GetRingClassLV()
- dataStarLV = ringIpyData.GetRingStarLV()
- if dataClassLV > classLV or (dataClassLV == classLV and dataStarLV > starLV):
- break
- elif dataClassLV == classLV and dataStarLV == starLV:
- upItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveRingEatCount)
- else:
- upItemCount = ringIpyData.GetNeedEatCount()
-
- # 阶星属性
- starAttrTypeList = ringIpyData.GetStarAttrType()
- starAttrValueList = ringIpyData.GetStarAttrValue()
- for i, attrID in enumerate(starAttrTypeList):
- attrValue = starAttrValueList[i]
- PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
-
- # 升级个数属性
- upItemPerCount = ringIpyData.GetUpEatItemPerCount()
- if upItemCount and upItemPerCount:
- upItemAttrTypeList = ringIpyData.GetUpItemAttrType()
- upItemAttrValueList = ringIpyData.GetUpItemAttrValue()
- attrMultiple = upItemCount / upItemPerCount
- for i, attrID in enumerate(upItemAttrTypeList):
- attrValue = upItemAttrValueList[i]
- PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrList)
-
- # 仙侣属性
- if coupleID:
- coupleAttrTypeList = ringIpyData.GetCoupleAttrType()
- coupleAttrValueList = ringIpyData.GetCoupleAttrValue()
- for i, attrID in enumerate(coupleAttrTypeList):
- attrValue = coupleAttrValueList[i]
- PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListCouple)
-
- #GameWorld.DebugLog("情戒基础属性: classLV=%s,starLV=%s,allAttrList=%s" % (classLV, starLV, allAttrList))
- #GameWorld.DebugLog("情戒仙侣属性: classLV=%s,starLV=%s,allAttrListCouple=%s" % (classLV, starLV, allAttrListCouple))
-
- # 保存计算值
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LoveRing, allAttrList)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LoveRingCouple, allAttrListCouple)
- return
-
-def Sync_LoveRingInfo(curPlayer):
- ## 同步情戒信息
- clientPack = ChPyNetSendPack.tagMCLoveRingInfo()
- clientPack.ClassLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveRingClassLV)
- clientPack.StarLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveRingStarLV)
- clientPack.EatCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveRingEatCount)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
-def Sync_LoveInfo(curPlayer):
- ## 同步情缘相关信息
- clientPack = ChPyNetSendPack.tagMCLoveInfo()
- clientPack.EatCandyToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveEatCandyToday)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
-def SyncMapServerIntimacy(curPlayer, dataMsg):
- tagID, intimacyValue = dataMsg
- coupleID = PlayerControl.GetCoupleID(curPlayer)
- if coupleID == tagID:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoveCoupleIntimacy, intimacyValue)
- RefreshCoupleTeamBuff(curPlayer)
- return
-
-def RefreshCoupleTeamBuff(curPlayer):
- ## 刷新伴侣组队buff
-
- teamID = curPlayer.GetTeamID()
- playerID = curPlayer.GetPlayerID()
- cupleID = PlayerControl.GetCoupleID(curPlayer)
- teamPlayerInfoDict = PyGameData.g_teamPlayerInfoDict.get(teamID, {}) if teamID else {}
- teamPlayerIDList = teamPlayerInfoDict.keys()
- skillLV = 0
- skillTypeID = IpyGameDataPY.GetFuncCfg("IntimacyBuff", 2)
- coupleIntimacy = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoveCoupleIntimacy)
- if cupleID and cupleID in teamPlayerIDList:
- skillLVIntimacyList = IpyGameDataPY.GetFuncEvalCfg("IntimacyBuff", 1)
- for lv, lvIntimacy in enumerate(skillLVIntimacyList, 1):
- if coupleIntimacy >= lvIntimacy:
- skillLV = lv
- else:
- break
-
- GameWorld.DebugLog("刷新伴侣组队Buff: cupleID=%s,coupleIntimacy=%s,teamID=%s,teamPlayerIDList=%s,skillTypeID=%s,skillLV=%s"
- % (cupleID, coupleIntimacy, teamID, teamPlayerIDList, skillTypeID, skillLV), playerID)
- tick = GameWorld.GetGameWorld().GetTick()
- if skillLV > 0:
- findBuff = SkillCommon.FindBuffByID(curPlayer, skillTypeID)[0]
- if findBuff:
- if skillLV == findBuff.GetSkill().GetSkillLV():
- return
- BuffSkill.DelBuffBySkillID(curPlayer, skillTypeID, tick)
- SkillCommon.AddBuffBySkillType(curPlayer, skillTypeID, tick, skillLV)
- else:
- if BuffSkill.DelBuffBySkillID(curPlayer, skillTypeID, tick):
- #统一刷新状态
- playerControl = PlayerControl.PlayerControl(curPlayer)
- playerControl.RefreshPlayerAttrByBuff()
-
- 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 f72b7e7..1f41466 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -1015,8 +1015,6 @@
#if curPlayerAction == IPY_GameWorld.paPreparing :
# ProcessPlayerPrepareState(curPlayer, tick)
- #PlayerYinji.ProcessPlayerYinji(curPlayer, tick)
-
#刷新组队状态
#ProcessTeamState(curPlayer, tick)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerXiangong.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerXiangong.py
deleted file mode 100644
index 3c60073..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerXiangong.py
+++ /dev/null
@@ -1,171 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerXiangong
-#
-# @todo:仙宫
-# @author hxp
-# @date 2024-09-04
-# @version 1.0
-#
-# 详细描述: 仙宫
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2024-09-04 16:30"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import IpyGameDataPY
-import PlayerControl
-import ChPyNetSendPack
-import DataRecordPack
-import NetPackCommon
-import ItemControler
-import GameWorld
-
-def OnPlayerLogin(curPlayer):
- SyncXiangongInfo(curPlayer)
- SyncTiandaoTreeInfo(curPlayer, True)
- return
-
-def PlayerOnDay(curPlayer):
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_XiangongLikeState % 0, 0)
-
- xiangongIDList = []
- ipyMgr = IpyGameDataPY.IPY_Data()
- for index in range(ipyMgr.GetXiangongCount()):
- ipyData = ipyMgr.GetXiangongByIndex(index)
- xiangongID = ipyData.GetXiangongID()
- if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_XiangongLikeState % xiangongID):
- continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_XiangongLikeState % xiangongID, 0)
- xiangongIDList.append(xiangongID)
-
- if xiangongIDList:
- SyncXiangongInfo(curPlayer, xiangongIDList)
-
- return
-
-def AddTiandaoQiyun(curPlayer, addValue, addDict={}):
- curQiyun = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TiandaoQiyun)
- updQiyun = min(curQiyun + addValue, ChConfig.Def_UpperLimit_DWord)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TiandaoQiyun, updQiyun)
- PlayerControl.NotifyCode(curPlayer, "AddQiyun", [addValue])
- dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),
- 'AccID':curPlayer.GetAccID(), "updQiyun":updQiyun, "addValue":addValue}
- dataDict.update(addDict)
- DataRecordPack.SendEventPack("AddTiandaoQiyun", dataDict, curPlayer)
- SyncTiandaoTreeInfo(curPlayer)
- return updQiyun
-
-def GameServer_Xiangong_DoResult(curPlayer, msgData):
-
- msgType = msgData[0]
- dataMsg = msgData[1]
-
- ## 点赞仙宫
- if msgType == "LikeXiangong":
- __DoLikeXiangong(curPlayer, dataMsg)
-
- return
-
-def __DoLikeXiangong(curPlayer, dataMsg):
-
- xiangongID, moneyType, moneyValue = dataMsg
-
- playerID = curPlayer.GetPlayerID()
- likeState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_XiangongLikeState % xiangongID)
- if likeState:
- GameWorld.DebugLog("该仙宫已点赞! xiangongID=%s" % xiangongID, playerID)
- return
- GameWorld.DebugLog("仙宫点赞! xiangongID=%s,moneyType=%s,moneyValue=%s" % (xiangongID, moneyType, moneyValue), playerID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_XiangongLikeState % xiangongID, 1)
- SyncXiangongInfo(curPlayer, [xiangongID])
- PlayerControl.GiveMoney(curPlayer, moneyType, moneyValue, "LikeXiangong", {"xiangongID":xiangongID})
- ItemControler.NotifyGiveAwardInfo(curPlayer, [], "LikeXiangong", moneyInfo={moneyType:moneyValue})
- return
-
-def GetTiandaoTreeAward(curPlayer, awardIndex):
- ## 领取天道树奖励
-
- playerID = curPlayer.GetPlayerID()
- ipyData = IpyGameDataPY.GetIpyGameData("TiandaoTree", awardIndex)
- if not ipyData:
- return
- if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TiandaoAward, awardIndex):
- GameWorld.DebugLog("该天道树奖励已领奖! awardIndex=%s" % awardIndex, playerID)
- return
-
- needQiyun = ipyData.GetNeedQiyun()
- awardItemList = ipyData.GetAwardItemList()
-
- qiyun = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TiandaoQiyun)
- if qiyun < needQiyun:
- GameWorld.DebugLog("当前天道树气运不足,无法领奖! awardIndex=%s,qiyun=%s < %s" % (awardIndex, qiyun, needQiyun), playerID)
- return
-
- GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TiandaoAward, awardIndex, 1)
-
- ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["TiandaoTree", False, {}])
-
- SyncTiandaoTreeInfo(curPlayer)
- return
-
-def SyncXiangongInfo(curPlayer, xiangongIDList=None):
- syncXiangongIDList = []
- if xiangongIDList == None:
- ipyMgr = IpyGameDataPY.IPY_Data()
- for index in range(ipyMgr.GetXiangongCount()):
- ipyData = ipyMgr.GetXiangongByIndex(index)
- syncXiangongIDList.append(ipyData.GetXiangongID())
- else:
- syncXiangongIDList = xiangongIDList
-
- xiangongList = []
- for xiangongID in syncXiangongIDList:
- if not xiangongID:
- continue
- likeState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_XiangongLikeState % xiangongID)
- if not likeState and xiangongIDList == None:
- continue
- xg = ChPyNetSendPack.tagMCXiangong()
- xg.XiangongID = xiangongID
- xg.LikeStateToday = likeState
- xiangongList.append(xg)
-
- likeStateToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_XiangongLikeState % 0)
- if xiangongIDList == None and not xiangongList and not likeStateToday:
- return
-
- clientPack = ChPyNetSendPack.tagMCXiangongInfo()
- clientPack.LikeStateToday = likeStateToday
- clientPack.XiangongList = xiangongList
- clientPack.XiangongCount = len(clientPack.XiangongList)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
-def SyncTiandaoTreeInfo(curPlayer, isLogin=False):
- ipyMgr = IpyGameDataPY.IPY_Data()
- treeCount = ipyMgr.GetTiandaoTreeCount()
- if not treeCount:
- return
- lastIpyData = ipyMgr.GetTiandaoTreeByIndex(treeCount - 1)
- if not lastIpyData:
- return
- keyNumMax = lastIpyData.GetAwardIndex() / 31 + 1
- awardStateList = []
- for keyNum in range(keyNumMax):
- awardStateList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TiandaoAward % keyNum))
-
- qiyun = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TiandaoQiyun)
- if isLogin and not qiyun and awardStateList.count(0) == len(awardStateList):
- return
-
- clientPack = ChPyNetSendPack.tagMCTiandaoTreeInfo()
- clientPack.Qiyun = qiyun
- clientPack.AwardStateList = awardStateList
- clientPack.AwardCount = len(clientPack.AwardStateList)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerYinji.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerYinji.py
deleted file mode 100644
index 85d9dbe..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerYinji.py
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 印记为玩家选择战士木灵根后会获得的能量点,SP技能会附带加成或者消耗印记点
-#
-# @author: Alee
-# @date 2019-4-26 下午03:05:54
-# @version 1.0
-#
-# @note: 用XP接口记录
-#
-#---------------------------------------------------------------------
-
-import IpyGameDataPY
-import PlayerControl
-import GameWorld
-import ChPyNetSendPack
-import NetPackCommon
-import ChConfig
-import ShareDefine
-
-Def_LastYinji_Tick = "lastyjtick" # 上一次印记消失时间
-
-def AddYinji(curPlayer, cnt):
- beforeCnt = PlayerControl.GetYinjiCnt(curPlayer)
- #上限 X个
- PlayerControl.SetYinjiCnt(curPlayer, min(beforeCnt + cnt, IpyGameDataPY.GetFuncCfg('Yinji', 2)))
-
- if beforeCnt == 0:
- # 第一次加印记需重计时
- StartYinjiTick(curPlayer)
-
- return
-
-def SubYinji(curPlayer, cnt):
- PlayerControl.SetYinjiCnt(curPlayer, max(PlayerControl.GetYinjiCnt(curPlayer) - cnt, 0))
- return
-
-
-
-# 每X秒自动减少1个印记
-def ProcessPlayerYinji(curPlayer, tick):
- if PlayerControl.GetYinjiCnt(curPlayer) == 0:
- return
-
- if tick - curPlayer.GetDictByKey(Def_LastYinji_Tick) < PlayerControl.GetLostYinjiTime(curPlayer):
- return
-
- StartYinjiTick(curPlayer)
-
-
- SubYinji(curPlayer, 1)
-
-
-def StartYinjiTick(curPlayer):
- curPlayer.SetDict(Def_LastYinji_Tick, GameWorld.GetGameWorld().GetTick())
- pack = ChPyNetSendPack.tagMCYinjiStartTime()
-
- NetPackCommon.SendFakePack(curPlayer, pack)
-
-
-def OnLoadMap(curPlayer):
- PlayerControl.SetYinjiCnt(curPlayer, 0)
- return
-
-#===============================================================================
-# // B4 0D 战斗印记 #tagCMYinji
-#
-# struct tagCMYinji
-# {
-# tagHead Head;
-# BYTE Count;
-# BYTE Type; // 0 加,1减
-# };
-#===============================================================================
-def OnYinji(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- if curPlayer.GetSightLevel() == 0:
- return
- if clientData.Type == 0:
- AddYinji(curPlayer, clientData.Count)
- elif clientData.Type == 1:
- SubYinji(curPlayer, clientData.Count)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 7b4759e..ddc2529 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -662,7 +662,7 @@
# }
#需要记录累计消耗的货币类型
-UseTotalPriceTypeList = [TYPE_Price_TiandaoFruit]
+UseTotalPriceTypeList = []
# 自定义积分及通知字典 {货币类型:通知客户端刷新类型, ...} , 如果不通知的话刷新类型则配置 None
TYPE_Price_CurrencyDict = {
@@ -687,14 +687,12 @@
#TYPE_Price_SoulCore:CDBPlayerRefresh_SoulCore,
#TYPE_Price_Honor:CDBPlayerRefresh_Honor,
#TYPE_Price_BossActScore:CDBPlayerRefresh_BossActScore,
- #TYPE_Price_FuncSysPrivilege:CDBPlayerRefresh_FuncSysPrivilege,
#TYPE_Price_Environment:CDBPlayerRefresh_Environment,
#TYPE_Price_BTGMPoint:CDBPlayerRefresh_BTGMPoint,
#TYPE_Price_GuShenMoney:CDBPlayerRefresh_GuShenMoney,
#TYPE_Price_GongdePoint:CDBPlayerRefresh_GongdePoint,
#TYPE_Price_FamilyFlagWarPoint:CDBPlayerRefresh_FamilyFlagWarPoint,
#TYPE_Price_GatherSoul:CDBPlayerRefresh_GatherSoul,
- #TYPE_Price_TiandaoFruit:CDBPlayerRefresh_TiandaoFruit,
#TYPE_Price_XianyuanScore:CDBPlayerRefresh_XianyuanScore,
#TYPE_Price_HuanjinggeScore:CDBPlayerRefresh_HuanjinggeScore,
}
@@ -1068,7 +1066,6 @@
CrossServerMsg_CrossAssist = "CrossAssist" # 跨服协助
CrossServerMsg_FamilyFlagwarOver = "FamilyFlagwarOver" # 逐鹿万界结算信息
CrossServerMsg_Worship = "Worship" # 膜拜信息
-CrossServerMsg_Xiangong = "Xiangong" # 仙宫信息
CrossServerMsg_FuncTeamInfo = "FuncTeamInfo" # 功能队伍信息同步
CrossServerMsg_FuncTeamDel = "FuncTeamDel" # 功能队伍删除同步
CrossServerMsg_FuncTeamList = "FuncTeamList" # 功能队伍列表同步
@@ -1106,7 +1103,6 @@
ClientServerMsg_ChangeFuncTeam = "ChangeFuncTeam" # 修改功能队伍
ClientServerMsg_FuncTeamMemOP = "FuncTeamMemOP" # 功能队伍成员操作
ClientServerMsg_QueryFuncTeam = "QueryFuncTeam" # 查询功能队伍
-ClientServerMsg_QueryXiangong = "QueryXiangong" # 查看仙宫仙名录
ClientServerMsg_LianqiScore = "LianqiScore" # 炼器积分
ClientServerMsg_SyncFamilyInfo = "SyncFamilyInfo" # 仙盟信息同步
ClientServerMsg_QueryCrossFamily = "QueryCrossFamily" # 查询跨服仙盟
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
index ffdb313..3f602b2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -110,9 +110,9 @@
buffTime = curSkill.GetLastTime()
if not attacker:
return buffTime
- if curSkill.GetEffect(0).GetEffectID() == ChConfig.Def_Skill_Effect_Burn:
- # 灼烧的时间特殊处理
- buffTime = buffTime*(ChConfig.Def_MaxRateValue + PlayerControl.GetBurnTimePer(attacker))/ChConfig.Def_MaxRateValue
+ #if curSkill.GetEffect(0).GetEffectID() == ChConfig.Def_Skill_Effect_Burn:
+ # # 灼烧的时间特殊处理
+ # buffTime = buffTime*(ChConfig.Def_MaxRateValue + PlayerControl.GetBurnTimePer(attacker))/ChConfig.Def_MaxRateValue
buffTime += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(attacker, None, curSkill, ChConfig.TriggerType_BuffTime)
return buffTime
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1027.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1027.py
index d0c355c..9d17086 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1027.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1027.py
@@ -38,7 +38,7 @@
recoverHP = curBuff.GetValue() # 固定值
# 血瓶恢复效果加成
- recoverHP += PlayerControl.GetHPCureEnhance(defender)
+ #recoverHP += PlayerControl.GetHPCureEnhance(defender)
SkillCommon.SkillAddHP(defender, curBuff.GetBuffID(), recoverHP)
return
@@ -62,7 +62,7 @@
return
recoverHP = curBuff.GetValue()
- recoverHP += PlayerControl.GetHPCureEnhance(defender)
+ #recoverHP += PlayerControl.GetHPCureEnhance(defender)
SkillCommon.SkillAddHP(defender, curSkill.GetSkillID(), recoverHP*count)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
index a342279..be5d78b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
@@ -66,7 +66,7 @@
skillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(attacker, defender, curSkill, ChConfig.TriggerType_BurnPer)
skillPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(attacker, defender, curSkill, ChConfig.TriggerType_BurnPer)
- skillEnhance = curEffect.GetEffectValue(1) + PlayerControl.GetBurnValue(attacker)
+ skillEnhance = curEffect.GetEffectValue(1)
skillPer = skillPer*1.0/ChConfig.Def_MaxRateValue
# 灼烧特殊公式
hurtValue, hurtType = AttackCommon.CalcHurtHP(attacker, defender, curSkill,
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1090.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1090.py
deleted file mode 100644
index 9c71126..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1090.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 两个人之间有一条特效连接,配合9999用于判断距离
-#
-# @author: Alee
-# @date 2019-5-6 下午04:30:33
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-#导入
-import SkillCommon
-import GameWorld
-import ChConfig
-import PlayerControl
-
-def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
- buffOwner = SkillCommon.GetBuffOwner(curBuff)
-
- if not buffOwner:
- curBuff.SetRemainTime(0)
- return
-
- if GameWorld.GetDistEx(defender.GetPosX(), defender.GetPosY(), buffOwner.GetPosX(), buffOwner.GetPosY()) > curEffect.GetEffectValue(0):
- curBuff.SetRemainTime(0)
- return
- return
-
-
-def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
-
- attrType = curEffect.GetEffectValue(1)
- value = curEffect.GetEffectValue(2) + curBuff.GetValue2()
- calcDict[attrType] = calcDict.get(attrType, 0) - value
-
- return
-
-## 返回buff类型,线性与否
-# @param
-# @return None
-# @remarks 函数详细说明.
-def GetCalcType():
- return ChConfig.TYPE_NoLinear
-
-## 添加BUFF后的逻辑
-# @param None
-# @return None
-def DoAddBuffOver(curObj, addBuff, curEffect, tick, buffOwner):
- if not buffOwner:
- return
- if curEffect.GetEffectValue(1) != ChConfig.TYPE_Calc_AttrSpeed:
- return
-
- addBuff.SetValue2(PlayerControl.GetSubSpeedPer(buffOwner))
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_550.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_550.py
deleted file mode 100644
index d1ac624..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_550.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-# @todo: 全体出战神兽(包括装备)XX属性值+xx%
-#
-# @author: Alee
-# @date 2018-1-20 下午02:50:26
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-#导入
-import ChConfig
-import PlayerControl
-#---------------------------------------------------------------------
-
-## buff线性增加属性
-# @param defender Buff承受者
-# @param curEffect 技能效果
-# @param calcDict 技能效果累加总表
-# @return None
-def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
- attrType = curEffect.GetEffectValue(1)
- attrList = PlayerControl.GetCalcAttrListValue(defender, [ChConfig.Def_CalcAttrFunc_Dogz, ChConfig.Def_CalcAttrFunc_DogzEquip, ChConfig.Def_CalcAttrFunc_DogzEquipPlus])[0]
- value = int(attrList[2].get(attrType, 0)*curEffect.GetEffectValue(0)*1.0/ChConfig.Def_MaxRateValue)
-
- calcDict[attrType] = calcDict.get(attrType, 0) + value
-
- return
-
-
-## 返回buff类型,线性与否
-# @param
-# @return None
-# @remarks 函数详细说明.
-def GetCalcType():
- return ChConfig.TYPE_Linear
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_551.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_551.py
deleted file mode 100644
index 79c717c..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_551.py
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-# @todo: 当前神兽(包括装备)属性项(如生命)+xx%,可多配
-#
-# @author: Alee
-# @date 2018-1-20 下午02:50:26
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-#导入
-import ChConfig
-import PlayerControl
-import ShareDefine
-import IpyGameDataPY
-import PlayerDogz
-import ChEquip
-#---------------------------------------------------------------------
-
-## buff线性增加属性
-# @param defender Buff承受者
-# @param curEffect 技能效果
-# @param calcDict 技能效果累加总表
-# @return None
-def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
- attrType = curEffect.GetEffectValue(1)
- attrList = GetTheDogzAttr(defender, curEffect.GetEffectValue(2))
- value = int(attrList[2].get(attrType, 0)*curEffect.GetEffectValue(0)*1.0/ChConfig.Def_MaxRateValue)
-
- calcDict[attrType] = calcDict.get(attrType, 0) + value
-
- return
-
-
-## 返回buff类型,线性与否
-# @param
-# @return None
-# @remarks 函数详细说明.
-def GetCalcType():
- return ChConfig.TYPE_Linear
-
-# 指定神兽属性
-def GetTheDogzAttr(curPlayer, dogzID):
- allAttrList = [{} for _ in range(4)]
-
- dogzEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
- equipPackCount = dogzEquipPack.GetCount()
- ipyData = IpyGameDataPY.GetIpyGameData("Dogz", dogzID)
- if not ipyData:
- return allAttrList
-
- # 1. 基础属性
- attrTypeList = ipyData.GetBaseAttrTypes()
- attrValueList = ipyData.GetBaseAttrValues()
- if attrTypeList and len(attrTypeList) == len(attrValueList):
- for attrIndex, baseAttrID in enumerate(attrTypeList):
- baseAttrValue = attrValueList[attrIndex]
- PlayerControl.CalcAttrDict_Type(baseAttrID, baseAttrValue, allAttrList)
- #GameWorld.DebugLog(" 基础属性: baseAttrID=%s,baseAttrValue=%s, %s" % (baseAttrID, baseAttrValue, allAttrList))
-
- # 2. 装备属性
- startIndex = (dogzID - 1) * PlayerDogz.DogzEquipCount
- for equipIndex in range(startIndex, startIndex + PlayerDogz.DogzEquipCount):
- if equipIndex < 0 or equipIndex >= equipPackCount:
- break
- curEquip = dogzEquipPack.GetAt(equipIndex)
- if curEquip.IsEmpty():
- continue
-
- #itemID = curEquip.GetItemTypeID()
- # 装备基础属性
- for effIndex in xrange(curEquip.GetEffectCount()):
- curEffect = curEquip.GetEffectByIndex(effIndex)
- if not curEffect or not curEffect.GetEffectID():
- break
- effID = curEffect.GetEffectID()
- if not effID or effID == ChConfig.Def_Effect_DogzEquipPlusExp:
- continue
- effValue = curEffect.GetEffectValue(0)
- PlayerControl.CalcAttrDict_Type(effID, effValue, allAttrList)
- #GameWorld.DebugLog(" 装备基础: itemID=%s,effID=%s,effValue=%s, %s" % (itemID, effID, effValue, allAttrList))
-
- # 强化属性
- curPlusLV = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 0)
- plusIpyData = IpyGameDataPY.GetIpyGameData("DogzEquipPlus", curEquip.GetEquipPlace(), curPlusLV)
- if plusIpyData:
- plusAttrTypeList = plusIpyData.GetPlusAttrTypes()
- plusAttrValueList = plusIpyData.GetPlusAttrValues()
- if plusAttrTypeList and len(plusAttrTypeList) == len(plusAttrValueList):
- for plusIndex, plusAttrID in enumerate(plusAttrTypeList):
- plusAttrValue = plusAttrValueList[plusIndex]
- PlayerControl.CalcAttrDict_Type(plusAttrID, plusAttrValue, allAttrList)
- #GameWorld.DebugLog(" 装备强化: itemID=%s,plusAttrID=%s, plusAttrValue=%s, %s" % (itemID, plusAttrID, plusAttrValue, allAttrList))
-
- # 传奇属性
- ChEquip.CalcAttr_LegendAttr(curPlayer, curEquip, allAttrList)
-
- return allAttrList
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_900.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_900.py
deleted file mode 100644
index e908781..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_900.py
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 根据印记增加属性值-线性
-#
-# @author: Alee
-# @date 2019-4-26 下午07:29:19
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-#导入
-import PlayerControl
-import ChConfig
-import GameWorld
-#---------------------------------------------------------------------
-
-## buff线性增加属性
-# @param defender Buff承受者
-# @param curEffect 技能效果
-# @param calcDict 技能效果累加总表
-# @return None
-def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
- attrType = curEffect.GetEffectValue(0)
-
- cnt = curBuff.GetValue()
- if curEffect.GetEffectValue(2):
- cnt = min(curBuff.GetValue(), curEffect.GetEffectValue(2))
-
- calcDict[attrType] = calcDict.get(attrType, 0) + curEffect.GetEffectValue(1)*cnt
- return
-
-
-## 返回buff类型,线性与否
-# @param
-# @return None
-# @remarks 函数详细说明.
-def GetCalcType():
- return ChConfig.TYPE_Linear
-
-
-##计算增强值
-# @param attacker 攻击者实例
-# @param curSkill 技能实例
-# @param curEffect 当前技能效果1
-# @return 总值
-def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
- return [PlayerControl.GetYinjiCnt(attacker)]
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_903.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_903.py
deleted file mode 100644
index 6ded1ef..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_903.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 减速专用,受属性影响如符文
-#
-# @author: Alee
-# @date 2019-5-8 下午02:55:40
-# @version 1.0
-#
-# @note:
-#
-
-#------------------------------------------------------------------------------
-#导入
-import ChConfig
-import PlayerControl
-import IPY_GameWorld
-#---------------------------------------------------------------------
-
-## buff非线性减少属性
-# @param defender Buff承受者
-# @param curEffect 技能效果
-# @param calcDict 技能效果累加总表
-# @return None
-def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
-
- effect = curEffect.GetEffectValue(0)
- if curBuff and curBuff.GetLayer():
- # 层级叠加效果
- effect = effect*curBuff.GetLayer()
-
- effect += curBuff.GetValue()
- calcDict[ChConfig.TYPE_Calc_AttrSpeed] = calcDict.get(ChConfig.TYPE_Calc_AttrSpeed, 0) - effect
-
- return
-
-
-## 返回buff类型,线性与否
-# @param
-# @return None
-# @remarks 函数详细说明.
-def GetCalcType():
- return ChConfig.TYPE_NoLinear
-
-
-##计算增强值
-# @param attacker 攻击者实例
-# @param curSkill 技能实例
-# @param curEffect 当前技能效果1
-# @return 总值
-def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
-
- return [PlayerControl.GetSubSpeedPer(attacker)]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
index d5de7ba..c87ffcd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
@@ -98,9 +98,9 @@
coolDownTime = curSkill.GetCoolDownTime()
remainTime = coolDownTime
- skillTypeID = curSkill.GetSkillTypeID()
- if atkObj and skillTypeID in IpyGameDataPY.GetFuncEvalCfg("SkillCD", 1):
- reduceSkillCDPer += PlayerControl.GetTheFBSkillsCD(atkObj)
+ #skillTypeID = curSkill.GetSkillTypeID()
+ #if atkObj and skillTypeID in IpyGameDataPY.GetFuncEvalCfg("SkillCD", 1):
+ # reduceSkillCDPer += PlayerControl.GetTheFBSkillsCD(atkObj)
if isPassiveSkill(curSkill):
if curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4071.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4071.py
deleted file mode 100644
index e3f9e89..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4071.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-# @todo: 攻击将造成伤害的XX%转化为自身生命
-#
-# @author: Alee
-# @date 2018-1-9 下午09:39:37
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-import GameObj
-import ChConfig
-import PlayerControl
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
- if effect.GetEffectValue(1) and not PlayerControl.GetYinjiCnt(attacker):
- return False
- return True
-
-
-def GetValue(attacker, defender, effect):
- return effect.GetEffectValue(0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4085.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4085.py
deleted file mode 100644
index 9737451..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4085.py
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 使用技能后印记数量
-#
-# @author: Alee
-# @date 2019-4-26 下午05:52:27
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-
-import PlayerYinji
-
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
-
- PlayerYinji.AddYinji(attacker, effect.GetEffectValue(0))
- return False
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4086.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4086.py
deleted file mode 100644
index 05f505a..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4086.py
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 根据印记来增加攻击(技能)伤害
-#
-# @author: Alee
-# @date 2019-4-26 下午05:58:01
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-
-import ChConfig
-import AttackCommon
-import PlayerControl
-
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
- if effect.GetEffectValue(2):
- # 只针对第一目标
- if AttackCommon.GetFirstDefenderID(attacker) != defender.GetID():
- return False
-
-
- return True if PlayerControl.GetYinjiCnt(attacker) else False
-
-
-def GetValue(attacker, defender, effect):
- return effect.GetEffectValue(0)*min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(1))
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4087.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4087.py
deleted file mode 100644
index 7a35778..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4087.py
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 印记达到X以上才增加技能伤害
-#
-# @author: Alee
-# @date 2019-4-26 下午07:46:07
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-import ChConfig
-import PlayerControl
-
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
-
- return True if PlayerControl.GetYinjiCnt(attacker) >= effect.GetEffectValue(1) else False
-
-
-def GetValue(attacker, defender, effect):
- return effect.GetEffectValue(0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4088.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4088.py
deleted file mode 100644
index 516c6f6..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4088.py
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 消耗固定印记数量增加技能伤害
-#
-# @author: Alee
-# @date 2019-4-26 下午07:46:07
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-import ChConfig
-import PlayerControl
-
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
- if PlayerControl.GetYinjiCnt(attacker) < effect.GetEffectValue(1):
- return False
-
- # 4092 处理消耗
- #PlayerYinji.SubYinji(attacker, effect.GetEffectValue(1))
- return True
-
-
-def GetValue(attacker, defender, effect):
- return effect.GetEffectValue(0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4089.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4089.py
deleted file mode 100644
index 1bebdfb..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4089.py
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 消耗XX个印记数量增加技能伤害,并根据印记数加成
-#
-# @author: Alee
-# @date 2019-4-26 下午07:46:07
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-import ChConfig
-import PlayerControl
-
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
- if not PlayerControl.GetYinjiCnt(attacker):
- return False
-
- # 4092 处理消耗
- #PlayerYinji.SubYinji(attacker, min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(1)))
- return True
-
-
-def GetValue(attacker, defender, effect):
- return effect.GetEffectValue(0)*min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(1))
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4090.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4090.py
deleted file mode 100644
index 9fd6d8b..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4090.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 攻击后根据指定印记倍数触发技能
-#
-# @author: Alee
-# @date 2019-4-26 下午08:03:44
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-import PlayerControl
-
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
- cnt = PlayerControl.GetYinjiCnt(attacker)
- if cnt == 0:
- return False
-
- return True if cnt%effect.GetEffectValue(0) == 0 else False
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4091.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4091.py
deleted file mode 100644
index 896627e..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4091.py
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 使用非攻击类技能后增加印记数, 可增加增益buff数的印记数
-#
-# @author: Alee
-# @date 2019-4-26 下午08:20:09
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-
-import PlayerYinji
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
- addCnt = effect.GetEffectValue(0)
- if effect.GetEffectValue(1):
- addCnt = min(attacker.GetBuffState().GetBuffCount(), effect.GetEffectValue(0))
-
- if not addCnt:
- return False
-
- PlayerYinji.AddYinji(attacker, addCnt)
-
- return False
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4092.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4092.py
deleted file mode 100644
index 128b406..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4092.py
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 使用技能后减少印记数量 消耗模式0:固定个数,1.大于1可释放,消耗个数大于1小于等于限制个数
-#
-# @author: Alee
-# @date 2019-4-26 下午05:52:27
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-
-import PlayerYinji
-import PlayerControl
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
- delType = effect.GetEffectValue(1)
-
- if delType == 0:
- if PlayerControl.GetYinjiCnt(attacker) < effect.GetEffectValue(0):
- return False
-
- PlayerYinji.SubYinji(attacker, effect.GetEffectValue(0))
- elif delType == 1:
- PlayerYinji.SubYinji(attacker, min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(0)))
- return False
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4102.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4102.py
deleted file mode 100644
index 08035ea..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4102.py
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 消耗固定印记数量增加技能伤害固定值
-#
-# @author: Alee
-# @date 2019-4-26 下午07:46:07
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-import ChConfig
-import PlayerControl
-
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
- if PlayerControl.GetYinjiCnt(attacker) < effect.GetEffectValue(1):
- return False
-
- # 4092 处理消耗
- #PlayerYinji.SubYinji(attacker, effect.GetEffectValue(1))
- return True
-
-
-def GetValue(attacker, defender, effect):
- return effect.GetEffectValue(0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4108.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4108.py
deleted file mode 100644
index 77c02ff..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4108.py
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: 消耗印记释放技能
-#
-# @author: Alee
-# @date 2019-6-3 上午11:27:01
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-import ChConfig
-import GameWorld
-import GameObj
-import PlayerControl
-
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
- if PlayerControl.GetYinjiCnt(attacker) < effect.GetEffectValue(0):
- return False
-
- # 4092 处理消耗
- return True
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
index 18ed910..40aecf6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -156,9 +156,6 @@
GetPassiveEffManager().RegistPassiveEffSet(curPlayer)
GetPassiveEffManager().RegistPassiveBuff(curPlayer)
-
- # 助战神兽技能
- GetPassiveEffManager().RegistPassiveEffDogz(curPlayer)
GetPassiveEffManager().RegistSuperEquipSkillDict(curPlayer)
@@ -269,10 +266,6 @@
4083:ChConfig.TriggerType_AddThumpHitPer, # 增加重击伤害百分比
4084:ChConfig.TriggerType_ThumpHit, # 对第一目标重击触发技能
4085:ChConfig.TriggerType_SkillSuccess, # 任何技能释放成功都可触发 76 加印记
- 4086:ChConfig.TriggerType_AttackAddSkillPerYinji, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 为了飘字使用
- 4087:ChConfig.TriggerType_AttackAddSkillPerYinji, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 为了飘字使用
- 4088:ChConfig.TriggerType_AttackAddSkillPerYinji, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 为了飘字使用
- 4089:ChConfig.TriggerType_AttackAddSkillPerYinji, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 为了飘字使用
4090:ChConfig.TriggerType_AttackOver, # 攻击(对敌技能)后被动技能被触发 4
4091:ChConfig.TriggerType_SkillOverNoAttack, # 技能释放后 与TriggerType_AttackOver相反19,
4092:ChConfig.TriggerType_SkillSuccessExpend, # 任何技能释放成功都可触发 76 减印记
@@ -429,38 +422,6 @@
# 获得被动触发的 buff
def GetBuffsByTriggerType(self, triggerType, useSkillID=0):
return self.AffectBuffDict.get((triggerType, 0), {})
-
-
- # 重刷神兽助战技能
- def RefreshDogzBattleSkill(self):
- self.AffectDogzSkillDict = {}
- skills = FindDogzBattleSkills(self.gameObj)
-
- for curSkill in skills:
- if not SkillCommon.isPassiveTriggerSkill(curSkill):
- continue
-
- skillTypeID = curSkill.GetSkillTypeID()
-
- connSkillID = SkillShell.GetConnectSkillID(curSkill) # 关联技能ID, 0代表不限技能
- for i in xrange(curSkill.GetEffectCount()):
- curEffect = curSkill.GetEffect(i)
- effectID = curEffect.GetEffectID()
- if effectID == 0:
- continue
-
- triggerType = GetTriggerTypeByEffectID(effectID)
- if triggerType == -1:
- continue
-
- key = (triggerType,connSkillID)
- if key not in self.AffectDogzSkillDict:
- self.AffectDogzSkillDict[key] = []
-
- self.AffectDogzSkillDict[key].append((skillTypeID, effectID))
-
- return self.AffectDogzSkillDict
-
# 重刷特殊装备技能
def RefreshSuperEquipSkillDict(self):
@@ -756,23 +717,7 @@
else:
passiveEff.RefreshPassiveSkillSet(isCD)
return
-
-
- # 人物需同步注册神兽技能
- def RegistPassiveEffDogz(self, gameObj):
- passiveEff = self.GetPassiveEff(gameObj)
- if not passiveEff:
- # 强制刷新所有被动技能
- passiveEff = PassiveEff(gameObj)
- if not passiveEff.RefreshDogzBattleSkill():
- return
- self.AddPassiveEff(gameObj, passiveEff)
- else:
- passiveEff.RefreshDogzBattleSkill()
- return
-
-
-
+
# 人物需同步注册装备技能,技能目前为可触发的被动类,若有定义冲突则可用功能类型划分
def RegistSuperEquipSkillDict(self, gameObj):
passiveEff = self.GetPassiveEff(gameObj)
@@ -1486,71 +1431,6 @@
curValue += callFunc(attacker, defender, passiveEffect)
return curValue
-
-
-# 因为要兼容低等级技能,所以技能只能是在助战的时候,先删除神兽技能再学习新的助战神兽技能
-def PlayerDogzSkill(curPlayer):
-
- dogzSkills = [] # 需要学习的技能
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyDataMgr.GetDogzCount()):
- ipyData = ipyDataMgr.GetDogzByIndex(i)
- if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
- continue
-
- dogzSkills.extend(ipyData.GetHelpBattleSkills())
-
- delDogzSkills = [] # 删除不在助战神兽队列的技能
- skillManager = curPlayer.GetSkillManager()
- for i in xrange(skillManager.GetSkillCount()):
- curSkill = skillManager.GetSkillByIndex(i)
- if curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_Dogz:
- continue
- skillID = curSkill.GetSkillID()
-
- delDogzSkills.append(skillID)
-
- GameWorld.DebugLog("PlayerDogzSkill:%s - 删除%s"%(dogzSkills, delDogzSkills))
-
- # 删除神兽技能
- for skillID in delDogzSkills:
- skillManager.DeleteSkillBySkillID(skillID, False)
-
- # 添加助战技能,同类技能取最高
- dogzSkills.sort()
- for skillID in dogzSkills:
- skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
- if not skillData:
- continue
- if skillData.GetSkillType() == ChConfig.Def_SkillType_AttrSkillNoLearn:
- # 同技能可多个叠加的技能不能学,算属性时直接取表
- continue
-
- skillManager.LearnSkillByID(skillID, False)
-
- # 刷被动效果
- GetPassiveEffManager().RegistPassiveEffDogz(curPlayer)
- return
-
-
-# 获取助战神兽的技能列表
-def FindDogzBattleSkills(gameObj):
- skills = []
- if gameObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
- return skills
-
- skillManager = gameObj.GetSkillManager()
- for i in xrange(skillManager.GetSkillCount()):
- curSkill = skillManager.GetSkillByIndex(i)
- if not curSkill:
- continue
-
- if curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_Dogz:
- continue
- skills.append(curSkill)
-
- return skills
-
# 遍历身上装备技能以及各自个数,装备技能不需要学习
# 保证不同的装备技能不会有相同的效果, 效果数值的衰减是根据相同技能个数计算而不是效果个数 1-pow((1-初始值),相同技能个数)
--
Gitblit v1.8.0