From 4c8a4908e7e0ab1575e6e9a0093f54bd63d85b6f Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 04 二月 2026 21:07:17 +0800
Subject: [PATCH] 16 卡牌服务端(删除无用跨服管理模块、跨服功能、其他废弃代码;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCShopBuyCheck.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py | 33
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py | 39
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini | 21
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 719 ------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 3616 --------------------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyGCZ.py | 9
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 740 ------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 122 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 27
PySysDB/PySysDBPY.h | 290 --
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py | 11
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py | 11
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 125 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 125
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AICommon.py | 38
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py | 18
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py | 5
/dev/null | 34
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_Chests.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLianqi.py | 11
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 192 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFirstGold.py | 10
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintSkill.py | 13
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py | 17
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 23
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 60
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 176 -
41 files changed, 58 insertions(+), 6,497 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index ff3fd56..9f3c012 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -811,16 +811,6 @@
DWORD PlusLVUPTotalExp; //升级所需累计熟练度总值
};
-//符印表
-
-struct tagRune
-{
- DWORD _ID; //编号ID
- list AttrType; //属性类型
- DWORD TowerID; //解锁符印塔编号
-};
-
-
//洗练表 #tagEquipWash
struct tagEquipWash
@@ -860,52 +850,6 @@
DWORD FightPowerEx; //附加战斗力
};
-
-//灵兽表
-
-struct tagPetInfo
-{
- DWORD _ID; //灵兽NPCID
- BYTE Quality; //品质
- char UnlockSys; //解锁广播提示
- DWORD UnLockNeedItemID; //解锁灵兽物品ID
- BYTE UnLockNeedItemCnt; //解锁所需物品数量
- DWORD DecomposeExp; //分解单个解锁物品可获得升阶经验
- BYTE InitRank; //灵兽初始阶数
- WORD MaxRank; //灵兽最高阶数
- WORD UseNeedRank; //多少阶可切换外观
- list SkillID; //灵兽技能ID
- list SkillUnLock; //灵兽技能解锁需要阶数
- list SkillUnLockSys; //灵兽技能解锁提示
- DWORD InitFightPower; //初始战力
-};
-
-//灵宠升星表
-
-struct tagPetStarUp
-{
- DWORD _PetNPCID; //灵兽NPCID
- BYTE _PetStar; //灵兽星级
- list StarUpNeedItemList; //升下一星所需道具 [[物品ID,个数], ...]
- list StarAttrType; //累计总属性类型
- list StarAttrValue; //累计总属性值
-};
-
-//灵宠培养表
-
-struct tagPetTrain
-{
- BYTE _TrainType; //培养类型
- BYTE _TrainLV; //培养等阶
- WORD NeedRealmLV; //培养所需境界
- DWORD EatCntTotal; //升阶所需个数(非累计)
- DWORD EatCntEverytime; //每次培养消耗x个
- list EatItemAttrTypeList; //每X个培养丹增加属性类型=EatCntEverytime
- list EatItemAttrValueList; //每X个培养丹增加属性值=EatCntEverytime
- list LVAttrTypeList; //每级额外属性类(非累积)
- list LVAttrValueList; //每级额外属性值(非累积)
-};
-
//装备分解属性表
struct tagEquipDecompose
@@ -913,28 +857,6 @@
WORD _LV; //等级
DWORD UpNeedExp; //升级所需经验数
dict Attr; //属性加成
-};
-
-
-//灵兽升阶消耗表
-
-struct tagPetClassCost
-{
- DWORD _PetID; //灵兽NPCID
- DWORD _Class; //灵兽阶数
- DWORD UpNeedExp; //灵兽升阶所需经验数
- DWORD AtkAdd; //每阶攻击力加成
-};
-
-
-//灵兽吸收装备表
-
-struct tagPetEatEquip
-{
- BYTE _EquipColor; //装备品质
- BYTE _EquipClass; //装备阶数
- DWORD Exp; //获得灵兽升级经验
- DWORD FamilyStoreItemScore; //仙盟宝库积分
};
//法器升级表
@@ -1180,22 +1102,6 @@
dict AttrExDict; //特殊属性值字典 {attrKey:value, ...}
};
-//符印塔表
-
-struct tagRuneTower
-{
- DWORD _ID; //塔编号
- DWORD RunePoint; //过关给符印精华
- DWORD Ysog; //过关给魔精
- DWORD NPCID; //npcid
- BYTE IsNotify; //是否广播
- list FixEndAward; //固定结算奖励
- dict GoodDrop; //珍稀符印通关掉落概率
- DWORD SweepRunePoint; //扫荡符印精华
- DWORD SweepYsog; //扫荡魔精
- dict SweepGoodDrop; //扫荡珍稀符印
-};
-
//地图表格
struct tagChinMap
@@ -1293,28 +1199,6 @@
DWORD NeedCnt; //需要数量
list Condition; //辅助条件
list AwardItemList; //奖励物品列表
-};
-
-//通天令等级表
-
-struct tagTongTianLV
-{
- WORD _TTLV; //通天令等级
- WORD LVUPPoint; //升级所需积分(0不可升级)
- list CommAwardItemList; //常规奖励物品列表 [[物品ID,个数,是否拍品], ...]
- list XianAwardItemList; //仙品奖励物品列表 [[物品ID,个数,是否拍品], ...]
- list NotifyItemIDList; //需要广播的物品ID列表
-};
-
-//通天令任务表
-
-struct tagTongTianTask
-{
- WORD _TTTaskID; //通天任务ID(确定后不可修改)
- BYTE TTTaskType; //通天任务类型
- BYTE IsDailyTask; //是否每日任务
- DWORD FinishNeedValue; //任务完成所需值
- DWORD TaskPoint; //任务积分点奖励
};
//法宝表
@@ -1478,15 +1362,6 @@
BYTE TotalMaxCount; //所有点总怪物数
BYTE RefreshSeconds; //刷怪间隔秒
BYTE RefreshPerMinutes; //每整X分刷怪
-};
-
-//符印合成表
-
-struct tagRuneCompound
-{
- DWORD _TagItemID; //合成的符印物品ID
- list NeedItem; //需要的物品ID
- WORD NeedMJ; //需要的魔精数量
};
//资源找回表
@@ -1788,29 +1663,6 @@
DWORD AddExpRate; //经验倍率加成,万分率
};
-//消费返利活动表
-
-struct tagActCostRebate
-{
- DWORD _CfgID; //配置ID
- char StartDate; //开启日期
- char EndDate; //结束日期
- WORD LVLimit; //限制等级
- BYTE IsDayReset; //是否每天重置
- list TemplateIDList; //模板ID列表
-};
-
-//消费返利模板表
-
-struct tagCostRebateTemplate
-{
- DWORD _TemplateID; //模板ID
- DWORD NeedCostGold; //需要消费仙玉数
- BYTE AwardIndex; //返利奖励索引0~31,同个模板中不重复
- dict AwardItemList; //返利物品信息列表 {世界等级范围:[({职业:物品ID,..},个数,是否绑定), ...]}
- char NotifyKey; //全服广播key,默认两个参数(玩家名, 档位额度)
-};
-
//买一送多活动表
struct tagActBuyOne
@@ -2045,28 +1897,6 @@
DWORD ExpireMinutes; //时效分钟,0永久
};
-//充值返利活动表
-
-struct tagActRechargePrize
-{
- DWORD _CfgID; //配置ID
- char StartDate; //开启日期
- char EndDate; //结束日期
- WORD LVLimit; //限制等级
- BYTE IsDayReset; //是否每天重置
- list TemplateIDList; //模板ID列表
-};
-
-//充值返利模板表
-
-struct tagRechargePrizeTemplate
-{
- DWORD _TemplateID; //模板ID
- WORD CTGID; //充值表充值ID
- DWORD GoldPrize; //返利仙玉数
- BYTE PrizeCountLimit; //最大赠送次数
-};
-
//累计充值活动表
struct tagActTotalRecharge
@@ -2090,28 +1920,6 @@
BYTE AwardIndex; //返利奖励索引0~31,同个模板中不重复
dict AwardItem; //返利物品信息列表 {职业:[(物品ID,个数,是否绑定),...]}
char NotifyKey; //全服广播key,默认两个参数(玩家名, 档位额度)
-};
-
-//累计充值返利仙玉活动表
-
-struct tagActRechargeRebateGold
-{
- DWORD _CfgID; //配置ID
- char StartDate; //开启日期
- char EndDate; //结束日期
- WORD LVLimit; //限制等级
- BYTE IsDayReset; //是否每天重置
- list TemplateIDList; //模板ID列表
-};
-
-//累计充值返利仙玉模板表
-
-struct tagRechargeRebateGoldTemplate
-{
- DWORD _TemplateID; //模板ID
- DWORD RMBMin; //充值RMB最小值
- DWORD RMBMax; //充值RMB最大值
- WORD RebateRate; //返利仙玉比例百分比
};
//成长必买活动表
@@ -2296,56 +2104,6 @@
BYTE _CopyMapID; //虚拟线路ID
WORD PosX; //坐标X
WORD PosY; //坐标Y
-};
-
-//时装表
-
-struct tagCoat
-{
- DWORD _CoatID; //时装编号
- BYTE CostQuality; //时装品质 0-普通;1-稀有;2-传说
- list EquipItemID; //装备物品ID(按职业顺序)
- DWORD UnlockItemID; //材料物品ID
- DWORD MaxLV; //最大星级
- list CostItemCnt; //材料数量
- dict StarAttr; //属性
- DWORD InitFightPower; //初始战力
-};
-
-//时装柜升级表
-
-struct tagCoatChestUp
-{
- DWORD _LV; //等级
- BYTE NeedExp; //升级所需经验
- dict AddAttr; //属性
-};
-
-//周狂欢活动时间表
-
-struct tagActWeekParty
-{
- DWORD _CfgID; //配置ID
- char StartDate; //开启日期
- char EndDate; //结束日期
- WORD AdvanceMinutes; //前端提前X分钟展示活动
- BYTE IsDayReset; //是否每天重置
- BYTE ResetType; //重置类型,0-0点重置;1-5点重置
- WORD LVLimit; //限制等级
- list TemplateID; //模板编号
- dict PointAward; //总积分奖励
-};
-
-//周狂欢表
-
-struct tagWeekParty
-{
- BYTE _TemplateID; //模板ID
- BYTE ActionType; //活动条目ID
- DWORD TotalTimes; //可完成的总次数,0表示不限次数
- WORD SingleTimes; //单次领奖需要的次数
- eval Reward; //奖励物品
- WORD Point; //积分
};
//运势活动时间表
@@ -2539,33 +2297,6 @@
char WorldNotifyKey; //全服广播key,参数(玩家名, 物品ID, 物品数据, 个数,)
};
-//节日巡礼活动时间表
-
-struct tagActFeastWeekParty
-{
- DWORD _CfgID; //配置ID
- char StartDate; //开启日期
- char EndDate; //结束日期
- WORD AdvanceMinutes; //前端提前X分钟展示活动
- BYTE IsDayReset; //是否每天重置
- BYTE ResetType; //重置类型,0-0点重置;1-5点重置
- WORD LVLimit; //限制等级
- list TemplateID; //模板编号
- dict PointAward; //总积分奖励
-};
-
-//节日巡礼模板表
-
-struct tagFeastWeekParty
-{
- BYTE _TemplateID; //模板ID
- BYTE ActionType; //活动条目ID
- DWORD TotalTimes; //可完成的总次数,0表示不限次数
- WORD SingleTimes; //单次领奖需要的次数
- list Reward; //奖励物品
- WORD Point; //积分
-};
-
//新仙界盛典-全民来嗨表
struct tagNewAllPeopleParty
@@ -2608,27 +2339,6 @@
WORD ItemCnt; //物品数量
BYTE IsBind; //是否绑定
DWORD Weight; //权重
-};
-
-//跨服充值排行模板达标奖励表
-
-struct tagCrossActCTGBillboardDabiao
-{
- DWORD _TemplateID; //模板ID
- float CTGNeed; //需充值RMB
- BYTE AwardIndex; //奖励记录索引,从0开始,同个模板不可重复,不可变更
- list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...]
-};
-
-//跨服充值排行模板名次奖励表
-
-struct tagCrossActCTGBillboardOrder
-{
- DWORD _TemplateID; //模板ID
- WORD OrderA; //名次A
- WORD OrderB; //至名次B
- float CTGAtleast; //至少充值RMB
- list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...]
};
//装备位背包索引映射表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index 8c22e53..796029f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -58,34 +58,6 @@
PacketSubCMD_1=0x30
PacketCallFunc_1=OnViewBillboard
-;功能组队
-[PlayerFuncTeam]
-ScriptName = Player\PlayerFuncTeam.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 5
-
-PacketCMD_1=0xB9
-PacketSubCMD_1=0x20
-PacketCallFunc_1=OnCreateFuncTeam
-
-PacketCMD_2=0xB9
-PacketSubCMD_2=0x21
-PacketCallFunc_2=OnChangeFuncTeam
-
-PacketCMD_3=0xB9
-PacketSubCMD_3=0x22
-PacketCallFunc_3=OnFuncTeamMemOP
-
-PacketCMD_4=0xB9
-PacketSubCMD_4=0x23
-PacketCallFunc_4=OnQueryFuncTeam
-
-PacketCMD_5=0xB9
-PacketSubCMD_5=0x24
-PacketCallFunc_5=OnQueryPlayerFuncTeam
-
;法器
[PlayerFaQi]
ScriptName = Player\PlayerFaQi.py
@@ -257,30 +229,6 @@
PacketCMD_1=0xA6
PacketSubCMD_1=0x13
PacketCallFunc_1=OnFamilyTaofaOP
-
-;宠物
-[PlayerPet]
-ScriptName = Player\PlayerPet.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 4
-
-PacketCMD_1=0xA7
-PacketSubCMD_1=0x02
-PacketCallFunc_1=OnActivatePet
-
-PacketCMD_2=0xA7
-PacketSubCMD_2=0x04
-PacketCallFunc_2=PetClassUp
-
-PacketCMD_3=0xA7
-PacketSubCMD_3=0x05
-PacketCallFunc_3=OnPetTrain
-
-PacketCMD_4=0xA7
-PacketSubCMD_4=0x06
-PacketCallFunc_4=OnPetStarUp
;幻境阁
[PlayerHJG]
@@ -538,106 +486,6 @@
PacketSubCMD_1 = 0x01
PacketCallFunc_1 = GetTotalLoginDayAward
-;符印
-[PlayerRune]
-ScriptName = Player\PlayerRune.py
-Writer = xdh
-Releaser = xdh
-RegType = 0
-RegisterPackCount = 5
-
-PacketCMD_1=0xA5
-PacketSubCMD_1=0x65
-PacketCallFunc_1=OnRuneUp
-
-PacketCMD_2=0xA5
-PacketSubCMD_2=0x66
-PacketCallFunc_2=OnRuneDecompose
-
-PacketCMD_3=0xA5
-PacketSubCMD_3=0x67
-PacketCallFunc_3=OnRuneLock
-
-PacketCMD_4=0xA5
-PacketSubCMD_4=0x78
-PacketCallFunc_4=OnRuneCompound
-
-PacketCMD_5=0xA5
-PacketSubCMD_5=0x13
-PacketCallFunc_5=OnUnlockRuneHole
-
-;跨服排位
-[PlayerCrossChampionship]
-ScriptName = Player\PlayerCrossChampionship.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 4
-
-PacketCMD_1=0xC1
-PacketSubCMD_1=0x20
-PacketCallFunc_1=OnChampionshipOfficialApply
-
-PacketCMD_2=0xC1
-PacketSubCMD_2=0x21
-PacketCallFunc_2=OnChampionshipOfficialChallenge
-
-PacketCMD_3=0xC1
-PacketSubCMD_3=0x22
-PacketCallFunc_3=OnChampionshipGuess
-
-PacketCMD_4=0xC1
-PacketSubCMD_4=0x23
-PacketCallFunc_4=OnChampionshipWorship
-
-;跨服PK竞技场
-[PlayerCrossRealmPK]
-ScriptName = Player\PlayerCrossRealmPK.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 4
-
-PacketCMD_1=0xC1
-PacketSubCMD_1=0x01
-PacketCallFunc_1=OnCrossRealmPKMatch
-
-PacketCMD_2=0xC1
-PacketSubCMD_2=0x02
-PacketCallFunc_2=OnCrossRealmPKBuy
-
-PacketCMD_3=0xC1
-PacketSubCMD_3=0x03
-PacketCallFunc_3=OnCrossRealmPKGetAward
-
-PacketCMD_4=0xC1
-PacketSubCMD_4=0x08
-PacketCallFunc_4=OnCrossRealmPKRobotOver
-
-;跨服玩家
-[CrossRealmPlayer]
-ScriptName = Player\CrossRealmPlayer.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xC1
-PacketSubCMD_1=0x04
-PacketCallFunc_1=OnExitCrossRealm
-
-;幸运云购
-[PlayerLuckyCloudBuy]
-ScriptName = Player\PlayerLuckyCloudBuy.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xC1
-PacketSubCMD_1=0x10
-PacketCallFunc_1=OnLuckyCloudBuy
-
;改名功能
[UpdatePlayerName]
ScriptName = Player\UpdatePlayerName.py
@@ -690,30 +538,6 @@
PacketCMD_1=0xA2
PacketSubCMD_1=0x12
PacketCallFunc_1=OnCMViewPlayerInfo
-
-;通天令
-[PlayerTongTianLing]
-ScriptName = Player\PlayerTongTianLing
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 4
-
-PacketCMD_1=0xA5
-PacketSubCMD_1=0x43
-PacketCallFunc_1=OnGetTongTianTaskAward
-
-PacketCMD_2=0xA5
-PacketSubCMD_2=0x44
-PacketCallFunc_2=OnGetTongTianLVAward
-
-PacketCMD_3=0xA5
-PacketSubCMD_3=0x45
-PacketCallFunc_3=OnExchangeTongTianLVPoint
-
-PacketCMD_4=0xA5
-PacketSubCMD_4=0x46
-PacketCallFunc_4=OnBuyTongTianLing
;NPC
[NPCCommon]
@@ -774,22 +598,6 @@
PacketCMD_2=0xA5
PacketSubCMD_2=0x69
PacketCallFunc_2=OnTreasureWishSelect
-
-;时装
-[PlayerCoat]
-ScriptName = Player\PlayerCoat.py
-Writer = xdh
-Releaser = xdh
-RegType = 0
-RegisterPackCount = 2
-
-PacketCMD_1=0xA5
-PacketSubCMD_1=0x0B
-PacketCallFunc_1=OnPlayerCoatUp
-
-PacketCMD_2=0xA5
-PacketSubCMD_2=0x20
-PacketCallFunc_2=OnCoatDecompose
;新定义攻击
[NewAttack]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
index 5d4ccad..6dd53c1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
@@ -156,14 +156,6 @@
ClassName = DB_PushRecharge
FuncName = PushRecharge
-[CrossPlayerData]
-ScriptName = Player\CrossPlayerData.py
-Writer = alee
-Releaser = alee
-RegType = 1
-ClassName = DM_MergePlayerData
-FuncName = OnMergePlayerData
-
;;;;;;;;;;;;;;;;;;;;;;类初始化
[InitNPC]
ScriptName = NPC\ChNPC.py
@@ -323,19 +315,6 @@
PacketCMD_5=0x3
PacketSubCMD_5=0x21
PacketCallFunc_5=EnterFbGameEvent
-
-;宠物
-[Pet]
-ScriptName = Player\PlayerPet.py
-Writer = chenxuewei
-Releaser = chenxuewei
-RegType = 0
-
-RegisterPackCount = 1
-
-PacketCMD_1=0x16
-PacketSubCMD_1=0x3
-PacketCallFunc_1=PetStateChange
;技能
[Skill]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
index ece7992..b0e4474 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -33,13 +33,11 @@
import SkillCommon
import FBLogic
import ReadChConfig
-import PetControl
import GameMap
import PassiveBuffEffMng
import GameFuncComm
import ShareDefine
import SkillShell
-import FormulaControl
import IpyGameDataPY
import PyGameData
import GameObj
@@ -47,7 +45,6 @@
import PlayerState
import ChPyNetSendPack
import NetPackCommon
-import FBCommon
import ChNPC
import ChNetSendPack
import TurnAttack
@@ -697,7 +694,7 @@
# NPC打NPC
elif atkObjType == IPY_GameWorld.gotNPC and defObjType == IPY_GameWorld.gotNPC:
- if PetControl.IsPet(attacker) or attacker.GetGameNPCObjType()== IPY_GameWorld.gnotSummon:
+ if attacker.GetGameNPCObjType()== IPY_GameWorld.gnotSummon:
##击杀次数判断
#if not CheckKillNPCByCnt(attacker, defender, False):
# ownerPlayer = GetAttackPlayer(attacker)[0]
@@ -882,12 +879,6 @@
# 召唤兽主人为玩家
if summonOwner and summonOwner.GetGameObjType() == IPY_GameWorld.gotPlayer:
return summonOwner, npcObjType
-
- # 判断宠物主人
- elif npcObjType == IPY_GameWorld.gnotPet:
- ownerPlayer = PetControl.GetPetOwner(atkObj)
- if ownerPlayer != None:
- return ownerPlayer, npcObjType
return None, None
@@ -1603,8 +1594,7 @@
elif defObjType == IPY_GameWorld.gotNPC:
if defObj.GetGameNPCObjType() == IPY_GameWorld.gnotPet:
- #设置宠物剩余血量
- PetControl.SetPetHP(defObj, remainHP)
+ pass
elif defObj.GetType() == ChConfig.ntHelpBattleRobot:
remainHP = min(dHP, max(GameObj.GetMaxHP(defObj)/2, remainHP)) # 助战机器人剩余血量不能少于一半
@@ -2191,7 +2181,7 @@
# @param None
# @return 攻击形式字符串
def GetAtkState(atkObj, defObj):
- isPet = PetControl.IsPet(atkObj)
+ isPet = False
if IsPVENPCObj(atkObj) or IsPVENPCObj(defObj):
return 'PVE_%s' if not isPet else 'PetVE_%s'
@@ -2279,7 +2269,7 @@
if atkObjType == IPY_GameWorld.gotNPC:
#宠物回血
if atkObj.GetGameNPCObjType() == IPY_GameWorld.gnotPet:
- PetControl.SetPetHP(atkObj, remainHP)
+ pass
#普通NPC回血
else:
GameObj.SetHP(atkObj, remainHP)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
index bab8a5e..1db9771 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
@@ -29,7 +29,6 @@
import BuffSkill
import FBLogic
import SkillShell
-import PetControl
import random
import OperControlManager
import DataRecordPack
@@ -1919,7 +1918,7 @@
#宠物找到主人进入战斗状态,光环技能不进入
if curNPC.GetGameNPCObjType() == IPY_GameWorld.gnotPet:
- curPlayer = PetControl.GetPetOwner(curNPC)
+ curPlayer = None
if curPlayer != None and GameObj.GetHP(curPlayer) > 0:
if curSkill == None or curSkill.GetSkillType() not in ChConfig.Def_NoBattleState_List:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 7100543..31fb91f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3153,8 +3153,8 @@
Def_PDictType_Default, # 默认
Def_PDictType_FlashSale, #限时抢购
Def_PDictType_LVAward, # 等级奖励领取信息记录
-Def_PDictType_WeekParty, #周狂欢
-Def_PDictType_FeastWeekParty, # 节日巡礼
+Def_PDictType_3,
+Def_PDictType_4,
Def_PDictType_LoginAward, # 登录奖励运营活动
Def_PDictType_FB, # 副本相关
Def_PDictType_FlashSaleMix, #限时抢购 合服
@@ -3423,39 +3423,12 @@
Def_PDict_FreeGoodsOpenTime = "FreeGoodsOpenTime" #极品白拿开启时间
Def_PDict_FreeGoodsBuyState = "FreeGoodsBuyState_%s" #极品白拿购买状态,参数编号 0-未买 time值-购买时间 1-已返还
-#跨服充值排行活动
-Def_PDict_CA_CTGBillboardID = "CA_CTGBillboardID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
-Def_PDict_CA_CTGBillboardTemplateID = "CA_CTGBillboardTemplateID" # 玩家身上活动模板ID
-Def_PDict_CA_CTGBillboardRMB = "CA_CTGBillboardRMB" # 活动累计充值RMB值
-Def_PDict_CA_CTGBillboardAward = "CA_CTGBillboardAward" # 活动充值目标领奖状态,按二进制位存储
-
-#跨服全民充值活动
-Def_PDict_CA_AllRechargeID = "CA_AllRechargeID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
-Def_PDict_CA_AllRechargeRMB = "CA_AllRechargeRMB" # 活动累计充值RMB值
-Def_PDict_CA_AllRechargeAward = "CA_AllRechargeAward" # 活动领奖状态,按二进制位存储
-
-#消费返利活动
-Def_PDict_CostRebateID = "CostRebateID_%s" # 玩家身上的消费返利活动ID,唯一标识,取活动开始日期time值,参数(活动编号)
-Def_PDict_CostRebateTemplateID = "CostRebateTemplateID_%s" # 玩家身上的消费返利模板ID,参数(活动编号)
-Def_PDict_CostRebateGold = "CostRebateGold_%s" # 消费返利总累计消费仙玉,参数(活动编号)
-Def_PDict_CostRebateAwardRecord = "CostRebateAwardRecord_%s" # 消费返利领奖记录,参数(活动编号)
-Def_PDict_CostRebateWorldLV = "CostRebateWorldLV_%s" #消费返利活动开启时世界等级,参数(活动编号)
-
#累计充值活动
Def_PDict_TotalRechargeID = "TotalRechargeID_%s" # 玩家身上的累计充值活动ID,唯一标识,取活动开始日期time值,参数:(活动编号)
Def_PDict_TotalRechargeTemplateID = "TotalRechargeTemplateID_%s" # 玩家身上的累计充值模板ID,参数:(活动编号)
Def_PDict_TotalRechargeGold = "TotalRechargeGold_%s" # 消费返利总累计充值X元,参数:(活动编号)
Def_PDict_TotalRechargeAwardRecord = "TotalRechargeAwardRecord_%s" # 累计充值领奖记录,参数:(活动编号)
Def_PDict_TotalRechargeWorldLV = "TotalRechargeWorldLV_%s" #累计充值活动开启时世界等级,参数:(活动编号)
-
-#累计充值返利仙玉活动
-Def_PDict_RechargeRebateGoldID = "RechargeRebateGoldID" # 玩家身上的累计充值活动ID,唯一标识,取活动开始日期time值
-Def_PDict_RechargeRebateGoldTemplateID = "RechargeRebateGoldTempID" # 玩家身上活动模板ID
-Def_PDict_RechargeRebateGoldRMB = "RechargeRebateGoldRMB" # 活动累计充值RMB值
-
-#充值返利活动
-Def_PDict_RechargePrizeID = "RechargePrizeID" # 玩家身上的重置返利活动ID,唯一标识,取活动开始日期time值
-Def_PDict_RechargePrizeCount = "RechargePrizeCount_%s" # 返利奖励次数,参数(充值表充值ID)
#成长必买活动
Def_PDict_GrowupBuyID = "GrowupBuyID" # 玩家身上的重置成长必买活动ID,唯一标识,取活动开始日期time值
@@ -3539,22 +3512,6 @@
Def_PDict_TravelSceneryLVInfo = "TravelSceneryLVInfo" # 景观等级信息,个位数-第1次升级成功与否,1-成功,2-失败;十位-第2次 ...
Def_PDict_TravelGridInfo = "TravelGridInfo_%s_%s" # 格子信息,参数(行, 列) 事件ID*100+是否双倍*10+开启状态
Def_PDict_TravelState = "TravelState" # 本盘游历记录,1-已领取景观奖励
-
-#周狂欢
-Def_PDict_WeekPartyActID = "WeekPartyActID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
-Def_PDict_WeekPartyID = "WeekPartyID" # 玩家身上的活动ID,配置ID,用于补发上次活动用
-Def_PDict_WeekPartyWorldLV = "WeekPartyWorldLV" # 玩家身上的活动世界等级
-Def_PDict_WeekPartyCurTimes = "WeekPartyCurTimes_%s_%s" #当前完成次数 参数(第X天,模板ID)
-Def_PDict_WeekPartyGotTimes = "WeekPartyGotTimes_%s_%s" #当前已领次数 参数(第X天,模板ID)
-Def_PDict_WeekPartyAwardRecord = "WeekPartyAwardRecord_%s" #积分领奖记录 参数(第X天)
-Def_PDict_WeekPartyPoint = "WeekPartyPoint_%s" #当天积分 参数(第X天)
-
-#节日巡礼周狂欢
-Def_PDict_FeastWeekPartyID = "FeastWeekPartyID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
-Def_PDict_FeastWeekPartyCurTimes = "FeastWPCurTimes_%s_%s" #当前完成次数 参数(第X天,模板ID)
-Def_PDict_FeastWeekPartyGotTimes = "FeastWPGotTimes_%s_%s" #当前已领次数 参数(第X天,模板ID)
-Def_PDict_FeastWeekPartyAwardRecord = "FeastWPAward_%s" #积分领奖记录 参数(第X天)
-Def_PDict_FeastWeekPartyPoint = "FeastWPPoint_%s" #当天积分 参数(第X天)
#登录奖励运营活动
Def_PDict_LoginAwardID = "LoginAwardID" # 玩家身上的BOSS复活活动ID,唯一标识,取活动开始日期time值
@@ -3693,10 +3650,6 @@
Def_PDict_HorseSkinEndTime = "HorseSkinEndTime_%s" # 坐骑外观到期时间戳,0为永久,参数(外观ID)
Def_PDict_HorseSkinStar = "HorseSkinStar_%s" # 坐骑外观星级,参数(外观ID)
-# 符印
-Def_PDict_Rune_HoleOpenState = "Rune_HoleOpenState" # 符印解锁状态
-Def_PDict_Rune_Data = "Rune_Data_%s" # 符印镶嵌数据, 参数(第几孔)
-
# 副本 Def_PDictType_FB
Def_PDict_LastEnterFBPropertyID = "LastEnterFBPropertyID_%s" # 上次进入副本的propertyID%s副本id
Def_PDict_LastEnterFBTick = "LastEnterFBTick_%s" # 上次进入副本的时间%s副本id
@@ -3713,46 +3666,6 @@
# 开服庆典
Def_PDict_OSACelebrationPoint = "OSACelebrationPoint" # 开服庆典累计积分
Def_PDict_OSACelebrationAward = "OSACelebrationAward" # 开服庆典累计积分阶段奖励领奖状态,按积分排序后的索引位记录是否已领取
-
-# 通天令
-Def_PDict_TTL_StartTime = "TTL_StartTime" # 本轮通天令开始时间戳
-Def_PDict_TTL_LVInfo = "TTL_LVInfo" # 当前通天令等级激活信息 = 等级*10+是否已购买通天令
-Def_PDict_TTL_LVPoint = "TTL_LVPoint" # 当前通天令等级已获得积分点
-Def_PDict_TTL_CommAwardRecord = "TTL_CommAwardRecord_%s" # 通天令等级常规领奖记录,参数(key编号),按等级索引位存储0-未领,1-已领
-Def_PDict_TTL_XianAwardRecord = "TTL_XianAwardRecord_%s" # 通天令等级仙品领奖记录,参数(key编号),按等级索引位存储0-未领,1-已领
-Def_PDict_TTL_TaskValue = "TTL_TaskValue_%s_%s" # 通天任务当前进度值,参数(任务类型,是否每日重置)
-Def_PDict_TTL_TaskAwardRecord = "TTL_TaskAwardRecord_%s" # 通天任务领奖记录,参数(key编号),按索引位存储0-未领,1-已领
-Def_PDict_TTL_DailyTaskPointToday = "TTL_DailyTaskPointToday" # 每日通天任务每日可获得积分点上限
-
-# 跨服竞技场
-Def_PDict_CrossPK_TotalScore = "CrossPK_TotalScore" # 当前总积分
-Def_PDict_CrossPK_DanLV = "CrossPK_DanLV" # 当前段位
-Def_PDict_CrossPK_PKCount = "CrossPK_PKCount" # 当前总PK次数
-Def_PDict_CrossPK_WinCount = "CrossPK_WinCount" # 当前胜利次数
-Def_PDict_CrossPK_CWinCount = "CrossPK_CWinCount" # 当前连胜次数
-Def_PDict_CrossPK_CLoseCount = "CrossPK_CLoseCount" # 当前连败次数
-Def_PDict_CrossPK_TodayPKCount = "CrossPK_TodayPKCount" # 今日已PK次数
-Def_PDict_CrossPK_TodayWinCount = "CrossPK_TodayWinCount" # 今日已胜利次数
-Def_PDict_CrossPK_TodayBuyCount = "CrossPK_TodayBuyCount" # 今日已购买PK次数
-Def_PDict_CrossPK_ItemAddCount = "CrossPK_ItemAddCount" # 今日道具增加PK次数
-Def_PDict_CrossPK_RefreshCount = "CrossPK_RefreshCount" # 今日已刷新次数
-Def_PDict_CrossPK_DayPKCountAwardState = "CrossPK_DayPKCountAwardState" # 每日匹配次数奖励记录,二进制位存储是否已领取,按匹配次数升序排序索引代表奖励位
-Def_PDict_CrossPK_DayWinCountAwardState = "CrossPK_DayWinCountAwardState" # 每日胜利次数奖励记录,二进制位存储是否已领取,按胜利次数升序排序索引代表奖励位
-Def_PDict_CrossPK_DanLVAwardState = "CrossPK_DanLVAwardState" # 段位达标奖励记录,二进制位存储是否已领取,按段位代表奖励位
-Def_PDict_CrossPK_SeasonAwardState = "CrossPK_SeasonAwardState" # 赛季结算奖励是否已领取,优先排名奖励,未上榜可领段位奖励
-Def_PDict_CrossPK_ZoneID = "CrossPK_ZoneID" # 玩家上次参与的赛区ID
-Def_PDict_CrossPK_SeasonID = "CrossPK_SeasonID" # 玩家上次参与的赛季ID
-Def_PDict_CrossPK_SeasonDanLV = "CrossPK_SeasonDanLV_%s" # 历史赛季段位,参数,赛季ID
-Def_PDict_CrossPK_SeasonScore = "CrossPK_SeasonScore_%s" # 历史赛季积分,参数,赛季ID
-Def_PDict_CrossPK_SeasonOrder = "CrossPK_SeasonOrder_%s" # 历史赛季名次,参数,赛季ID
-Def_PDict_CrossPK_SeasonAwardLV = "CrossPK_SeasonAwardLV_%s" # 历史赛季奖励等级(一般是段位等级,排行奖励的在最高段位等级基础上增加),参数,赛季ID
-
-# 跨服排位
-Def_PDict_Championship_WorshipCount = "Championship_WorshipCount" # 今日已膜拜次数
-
-# 跨服幸运云购
-Def_PDict_LuckyCloudBuy_RoundID = "LuckyCloudBuy_RoundID" # 本轮标识ID
-Def_PDict_LuckyCloudBuy_BuyCount = "LuckyCloudBuy_BuyCount" # 本轮已购买份数
#自动战斗设置记录
Def_PDict_AutoFightSetting = "AFSetting_%s_%s"
@@ -4422,7 +4335,6 @@
Def_Cost_BuyOrderInfo:"BuyOrderInfo",
Def_Cost_ActGodGift:"ActGodGift",
Def_Cost_CrossBattlefield:"CrossBattlefield",
-Def_Cost_TongTianLing:"TongTianLing",
Def_Cost_LianTi:"LianTi",
}
## -----------------------------------------------------
@@ -4883,13 +4795,13 @@
Def_RewardType_OpenFunc, # 功能开启奖励17
Def_RewardType_TotalRecharge, # 累计充值奖励18
Def_RewardType_IceLodeStar, # 冰晶矿脉星级奖励19
-Def_RewardType_WeekPartyAct, # 领取周狂欢活动奖励20
-Def_RewardType_WeekPartyPoint, # 领取周狂欢积分奖励21
+Def_RewardType_20,
+Def_RewardType_21,
Def_RewardType_ActLoginAwardAct, # 领取登录奖励活动奖励22
Def_RewardType_NewFairyCRecharge, # 新仙界盛典充值大礼23
Def_RewardType_NewFairyCParty, # 新仙界盛典全民来嗨24
-Def_RewardType_FeastWeekPartyAct, # 领取节日巡礼活动奖励25
-Def_RewardType_FeastWeekPartyPoint, # 领取节日巡礼积分奖励26
+Def_RewardType_25,
+Def_RewardType_26,
Def_RewardType_FairyAdventuresAward, #缥缈奇遇领取27
Def_RewardType_HistoryChargeAward, #历史累计充值领取28
Def_RewardType_DayFreeGoldGift, #每日免费直购礼包29
@@ -4969,43 +4881,6 @@
Def_PPAct_JSTreasure, #绝世寻宝 17
) = range(1, 17+1)
-#周狂欢活动定义(七天巡礼)
-WeekPartyActIDList = (
-Def_WPAct_RunTask, #仙盟任务 1
-Def_WPAct_XJMJ, #仙境秘境 2
-Def_WPAct_KirinHome, #麒麟之府 3
-Def_WPAct_QueenRelices, #娲皇遗迹 4
-Def_WPAct_IceLode, #冰晶矿脉 5
-Def_WPAct_Tower, #符印塔 6
-Def_WPAct_WorldBOSS, #世界boss 7
-Def_WPAct_BOSSHome, #boss之家 8
-Def_WPAct_FMT, #封魔坛 9
-Def_WPAct_GodArea, #古神禁地 10
-Def_WPAct_CrossPK, #跨服pk 11
-Def_WPAct_Recharge, #充值X仙玉 12
-Def_WPAct_GiftBag, #购买限时礼包 13
-Def_WPAct_14, #骑宠争夺 14
-Def_WPAct_SWRH, #守卫人皇 15
-Def_WPAct_ElderBattlefield, #上古战场 16
-Def_WPAct_ChaosDemon, #混乱妖域 17
-Def_WPAct_XMZZ, #仙魔之争 18
-Def_WPAct_FamilyWar, #仙魔联赛 19
-Def_WPAct_Login, #每日登录 20
-Def_WPAct_21, #激活某只坐骑 21
-Def_WPAct_Pet, #激活某只灵宠 22
-Def_WPAct_Dogz, #出战某只神兽 23
-Def_WPAct_Stone, #宝石总等级 24
-Def_WPAct_25, #神兵总等级 25
-Def_WPAct_Rune, #穿戴某品质符印 26
-Def_WPAct_Pray, #祈愿 27
-Def_WPAct_FamilyBoss, #仙盟Boss 28
-Def_WPAct_FairyDomain, #缥缈仙域 29
-Def_WPAct_Plus, #强化 30
-Def_WPAct_Star, #升星 31
-Def_WPAct_FamilyChuanGong, #传功 32
-Def_WPAct_Arena, #竞技场 33
-) = range(1, 33+1)
-
#登录奖励活动定义
LoginAwardActIDList = (
Def_LoginAct_Login, #每日登录1
@@ -5027,23 +4902,6 @@
Def_LoginAct_EquipPlus, #强化 17
Def_LoginAct_EquipWash, #洗炼 18
) = range(1, 18+1)
-
-#垃圾分类 - 垃圾产出任务
-GarbageTaskList = (
-Def_GarbageTask_Activity, # 获得活跃值 1
-Def_GarbageTask_ActivityPlace, # 活跃修炼 2
-Def_GarbageTask_HelpBattle, # 助战登记 3
-Def_GarbageTask_KillNPC, # 击杀小怪 4
-Def_GarbageTask_RefineStove, # 炼丹 5
-Def_GarbageTask_KillBoss, # 打宝 - 本服 6
-Def_GarbageTask_CrossPK, # 跨服PK 7
-Def_GarbageTask_CrossBoss, # 跨服Boss 8
-Def_GarbageTask_CrossCollect, # 跨服采集宝箱 9
-Def_GarbageTask_EquipPlus, # 强化 10
-Def_GarbageTask_EquipWash, # 洗炼 11
-Def_GarbageTask_UseGold, # 消费仙玉 12
-Def_GarbageTask_CTG, # 充值仙玉 13
-) = range(1, 1 + 13)
#任务活动 - 任务类型
ActTaskTypeList = (
@@ -5125,28 +4983,6 @@
PowerDownType_ResetTalent:'ResetTalent',
PowerDownType_GatherSoul:'GatherSoul',
}
-
-# 通天令任务类型定义
-TTLTaskTypeList = (
-TTLTaskType_Activity, # 获取日常活跃度x 1
-TTLTaskType_Plus, # 强化x次 2
-TTLTaskType_Star, # 升星x次 3
-TTLTaskType_Wash, # 洗练x次 4
-TTLTaskType_LoveFB, # 参与情缘副本x次 5
-TTLTaskType_LVUp, # 等级提升x级 6
-TTLTaskType_RealmUp, # 境界提升x阶 7
-TTLTaskType_WorldBoss, # 击杀世界boss x次 8
-TTLTaskType_Sign, # 签到x次 9
-TTLTaskType_Dice, # 天机骰子挑战x次 10
-TTLTaskType_CrossPK, # 跨服PK参与x次 11
-TTLTaskType_ChuanGong, # 仙盟传功x次 12
-TTLTaskType_SWRH, # 守卫人皇参与x次 13
-TTLTaskType_ElderBattlefield, # 上古战场参与x次 14
-TTLTaskType_HorsePetBoss, # 灵宠争夺参与x次 15
-TTLTaskType_FamilyBoss, # 仙盟boss参与x次 16
-TTLTaskType_FamilyPartyAnswerRight, # 仙盟答题答对x次 17
-TTLTaskType_CrossBoss, # 跨服boss击杀x次 18
-) = range(1, 1 + 18)
# 每日任务类型
DailyTaskList = (
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index ec4969b..143ce97 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -4929,54 +4929,6 @@
#------------------------------------------------------
-# A5 46 购买通天令 #tagCMBuyTongTianLing
-
-class tagCMBuyTongTianLing(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x46
- 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 = 0x46
- return
-
- def GetLength(self):
- return sizeof(tagCMBuyTongTianLing)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 46 购买通天令 //tagCMBuyTongTianLing:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCMBuyTongTianLing=tagCMBuyTongTianLing()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyTongTianLing.Cmd,m_NAtagCMBuyTongTianLing.SubCmd))] = m_NAtagCMBuyTongTianLing
-
-
-#------------------------------------------------------
#A5 3B 请求领取补偿#tagCMRequestCompensation
class tagCMRequestCompensation(Structure):
@@ -5031,90 +4983,6 @@
m_NAtagCMRequestCompensation=tagCMRequestCompensation()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestCompensation.Head.Cmd,m_NAtagCMRequestCompensation.Head.SubCmd))] = m_NAtagCMRequestCompensation
-
-
-#------------------------------------------------------
-# A5 78 符印合成 #tagCMRuneCompound
-
-class tagCMRuneCompound(Structure):
- Head = tagHead()
- Cnt = 0 #(BYTE Cnt)
- PackList = list() #(vector<BYTE> PackList)//所在位置 0-背包 1-符印孔
- IndexList = list() #(vector<BYTE> IndexList)//物品索引
- TagItemID = 0 #(DWORD TagItemID)//合成目标物品ID
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x78
- 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):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.PackList.append(value)
- for i in range(self.Cnt):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.IndexList.append(value)
- self.TagItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x78
- self.Cnt = 0
- self.PackList = list()
- self.IndexList = list()
- self.TagItemID = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1 * self.Cnt
- length += 1 * self.Cnt
- length += 4
-
- 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.WriteBYTE(data, self.PackList[i])
- for i in range(self.Cnt):
- data = CommFunc.WriteBYTE(data, self.IndexList[i])
- data = CommFunc.WriteDWORD(data, self.TagItemID)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Cnt:%d,
- PackList:%s,
- IndexList:%s,
- TagItemID:%d
- '''\
- %(
- self.Head.OutputString(),
- self.Cnt,
- "...",
- "...",
- self.TagItemID
- )
- return DumpString
-
-
-m_NAtagCMRuneCompound=tagCMRuneCompound()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRuneCompound.Head.Cmd,m_NAtagCMRuneCompound.Head.SubCmd))] = m_NAtagCMRuneCompound
#------------------------------------------------------
@@ -5955,58 +5823,6 @@
#------------------------------------------------------
-# A5 45 兑换通天令等级经验积分点 #tagCMExchangeTongTianLVPoint
-
-class tagCMExchangeTongTianLVPoint(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ExchangePoint", c_int), # 兑换点数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x45
- 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 = 0x45
- self.ExchangePoint = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMExchangeTongTianLVPoint)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 45 兑换通天令等级经验积分点 //tagCMExchangeTongTianLVPoint:
- Cmd:%s,
- SubCmd:%s,
- ExchangePoint:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ExchangePoint
- )
- return DumpString
-
-
-m_NAtagCMExchangeTongTianLVPoint=tagCMExchangeTongTianLVPoint()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExchangeTongTianLVPoint.Cmd,m_NAtagCMExchangeTongTianLVPoint.SubCmd))] = m_NAtagCMExchangeTongTianLVPoint
-
-
-#------------------------------------------------------
# A5 32 法器升级 #tagCMFaQiLVUp
class tagCMFaQiLVUp(Structure):
@@ -6116,114 +5932,6 @@
m_NAtagCMGetInvestReward=tagCMGetInvestReward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetInvestReward.Cmd,m_NAtagCMGetInvestReward.SubCmd))] = m_NAtagCMGetInvestReward
-
-
-#------------------------------------------------------
-# A5 44 通天令领取等级奖励 #tagCMGetTongTianLVAward
-
-class tagCMGetTongTianLVAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("TTLV", c_ubyte), # 领取对应等级奖励,发255为一键领取所有等级奖励,包含仙品奖励
- ("IsXian", c_ubyte), # 是否领取仙品奖励,仅指定等级奖励有效
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x44
- 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 = 0x44
- self.TTLV = 0
- self.IsXian = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetTongTianLVAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 44 通天令领取等级奖励 //tagCMGetTongTianLVAward:
- Cmd:%s,
- SubCmd:%s,
- TTLV:%d,
- IsXian:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.TTLV,
- self.IsXian
- )
- return DumpString
-
-
-m_NAtagCMGetTongTianLVAward=tagCMGetTongTianLVAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTongTianLVAward.Cmd,m_NAtagCMGetTongTianLVAward.SubCmd))] = m_NAtagCMGetTongTianLVAward
-
-
-#------------------------------------------------------
-# A5 43 通天令领取任务奖励 #tagCMGetTongTianTaskAward
-
-class tagCMGetTongTianTaskAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("TaskID", c_ubyte), # 任务ID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x43
- 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 = 0x43
- self.TaskID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGetTongTianTaskAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 43 通天令领取任务奖励 //tagCMGetTongTianTaskAward:
- Cmd:%s,
- SubCmd:%s,
- TaskID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.TaskID
- )
- return DumpString
-
-
-m_NAtagCMGetTongTianTaskAward=tagCMGetTongTianTaskAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTongTianTaskAward.Cmd,m_NAtagCMGetTongTianTaskAward.SubCmd))] = m_NAtagCMGetTongTianTaskAward
#------------------------------------------------------
@@ -6737,227 +6445,6 @@
#------------------------------------------------------
-# A5 66 符印分解 #tagCMRuneDecompose
-
-class tagCMRuneDecompose(Structure):
- Head = tagHead()
- IsAll = 0 #(BYTE IsAll)// 是否全部分解,优先级最高,锁定除外
- QualityCnt = 0 #(BYTE QualityCnt)// 按全部分解品质数
- QualityList = list() #(vector<BYTE> QualityList)// 全部分解的品质列表,发送的品质会全部分解,锁定除外
- Count = 0 #(BYTE Count)// 指定批量分解数,最大不超过50个
- PlaceIndexList = list() #(vector<WORD> PlaceIndexList)// 批量分解位置索引列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x66
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.QualityCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.QualityCnt):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.QualityList.append(value)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
- self.PlaceIndexList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x66
- self.IsAll = 0
- self.QualityCnt = 0
- self.QualityList = list()
- self.Count = 0
- self.PlaceIndexList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 1 * self.QualityCnt
- length += 1
- length += 2 * self.Count
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.IsAll)
- data = CommFunc.WriteBYTE(data, self.QualityCnt)
- for i in range(self.QualityCnt):
- data = CommFunc.WriteBYTE(data, self.QualityList[i])
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteWORD(data, self.PlaceIndexList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- IsAll:%d,
- QualityCnt:%d,
- QualityList:%s,
- Count:%d,
- PlaceIndexList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.IsAll,
- self.QualityCnt,
- "...",
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagCMRuneDecompose=tagCMRuneDecompose()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRuneDecompose.Head.Cmd,m_NAtagCMRuneDecompose.Head.SubCmd))] = m_NAtagCMRuneDecompose
-
-
-#------------------------------------------------------
-# A5 67 符印锁定状态变更 #tagCMRuneLock
-
-class tagCMRuneLock(Structure):
- Head = tagHead()
- LockState = 0 #(BYTE LockState)// 锁定状态, 0-锁定,1-解锁
- Count = 0 #(BYTE Count)// 批量操作数,最大不超过50个
- PlaceIndexList = list() #(vector<WORD> PlaceIndexList)// 批量操作位置索引列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x67
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.LockState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
- self.PlaceIndexList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x67
- self.LockState = 0
- self.Count = 0
- self.PlaceIndexList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 2 * self.Count
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.LockState)
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteWORD(data, self.PlaceIndexList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- LockState:%d,
- Count:%d,
- PlaceIndexList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.LockState,
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagCMRuneLock=tagCMRuneLock()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRuneLock.Head.Cmd,m_NAtagCMRuneLock.Head.SubCmd))] = m_NAtagCMRuneLock
-
-
-#------------------------------------------------------
-# A5 65 符印升级 #tagCMRuneUp
-
-class tagCMRuneUp(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PlaceType", c_ubyte), # 位置类型;0-符印背包,1-符印孔
- ("PlaceIndex", c_ushort), # 位置索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x65
- 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 = 0x65
- self.PlaceType = 0
- self.PlaceIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMRuneUp)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 65 符印升级 //tagCMRuneUp:
- Cmd:%s,
- SubCmd:%s,
- PlaceType:%d,
- PlaceIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PlaceType,
- self.PlaceIndex
- )
- return DumpString
-
-
-m_NAtagCMRuneUp=tagCMRuneUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRuneUp.Cmd,m_NAtagCMRuneUp.SubCmd))] = m_NAtagCMRuneUp
-
-
-#------------------------------------------------------
# A5 16 选择技能五行专精 #tagCMSelectSkillElement
class tagCMSelectSkillElement(Structure):
@@ -7150,58 +6637,6 @@
m_NAtagCSTreasureWishSelect=tagCSTreasureWishSelect()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSTreasureWishSelect.Head.Cmd,m_NAtagCSTreasureWishSelect.Head.SubCmd))] = m_NAtagCSTreasureWishSelect
-
-
-#------------------------------------------------------
-# A5 13 解锁符印孔 #tagCMUnlockRuneHole
-
-class tagCMUnlockRuneHole(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("HoleIndex", c_ubyte), # 孔索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- 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 = 0xA5
- self.SubCmd = 0x13
- self.HoleIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMUnlockRuneHole)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 13 解锁符印孔 //tagCMUnlockRuneHole:
- Cmd:%s,
- SubCmd:%s,
- HoleIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.HoleIndex
- )
- return DumpString
-
-
-m_NAtagCMUnlockRuneHole=tagCMUnlockRuneHole()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnlockRuneHole.Cmd,m_NAtagCMUnlockRuneHole.SubCmd))] = m_NAtagCMUnlockRuneHole
#------------------------------------------------------
@@ -17163,106 +16598,6 @@
#------------------------------------------------------
-# C0 06 查询幸运云购开奖记录 #tagCGQueryLuckyCloudBuyLotteryRec
-
-class tagCGQueryLuckyCloudBuyLotteryRec(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ZoneID", c_ubyte), #查询分区ID
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xC0
- 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 = 0xC0
- self.SubCmd = 0x06
- self.ZoneID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCGQueryLuckyCloudBuyLotteryRec)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// C0 06 查询幸运云购开奖记录 //tagCGQueryLuckyCloudBuyLotteryRec:
- Cmd:%s,
- SubCmd:%s,
- ZoneID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ZoneID
- )
- return DumpString
-
-
-m_NAtagCGQueryLuckyCloudBuyLotteryRec=tagCGQueryLuckyCloudBuyLotteryRec()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryLuckyCloudBuyLotteryRec.Cmd,m_NAtagCGQueryLuckyCloudBuyLotteryRec.SubCmd))] = m_NAtagCGQueryLuckyCloudBuyLotteryRec
-
-
-#------------------------------------------------------
-# C0 05 查询幸运云购购买号码记录 #tagCGQueryLuckyCloudBuyNumRec
-
-class tagCGQueryLuckyCloudBuyNumRec(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xC0
- self.SubCmd = 0x05
- 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 = 0xC0
- self.SubCmd = 0x05
- return
-
- def GetLength(self):
- return sizeof(tagCGQueryLuckyCloudBuyNumRec)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// C0 05 查询幸运云购购买号码记录 //tagCGQueryLuckyCloudBuyNumRec:
- Cmd:%s,
- SubCmd:%s
- '''\
- %(
- self.Cmd,
- self.SubCmd
- )
- return DumpString
-
-
-m_NAtagCGQueryLuckyCloudBuyNumRec=tagCGQueryLuckyCloudBuyNumRec()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryLuckyCloudBuyNumRec.Cmd,m_NAtagCGQueryLuckyCloudBuyNumRec.SubCmd))] = m_NAtagCGQueryLuckyCloudBuyNumRec
-
-
-#------------------------------------------------------
# C0 04 查看跨服排行榜 #tagCGViewCrossBillboard
class tagCGViewCrossBillboard(Structure):
@@ -18310,56 +17645,4 @@
m_NAtagCMFamilyGCZSQ=tagCMFamilyGCZSQ()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZSQ.Cmd,m_NAtagCMFamilyGCZSQ.SubCmd))] = m_NAtagCMFamilyGCZSQ
-
-
-#------------------------------------------------------
-# C1 10 幸运云购购买 #tagCMLuckyCloudBuy
-
-class tagCMLuckyCloudBuy(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("BuyCount", c_ushort), # 购买份数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xC1
- 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 = 0xC1
- self.SubCmd = 0x10
- self.BuyCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMLuckyCloudBuy)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// C1 10 幸运云购购买 //tagCMLuckyCloudBuy:
- Cmd:%s,
- SubCmd:%s,
- BuyCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.BuyCount
- )
- return DumpString
-
-
-m_NAtagCMLuckyCloudBuy=tagCMLuckyCloudBuy()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLuckyCloudBuy.Cmd,m_NAtagCMLuckyCloudBuy.SubCmd))] = m_NAtagCMLuckyCloudBuy
\ No newline at end of file
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyGCZSQ.Cmd,m_NAtagCMFamilyGCZSQ.SubCmd))] = m_NAtagCMFamilyGCZSQ
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c146402..1068d12 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -7419,80 +7419,6 @@
#------------------------------------------------------
-# A3 1F 玩家符印信息 #tagMCRuneInfo
-
-class tagMCRuneInfo(Structure):
- Head = tagHead()
- RuneHoleOpenState = 0 #(DWORD RuneHoleOpenState)//符印孔状态, 按索引表示激活状态
- Count = 0 #(BYTE Count)// 符印孔信息数
- RuneDataList = list() #(vector<DWORD> RuneDataList)// 符印孔数据信息, 数据与背包数据相同
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x1F
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.RuneHoleOpenState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.RuneDataList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x1F
- self.RuneHoleOpenState = 0
- self.Count = 0
- self.RuneDataList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 1
- length += 4 * self.Count
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.RuneHoleOpenState)
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteDWORD(data, self.RuneDataList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- RuneHoleOpenState:%d,
- Count:%d,
- RuneDataList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.RuneHoleOpenState,
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCRuneInfo=tagMCRuneInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRuneInfo.Head.Cmd,m_NAtagMCRuneInfo.Head.SubCmd))] = m_NAtagMCRuneInfo
-
-
-#------------------------------------------------------
# A3 44 当日累计充值多选一礼包信息 #tagMCSingleGoldGift
class tagMCSingleGoldGift(Structure):
@@ -8388,290 +8314,6 @@
m_NAtagMCSyncRealmInfo=tagMCSyncRealmInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Head.Cmd,m_NAtagMCSyncRealmInfo.Head.SubCmd))] = m_NAtagMCSyncRealmInfo
-
-
-#------------------------------------------------------
-# A3 56 通天令信息 #tagMCTongTianLingInfo
-
-class tagMCTongTianLingInfo(Structure):
- Head = tagHead()
- TTLBuyState = 0 #(BYTE TTLBuyState)//通天令是否已购买
- TTLLV = 0 #(BYTE TTLLV)//通天令等级,从0开始
- CurPoint = 0 #(DWORD CurPoint)//通天令当前等级经验积分点
- AwardStateCount = 0 #(BYTE AwardStateCount)//等级领奖记录值数,每个值存31个记录 0-30, 31-61, ...
- CommAwardStateList = list() #(vector<DWORD> CommAwardStateList)//常规奖励领奖记录,按等级二进制位存储是否领奖
- XianAwardStateList = list() #(vector<DWORD> XianAwardStateList)//仙品奖励领奖记录,按等级二进制位存储是否领奖
- StartTime = 0 #(DWORD StartTime)//通天令本轮开始时间戳,秒
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x56
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.TTLBuyState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TTLLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardStateCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.CommAwardStateList.append(value)
- for i in range(self.AwardStateCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.XianAwardStateList.append(value)
- self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x56
- self.TTLBuyState = 0
- self.TTLLV = 0
- self.CurPoint = 0
- self.AwardStateCount = 0
- self.CommAwardStateList = list()
- self.XianAwardStateList = list()
- self.StartTime = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 4
- length += 1
- length += 4 * self.AwardStateCount
- length += 4 * self.AwardStateCount
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.TTLBuyState)
- data = CommFunc.WriteBYTE(data, self.TTLLV)
- data = CommFunc.WriteDWORD(data, self.CurPoint)
- data = CommFunc.WriteBYTE(data, self.AwardStateCount)
- for i in range(self.AwardStateCount):
- data = CommFunc.WriteDWORD(data, self.CommAwardStateList[i])
- for i in range(self.AwardStateCount):
- data = CommFunc.WriteDWORD(data, self.XianAwardStateList[i])
- data = CommFunc.WriteDWORD(data, self.StartTime)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- TTLBuyState:%d,
- TTLLV:%d,
- CurPoint:%d,
- AwardStateCount:%d,
- CommAwardStateList:%s,
- XianAwardStateList:%s,
- StartTime:%d
- '''\
- %(
- self.Head.OutputString(),
- self.TTLBuyState,
- self.TTLLV,
- self.CurPoint,
- self.AwardStateCount,
- "...",
- "...",
- self.StartTime
- )
- return DumpString
-
-
-m_NAtagMCTongTianLingInfo=tagMCTongTianLingInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingInfo.Head.Cmd,m_NAtagMCTongTianLingInfo.Head.SubCmd))] = m_NAtagMCTongTianLingInfo
-
-
-#------------------------------------------------------
-# A3 58 通天令任务奖励信息 #tagMCTongTianLingTaskAwardInfo
-
-class tagMCTongTianLingTaskAwardInfo(Structure):
- Head = tagHead()
- AwardStateCount = 0 #(BYTE AwardStateCount)
- TaskAwardStateList = list() #(vector<DWORD> TaskAwardStateList)//任务领奖记录值个数,按任务ID二进制位存储是否已领取,每个值存31个记录 0-30, 31-61, ...
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x58
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardStateCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.TaskAwardStateList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x58
- self.AwardStateCount = 0
- self.TaskAwardStateList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 4 * self.AwardStateCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.AwardStateCount)
- for i in range(self.AwardStateCount):
- data = CommFunc.WriteDWORD(data, self.TaskAwardStateList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- AwardStateCount:%d,
- TaskAwardStateList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.AwardStateCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCTongTianLingTaskAwardInfo=tagMCTongTianLingTaskAwardInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskAwardInfo.Head.Cmd,m_NAtagMCTongTianLingTaskAwardInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskAwardInfo
-
-
-#------------------------------------------------------
-# A3 57 通天令任务进度信息 #tagMCTongTianLingTaskValueInfo
-
-class tagMCTongTianLingTaskValue(Structure):
- _pack_ = 1
- _fields_ = [
- ("TaskType", c_ubyte), #成就类型
- ("IsDaily", c_ubyte), #是否每日任务
- ("TaskValue", 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.TaskType = 0
- self.IsDaily = 0
- self.TaskValue = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCTongTianLingTaskValue)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 57 通天令任务进度信息 //tagMCTongTianLingTaskValueInfo:
- TaskType:%d,
- IsDaily:%d,
- TaskValue:%d
- '''\
- %(
- self.TaskType,
- self.IsDaily,
- self.TaskValue
- )
- return DumpString
-
-
-class tagMCTongTianLingTaskValueInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//信息个数
- TaskValueList = list() #(vector<tagMCTongTianLingTaskValue> TaskValueList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x57
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temTaskValueList = tagMCTongTianLingTaskValue()
- _pos = temTaskValueList.ReadData(_lpData, _pos)
- self.TaskValueList.append(temTaskValueList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x57
- self.Count = 0
- self.TaskValueList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.TaskValueList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.TaskValueList[i].GetLength(), self.TaskValueList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- TaskValueList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCTongTianLingTaskValueInfo=tagMCTongTianLingTaskValueInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskValueInfo.Head.Cmd,m_NAtagMCTongTianLingTaskValueInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskValueInfo
#------------------------------------------------------
@@ -21368,386 +21010,6 @@
#------------------------------------------------------
-# AA 27 充值返利活动信息 #tagMCActRechargePrizeInfo
-
-class tagMCActRechargePrize(Structure):
- _pack_ = 1
- _fields_ = [
- ("CTGID", c_ushort), # 对应充值表充值ID
- ("GoldPrize", c_int), #返利仙玉数
- ("PrizeCountLimit", 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.CTGID = 0
- self.GoldPrize = 0
- self.PrizeCountLimit = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCActRechargePrize)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 27 充值返利活动信息 //tagMCActRechargePrizeInfo:
- CTGID:%d,
- GoldPrize:%d,
- PrizeCountLimit:%d
- '''\
- %(
- self.CTGID,
- self.GoldPrize,
- self.PrizeCountLimit
- )
- return DumpString
-
-
-class tagMCActRechargePrizeDay(Structure):
- Prizes = 0 #(BYTE Prizes)// 返利档数
- PrizeInfo = list() #(vector<tagMCActRechargePrize> PrizeInfo)// 返利档信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.Prizes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Prizes):
- temPrizeInfo = tagMCActRechargePrize()
- _pos = temPrizeInfo.ReadData(_lpData, _pos)
- self.PrizeInfo.append(temPrizeInfo)
- return _pos
-
- def Clear(self):
- self.Prizes = 0
- self.PrizeInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- for i in range(self.Prizes):
- length += self.PrizeInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.Prizes)
- for i in range(self.Prizes):
- data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Prizes:%d,
- PrizeInfo:%s
- '''\
- %(
- self.Prizes,
- "..."
- )
- return DumpString
-
-
-class tagMCActRechargePrizeInfo(Structure):
- Head = tagHead()
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
- PrizeDays = 0 #(BYTE PrizeDays)
- PrizeDayInfo = list() #(vector<tagMCActRechargePrizeDay> PrizeDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x27
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PrizeDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.PrizeDays):
- temPrizeDayInfo = tagMCActRechargePrizeDay()
- _pos = temPrizeDayInfo.ReadData(_lpData, _pos)
- self.PrizeDayInfo.append(temPrizeDayInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x27
- self.StartDate = ""
- self.EndtDate = ""
- self.LimitLV = 0
- self.IsDayReset = 0
- self.PrizeDays = 0
- self.PrizeDayInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 10
- length += 10
- length += 2
- length += 1
- length += 1
- for i in range(self.PrizeDays):
- length += self.PrizeDayInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.IsDayReset)
- data = CommFunc.WriteBYTE(data, self.PrizeDays)
- for i in range(self.PrizeDays):
- data = CommFunc.WriteString(data, self.PrizeDayInfo[i].GetLength(), self.PrizeDayInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- StartDate:%s,
- EndtDate:%s,
- LimitLV:%d,
- IsDayReset:%d,
- PrizeDays:%d,
- PrizeDayInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.StartDate,
- self.EndtDate,
- self.LimitLV,
- self.IsDayReset,
- self.PrizeDays,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCActRechargePrizeInfo=tagMCActRechargePrizeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargePrizeInfo.Head.Cmd,m_NAtagMCActRechargePrizeInfo.Head.SubCmd))] = m_NAtagMCActRechargePrizeInfo
-
-
-#------------------------------------------------------
-# AA 29 累计充值返利仙玉活动信息 #tagMCActRechargeRebateGoldInfo
-
-class tagMCActRechargeRebate(Structure):
- _pack_ = 1
- _fields_ = [
- ("RMBMin", c_int), # 充值RMB最小值
- ("RMBMax", c_int), # 充值RMB最大值,0代表无上限
- ("RebateRate", c_ushort), # 返利仙玉比例百分比
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.RMBMin = 0
- self.RMBMax = 0
- self.RebateRate = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCActRechargeRebate)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 29 累计充值返利仙玉活动信息 //tagMCActRechargeRebateGoldInfo:
- RMBMin:%d,
- RMBMax:%d,
- RebateRate:%d
- '''\
- %(
- self.RMBMin,
- self.RMBMax,
- self.RebateRate
- )
- return DumpString
-
-
-class tagMCActRechargeRebateDay(Structure):
- Rebates = 0 #(BYTE Rebates)// 返利档数
- RebateInfo = list() #(vector<tagMCActRechargeRebate> RebateInfo)// 返利档信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.Rebates,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Rebates):
- temRebateInfo = tagMCActRechargeRebate()
- _pos = temRebateInfo.ReadData(_lpData, _pos)
- self.RebateInfo.append(temRebateInfo)
- return _pos
-
- def Clear(self):
- self.Rebates = 0
- self.RebateInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- for i in range(self.Rebates):
- length += self.RebateInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.Rebates)
- for i in range(self.Rebates):
- data = CommFunc.WriteString(data, self.RebateInfo[i].GetLength(), self.RebateInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Rebates:%d,
- RebateInfo:%s
- '''\
- %(
- self.Rebates,
- "..."
- )
- return DumpString
-
-
-class tagMCActRechargeRebateGoldInfo(Structure):
- Head = tagHead()
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
- RebateDays = 0 #(BYTE RebateDays)
- RebateDayInfo = list() #(vector<tagMCActRechargeRebateDay> RebateDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x29
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RebateDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.RebateDays):
- temRebateDayInfo = tagMCActRechargeRebateDay()
- _pos = temRebateDayInfo.ReadData(_lpData, _pos)
- self.RebateDayInfo.append(temRebateDayInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x29
- self.StartDate = ""
- self.EndtDate = ""
- self.LimitLV = 0
- self.IsDayReset = 0
- self.RebateDays = 0
- self.RebateDayInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 10
- length += 10
- length += 2
- length += 1
- length += 1
- for i in range(self.RebateDays):
- length += self.RebateDayInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.IsDayReset)
- data = CommFunc.WriteBYTE(data, self.RebateDays)
- for i in range(self.RebateDays):
- data = CommFunc.WriteString(data, self.RebateDayInfo[i].GetLength(), self.RebateDayInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- StartDate:%s,
- EndtDate:%s,
- LimitLV:%d,
- IsDayReset:%d,
- RebateDays:%d,
- RebateDayInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.StartDate,
- self.EndtDate,
- self.LimitLV,
- self.IsDayReset,
- self.RebateDays,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCActRechargeRebateGoldInfo=tagMCActRechargeRebateGoldInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargeRebateGoldInfo.Head.Cmd,m_NAtagMCActRechargeRebateGoldInfo.Head.SubCmd))] = m_NAtagMCActRechargeRebateGoldInfo
-
-
-#------------------------------------------------------
# AA 50 单笔累充活动信息 #tagMCActSingleRechargeInfo
class tagMCActSingleRechargeAwardItem(Structure):
@@ -23758,804 +23020,6 @@
#------------------------------------------------------
-# AA 32 跨服充值排行活动信息 #tagMCCACTGBillboardInfo
-
-class tagMCCACTGBillboardAwardItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemID", c_int),
- ("ItemCount", c_ushort),
- ("IsBind", c_ubyte), # 是否拍品
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ItemID = 0
- self.ItemCount = 0
- self.IsBind = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCCACTGBillboardAwardItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 32 跨服充值排行活动信息 //tagMCCACTGBillboardInfo:
- ItemID:%d,
- ItemCount:%d,
- IsBind:%d
- '''\
- %(
- self.ItemID,
- self.ItemCount,
- self.IsBind
- )
- return DumpString
-
-
-class tagMCCACTGBillboardDabiao(Structure):
- AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
- NeedRMB = 0 #(DWORD NeedRMB)// 所需充值RMB
- AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
- AwardItemList = list() #(vector<tagMCCACTGBillboardAwardItem> AwardItemList)// 奖励物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardItemCount):
- temAwardItemList = tagMCCACTGBillboardAwardItem()
- _pos = temAwardItemList.ReadData(_lpData, _pos)
- self.AwardItemList.append(temAwardItemList)
- return _pos
-
- def Clear(self):
- self.AwardIndex = 0
- self.NeedRMB = 0
- self.AwardItemCount = 0
- self.AwardItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 4
- length += 1
- for i in range(self.AwardItemCount):
- length += self.AwardItemList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.AwardIndex)
- data = CommFunc.WriteDWORD(data, self.NeedRMB)
- data = CommFunc.WriteBYTE(data, self.AwardItemCount)
- for i in range(self.AwardItemCount):
- data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- AwardIndex:%d,
- NeedRMB:%d,
- AwardItemCount:%d,
- AwardItemList:%s
- '''\
- %(
- self.AwardIndex,
- self.NeedRMB,
- self.AwardItemCount,
- "..."
- )
- return DumpString
-
-
-class tagMCCACTGBillboardOrder(Structure):
- OrderA = 0 #(BYTE OrderA)// 名次A
- OrderB = 0 #(BYTE OrderB)// 至名次B
- NeedRMB = 0 #(DWORD NeedRMB)// 所需充值RMB,未达标的该名次空,排名后面的玩家向下顺延
- AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
- AwardItemList = list() #(vector<tagMCCACTGBillboardAwardItem> AwardItemList)// 奖励物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.OrderA,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.OrderB,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardItemCount):
- temAwardItemList = tagMCCACTGBillboardAwardItem()
- _pos = temAwardItemList.ReadData(_lpData, _pos)
- self.AwardItemList.append(temAwardItemList)
- return _pos
-
- def Clear(self):
- self.OrderA = 0
- self.OrderB = 0
- self.NeedRMB = 0
- self.AwardItemCount = 0
- self.AwardItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 1
- length += 4
- length += 1
- for i in range(self.AwardItemCount):
- length += self.AwardItemList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.OrderA)
- data = CommFunc.WriteBYTE(data, self.OrderB)
- data = CommFunc.WriteDWORD(data, self.NeedRMB)
- data = CommFunc.WriteBYTE(data, self.AwardItemCount)
- for i in range(self.AwardItemCount):
- data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- OrderA:%d,
- OrderB:%d,
- NeedRMB:%d,
- AwardItemCount:%d,
- AwardItemList:%s
- '''\
- %(
- self.OrderA,
- self.OrderB,
- self.NeedRMB,
- self.AwardItemCount,
- "..."
- )
- return DumpString
-
-
-class tagMCCACTGBillboardTempInfo(Structure):
- TemplateID = 0 #(BYTE TemplateID)// 活动模板ID
- DabiaoAwardCount = 0 #(BYTE DabiaoAwardCount)// 达标奖励档数
- DabiaoAwardInfo = list() #(vector<tagMCCACTGBillboardDabiao> DabiaoAwardInfo)// 达标奖励信息
- OrderAwardCount = 0 #(BYTE OrderAwardCount)// 排行奖励档数
- OrderAwardInfo = list() #(vector<tagMCCACTGBillboardOrder> OrderAwardInfo)// 排行奖励信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.DabiaoAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.DabiaoAwardCount):
- temDabiaoAwardInfo = tagMCCACTGBillboardDabiao()
- _pos = temDabiaoAwardInfo.ReadData(_lpData, _pos)
- self.DabiaoAwardInfo.append(temDabiaoAwardInfo)
- self.OrderAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.OrderAwardCount):
- temOrderAwardInfo = tagMCCACTGBillboardOrder()
- _pos = temOrderAwardInfo.ReadData(_lpData, _pos)
- self.OrderAwardInfo.append(temOrderAwardInfo)
- return _pos
-
- def Clear(self):
- self.TemplateID = 0
- self.DabiaoAwardCount = 0
- self.DabiaoAwardInfo = list()
- self.OrderAwardCount = 0
- self.OrderAwardInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 1
- for i in range(self.DabiaoAwardCount):
- length += self.DabiaoAwardInfo[i].GetLength()
- length += 1
- for i in range(self.OrderAwardCount):
- length += self.OrderAwardInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.TemplateID)
- data = CommFunc.WriteBYTE(data, self.DabiaoAwardCount)
- for i in range(self.DabiaoAwardCount):
- data = CommFunc.WriteString(data, self.DabiaoAwardInfo[i].GetLength(), self.DabiaoAwardInfo[i].GetBuffer())
- data = CommFunc.WriteBYTE(data, self.OrderAwardCount)
- for i in range(self.OrderAwardCount):
- data = CommFunc.WriteString(data, self.OrderAwardInfo[i].GetLength(), self.OrderAwardInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- TemplateID:%d,
- DabiaoAwardCount:%d,
- DabiaoAwardInfo:%s,
- OrderAwardCount:%d,
- OrderAwardInfo:%s
- '''\
- %(
- self.TemplateID,
- self.DabiaoAwardCount,
- "...",
- self.OrderAwardCount,
- "..."
- )
- return DumpString
-
-
-class tagMCCACTGBillboardInfo(Structure):
- Head = tagHead()
- ServerInfoLen = 0 #(BYTE ServerInfoLen)
- ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
- GroupValue1 = 0 #(BYTE GroupValue1)// 活动榜单分组值1,用于查询对应榜单
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- TemplateID = 0 #(BYTE TemplateID)// 当前活动模板ID
- TemplateCount = 0 #(BYTE TemplateCount)
- TempInfo = list() #(vector<tagMCCACTGBillboardTempInfo> TempInfo)// 模板信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x32
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
- self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.TemplateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TemplateCount):
- temTempInfo = tagMCCACTGBillboardTempInfo()
- _pos = temTempInfo.ReadData(_lpData, _pos)
- self.TempInfo.append(temTempInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x32
- self.ServerInfoLen = 0
- self.ServerIDRangeInfo = ""
- self.GroupValue1 = 0
- self.StartDate = ""
- self.EndtDate = ""
- self.TemplateID = 0
- self.TemplateCount = 0
- self.TempInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += len(self.ServerIDRangeInfo)
- length += 1
- length += 10
- length += 10
- length += 1
- length += 1
- for i in range(self.TemplateCount):
- length += self.TempInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
- data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
- data = CommFunc.WriteBYTE(data, self.GroupValue1)
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteBYTE(data, self.TemplateID)
- data = CommFunc.WriteBYTE(data, self.TemplateCount)
- for i in range(self.TemplateCount):
- data = CommFunc.WriteString(data, self.TempInfo[i].GetLength(), self.TempInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ServerInfoLen:%d,
- ServerIDRangeInfo:%s,
- GroupValue1:%d,
- StartDate:%s,
- EndtDate:%s,
- TemplateID:%d,
- TemplateCount:%d,
- TempInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ServerInfoLen,
- self.ServerIDRangeInfo,
- self.GroupValue1,
- self.StartDate,
- self.EndtDate,
- self.TemplateID,
- self.TemplateCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCCACTGBillboardInfo=tagMCCACTGBillboardInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardInfo.Head.Cmd,m_NAtagMCCACTGBillboardInfo.Head.SubCmd))] = m_NAtagMCCACTGBillboardInfo
-
-
-#------------------------------------------------------
-# AA 33 跨服充值排行活动玩家信息 #tagMCCACTGBillboardPlayerInfo
-
-class tagMCCACTGBillboardPlayerInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("CTGRMBTotal", c_int), # 活动已累计充值RMB
- ("DabiaoAwardRecord", c_int), # 达标奖励记录,与达标奖励索引位或运算判断是否已领取
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- 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 = 0xAA
- self.SubCmd = 0x33
- self.CTGRMBTotal = 0
- self.DabiaoAwardRecord = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCCACTGBillboardPlayerInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 33 跨服充值排行活动玩家信息 //tagMCCACTGBillboardPlayerInfo:
- Cmd:%s,
- SubCmd:%s,
- CTGRMBTotal:%d,
- DabiaoAwardRecord:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.CTGRMBTotal,
- self.DabiaoAwardRecord
- )
- return DumpString
-
-
-m_NAtagMCCACTGBillboardPlayerInfo=tagMCCACTGBillboardPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardPlayerInfo.Cmd,m_NAtagMCCACTGBillboardPlayerInfo.SubCmd))] = m_NAtagMCCACTGBillboardPlayerInfo
-
-
-#------------------------------------------------------
-# AA 09 消费返利活动信息 #tagMCCostRebateInfo
-
-class tagMCCostRebateAwardItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemID", c_int),
- ("ItemCount", c_int),
- ("IsBind", c_ubyte),
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ItemID = 0
- self.ItemCount = 0
- self.IsBind = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCCostRebateAwardItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 09 消费返利活动信息 //tagMCCostRebateInfo:
- ItemID:%d,
- ItemCount:%d,
- IsBind:%d
- '''\
- %(
- self.ItemID,
- self.ItemCount,
- self.IsBind
- )
- return DumpString
-
-
-class tagMCCostRebateAward(Structure):
- AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
- NeedGold = 0 #(DWORD NeedGold)// 所需仙玉数
- AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
- AwardItem = list() #(vector<tagMCCostRebateAwardItem> AwardItem)// 奖励物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NeedGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardItemCount):
- temAwardItem = tagMCCostRebateAwardItem()
- _pos = temAwardItem.ReadData(_lpData, _pos)
- self.AwardItem.append(temAwardItem)
- return _pos
-
- def Clear(self):
- self.AwardIndex = 0
- self.NeedGold = 0
- self.AwardItemCount = 0
- self.AwardItem = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 4
- length += 1
- for i in range(self.AwardItemCount):
- length += self.AwardItem[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.AwardIndex)
- data = CommFunc.WriteDWORD(data, self.NeedGold)
- data = CommFunc.WriteBYTE(data, self.AwardItemCount)
- for i in range(self.AwardItemCount):
- data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- AwardIndex:%d,
- NeedGold:%d,
- AwardItemCount:%d,
- AwardItem:%s
- '''\
- %(
- self.AwardIndex,
- self.NeedGold,
- self.AwardItemCount,
- "..."
- )
- return DumpString
-
-
-class tagMCCostRebateAwardDay(Structure):
- AwardCount = 0 #(BYTE AwardCount)// 奖励档数
- AwardInfo = list() #(vector<tagMCCostRebateAward> AwardInfo)// 奖励档信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardCount):
- temAwardInfo = tagMCCostRebateAward()
- _pos = temAwardInfo.ReadData(_lpData, _pos)
- self.AwardInfo.append(temAwardInfo)
- return _pos
-
- def Clear(self):
- self.AwardCount = 0
- self.AwardInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- for i in range(self.AwardCount):
- length += self.AwardInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.AwardCount)
- for i in range(self.AwardCount):
- data = CommFunc.WriteString(data, self.AwardInfo[i].GetLength(), self.AwardInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- AwardCount:%d,
- AwardInfo:%s
- '''\
- %(
- self.AwardCount,
- "..."
- )
- return DumpString
-
-
-class tagMCCostRebateInfo(Structure):
- Head = tagHead()
- ActNum = 0 #(BYTE ActNum)//活动编号
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- AwardDays = 0 #(BYTE AwardDays)
- AwardDayInfo = list() #(vector<tagMCCostRebateAwardDay> AwardDayInfo)//每天对应返利信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x09
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.AwardDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardDays):
- temAwardDayInfo = tagMCCostRebateAwardDay()
- _pos = temAwardDayInfo.ReadData(_lpData, _pos)
- self.AwardDayInfo.append(temAwardDayInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x09
- self.ActNum = 0
- self.StartDate = ""
- self.EndtDate = ""
- self.IsDayReset = 0
- self.LimitLV = 0
- self.AwardDays = 0
- self.AwardDayInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 10
- length += 10
- length += 1
- length += 2
- length += 1
- for i in range(self.AwardDays):
- length += self.AwardDayInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ActNum)
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteBYTE(data, self.IsDayReset)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.AwardDays)
- for i in range(self.AwardDays):
- data = CommFunc.WriteString(data, self.AwardDayInfo[i].GetLength(), self.AwardDayInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ActNum:%d,
- StartDate:%s,
- EndtDate:%s,
- IsDayReset:%d,
- LimitLV:%d,
- AwardDays:%d,
- AwardDayInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ActNum,
- self.StartDate,
- self.EndtDate,
- self.IsDayReset,
- self.LimitLV,
- self.AwardDays,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCCostRebateInfo=tagMCCostRebateInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebateInfo.Head.Cmd,m_NAtagMCCostRebateInfo.Head.SubCmd))] = m_NAtagMCCostRebateInfo
-
-
-#------------------------------------------------------
-# AA 10 消费返利玩家活动信息 #tagMCCostRebatePlayerInfo
-
-class tagMCCostRebatePlayerInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ActNum", c_ubyte), #活动编号
- ("CostGoldTotal", c_int), #本次活动已累计消费仙玉数
- ("AwardRecord", c_int), #返利奖励领奖记录,按奖励索引二进制位存储是否已领取
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- 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 = 0xAA
- self.SubCmd = 0x10
- self.ActNum = 0
- self.CostGoldTotal = 0
- self.AwardRecord = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCCostRebatePlayerInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 10 消费返利玩家活动信息 //tagMCCostRebatePlayerInfo:
- Cmd:%s,
- SubCmd:%s,
- ActNum:%d,
- CostGoldTotal:%d,
- AwardRecord:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ActNum,
- self.CostGoldTotal,
- self.AwardRecord
- )
- return DumpString
-
-
-m_NAtagMCCostRebatePlayerInfo=tagMCCostRebatePlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRebatePlayerInfo.Cmd,m_NAtagMCCostRebatePlayerInfo.SubCmd))] = m_NAtagMCCostRebatePlayerInfo
-
-
-#------------------------------------------------------
-# AA 34 跨服全民充值活动玩家信息 #tagMCCrossActAllRechargePlayerInfo
-
-class tagMCCrossActAllRechargePlayerInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("CTGRMBTotal", c_int), # 活动已累计充值RMB
- ("AwardRecord", c_int), # 奖励记录,根据奖励索引位或运算判断是否已领取
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- 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 = 0xAA
- self.SubCmd = 0x34
- self.CTGRMBTotal = 0
- self.AwardRecord = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCCrossActAllRechargePlayerInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 34 跨服全民充值活动玩家信息 //tagMCCrossActAllRechargePlayerInfo:
- Cmd:%s,
- SubCmd:%s,
- CTGRMBTotal:%d,
- AwardRecord:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.CTGRMBTotal,
- self.AwardRecord
- )
- return DumpString
-
-
-m_NAtagMCCrossActAllRechargePlayerInfo=tagMCCrossActAllRechargePlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActAllRechargePlayerInfo.Cmd,m_NAtagMCCrossActAllRechargePlayerInfo.SubCmd))] = m_NAtagMCCrossActAllRechargePlayerInfo
-
-
-#------------------------------------------------------
# AA 90 炼器跨服活动信息 #tagMCCrossActLianqiInfo
class tagMCCrossActLianqiItem(Structure):
@@ -25678,518 +24142,6 @@
m_NAtagMCFeastLoginPlayerInfo=tagMCFeastLoginPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginPlayerInfo.Cmd,m_NAtagMCFeastLoginPlayerInfo.SubCmd))] = m_NAtagMCFeastLoginPlayerInfo
-
-
-#------------------------------------------------------
-# AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
-
-class tagMCFeastWeekPartyItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("NeedPoint", c_ushort), # 领奖需要积分
- ("ItemID", c_int), # 物品ID
- ("ItemCnt", c_ushort), # 物品数量
- ("IsBind", c_ubyte), # 是否绑定
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.NeedPoint = 0
- self.ItemID = 0
- self.ItemCnt = 0
- self.IsBind = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFeastWeekPartyItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 20 节日巡礼活动信息 //tagMCFeastWeekPartyInfo:
- NeedPoint:%d,
- ItemID:%d,
- ItemCnt:%d,
- IsBind:%d
- '''\
- %(
- self.NeedPoint,
- self.ItemID,
- self.ItemCnt,
- self.IsBind
- )
- return DumpString
-
-
-class tagMCFeastWeekPartyAction(Structure):
- TemplateID = 0 #(DWORD TemplateID)// 模板ID
- ActionType = 0 #(WORD ActionType)// 活动类别
- TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
- SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
- Point = 0 #(DWORD Point)// 单次领奖积分
- Count = 0 #(BYTE Count)// 物品数
- ItemInfo = list() #(vector<tagMCFeastWeekPartyItem> ItemInfo)// 物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temItemInfo = tagMCFeastWeekPartyItem()
- _pos = temItemInfo.ReadData(_lpData, _pos)
- self.ItemInfo.append(temItemInfo)
- return _pos
-
- def Clear(self):
- self.TemplateID = 0
- self.ActionType = 0
- self.TotalTimes = 0
- self.SingleTimes = 0
- self.Point = 0
- self.Count = 0
- self.ItemInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 2
- length += 4
- length += 4
- length += 4
- length += 1
- for i in range(self.Count):
- length += self.ItemInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.TemplateID)
- data = CommFunc.WriteWORD(data, self.ActionType)
- data = CommFunc.WriteDWORD(data, self.TotalTimes)
- data = CommFunc.WriteDWORD(data, self.SingleTimes)
- data = CommFunc.WriteDWORD(data, self.Point)
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- TemplateID:%d,
- ActionType:%d,
- TotalTimes:%d,
- SingleTimes:%d,
- Point:%d,
- Count:%d,
- ItemInfo:%s
- '''\
- %(
- self.TemplateID,
- self.ActionType,
- self.TotalTimes,
- self.SingleTimes,
- self.Point,
- self.Count,
- "..."
- )
- return DumpString
-
-
-class tagMCFeastWeekPartyDayInfo(Structure):
- ActCnt = 0 #(BYTE ActCnt)// 数量
- TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
- PCount = 0 #(BYTE PCount)// 物品数
- PItemInfo = list() #(vector<tagMCFeastWeekPartyItem> PItemInfo)// 物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ActCnt):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
- self.TemplateList.append(value)
- self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.PCount):
- temPItemInfo = tagMCFeastWeekPartyItem()
- _pos = temPItemInfo.ReadData(_lpData, _pos)
- self.PItemInfo.append(temPItemInfo)
- return _pos
-
- def Clear(self):
- self.ActCnt = 0
- self.TemplateList = list()
- self.PCount = 0
- self.PItemInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 2 * self.ActCnt
- length += 1
- for i in range(self.PCount):
- length += self.PItemInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.ActCnt)
- for i in range(self.ActCnt):
- data = CommFunc.WriteWORD(data, self.TemplateList[i])
- data = CommFunc.WriteBYTE(data, self.PCount)
- for i in range(self.PCount):
- data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- ActCnt:%d,
- TemplateList:%s,
- PCount:%d,
- PItemInfo:%s
- '''\
- %(
- self.ActCnt,
- "...",
- self.PCount,
- "..."
- )
- return DumpString
-
-
-class tagMCFeastWeekPartyInfo(Structure):
- Head = tagHead()
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
- IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
- ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- DayCnt = 0 #(BYTE DayCnt)// 天数
- DayInfoList = list() #(vector<tagMCFeastWeekPartyDayInfo> DayInfoList)// 每天模板
- TCount = 0 #(BYTE TCount)// 模板数
- ActionInfo = list() #(vector<tagMCFeastWeekPartyAction> ActionInfo)// 活动模板信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x20
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.DayCnt):
- temDayInfoList = tagMCFeastWeekPartyDayInfo()
- _pos = temDayInfoList.ReadData(_lpData, _pos)
- self.DayInfoList.append(temDayInfoList)
- self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TCount):
- temActionInfo = tagMCFeastWeekPartyAction()
- _pos = temActionInfo.ReadData(_lpData, _pos)
- self.ActionInfo.append(temActionInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x20
- self.StartDate = ""
- self.EndtDate = ""
- self.AdvanceMinutes = 0
- self.IsDayReset = 0
- self.ResetType = 0
- self.LimitLV = 0
- self.DayCnt = 0
- self.DayInfoList = list()
- self.TCount = 0
- self.ActionInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 10
- length += 10
- length += 2
- length += 1
- length += 1
- length += 2
- length += 1
- for i in range(self.DayCnt):
- length += self.DayInfoList[i].GetLength()
- length += 1
- for i in range(self.TCount):
- length += self.ActionInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
- data = CommFunc.WriteBYTE(data, self.IsDayReset)
- data = CommFunc.WriteBYTE(data, self.ResetType)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.DayCnt)
- for i in range(self.DayCnt):
- data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
- data = CommFunc.WriteBYTE(data, self.TCount)
- for i in range(self.TCount):
- data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- StartDate:%s,
- EndtDate:%s,
- AdvanceMinutes:%d,
- IsDayReset:%d,
- ResetType:%d,
- LimitLV:%d,
- DayCnt:%d,
- DayInfoList:%s,
- TCount:%d,
- ActionInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.StartDate,
- self.EndtDate,
- self.AdvanceMinutes,
- self.IsDayReset,
- self.ResetType,
- self.LimitLV,
- self.DayCnt,
- "...",
- self.TCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCFeastWeekPartyInfo=tagMCFeastWeekPartyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyInfo.Head.Cmd,m_NAtagMCFeastWeekPartyInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyInfo
-
-
-#------------------------------------------------------
-# AA 21 节日巡礼玩家活动信息 #tagMCFeastWeekPartyPlayerInfo
-
-class tagMCFeastWeekPartyTaskInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("TemplateID", c_ushort), # 模板ID
- ("CurTimes", c_int), #已完成次数
- ("GotTimes", 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.TemplateID = 0
- self.CurTimes = 0
- self.GotTimes = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFeastWeekPartyTaskInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 21 节日巡礼玩家活动信息 //tagMCFeastWeekPartyPlayerInfo:
- TemplateID:%d,
- CurTimes:%d,
- GotTimes:%d
- '''\
- %(
- self.TemplateID,
- self.CurTimes,
- self.GotTimes
- )
- return DumpString
-
-
-class tagMCFeastWeekPartyDayPlayerInfo(Structure):
- DayIndex = 0 #(DWORD DayIndex)//第X天
- Point = 0 #(DWORD Point)//积分
- AwardRecord = 0 #(DWORD AwardRecord)//积分领奖记录
- ACount = 0 #(DWORD ACount)//任务条目数
- TaskList = list() #(vector<tagMCFeastWeekPartyTaskInfo> TaskList)//活动完成次数信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- for i in range(self.ACount):
- temTaskList = tagMCFeastWeekPartyTaskInfo()
- _pos = temTaskList.ReadData(_lpData, _pos)
- self.TaskList.append(temTaskList)
- return _pos
-
- def Clear(self):
- self.DayIndex = 0
- self.Point = 0
- self.AwardRecord = 0
- self.ACount = 0
- self.TaskList = list()
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 4
- length += 4
- length += 4
- for i in range(self.ACount):
- length += self.TaskList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.DayIndex)
- data = CommFunc.WriteDWORD(data, self.Point)
- data = CommFunc.WriteDWORD(data, self.AwardRecord)
- data = CommFunc.WriteDWORD(data, self.ACount)
- for i in range(self.ACount):
- data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- DayIndex:%d,
- Point:%d,
- AwardRecord:%d,
- ACount:%d,
- TaskList:%s
- '''\
- %(
- self.DayIndex,
- self.Point,
- self.AwardRecord,
- self.ACount,
- "..."
- )
- return DumpString
-
-
-class tagMCFeastWeekPartyPlayerInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)
- DayInfoList = list() #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x21
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo()
- _pos = temDayInfoList.ReadData(_lpData, _pos)
- self.DayInfoList.append(temDayInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x21
- self.Count = 0
- self.DayInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.DayInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- DayInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCFeastWeekPartyPlayerInfo=tagMCFeastWeekPartyPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCFeastWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyPlayerInfo
#------------------------------------------------------
@@ -28016,166 +25968,6 @@
#------------------------------------------------------
-# AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
-
-class tagMCRechargePrizeInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("CTGID", c_ushort), # 对应充值表充值ID
- ("PrizeCount", 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.CTGID = 0
- self.PrizeCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCRechargePrizeInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 28 充值返利玩家活动信息 //tagMCRechargePrizePlayerInfo:
- CTGID:%d,
- PrizeCount:%d
- '''\
- %(
- self.CTGID,
- self.PrizeCount
- )
- return DumpString
-
-
-class tagMCRechargePrizePlayerInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)
- PlayerInfoList = list() #(vector<tagMCRechargePrizeInfo> PlayerInfoList)//玩家返利信息列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x28
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temPlayerInfoList = tagMCRechargePrizeInfo()
- _pos = temPlayerInfoList.ReadData(_lpData, _pos)
- self.PlayerInfoList.append(temPlayerInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x28
- self.Count = 0
- self.PlayerInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.PlayerInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.PlayerInfoList[i].GetLength(), self.PlayerInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- PlayerInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCRechargePrizePlayerInfo=tagMCRechargePrizePlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargePrizePlayerInfo.Head.Cmd,m_NAtagMCRechargePrizePlayerInfo.Head.SubCmd))] = m_NAtagMCRechargePrizePlayerInfo
-
-
-#------------------------------------------------------
-# AA 30 累计充值返利仙玉玩家活动信息 #tagMCRechargeRebateGoldPlayerInfo
-
-class tagMCRechargeRebateGoldPlayerInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("RechargeRMBTotal", c_int), # 活动已累计充值RMB
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xAA
- 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 = 0xAA
- self.SubCmd = 0x30
- self.RechargeRMBTotal = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCRechargeRebateGoldPlayerInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 30 累计充值返利仙玉玩家活动信息 //tagMCRechargeRebateGoldPlayerInfo:
- Cmd:%s,
- SubCmd:%s,
- RechargeRMBTotal:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.RechargeRMBTotal
- )
- return DumpString
-
-
-m_NAtagMCRechargeRebateGoldPlayerInfo=tagMCRechargeRebateGoldPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRebateGoldPlayerInfo.Cmd,m_NAtagMCRechargeRebateGoldPlayerInfo.SubCmd))] = m_NAtagMCRechargeRebateGoldPlayerInfo
-
-
-#------------------------------------------------------
# AA 11 限时特惠活动信息 #tagMCSpringSaleInfo
class tagMCSpringSaleItem(Structure):
@@ -28701,518 +26493,6 @@
#------------------------------------------------------
-# AA 0A 周狂欢活动信息 #tagMCWeekPartyInfo
-
-class tagMCWeekPartyItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("NeedPoint", c_ushort), # 领奖需要积分
- ("ItemID", c_int), # 物品ID
- ("ItemCnt", c_ushort), # 物品数量
- ("IsBind", c_ubyte), # 是否绑定
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.NeedPoint = 0
- self.ItemID = 0
- self.ItemCnt = 0
- self.IsBind = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCWeekPartyItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 0A 周狂欢活动信息 //tagMCWeekPartyInfo:
- NeedPoint:%d,
- ItemID:%d,
- ItemCnt:%d,
- IsBind:%d
- '''\
- %(
- self.NeedPoint,
- self.ItemID,
- self.ItemCnt,
- self.IsBind
- )
- return DumpString
-
-
-class tagMCWeekPartyAction(Structure):
- TemplateID = 0 #(DWORD TemplateID)// 模板ID
- ActionType = 0 #(WORD ActionType)// 活动类别
- TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
- SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
- Point = 0 #(DWORD Point)// 单次领奖积分
- Count = 0 #(BYTE Count)// 物品数
- ItemInfo = list() #(vector<tagMCWeekPartyItem> ItemInfo)// 物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temItemInfo = tagMCWeekPartyItem()
- _pos = temItemInfo.ReadData(_lpData, _pos)
- self.ItemInfo.append(temItemInfo)
- return _pos
-
- def Clear(self):
- self.TemplateID = 0
- self.ActionType = 0
- self.TotalTimes = 0
- self.SingleTimes = 0
- self.Point = 0
- self.Count = 0
- self.ItemInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 2
- length += 4
- length += 4
- length += 4
- length += 1
- for i in range(self.Count):
- length += self.ItemInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.TemplateID)
- data = CommFunc.WriteWORD(data, self.ActionType)
- data = CommFunc.WriteDWORD(data, self.TotalTimes)
- data = CommFunc.WriteDWORD(data, self.SingleTimes)
- data = CommFunc.WriteDWORD(data, self.Point)
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- TemplateID:%d,
- ActionType:%d,
- TotalTimes:%d,
- SingleTimes:%d,
- Point:%d,
- Count:%d,
- ItemInfo:%s
- '''\
- %(
- self.TemplateID,
- self.ActionType,
- self.TotalTimes,
- self.SingleTimes,
- self.Point,
- self.Count,
- "..."
- )
- return DumpString
-
-
-class tagMCWeekPartyDayInfo(Structure):
- ActCnt = 0 #(BYTE ActCnt)// 数量
- TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
- PCount = 0 #(BYTE PCount)// 物品数
- PItemInfo = list() #(vector<tagMCWeekPartyItem> PItemInfo)// 物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ActCnt):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
- self.TemplateList.append(value)
- self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.PCount):
- temPItemInfo = tagMCWeekPartyItem()
- _pos = temPItemInfo.ReadData(_lpData, _pos)
- self.PItemInfo.append(temPItemInfo)
- return _pos
-
- def Clear(self):
- self.ActCnt = 0
- self.TemplateList = list()
- self.PCount = 0
- self.PItemInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 2 * self.ActCnt
- length += 1
- for i in range(self.PCount):
- length += self.PItemInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.ActCnt)
- for i in range(self.ActCnt):
- data = CommFunc.WriteWORD(data, self.TemplateList[i])
- data = CommFunc.WriteBYTE(data, self.PCount)
- for i in range(self.PCount):
- data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- ActCnt:%d,
- TemplateList:%s,
- PCount:%d,
- PItemInfo:%s
- '''\
- %(
- self.ActCnt,
- "...",
- self.PCount,
- "..."
- )
- return DumpString
-
-
-class tagMCWeekPartyInfo(Structure):
- Head = tagHead()
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
- IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
- ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- DayCnt = 0 #(BYTE DayCnt)// 天数
- DayInfoList = list() #(vector<tagMCWeekPartyDayInfo> DayInfoList)// 每天模板
- TCount = 0 #(BYTE TCount)// 模板数
- ActionInfo = list() #(vector<tagMCWeekPartyAction> ActionInfo)// 活动模板信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x0A
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.DayCnt):
- temDayInfoList = tagMCWeekPartyDayInfo()
- _pos = temDayInfoList.ReadData(_lpData, _pos)
- self.DayInfoList.append(temDayInfoList)
- self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.TCount):
- temActionInfo = tagMCWeekPartyAction()
- _pos = temActionInfo.ReadData(_lpData, _pos)
- self.ActionInfo.append(temActionInfo)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x0A
- self.StartDate = ""
- self.EndtDate = ""
- self.AdvanceMinutes = 0
- self.IsDayReset = 0
- self.ResetType = 0
- self.LimitLV = 0
- self.DayCnt = 0
- self.DayInfoList = list()
- self.TCount = 0
- self.ActionInfo = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 10
- length += 10
- length += 2
- length += 1
- length += 1
- length += 2
- length += 1
- for i in range(self.DayCnt):
- length += self.DayInfoList[i].GetLength()
- length += 1
- for i in range(self.TCount):
- length += self.ActionInfo[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
- data = CommFunc.WriteBYTE(data, self.IsDayReset)
- data = CommFunc.WriteBYTE(data, self.ResetType)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.DayCnt)
- for i in range(self.DayCnt):
- data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
- data = CommFunc.WriteBYTE(data, self.TCount)
- for i in range(self.TCount):
- data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- StartDate:%s,
- EndtDate:%s,
- AdvanceMinutes:%d,
- IsDayReset:%d,
- ResetType:%d,
- LimitLV:%d,
- DayCnt:%d,
- DayInfoList:%s,
- TCount:%d,
- ActionInfo:%s
- '''\
- %(
- self.Head.OutputString(),
- self.StartDate,
- self.EndtDate,
- self.AdvanceMinutes,
- self.IsDayReset,
- self.ResetType,
- self.LimitLV,
- self.DayCnt,
- "...",
- self.TCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCWeekPartyInfo=tagMCWeekPartyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyInfo.Head.Cmd,m_NAtagMCWeekPartyInfo.Head.SubCmd))] = m_NAtagMCWeekPartyInfo
-
-
-#------------------------------------------------------
-# AA 0B 周狂欢玩家活动信息 #tagMCWeekPartyPlayerInfo
-
-class tagMCWeekPartyTaskInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("TemplateID", c_ushort), # 模板ID
- ("CurTimes", c_int), #已完成次数
- ("GotTimes", 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.TemplateID = 0
- self.CurTimes = 0
- self.GotTimes = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCWeekPartyTaskInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 0B 周狂欢玩家活动信息 //tagMCWeekPartyPlayerInfo:
- TemplateID:%d,
- CurTimes:%d,
- GotTimes:%d
- '''\
- %(
- self.TemplateID,
- self.CurTimes,
- self.GotTimes
- )
- return DumpString
-
-
-class tagMCWeekPartyDayPlayerInfo(Structure):
- DayIndex = 0 #(DWORD DayIndex)//第X天
- Point = 0 #(DWORD Point)//积分
- AwardRecord = 0 #(DWORD AwardRecord)//积分领奖记录
- ACount = 0 #(DWORD ACount)//任务条目数
- TaskList = list() #(vector<tagMCWeekPartyTaskInfo> TaskList)//活动完成次数信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- for i in range(self.ACount):
- temTaskList = tagMCWeekPartyTaskInfo()
- _pos = temTaskList.ReadData(_lpData, _pos)
- self.TaskList.append(temTaskList)
- return _pos
-
- def Clear(self):
- self.DayIndex = 0
- self.Point = 0
- self.AwardRecord = 0
- self.ACount = 0
- self.TaskList = list()
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 4
- length += 4
- length += 4
- for i in range(self.ACount):
- length += self.TaskList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.DayIndex)
- data = CommFunc.WriteDWORD(data, self.Point)
- data = CommFunc.WriteDWORD(data, self.AwardRecord)
- data = CommFunc.WriteDWORD(data, self.ACount)
- for i in range(self.ACount):
- data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- DayIndex:%d,
- Point:%d,
- AwardRecord:%d,
- ACount:%d,
- TaskList:%s
- '''\
- %(
- self.DayIndex,
- self.Point,
- self.AwardRecord,
- self.ACount,
- "..."
- )
- return DumpString
-
-
-class tagMCWeekPartyPlayerInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)
- DayInfoList = list() #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x0B
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temDayInfoList = tagMCWeekPartyDayPlayerInfo()
- _pos = temDayInfoList.ReadData(_lpData, _pos)
- self.DayInfoList.append(temDayInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x0B
- self.Count = 0
- self.DayInfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.DayInfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- DayInfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCWeekPartyPlayerInfo=tagMCWeekPartyPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCWeekPartyPlayerInfo
-
-
-#------------------------------------------------------
# AA 14 仙界盛典充值大礼 #tagMCXJSDRecharge
class tagMCXJSDRecharge(Structure):
@@ -29330,224 +26610,6 @@
m_NAtagSCOSACelebrationInfo=tagSCOSACelebrationInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCOSACelebrationInfo.Cmd,m_NAtagSCOSACelebrationInfo.SubCmd))] = m_NAtagSCOSACelebrationInfo
-
-
-#------------------------------------------------------
-# AC 13 跨服全民充值活动信息 #tagGCCrossActAllRechargeInfo
-
-class tagGCCrossActAllRechargeItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemID", c_int),
- ("ItemCount", c_ushort),
- ("IsBind", c_ubyte), # 是否拍品
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ItemID = 0
- self.ItemCount = 0
- self.IsBind = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCCrossActAllRechargeItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AC 13 跨服全民充值活动信息 //tagGCCrossActAllRechargeInfo:
- ItemID:%d,
- ItemCount:%d,
- IsBind:%d
- '''\
- %(
- self.ItemID,
- self.ItemCount,
- self.IsBind
- )
- return DumpString
-
-
-class tagGCCrossActAllRechargeAward(Structure):
- AwardIndex = 0 #(BYTE AwardIndex)// 奖励索引 0~31
- NeedRMB = 0 #(DWORD NeedRMB)// 所需全民充值RMB
- NeedPlayerCount = 0 #(WORD NeedPlayerCount)// 所需充值达到该档玩家数
- NowPlayerCount = 0 #(WORD NowPlayerCount)// 当前充值达到该档玩家数
- AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
- AwardItemList = list() #(vector<tagGCCrossActAllRechargeItem> AwardItemList)// 奖励物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.NeedPlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.NowPlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardItemCount):
- temAwardItemList = tagGCCrossActAllRechargeItem()
- _pos = temAwardItemList.ReadData(_lpData, _pos)
- self.AwardItemList.append(temAwardItemList)
- return _pos
-
- def Clear(self):
- self.AwardIndex = 0
- self.NeedRMB = 0
- self.NeedPlayerCount = 0
- self.NowPlayerCount = 0
- self.AwardItemCount = 0
- self.AwardItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 4
- length += 2
- length += 2
- length += 1
- for i in range(self.AwardItemCount):
- length += self.AwardItemList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.AwardIndex)
- data = CommFunc.WriteDWORD(data, self.NeedRMB)
- data = CommFunc.WriteWORD(data, self.NeedPlayerCount)
- data = CommFunc.WriteWORD(data, self.NowPlayerCount)
- data = CommFunc.WriteBYTE(data, self.AwardItemCount)
- for i in range(self.AwardItemCount):
- data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- AwardIndex:%d,
- NeedRMB:%d,
- NeedPlayerCount:%d,
- NowPlayerCount:%d,
- AwardItemCount:%d,
- AwardItemList:%s
- '''\
- %(
- self.AwardIndex,
- self.NeedRMB,
- self.NeedPlayerCount,
- self.NowPlayerCount,
- self.AwardItemCount,
- "..."
- )
- return DumpString
-
-
-class tagGCCrossActAllRechargeInfo(Structure):
- Head = tagHead()
- ServerInfoLen = 0 #(BYTE ServerInfoLen)
- ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- AwardCount = 0 #(BYTE AwardCount)
- AwardList = list() #(vector<tagGCCrossActAllRechargeAward> AwardList)// 奖励档次信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x13
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.AwardCount):
- temAwardList = tagGCCrossActAllRechargeAward()
- _pos = temAwardList.ReadData(_lpData, _pos)
- self.AwardList.append(temAwardList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xAC
- self.Head.SubCmd = 0x13
- self.ServerInfoLen = 0
- self.ServerIDRangeInfo = ""
- self.StartDate = ""
- self.EndtDate = ""
- self.AwardCount = 0
- self.AwardList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += len(self.ServerIDRangeInfo)
- length += 10
- length += 10
- length += 1
- for i in range(self.AwardCount):
- length += self.AwardList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
- data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteBYTE(data, self.AwardCount)
- for i in range(self.AwardCount):
- data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ServerInfoLen:%d,
- ServerIDRangeInfo:%s,
- StartDate:%s,
- EndtDate:%s,
- AwardCount:%d,
- AwardList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ServerInfoLen,
- self.ServerIDRangeInfo,
- self.StartDate,
- self.EndtDate,
- self.AwardCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCCrossActAllRechargeInfo=tagGCCrossActAllRechargeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossActAllRechargeInfo.Head.Cmd,m_NAtagGCCrossActAllRechargeInfo.Head.SubCmd))] = m_NAtagGCCrossActAllRechargeInfo
#------------------------------------------------------
@@ -45813,66 +42875,6 @@
#------------------------------------------------------
-# C0 11 跨服妖魔boss玩家伤害信息 #tagGCCrossYaomoBossPlayerHurtInfo
-
-class tagGCCrossYaomoBossPlayerHurtInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("HurtTotal", c_int), # 总伤害值,小于亿部分
- ("HurtTotalEx", c_int), # 总伤害值,整除亿部分
- ("AwardState", c_int), # 伤害目标值领奖状态,按奖励记录索引位运算判断是否已领取
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xC0
- 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 = 0xC0
- self.SubCmd = 0x11
- self.HurtTotal = 0
- self.HurtTotalEx = 0
- self.AwardState = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCCrossYaomoBossPlayerHurtInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// C0 11 跨服妖魔boss玩家伤害信息 //tagGCCrossYaomoBossPlayerHurtInfo:
- Cmd:%s,
- SubCmd:%s,
- HurtTotal:%d,
- HurtTotalEx:%d,
- AwardState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.HurtTotal,
- self.HurtTotalEx,
- self.AwardState
- )
- return DumpString
-
-
-m_NAtagGCCrossYaomoBossPlayerHurtInfo=tagGCCrossYaomoBossPlayerHurtInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossYaomoBossPlayerHurtInfo.Cmd,m_NAtagGCCrossYaomoBossPlayerHurtInfo.SubCmd))] = m_NAtagGCCrossYaomoBossPlayerHurtInfo
-
-
-#------------------------------------------------------
# C0 10 跨服所属分区信息 #tagGCCrossZoneInfo
class tagGCCrossZoneInfo(Structure):
@@ -47750,572 +44752,6 @@
#------------------------------------------------------
-# C0 14 幸运云购开奖记录 #tagGCLuckyCloudBuyLotteryRecInfo
-
-class tagGCLuckyCloudBuyLotteryRec(Structure):
- SuperItemID = 0 #(DWORD SuperItemID)// 大奖物品ID
- SuperItemCount = 0 #(BYTE SuperItemCount)// 大奖物品个数
- NameLen = 0 #(BYTE NameLen)
- PlayerName = "" #(String PlayerName)// 中奖玩家名
- LotteryNum = 0 #(WORD LotteryNum)// 开奖号码
- LotteryTime = 0 #(DWORD LotteryTime)// 开奖时间戳,秒
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.SuperItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.LotteryNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LotteryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.SuperItemID = 0
- self.SuperItemCount = 0
- self.NameLen = 0
- self.PlayerName = ""
- self.LotteryNum = 0
- self.LotteryTime = 0
- return
-
- def GetLength(self):
- length = 0
- length += 4
- length += 1
- length += 1
- length += len(self.PlayerName)
- length += 2
- length += 4
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteDWORD(data, self.SuperItemID)
- data = CommFunc.WriteBYTE(data, self.SuperItemCount)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
- data = CommFunc.WriteWORD(data, self.LotteryNum)
- data = CommFunc.WriteDWORD(data, self.LotteryTime)
- return data
-
- def OutputString(self):
- DumpString = '''
- SuperItemID:%d,
- SuperItemCount:%d,
- NameLen:%d,
- PlayerName:%s,
- LotteryNum:%d,
- LotteryTime:%d
- '''\
- %(
- self.SuperItemID,
- self.SuperItemCount,
- self.NameLen,
- self.PlayerName,
- self.LotteryNum,
- self.LotteryTime
- )
- return DumpString
-
-
-class tagGCLuckyCloudBuyLotteryRecInfo(Structure):
- Head = tagHead()
- ZoneCount = 0 #(BYTE ZoneCount)// 分区数
- ZoneIDList = list() #(vector<BYTE> ZoneIDList)// 所有分区ID列表
- ZoneID = 0 #(BYTE ZoneID)// 返回记录分区ID
- Count = 0 #(WORD Count)
- LotteryRecList = list() #(vector<tagGCLuckyCloudBuyLotteryRec> LotteryRecList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xC0
- self.Head.SubCmd = 0x14
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ZoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ZoneCount):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.ZoneIDList.append(value)
- self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.Count):
- temLotteryRecList = tagGCLuckyCloudBuyLotteryRec()
- _pos = temLotteryRecList.ReadData(_lpData, _pos)
- self.LotteryRecList.append(temLotteryRecList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xC0
- self.Head.SubCmd = 0x14
- self.ZoneCount = 0
- self.ZoneIDList = list()
- self.ZoneID = 0
- self.Count = 0
- self.LotteryRecList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1 * self.ZoneCount
- length += 1
- length += 2
- for i in range(self.Count):
- length += self.LotteryRecList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ZoneCount)
- for i in range(self.ZoneCount):
- data = CommFunc.WriteBYTE(data, self.ZoneIDList[i])
- data = CommFunc.WriteBYTE(data, self.ZoneID)
- data = CommFunc.WriteWORD(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.LotteryRecList[i].GetLength(), self.LotteryRecList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ZoneCount:%d,
- ZoneIDList:%s,
- ZoneID:%d,
- Count:%d,
- LotteryRecList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ZoneCount,
- "...",
- self.ZoneID,
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCLuckyCloudBuyLotteryRecInfo=tagGCLuckyCloudBuyLotteryRecInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyLotteryRecInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyLotteryRecInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyLotteryRecInfo
-
-
-#------------------------------------------------------
-# C0 13 幸运云购购买号码记录 #tagGCLuckyCloudBuyNumRecInfo
-
-class tagGCLuckyCloudBuyNumRec(Structure):
- NameLen = 0 #(BYTE NameLen)
- PlayerName = "" #(String PlayerName)
- BuyNum = 0 #(WORD BuyNum)
- 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.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.BuyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.NameLen = 0
- self.PlayerName = ""
- self.BuyNum = 0
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += len(self.PlayerName)
- length += 2
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
- data = CommFunc.WriteWORD(data, self.BuyNum)
- return data
-
- def OutputString(self):
- DumpString = '''
- NameLen:%d,
- PlayerName:%s,
- BuyNum:%d
- '''\
- %(
- self.NameLen,
- self.PlayerName,
- self.BuyNum
- )
- return DumpString
-
-
-class tagGCLuckyCloudBuyNumRecInfo(Structure):
- Head = tagHead()
- RemainCount = 0 #(WORD RemainCount)// 开奖剩余份数
- Count = 0 #(WORD Count)
- BuyNumRecList = list() #(vector<tagGCLuckyCloudBuyNumRec> BuyNumRecList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xC0
- self.Head.SubCmd = 0x13
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.RemainCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
- for i in range(self.Count):
- temBuyNumRecList = tagGCLuckyCloudBuyNumRec()
- _pos = temBuyNumRecList.ReadData(_lpData, _pos)
- self.BuyNumRecList.append(temBuyNumRecList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xC0
- self.Head.SubCmd = 0x13
- self.RemainCount = 0
- self.Count = 0
- self.BuyNumRecList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- length += 2
- for i in range(self.Count):
- length += self.BuyNumRecList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.RemainCount)
- data = CommFunc.WriteWORD(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.BuyNumRecList[i].GetLength(), self.BuyNumRecList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- RemainCount:%d,
- Count:%d,
- BuyNumRecList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.RemainCount,
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCLuckyCloudBuyNumRecInfo=tagGCLuckyCloudBuyNumRecInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyNumRecInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyNumRecInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyNumRecInfo
-
-
-#------------------------------------------------------
-# C0 12 幸运云购轮次信息 #tagGCLuckyCloudBuyRoundInfo
-
-class tagGCLuckyCloudBuyRoundItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemID", c_int),
- ("ItemCount", c_ushort),
- ("IsBind", c_ubyte), # 是否拍品
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ItemID = 0
- self.ItemCount = 0
- self.IsBind = 0
- return
-
- def GetLength(self):
- return sizeof(tagGCLuckyCloudBuyRoundItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// C0 12 幸运云购轮次信息 //tagGCLuckyCloudBuyRoundInfo:
- ItemID:%d,
- ItemCount:%d,
- IsBind:%d
- '''\
- %(
- self.ItemID,
- self.ItemCount,
- self.IsBind
- )
- return DumpString
-
-
-class tagGCLuckyCloudBuyRoundTime(Structure):
- StartTime = "" #(char StartTime[5])// 开始时间 H:M
- EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
- RoundMax = 0 #(BYTE RoundMax)// 本时段最大轮次
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
- self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
- self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.StartTime = ""
- self.EndtTime = ""
- self.RoundMax = 0
- return
-
- def GetLength(self):
- length = 0
- length += 5
- length += 5
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, 5, self.StartTime)
- data = CommFunc.WriteString(data, 5, self.EndtTime)
- data = CommFunc.WriteBYTE(data, self.RoundMax)
- return data
-
- def OutputString(self):
- DumpString = '''
- StartTime:%s,
- EndtTime:%s,
- RoundMax:%d
- '''\
- %(
- self.StartTime,
- self.EndtTime,
- self.RoundMax
- )
- return DumpString
-
-
-class tagGCLuckyCloudBuyRoundInfo(Structure):
- Head = tagHead()
- ZoneID = 0 #(BYTE ZoneID)// 所属分区ID
- StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
- EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- RoundTimeCount = 0 #(BYTE RoundTimeCount)
- RoundTimeList = list() #(vector<tagGCLuckyCloudBuyRoundTime> RoundTimeList)//轮次时间段
- RoundID = 0 #(DWORD RoundID)// 轮次唯一ID标识,当收到的轮次ID变更时,前端需清空购买号码记录缓存
- RoundNum = 0 #(BYTE RoundNum)// 当前时段第几轮
- SuperItemID = 0 #(DWORD SuperItemID)// 大奖物品ID
- SuperItemCount = 0 #(BYTE SuperItemCount)// 大奖物品个数
- SuperItemMoneyType = 0 #(BYTE SuperItemMoneyType)// 大奖价值货币类型
- SuperItemMoneyValue = 0 #(DWORD SuperItemMoneyValue)// 大奖价值
- LVLimit = 0 #(WORD LVLimit)//开启等级
- BaseItemCount = 0 #(BYTE BaseItemCount)// 每次购买固定奖励物品数
- BaseItemList = list() #(vector<tagGCLuckyCloudBuyRoundItem> BaseItemList)// 每次购买固定奖励物品信息
- RandItemCount = 0 #(BYTE RandItemCount)// 每次购买随机奖励物品数
- RandItemList = list() #(vector<tagGCLuckyCloudBuyRoundItem> RandItemList)// 每次购买随机奖励物品信息
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xC0
- self.Head.SubCmd = 0x12
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.RoundTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.RoundTimeCount):
- temRoundTimeList = tagGCLuckyCloudBuyRoundTime()
- _pos = temRoundTimeList.ReadData(_lpData, _pos)
- self.RoundTimeList.append(temRoundTimeList)
- self.RoundID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.RoundNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.SuperItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.SuperItemMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.SuperItemMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.LVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.BaseItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.BaseItemCount):
- temBaseItemList = tagGCLuckyCloudBuyRoundItem()
- _pos = temBaseItemList.ReadData(_lpData, _pos)
- self.BaseItemList.append(temBaseItemList)
- self.RandItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.RandItemCount):
- temRandItemList = tagGCLuckyCloudBuyRoundItem()
- _pos = temRandItemList.ReadData(_lpData, _pos)
- self.RandItemList.append(temRandItemList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xC0
- self.Head.SubCmd = 0x12
- self.ZoneID = 0
- self.StartDate = ""
- self.EndtDate = ""
- self.RoundTimeCount = 0
- self.RoundTimeList = list()
- self.RoundID = 0
- self.RoundNum = 0
- self.SuperItemID = 0
- self.SuperItemCount = 0
- self.SuperItemMoneyType = 0
- self.SuperItemMoneyValue = 0
- self.LVLimit = 0
- self.BaseItemCount = 0
- self.BaseItemList = list()
- self.RandItemCount = 0
- self.RandItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 10
- length += 10
- length += 1
- for i in range(self.RoundTimeCount):
- length += self.RoundTimeList[i].GetLength()
- length += 4
- length += 1
- length += 4
- length += 1
- length += 1
- length += 4
- length += 2
- length += 1
- for i in range(self.BaseItemCount):
- length += self.BaseItemList[i].GetLength()
- length += 1
- for i in range(self.RandItemCount):
- length += self.RandItemList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ZoneID)
- data = CommFunc.WriteString(data, 10, self.StartDate)
- data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteBYTE(data, self.RoundTimeCount)
- for i in range(self.RoundTimeCount):
- data = CommFunc.WriteString(data, self.RoundTimeList[i].GetLength(), self.RoundTimeList[i].GetBuffer())
- data = CommFunc.WriteDWORD(data, self.RoundID)
- data = CommFunc.WriteBYTE(data, self.RoundNum)
- data = CommFunc.WriteDWORD(data, self.SuperItemID)
- data = CommFunc.WriteBYTE(data, self.SuperItemCount)
- data = CommFunc.WriteBYTE(data, self.SuperItemMoneyType)
- data = CommFunc.WriteDWORD(data, self.SuperItemMoneyValue)
- data = CommFunc.WriteWORD(data, self.LVLimit)
- data = CommFunc.WriteBYTE(data, self.BaseItemCount)
- for i in range(self.BaseItemCount):
- data = CommFunc.WriteString(data, self.BaseItemList[i].GetLength(), self.BaseItemList[i].GetBuffer())
- data = CommFunc.WriteBYTE(data, self.RandItemCount)
- for i in range(self.RandItemCount):
- data = CommFunc.WriteString(data, self.RandItemList[i].GetLength(), self.RandItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ZoneID:%d,
- StartDate:%s,
- EndtDate:%s,
- RoundTimeCount:%d,
- RoundTimeList:%s,
- RoundID:%d,
- RoundNum:%d,
- SuperItemID:%d,
- SuperItemCount:%d,
- SuperItemMoneyType:%d,
- SuperItemMoneyValue:%d,
- LVLimit:%d,
- BaseItemCount:%d,
- BaseItemList:%s,
- RandItemCount:%d,
- RandItemList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ZoneID,
- self.StartDate,
- self.EndtDate,
- self.RoundTimeCount,
- "...",
- self.RoundID,
- self.RoundNum,
- self.SuperItemID,
- self.SuperItemCount,
- self.SuperItemMoneyType,
- self.SuperItemMoneyValue,
- self.LVLimit,
- self.BaseItemCount,
- "...",
- self.RandItemCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCLuckyCloudBuyRoundInfo=tagGCLuckyCloudBuyRoundInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCLuckyCloudBuyRoundInfo.Head.Cmd,m_NAtagGCLuckyCloudBuyRoundInfo.Head.SubCmd))] = m_NAtagGCLuckyCloudBuyRoundInfo
-
-
-#------------------------------------------------------
# C1 09 跨服排位玩家信息 #tagMCChampionshipPlayerInfo
class tagMCChampionshipPlayerInfo(Structure):
@@ -48868,58 +45304,6 @@
m_NAtagMCFamilyGCZSQInfo=tagMCFamilyGCZSQInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyGCZSQInfo.Head.Cmd,m_NAtagMCFamilyGCZSQInfo.Head.SubCmd))] = m_NAtagMCFamilyGCZSQInfo
-
-
-#------------------------------------------------------
-# C1 08 幸运云购玩家信息 #tagMCLuckyCloudBuyPlayerInfo
-
-class tagMCLuckyCloudBuyPlayerInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("BuyCount", c_ushort), # 本轮已购买份数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xC1
- 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 = 0xC1
- self.SubCmd = 0x08
- self.BuyCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCLuckyCloudBuyPlayerInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// C1 08 幸运云购玩家信息 //tagMCLuckyCloudBuyPlayerInfo:
- Cmd:%s,
- SubCmd:%s,
- BuyCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.BuyCount
- )
- return DumpString
-
-
-m_NAtagMCLuckyCloudBuyPlayerInfo=tagMCLuckyCloudBuyPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyCloudBuyPlayerInfo.Cmd,m_NAtagMCLuckyCloudBuyPlayerInfo.SubCmd))] = m_NAtagMCLuckyCloudBuyPlayerInfo
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
index 93d6805..2740e30 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
@@ -628,23 +628,6 @@
SendEventPack("FightPowerChangeInfo", dataDict, curPlayer)
return
-## 玩家周狂欢(七天巡礼)
-# @return
-def DR_WeekPartyPoint(curPlayer, dayIndex, point):
- dataDict = {'PlayerID':curPlayer.GetPlayerID(),
- 'AccID':curPlayer.GetAccID(), 'dayIndex':dayIndex, 'point':point}
-
- #发送封包
- SendEventPack("WeekPartyPoint", dataDict, curPlayer)
- return
-def DR_FeastWeekPartyPoint(curPlayer, dayIndex, point):
- ##节日巡礼
- dataDict = {'PlayerID':curPlayer.GetPlayerID(),
- 'AccID':curPlayer.GetAccID(), 'dayIndex':dayIndex, 'point':point}
- #发送封包
- SendEventPack("FeastWeekPartyPoint", dataDict, curPlayer)
- return
-
def DR_MailSend(playerID, GUID, addDict={}):
## 邮件发送流向
dataDict = {'PlayerID':playerID, 'GUID':GUID}
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
index 716838c..c243a52 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
@@ -77,8 +77,6 @@
import ItemControler
import ItemCommon
import ShareDefine
-import PlayerCoat
-import PlayerRune
import IpyGameDataPY
import NPCCommon
@@ -369,15 +367,6 @@
pack_DesBackPack = sendPack.GetDesBackPack()
pack_SrcIndex = sendPack.GetSrcIndex()
pack_DestIndex = sendPack.GetDestIndex()
-
- # 符印交换
- if PlayerRune.SwitchRune(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex):
- return
-
- #时装
- if PlayerCoat.SwitchCoat(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex):
- return
-
#FunctionNPCCommon.PackItemExchange(curPlayer, pack_SrcBackpack, pack_DesBackPack,
# pack_SrcIndex, pack_DestIndex, tick)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCShopBuyCheck.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCShopBuyCheck.py
index f0a0442..b722825 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCShopBuyCheck.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCShopBuyCheck.py
@@ -17,7 +17,6 @@
"""Version = 2014-10-23 16:00"""
import PlayerControl
-import PlayerRune
#import GameWorld
#import ChConfig
@@ -78,7 +77,7 @@
# @param limitValue: 限制值
# @return: 满足条件与否
def CheckByNPC_2_100(curPlayer, itemID, limitValue):
- return not PlayerRune.GetIsOpenByRuneID(curPlayer, itemID)
+ return False
## 判断返回
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActivePet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActivePet.py
deleted file mode 100644
index d93547b..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActivePet.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.ActivePet
-#
-# @todo:激活宠物
-# @author xdh
-# @date 2015-3-22
-# @version 1.0
-#
-# 详细描述: 激活宠物
-#
-#---------------------------------------------------------------------
-"""Version = 2015-03-22 23:00"""
-#---------------------------------------------------------------------
-
-
-import ShareDefine
-import GameWorld
-import OpenFunc
-import PlayerPet
-
-
-#---------------------------------------------------------------------
-#逻辑实现
-
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param msgList 参数列表
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
- if len(msgList) not in [1,2]:
- GameWorld.DebugAnswer(curPlayer, "ActivePet 第几只灵宠 阶级")
- return
-
- OpenFunc.DoGMOpenFunc(curPlayer, ShareDefine.GameFuncID_Pet)
- index = msgList[0]
- classlv = msgList[1] if len(msgList) == 2 else 1
- PlayerPet.DoPetActivate(curPlayer, index, classlv)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Boss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Boss.py
deleted file mode 100644
index 42a7959..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Boss.py
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package Boss
-# 复活地图中,已经死亡的普通NPC( 布怪器布的 )
-#
-# @author Mark
-# @date 2010-4-21
-# @version 1.2
-#
-# 修改时间 修改人 修改内容
-# @change: "2013-01-16 19:00" wdb 防范死亡的召唤兽被reborn
-# @change: "2014-10-29 23:30" hxp 增加可刷新标识点刷新的世界boss
-#------------------------------------------------------------------------------
-#"""Version = 2014-10-29 23:30"""
-#---------------------------------------------------------------------
-# 模块详细说明
-
-#导入
-import GameWorld
-import ChConfig
-import IPY_GameWorld
-import NPCCommon
-import ShareDefine
-import IpyGameDataPY
-import CrossRealmPlayer
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param msgList 参数列表 []
-# @return None
-# @remarks 函数详细说明.
-def OnExec( curPlayer, msgList ):
- # 刷新标识点刷新的boss重生
- mapID = GameWorld.GetMap().GetMapID()
-
- dataList = IpyGameDataPY.GetIpyGameDataByCondition('BOSSInfo', {"MapID":mapID}, returnList=True)
- if dataList:
- for ipyData in dataList:
- bossID = ipyData.GetNPCID()
- if not bossID:
- continue
-
- if mapID in ChConfig.Def_CrossZoneMapTableName:
- tableName = ChConfig.Def_CrossZoneMapTableName[mapID]
- realMapID = GameWorld.GetGameWorld().GetRealMapID()
- copyMapID = GameWorld.GetGameWorld().GetCopyMapID()
- zoneIpyData = IpyGameDataPY.GetIpyGameData(tableName, realMapID, mapID, copyMapID)
- if not zoneIpyData:
- continue
- zoneID = zoneIpyData.GetZoneID()
- key = ShareDefine.Def_Notify_WorldKey_GameWorldBossRebornCross % (zoneID, bossID)
- else:
- key = ShareDefine.Def_Notify_WorldKey_GameWorldBossReborn % bossID
- GameWorld.GetGameWorld().SetGameWorldDict(key, 1)
-
- bossKey = ChConfig.Map_NPC_WorldBossLastReBornTick % bossID
- GameWorld.GetGameFB().SetGameFBDict(bossKey, 0)
-
- bossKey = ChConfig.Map_NPC_WorldBossLastReBornTick % ipyData.GetStoneNPCID()
- GameWorld.GetGameFB().SetGameFBDict(bossKey, 0)
-
- GameWorld.GetGameFB().SetGameFBDict(ChConfig.Map_NPC_ActBossLastRebornSign % ipyData.GetRefreshMark(), 0)
-
- gameNPCManager = GameWorld.GetNPCManager()
- tick = GameWorld.GetGameWorld().GetTick()
-
- for index in range( 0, gameNPCManager.GetNPCCount() ):
- curNPC = gameNPCManager.GetNPCByIndex( index )
-
- if not curNPC.GetID() or not curNPC.GetNPCID():
- return
-
- if not ChConfig.IsGameBoss(curNPC):
- continue
-
- #已经死亡的NPC
- if curNPC.GetCurAction() == IPY_GameWorld.laNPCDie or not curNPC.IsAlive():
- npcControl = NPCCommon.NPCControl(curNPC)
- npcControl.DoNPCReborn( tick )
-
- return
-
-## 给予客户端DEBUG提示
-# @param curPlayer 当前玩家
-# @param msg log信息
-# @return None
-# @remarks 函数详细说明.
-def Log( curPlayer, msg ):
- GameWorld.DebugAnswer(curPlayer, msg )
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFirstGold.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFirstGold.py
index d99150a..5591966 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFirstGold.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFirstGold.py
@@ -20,10 +20,6 @@
import PlayerControl
import IpyGameDataPY
import PlayerCoin
-import PlayerActRechargePrize
-import PyGameData
-import ShareDefine
-
#逻辑实现
## GM命令执行入口
@@ -53,12 +49,6 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MonthCTGCount % recordID, 0)
if syncRecordIDList:
PlayerCoin.Sync_CoinToGoldCountInfo(curPlayer, syncRecordIDList)
-
- # 重置充值返利活动
- actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargePrize, {})
- if actInfo.get(ShareDefine.ActKey_State, 0):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargePrizeID, 0)
- PlayerActRechargePrize.__CheckPlayerRechargePrizeAction(curPlayer)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGRealToday, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGRealTotal, 0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py
index 61f4bf7..784d472 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/EnterFB.py
@@ -19,7 +19,6 @@
import PlayerControl
import FBCommon
import ChConfig
-import PlayerFB
## GM命令执行入口
@@ -39,9 +38,6 @@
if FBCommon.GetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID):
FBCommon.SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % mapID, 0)
- if mapID in ChConfig.Def_CrossMapIDList:
- PlayerControl.PlayerEnterCrossServer(curPlayer, mapID, lineID)
- else:
- PlayerControl.PlayerEnterFB(curPlayer, mapID, lineID, posX, posY)
+ PlayerControl.PlayerEnterFB(curPlayer, mapID, lineID, posX, posY)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py
index ce9a5f7..da94809 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ExitFB.py
@@ -17,9 +17,6 @@
import GameWorld
import ChPlayer
-import PlayerControl
-import PlayerFB
-import CrossRealmPlayer
## GM命令执行入口
# @param curPlayer 当前玩家
@@ -28,10 +25,6 @@
# @remarks 函数详细说明.
def OnExec(curPlayer, paramList):
tick = GameWorld.GetGameWorld().GetTick()
-
- if GameWorld.IsCrossServer():
- CrossRealmPlayer.PlayerExitCrossServer(curPlayer)
- return
isAll = paramList[0] if paramList else 0
if isAll:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/GetPlayerPet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/GetPlayerPet.py
deleted file mode 100644
index 9f8b077..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/GetPlayerPet.py
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-#
-##@package GetPlayerPet
-# @todo: 获得玩家所有宠物ID
-#
-# @author chenxuewei
-# @date 2010-06-22
-# @version 1.5
-#
-# @change: "2010-06-26 14:30" chenxuewei 增加该GM命令输出信息
-# @change: "2010-06-28 16:38" panwei 增加该GM命令输出信息
-# @change: "2010-08-04 15:20" panwei 新增宠物元素属性输出
-# @change: "2010-08-30 17:50" panwei 新增裸体属性输出
-# @change: "2012-04-06 12:00" wdb 新增命中,闪避输出
-#---------------------------------------------------------------------
-"""Version = 2012-04-06 12:00"""
-#---------------------------------------------------------------------
-import GameWorld
-import GameObj
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param list 参数列表 [tagID,ExpValue]
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, list):
-
- petMgr = curPlayer.GetPetMgr()
- petCount = petMgr.PetList_Cnt()
-
- if petCount <= 0:
- GameWorld.DebugAnswer(curPlayer, '玩家无宠物')
- return
-
- GameWorld.DebugAnswer(curPlayer, '玩家一共有%s只宠物'%(petCount))
-
- for i in range(petCount):
- petObj = petMgr.PetList_At(i)
-
- if petObj == None:
- continue
-
- petStruct = petObj.GetRolePet()
-
- petID = petStruct.PetID
- petName = petStruct.Name
- GameWorld.DebugAnswer(curPlayer, '------------------')
- GameWorld.DebugAnswer(curPlayer, '玩家第%s只宠物信息如下:'%(i + 1))
-
- GameWorld.DebugAnswer(curPlayer, '宠物ID = %s,名字 = %s, 亲密度 = %s'%(petID, petName, petStruct.Friendliness))
-
- GameWorld.DebugAnswer(curPlayer, '剩余属性点数 = %s, 本日训练次数 = %s, 剩余训练时间 = %s, 造化丹使用次数 = %s'%(
- petObj.GetLeftPoints(), petStruct.DailyTrainCnt,
- petStruct.RemainTrainTime, petStruct.UseCreatorDrugCnt))
-
-
- GameWorld.DebugAnswer(curPlayer, "裸力量 = %s, 裸真元 = %s, 裸筋骨 = %s, 裸体质 = %s"%(
- petStruct.STR, petStruct.PNE,
- petStruct.PHY, petStruct.CON))
-
-
- #获得宠物战斗结构体(变化的) -> tagIPY_PetBattleProp
- rolePetBattleStruct = petObj.GetBattleProp()
-
- GameWorld.DebugAnswer(curPlayer, "加上Buff后, 总力量 = %s,总真元 = %s, 总筋骨 = %s, 总体质 = %s"%(
- rolePetBattleStruct.STR, rolePetBattleStruct.PNE,
- rolePetBattleStruct.PHY, rolePetBattleStruct.CON))
- curHP = GameObj.GetHP(petObj)
- curMaxHP = GameObj.GetMaxHP(petObj)
-
- curMaxAtk = petObj.GetMaxAtk()
- curMAtkMax = petObj.GetMAtkMax()
-
- curDef = petObj.GetDef()
- curMDef = petObj.GetMDef()
-
- isSummon = petObj.GetIsSummon()
-
- curMiss = petObj.GetMiss()
- curHit = petObj.GetHit()
-
- GameWorld.DebugAnswer(curPlayer, "是否出战 = %s,血量 = %s,最大血量 = %s"%(isSummon, curHP, curMaxHP))
- GameWorld.DebugAnswer(curPlayer, "物理攻击 = %s,剑气伤害 = %s"%(curMaxAtk, curMAtkMax))
- GameWorld.DebugAnswer(curPlayer, "物理防御 = %s,剑气防御 = %s"%(curDef, curMDef))
- GameWorld.DebugAnswer(curPlayer, "命中 = %s, 闪避 = %s"%(curHit, curMiss))
- #---元素属性
- GameWorld.DebugAnswer(curPlayer, "毒攻%s / 毒抗%s"%(petObj.GetPoisionAtk(), petObj.GetPoisionDef()))
- GameWorld.DebugAnswer(curPlayer, "火攻%s / 火抗%s"%(petObj.GetFireAtk(), petObj.GetFireDef()))
- GameWorld.DebugAnswer(curPlayer, "冰攻%s / 冰抗%s"%(petObj.GetIceAtk(), petObj.GetIceDef()))
- GameWorld.DebugAnswer(curPlayer, "雷攻%s / 雷抗%s"%(petObj.GetThunderAtk(), petObj.GetThunderDef()))
- GameWorld.DebugAnswer(curPlayer, "风攻%s / 风防%s"%(petObj.GetWindAtk(), petObj.GetWindDef()))
- #---资质
- hpTalent = petStruct.HPTalent
- physicAtkTalent = petStruct.PhysicAtkTalent
- physicDefTalent = petStruct.PhysicDefTalent
- magicAtkTalent = petStruct.MagicAtkTalent
- magicDefTalent = petStruct.MagicDefTalent
- #评分加成
- petGrade = GameWorld.GetGameData().GetPetGradeByGrade(petObj.GetGrade())
- gradePercent = petGrade.GetIncPercent()
- #亲密加成
- petFriendliness = GameWorld.GetGameData().GetPetFriendlinessByFriendliness(petStruct.Friendliness)
- friendlinessPercent = petFriendliness.GetIncPercent()
-
- GameWorld.DebugAnswer(curPlayer, "气血资质=%s,攻击资质=%s,防御资质=%s,剑气资质=%s,剑防资质=%s"%(
- hpTalent, physicAtkTalent, physicDefTalent, magicAtkTalent, magicDefTalent))
-
- GameWorld.DebugAnswer(curPlayer, '评分加成 = %s, 亲密加成 = %s'%(gradePercent, friendlinessPercent))
- #---技能
- petData = petObj.GetPetData()
- maxSkillCount = petData.GetMaxSkillCount()
-
- rolePetSkillManager = petObj.GetSkillManager()
- learnSkillCount = rolePetSkillManager.GetSkillCount()
-
- GameWorld.DebugAnswer(curPlayer, "宠物最多拥有技能总数 = %s, 当前拥有技能数 = %s"%(
- maxSkillCount, learnSkillCount))
-
-
- for i in range(0, learnSkillCount):
- #learnSkill -> IPY_Skill
- learnSkill = rolePetSkillManager.GetSkillByIndex(i)
- GameWorld.DebugAnswer(curPlayer, "已学技能 = %s, ID = %s"%(i + 1, learnSkill.GetSkillID()))
-
- GameWorld.DebugAnswer(curPlayer, '------------------')
-
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LuckyCloudBuy.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LuckyCloudBuy.py
deleted file mode 100644
index 9e51d5f..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LuckyCloudBuy.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.LuckyCloudBuy
-#
-# @todo:幸运云购
-# @author hxp
-# @date 2021-10-21
-# @version 1.0
-#
-# 详细描述: 幸运云购
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-10-21 17:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerControl
-import PlayerLuckyCloudBuy
-import ChConfig
-
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param msgList 参数列表 [addSkillID]
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
-
- if not msgList:
- GameWorld.DebugAnswer(curPlayer, "重置所有数据: LuckyCloudBuy 0")
- GameWorld.DebugAnswer(curPlayer, "重置本人数据: LuckyCloudBuy 0 1")
- GameWorld.DebugAnswer(curPlayer, "添加云购记录: LuckyCloudBuy 1 份数")
- return
-
- isSendGameServer = False
- value1 = msgList[0]
- if value1 == 0:
- # 重置所有
- if len(msgList) == 1:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyCloudBuy_RoundID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyCloudBuy_BuyCount, 0)
- isSendGameServer = True
-
- # 重置本人数据
- elif len(msgList) == 2 and msgList[1] == 1:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyCloudBuy_RoundID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyCloudBuy_BuyCount, 0)
-
- elif value1 == 1:
- isSendGameServer = True
- return isSendGameServer
-
- PlayerLuckyCloudBuy.Sync_LuckyCloudBuyPlayerInfo(curPlayer)
- return isSendGameServer
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Pet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Pet.py
deleted file mode 100644
index 7484a3f..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Pet.py
+++ /dev/null
@@ -1,166 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.Pet
-#
-# @todo:宠物
-# @author hxp
-# @date 2021-07-02
-# @version 1.0
-#
-# 详细描述: 宠物
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-07-02 19:30"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import GameWorld
-import PlayerControl
-import IpyGameDataPY
-import ShareDefine
-import PetControl
-import PlayerPet
-import OpenFunc
-
-
-def __Help(curPlayer, petNumNameDict):
- GameWorld.DebugAnswer(curPlayer, "------------------")
- GameWorld.DebugAnswer(curPlayer, "重置灵宠: Pet 0 [可选第几只]")
- GameWorld.DebugAnswer(curPlayer, "激活所有: Pet 99 [可选是否满阶]")
- GameWorld.DebugAnswer(curPlayer, "激活指定: Pet 第几只 阶级")
- GameWorld.DebugAnswer(curPlayer, "培养灵宠: Pet 培养类型 等阶 丹数")
- GameWorld.DebugAnswer(curPlayer, "注:重置灵宠需重登")
-
- petNumList = petNumNameDict.keys()
- petNameNumInfo = ""
- for i, petNum in enumerate(petNumList, 1):
- petNameNumInfo += "%s-%s;" % (petNumNameDict[petNum], petNum)
- if petNum % 3 == 0 or i == len(petNumList):
- GameWorld.DebugAnswer(curPlayer, petNameNumInfo)
- petNameNumInfo = ""
-
- return
-
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param msgList 参数列表
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
-
- petNumNameDict = {}
- petNPCIDNumDict = {}
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for index in xrange(ipyDataMgr.GetPetInfoCount()):
- ipyData = ipyDataMgr.GetPetInfoByIndex(index)
- needItemID = ipyData.GetUnLockNeedItemID()
- curItem = GameWorld.GetGameData().GetItemByTypeID(needItemID)
- if not curItem:
- continue
- itemName = curItem.GetName()
- petName = itemName.replace("灵宠:", "")
- petNum = index + 1
-
- petNPCID = ipyData.GetID()
- petNPCIDNumDict[petNPCID] = petNum
- petNumNameDict[petNum] = petName
- petNumList = sorted(petNumNameDict.keys())
-
- if not msgList:
- __Help(curPlayer, petNumNameDict)
- return
-
-
- # 重置灵宠
- if msgList[0] == 0:
- clearNumList = msgList[1:] if len(msgList) > 1 else None
- clearOKList = __ClearPet(curPlayer, petNPCIDNumDict, clearNumList)
-
- for trainType in xrange(1, PlayerPet.GetPetTrainTypes() + 1):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PetTrainLV % trainType, 1)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PetTrainItemCount % trainType, 0)
-
- GameWorld.DebugAnswer(curPlayer, "重置灵宠编号:%s" % sorted(clearOKList))
-
- # 激活所有
- elif msgList[0] == 99:
- isFullLV = msgList[1] if len(msgList) > 1 else None
- classLV = 999 if isFullLV else None
- OpenFunc.DoGMOpenFunc(curPlayer, ShareDefine.GameFuncID_Pet)
- activeOKList = []
- petNumList = petNPCIDNumDict.values()
- for i, petNum in enumerate(petNumList):
- index = msgList[0]
- refresh = i >= (len(petNumList) - 1)
- if PlayerPet.DoPetActivate(curPlayer, petNum, classLV, refresh=refresh):
- activeOKList.append(petNum)
-
- GameWorld.DebugAnswer(curPlayer, "激活灵宠编号:%s" % sorted(activeOKList))
-
- # 激活指定
- elif len(msgList) == 2:
- petNum = msgList[0]
- classLV = msgList[1]
- OpenFunc.DoGMOpenFunc(curPlayer, ShareDefine.GameFuncID_Pet)
- if PlayerPet.DoPetActivate(curPlayer, petNum, classLV):
- GameWorld.DebugAnswer(curPlayer, "激活灵宠: %s(%s), %s阶" % (petNumNameDict.get(petNum, petNum), petNum, classLV))
-
- # 培养灵宠
- elif len(msgList) == 3:
- trainType, trainLV, eatItemCount = msgList
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PetTrainLV % trainType, trainLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PetTrainItemCount % trainType, eatItemCount)
-
- else:
- __Help(curPlayer, petNumNameDict)
- return
-
- PlayerPet.RefreshPetItemAddAttr(curPlayer, True)
- PlayerPet.OnPlayerPetLogin(curPlayer)
- return
-
-def __ClearPet(curPlayer, petNPCIDNumDict, clearNumList=None):
-
- clearOKList = []
- #获得战斗的宠物
- fightPetNPCID = 0
- curPetMgr = curPlayer.GetPetMgr()
- fightPet = curPetMgr.GetFightPet()
- if fightPet != None:
- fightPetNPCID = fightPet.GetRolePet().NPCID
-
- fightPetNum = petNPCIDNumDict.get(fightPetNPCID)
- #---如果有出战中的宠物需要先召回---
- if not clearNumList or fightPetNum in clearNumList:
- PetControl.ReCallFightPet(curPlayer)
-
- #获得玩家宠物信息
- petList = []
- petListCount = curPetMgr.PetList_Cnt()
- for i in range(petListCount):
- pet = curPetMgr.PetList_At(i)
- petNPCID = pet.GetRolePet().NPCID
- petNum = petNPCIDNumDict.get(petNPCID)
- if not clearNumList or petNum in clearNumList:
- petList.append(pet)
-
- for pet in petList:
- curPetMgr.PetList_SetFree(pet.GetRolePet().PetID)
-
- # 宠物数据物品背包清除
- petPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
- for i in range(petPack.GetCount())[::-1]:
- petItem = petPack.GetAt(i)
-
- if not petItem or petItem.IsEmpty():
- continue
-
- petNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- petNum = petNPCIDNumDict.get(petNPCID)
- if not clearNumList or petNum in clearNumList:
- petItem.Clear()
- clearOKList.append(petNum)
-
- return clearOKList
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PetClear.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PetClear.py
deleted file mode 100644
index 2eb11be..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PetClear.py
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package PetClear
-# @todo: 放生玩家所有宠物
-#
-# @author: panwei
-# @date 2010-06-22
-# @version 1.1
-# @change: 2010-07-15 16:00 adaws 修复BUG出战宠物没有召回,在C++会存一个出战宠物的实例导致使用GM命令后
-# 不能出战其它的宠物,并且如果此时角色死亡的话服务器会挂掉
-# @note:
-#---------------------------------------------------------------------
-import ShareDefine
-import PetControl
-import PlayerPet
-import PlayerControl
-import ChConfig
-import GameWorld
-#------------------------------------------------------------------------------
-##放生玩家所有宠物
-# @param curPlayer 玩家实例
-# @param cmdList 参数列表
-# @return 返回值无意义
-# @remarks 放生玩家所有宠物
-def OnExec(curPlayer, cmdList):
-
- #---如果有出战中的宠物需要先召回---
- PetControl.ReCallFightPet(curPlayer)
-
- #获得玩家宠物信息
- curPetMgr = curPlayer.GetPetMgr()
- petListCount = curPetMgr.PetList_Cnt()
-
- #---For中删除, 需构建Python临时列表---
- petList = []
-
- for i in range(0, petListCount):
- pet = curPetMgr.PetList_At(i)
- petList.append(pet)
-
- for rolePet in petList:
- curPetMgr.PetList_SetFree(rolePet.GetRolePet().PetID)
-
- # 宠物数据物品背包清除
- petPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
- for i in range(petPack.GetCount()):
- petItem = petPack.GetAt(i)
-
- if not petItem or petItem.IsEmpty():
- continue
-
- petItem.Clear()
-
-
-
- #isOK = GameFuncComm.DoGMOpenFunc(curPlayer, ShareDefine.GameFuncID_Pet)
- GameWorld.DebugAnswer(curPlayer, "宠物功能是否开启!")
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintPet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintPet.py
deleted file mode 100644
index 2f4c47a..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintPet.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.PrintPet
-#
-# @todo:显示玩家所有宠物
-# @author hxp
-# @date 2016-4-29
-# @version 1.0
-#
-# 详细描述: 显示玩家所有宠物
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2016-4-29 18:00"""
-#-------------------------------------------------------------------------------
-
-import ShareDefine
-import GameWorld
-
-
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param list 参数列表 [tagID,ExpValue]
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, list):
-
- petDataPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
- petCnt = petDataPack.GetCount()
- if petCnt <= 0:
- GameWorld.DebugAnswer(curPlayer, '玩家无宠物')
- return
-
- showDataInfo = [
- [ShareDefine.Def_IudetPet_ClassLV, "阶级"],
- [ShareDefine.Def_IudetPet_State, "状态"],
- [ShareDefine.Def_IudetPet_Skill, "技能"],
- ]
-
- showPetCnt = 0
- for petIndex in range(petDataPack.GetCount()):
- petItem = petDataPack.GetAt(petIndex)
- if petItem.IsEmpty():
- continue
-
- showPetCnt += 1
- petNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- petNPCData = GameWorld.GetGameData().FindNPCDataByID(petNPCID)
- petName = petNPCData.GetName()
- GameWorld.DebugAnswer(curPlayer, '--第%s只: 索引=%s,npcID=%s,name=%s' % (showPetCnt, petIndex, petNPCID, petName))
-
- infoStr = ""
- for dataNum, dataName in showDataInfo:
- if dataNum % 2 == 0:
- value = petItem.GetUserAttr(dataNum)
- infoStr += " %s:%s" % (dataName, value)
- else:
- dataCnt = petItem.GetUserAttrCount(dataNum)
- valueList = []
- for i in xrange(dataCnt):
- value = petItem.GetUserAttrByIndex(dataNum, i)
- valueList.append(value)
- infoStr += " %s:%s" % (dataName, str(valueList))
-
- GameWorld.DebugAnswer(curPlayer, "%s" % infoStr)
-
- GameWorld.DebugAnswer(curPlayer, '------总宠物数: %s -------' % showPetCnt)
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintSkill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintSkill.py
index 1f6dbe1..8cd5e53 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintSkill.py
@@ -14,7 +14,6 @@
#---------------------------------------------------------------------
import GameWorld
import PassiveBuffEffMng
-import PlayerPet
import IpyGameDataPY
import SkillCommon
@@ -107,18 +106,6 @@
GameWorld.DebugAnswer(curPlayer, "被动BUFF效果 :%s" % passiveEff.AffectBuffDict)
GameWorld.DebugAnswer(curPlayer, "神兽被动效果 :%s" % passiveEff.AffectDogzSkillDict)
-
-
-
- fightPet = curPlayer.GetPetMgr().GetFightPet()
- if fightPet:
- GameWorld.DebugAnswer(curPlayer, "出战宠物技能%s-%s" % PlayerPet.GetPetLearnSkill(curPlayer))
- passiveEff = PassiveBuffEffMng.GetPassiveEffManager().GetPassiveEff(fightPet)
- if not passiveEff:
- return
- GameWorld.DebugAnswer(curPlayer, "宠物被动效果 :%s" % passiveEff.AffectSkillDict)
-
- GameWorld.DebugAnswer(curPlayer, "宠物被动BUFF效果 :%s" % passiveEff.AffectBuffDict)
#===============================================================================
# (Def_SkillFuncType_Common, #0为通用技能
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetCrossPK.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetCrossPK.py
deleted file mode 100644
index 92e7667..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetCrossPK.py
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.SetCrossPK
-#
-# @todo:设置玩家跨服PK活动数据
-# @author hxp
-# @date 2018-12-25
-# @version 1.0
-#
-# 详细描述: 设置玩家跨服PK活动数据
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-12-25 21:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerControl
-import PlayerCrossRealmPK
-import IpyGameDataPY
-import ShareDefine
-import ChConfig
-
-#---------------------------------------------------------------------
-#逻辑实现
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param list 参数列表 [npcID]
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
-
- if not msgList:
- __PrintHelp(curPlayer)
- return
-
- if msgList[0] == "m":
- gmMatchIDList = msgList[1:]
- dataMsg = {
- "requestType":1,
- "seasonID":GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID), # 赛季ID
- "zoneID":GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID), # PK赛区
- "playerID":curPlayer.GetPlayerID(),
- "fightPower":PlayerControl.GetFightPower(curPlayer),
- "gmMatchIDList":gmMatchIDList,
- }
- GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_PKMatch, dataMsg)
- return
-
- if msgList[0] == "b":
- zoneID = msgList[1] if len(msgList) > 1 else 0
- seasonID = msgList[2] if len(msgList) > 2 else 0
- danLV = msgList[3] if len(msgList) > 3 else 0
- pkScore = msgList[4] if len(msgList) > 4 else 0
- cWinCount = msgList[5] if len(msgList) > 5 else None
- danIpyData = IpyGameDataPY.GetIpyGameData("CrossRealmPKDan", danLV)
- if not danIpyData:
- GameWorld.DebugAnswer(curPlayer, "不存在该段位:%s" % danLV)
- return
- if pkScore <= 0:
- pkScore = danIpyData.GetLVUpScore()
- errorMsg = PlayerCrossRealmPK.GMSetPlayerCrossPKData(curPlayer, danLV, pkScore, cWinCount, zoneID=zoneID, seasonID=seasonID)
- if errorMsg:
- GameWorld.DebugAnswer(curPlayer, "分区赛季异常!")
- else:
- GameWorld.DebugAnswer(curPlayer, "设置上榜分区:%s,赛季:%s,段位:%s,积分:%s" % (zoneID, seasonID, danLV, pkScore))
- return
-
- if len(msgList) == 1:
- if msgList[0] != 0:
- __PrintHelp(curPlayer)
- return
-
- # 重置数据
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TotalScore, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DanLV, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_PKCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_WinCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CWinCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CLoseCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayPKCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayWinCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayBuyCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_RefreshCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DayPKCountAwardState, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DayWinCountAwardState, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DanLVAwardState, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonAwardState, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_ZoneID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonID, 0)
- for i in xrange(1, 20):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonDanLV % i, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonScore % i, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonOrder % i, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonAwardLV % i, 0)
-
- GameWorld.DebugAnswer(curPlayer, "重置跨服PK数据OK!")
- PlayerCrossRealmPK.SyncCrossRealmPKPlayerInfo(curPlayer)
- PlayerCrossRealmPK.SyncCrossRealmPKAwardState(curPlayer)
- PlayerCrossRealmPK.SyncCrossRealmPKHisSeasonInfo(curPlayer)
- return
-
- if len(msgList) == 2 or len(msgList) % 2 == 0:
- setTypeDict = {0:[ChConfig.Def_PDict_CrossPK_TotalScore, "积分"],
- 2:[ChConfig.Def_PDict_CrossPK_DanLV, "段位"],
- 3:[ChConfig.Def_PDict_CrossPK_PKCount, "PK次数"],
- 4:[ChConfig.Def_PDict_CrossPK_WinCount, "胜利次数"],
- 5:[ChConfig.Def_PDict_CrossPK_CWinCount, "连胜次数"],
- 6:[ChConfig.Def_PDict_CrossPK_CLoseCount, "连败次数"],
- 7:[ChConfig.Def_PDict_CrossPK_TodayPKCount, "今日PK次数"],
- 8:[ChConfig.Def_PDict_CrossPK_TodayWinCount, "今日胜利次数"],
- 9:[ChConfig.Def_PDict_CrossPK_TodayBuyCount, "今日购买次数"],
- 10:[ChConfig.Def_PDict_CrossPK_RefreshCount, "今日刷新次数"],
- }
- indexList = range(len(msgList))
- for i in indexList[::2]:
- setType, value = msgList[i:i+2]
- if setType not in setTypeDict:
- continue
- dictName, chName = setTypeDict[setType]
- PlayerControl.NomalDictSetProperty(curPlayer, dictName, value)
- GameWorld.DebugAnswer(curPlayer, "设置%s: %s" % (chName, value))
-
- mapZoneID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
- mapSeasonID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_ZoneID, mapZoneID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonID, mapSeasonID)
- PlayerCrossRealmPK.SyncCrossRealmPKPlayerInfo(curPlayer)
- return
-
- if len(msgList) == 3:
- seasonID, setType, value = msgList
- setTypeDict = {0:[ChConfig.Def_PDict_CrossPK_SeasonDanLV, "段位"],
- 1:[ChConfig.Def_PDict_CrossPK_SeasonOrder, "名次"],
- 2:[ChConfig.Def_PDict_CrossPK_SeasonScore, "积分"],
- 3:[ChConfig.Def_PDict_CrossPK_SeasonAwardLV, "奖励等级"],
- }
- if setType not in setTypeDict:
- __PrintHelp(curPlayer)
- return
- dictName, chName = setTypeDict[setType]
- PlayerControl.NomalDictSetProperty(curPlayer, dictName % seasonID, value)
- GameWorld.DebugAnswer(curPlayer, "设置赛季%s%s: %s" % (seasonID, chName, value))
- return
-
- __PrintHelp(curPlayer)
- return
-
-def __PrintHelp(curPlayer):
- GameWorld.DebugAnswer(curPlayer, "重置数据: SetCrossPK 0")
- GameWorld.DebugAnswer(curPlayer, "设置数据: SetCrossPK 类型 值")
- GameWorld.DebugAnswer(curPlayer, "类型:0-积分,2-段位,3-PK次数,4-胜利次数,5-连胜次数,6-连败次数")
- GameWorld.DebugAnswer(curPlayer, "7-今日PK次数,8-今日胜利次数,9-今日购买次数,10-今日刷新次数")
- GameWorld.DebugAnswer(curPlayer, "设置历史: SetCrossPK 赛季ID 类型 数值")
- GameWorld.DebugAnswer(curPlayer, "类型:0-段位,1-名次,2-积分,3-奖励等级")
- GameWorld.DebugAnswer(curPlayer, "当前连败次数: %s" % curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_CLoseCount))
- GameWorld.DebugAnswer(curPlayer, "设置上榜: SetCrossPK b 分区 赛季 段位 [积分 连胜]")
- GameWorld.DebugAnswer(curPlayer, "指定匹配: SetCrossPK m [playerID ...]")
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetPetInfo.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetPetInfo.py
deleted file mode 100644
index 4720b6a..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetPetInfo.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.SetPetInfo
-#
-# @todo:设置宠物属性
-# @author hxp
-# @date 2017-03-09
-# @version 1.0
-#
-# 详细描述: 设置宠物属性
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2017-03-09 12:00"""
-#-------------------------------------------------------------------------------
-
-import ShareDefine
-import PlayerPet
-import GameWorld
-#---------------------------------------------------------------------
-##设置宠物状态.
-# @param curPlayer 玩家实例
-# @param cmdList 参数列表
-# @return 返回值无意义
-# @remarks 设置宠物状态
-def OnExec(curPlayer, cmdList):
-
- if len(cmdList) != 3:
- GameWorld.DebugAnswer(curPlayer, '设置宠物阶级: SetPetInfo %s 宠物ID 阶级' % ShareDefine.Def_IudetPet_ClassLV)
- return
-
- petDataPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
- petCnt = petDataPack.GetCount()
- if petCnt <= 0:
- GameWorld.DebugAnswer(curPlayer, '玩家无宠物')
- return
-
- infoType, petNPCID, value = cmdList
- for petIndex in range(petDataPack.GetCount()):
- petItem = petDataPack.GetAt(petIndex)
- if petItem.IsEmpty():
- continue
-
- if petNPCID != petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID):
- continue
-
- if infoType == ShareDefine.Def_IudetPet_ClassLV:
- petItem.SetUserAttr(ShareDefine.Def_IudetPet_ClassLV, value)
-
- PlayerPet.RefreshPetItemAddAttr(curPlayer, True)
- GameWorld.DebugAnswer(curPlayer, '设置宠物属性OK!')
- return
-
- GameWorld.DebugAnswer(curPlayer, '玩家未激活该宠物ID: %s' % petNPCID)
- return
-
-
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TTL.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TTL.py
deleted file mode 100644
index 9edfd1c..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TTL.py
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.TTL
-#
-# @todo:通天令
-# @author hxp
-# @date 2022-01-17
-# @version 1.0
-#
-# 详细描述: 通天令
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-01-17 19:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerControl
-import PlayerTongTianLing
-import IpyGameDataPY
-import ChConfig
-import time
-
-#---------------------------------------------------------------------
-#逻辑实现
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param paramList 参数列表
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, paramList):
-
- if not paramList:
- GameWorld.DebugAnswer(curPlayer, "重置通天所有: TTL 0")
- GameWorld.DebugAnswer(curPlayer, "重置通天等级: TTL 0 1")
- GameWorld.DebugAnswer(curPlayer, "重置通天任务: TTL 0 2")
- GameWorld.DebugAnswer(curPlayer, "设置通天等级: TTL 1 等级 经验 是否激活通天令")
- GameWorld.DebugAnswer(curPlayer, "增加通天任务: TTL 2 任务类型 增加进度值")
- return
-
- value = paramList[0]
- if not value:
- value1 = paramList[1] if len(paramList) > 1 else 0
- if value1 == 1:
- resetTTLV(curPlayer)
- GameWorld.DebugAnswer(curPlayer, "重置通天等级OK!")
- elif value1 == 2:
- resetTTTask(curPlayer)
- GameWorld.DebugAnswer(curPlayer, "重置通天任务OK!")
- else:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_StartTime, int(time.time()))
- resetTTLV(curPlayer)
- resetTTTask(curPlayer)
- GameWorld.DebugAnswer(curPlayer, "重置通天所有OK!")
-
- return
-
- if value == 1:
- ttLV, ttState = PlayerTongTianLing.GetTongTianLingLVInfo(curPlayer)
- ttLV = paramList[1] if len(paramList) > 1 else ttLV
- setPoint = paramList[2] if len(paramList) > 2 else 0
- setState = paramList[3] if len(paramList) > 3 else ttState
-
- ttLV = min(ttLV, IpyGameDataPY.IPY_Data().GetTongTianLVCount() - 1)
- ttState = 1 if setState else 0
- PlayerTongTianLing.SetTongTianLingLVInfo(curPlayer, ttLV, ttState)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_LVPoint, setPoint)
- GameWorld.DebugAnswer(curPlayer, "设置通天等级: LV=%s,expPoint=%s,state=%s" % (ttLV, setPoint, ttState))
- PlayerTongTianLing.SyncTongTianLVInfo(curPlayer)
-
- elif value == 2:
- ttTaskType = paramList[1] if len(paramList) > 1 else 0
- addValue = paramList[2] if len(paramList) > 2 else 0
- GameWorld.DebugAnswer(curPlayer, "增加通天任务进度: taskType=%s,addVlue=%s" % (ttTaskType, addValue))
- PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ttTaskType, addValue)
-
- return
-
-def resetTTTask(curPlayer):
-
- for i in xrange(PlayerTongTianLing.TTL_TaskAwardKeyCount):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord % i, 0)
-
- syncTaskInfoList = []
- for ttTaskType in ChConfig.TTLTaskTypeList:
- for isDailyTask in [0, 1]:
- curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask))
- if not curValue:
- continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask), 0)
- syncTaskInfoList.append([ttTaskType, isDailyTask])
- PlayerTongTianLing.SyncTongTianTaskInfo(curPlayer, syncTaskInfoList)
- PlayerTongTianLing.SyncTongTianTaskAward(curPlayer)
- return
-
-def resetTTLV(curPlayer):
- for i in xrange(PlayerTongTianLing.TTL_LVAwardKeyCount):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_CommAwardRecord % i, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_XianAwardRecord % i, 0)
- PlayerTongTianLing.SetTongTianLingLVInfo(curPlayer, 0, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_LVPoint, 0)
- PlayerTongTianLing.SyncTongTianLVInfo(curPlayer)
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
index a105e8b..d62bc5b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -18,11 +18,8 @@
import IPY_GameWorld
import PlayerControl
import GameWorldProcess
-import CrossRealmPlayer
import DataRecordPack
import ReadChConfig
-import ShareDefine
-import PyGameData
import FBCommon
import GameObj
@@ -482,36 +479,6 @@
def DoEnterFBLogic(curPlayer, tick):
curPlayerID = curPlayer.GetID()
- if GameWorld.IsCrossServer():
- mapID = GameWorld.GetMap().GetMapID()
- mapID = FBCommon.GetRecordMapID(mapID)
- gameWorld = GameWorld.GetGameWorld()
- copyMapID = gameWorld.GetCopyMapID()
- dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), "AccID":curPlayer.GetAccID(),
- "recordMapID":mapID, "mapID":GameWorld.GetMap().GetMapID(), "realMapID":gameWorld.GetRealMapID(), "copyMapID":copyMapID}
- if mapID in ChConfig.Def_CrossDynamicLineMap:
- fbZoneID = FBCommon.GetCrossDynamicLineMapZoneID()
- fbFuncLineID = FBCommon.GetCrossDynamicLineMapFuncLineID()
- playerZoneID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBZoneID)
- playerFuncLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBFuncLine)
- # 跨服排位分区与玩家分区可能不一样
- if (fbZoneID != playerZoneID or fbFuncLineID != playerFuncLineID) and mapID not in []:
- GameWorld.ErrLog("DoEnterFB 玩家与当前副本线路所属分区或功能分线不同,踢出玩家!fbZoneID=%s,playerZoneID=%s,fbFuncLineID=%s,playerFuncLineID=%s"
- % (fbZoneID, playerZoneID, fbFuncLineID, playerFuncLineID), curPlayerID)
- CrossRealmPlayer.PlayerExitCrossServer(curPlayer)
- dataDict.update({"Error":"zoneLineIDError"})
- DataRecordPack.SendEventPack("CrossFBEnter", dataDict, curPlayer)
- return
- GameWorld.Log("玩家进入跨服副本动态分配的线路: fbZoneID=%s,playerZoneID=%s,fbFuncLineID=%s,playerFuncLineID=%s"
- % (fbZoneID, playerZoneID, fbFuncLineID, playerFuncLineID), curPlayerID)
- dataDict.update({"fbZoneID":fbZoneID, "fbFuncLineID":fbFuncLineID, "playerZoneID":playerZoneID, "playerFuncLineID":playerFuncLineID})
-
- if copyMapID not in PyGameData.g_crossPlayerServerGroupIDInfo:
- PyGameData.g_crossPlayerServerGroupIDInfo[copyMapID] = {}
- playerServerGroupIDDict = PyGameData.g_crossPlayerServerGroupIDInfo[copyMapID]
- playerServerGroupIDDict[curPlayerID] = PlayerControl.GetPlayerServerGroupID(curPlayer)
- DataRecordPack.SendEventPack("CrossFBEnter", dataDict, curPlayer)
-
# 自伸缩副本根据玩家进入开启,主动调用一次,避免间隔调用时机未触发导致逻辑错乱
GameWorldProcess.EnterOpenFB(tick)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
index f337264..ab7d2db 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
@@ -150,16 +150,10 @@
#发送未拾取的物品给玩家
if mapID in ChConfig.Def_SendUnPickItemMailMapIDList and unPickItemDict:
- isCrossServer = GameWorld.IsCrossServer()
- playerServerGroupIDDict = PyGameData.g_crossPlayerServerGroupIDInfo.get(copyMapID, {})
for ownerID, mailItemList in unPickItemDict.items():
GameWorld.Log("发送未拾取的物品给玩家: %s" % mailItemList, ownerID)
- if isCrossServer:
- serverGroupID = playerServerGroupIDDict.get(ownerID, 0)
- # 删除旧版发送邮件,如果功能还有需要,可使用新版本发送邮件 PlayerMail
- else:
- PlayerControl.SendMailByKey("ItemNoPickUp", [ownerID], mailItemList, [gameWorld.GetMapID()])
-
+ PlayerControl.SendMailByKey("ItemNoPickUp", [ownerID], mailItemList, [gameWorld.GetMapID()])
+
playerManager = gameWorld.GetMapCopyPlayerManager()
GameServer_DynamicLineMapStateChange(gameWorld, IPY_GameWorld.fbosClosed)
@@ -176,7 +170,6 @@
FreeOrClearFBByAutoSize(gameWorld)
gameWorld.SetPropertyID(0)
- PyGameData.g_crossPlayerServerGroupIDInfo.pop(copyMapID, None)
return
def GameServer_DynamicLineMapStateChange(gameWorld, state):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 1aa6ea4..75121d5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -689,12 +689,6 @@
("DWORD", "PlusLVUPTotalExp", 0),
),
- "Rune":(
- ("DWORD", "ID", 1),
- ("list", "AttrType", 0),
- ("DWORD", "TowerID", 0),
- ),
-
"EquipWash":(
("BYTE", "WashType", 1),
("BYTE", "WashLV", 1),
@@ -727,60 +721,10 @@
("DWORD", "FightPowerEx", 0),
),
- "PetInfo":(
- ("DWORD", "ID", 1),
- ("BYTE", "Quality", 0),
- ("char", "UnlockSys", 0),
- ("DWORD", "UnLockNeedItemID", 0),
- ("BYTE", "UnLockNeedItemCnt", 0),
- ("DWORD", "DecomposeExp", 0),
- ("BYTE", "InitRank", 0),
- ("WORD", "MaxRank", 0),
- ("WORD", "UseNeedRank", 0),
- ("list", "SkillID", 0),
- ("list", "SkillUnLock", 0),
- ("list", "SkillUnLockSys", 0),
- ("DWORD", "InitFightPower", 0),
- ),
-
- "PetStarUp":(
- ("DWORD", "PetNPCID", 1),
- ("BYTE", "PetStar", 1),
- ("list", "StarUpNeedItemList", 0),
- ("list", "StarAttrType", 0),
- ("list", "StarAttrValue", 0),
- ),
-
- "PetTrain":(
- ("BYTE", "TrainType", 1),
- ("BYTE", "TrainLV", 1),
- ("WORD", "NeedRealmLV", 0),
- ("DWORD", "EatCntTotal", 0),
- ("DWORD", "EatCntEverytime", 0),
- ("list", "EatItemAttrTypeList", 0),
- ("list", "EatItemAttrValueList", 0),
- ("list", "LVAttrTypeList", 0),
- ("list", "LVAttrValueList", 0),
- ),
-
"EquipDecompose":(
("WORD", "LV", 1),
("DWORD", "UpNeedExp", 0),
("dict", "Attr", 0),
- ),
-
- "PetClassCost":(
- ("DWORD", "PetID", 1),
- ("DWORD", "Class", 1),
- ("DWORD", "UpNeedExp", 0),
- ("DWORD", "AtkAdd", 0),
- ),
-
- "PetEatEquip":(
- ("BYTE", "EquipColor", 1),
- ("BYTE", "EquipClass", 1),
- ("DWORD", "Exp", 0),
- ("DWORD", "FamilyStoreItemScore", 0),
),
"FaQiLVUp":(
@@ -972,19 +916,6 @@
("dict", "AttrExDict", 0),
),
- "RuneTower":(
- ("DWORD", "ID", 1),
- ("DWORD", "RunePoint", 0),
- ("DWORD", "Ysog", 0),
- ("DWORD", "NPCID", 0),
- ("BYTE", "IsNotify", 0),
- ("list", "FixEndAward", 0),
- ("dict", "GoodDrop", 0),
- ("DWORD", "SweepRunePoint", 0),
- ("DWORD", "SweepYsog", 0),
- ("dict", "SweepGoodDrop", 0),
- ),
-
"ChinMap":(
("DWORD", "MapID", 1),
("BYTE", "CanRide", 0),
@@ -1057,22 +988,6 @@
("DWORD", "NeedCnt", 0),
("list", "Condition", 0),
("list", "AwardItemList", 0),
- ),
-
- "TongTianLV":(
- ("WORD", "TTLV", 1),
- ("WORD", "LVUPPoint", 0),
- ("list", "CommAwardItemList", 0),
- ("list", "XianAwardItemList", 0),
- ("list", "NotifyItemIDList", 0),
- ),
-
- "TongTianTask":(
- ("WORD", "TTTaskID", 1),
- ("BYTE", "TTTaskType", 0),
- ("BYTE", "IsDailyTask", 0),
- ("DWORD", "FinishNeedValue", 0),
- ("DWORD", "TaskPoint", 0),
),
"Treasure":(
@@ -1200,12 +1115,6 @@
("BYTE", "TotalMaxCount", 0),
("BYTE", "RefreshSeconds", 0),
("BYTE", "RefreshPerMinutes", 0),
- ),
-
- "RuneCompound":(
- ("DWORD", "TagItemID", 1),
- ("list", "NeedItem", 0),
- ("WORD", "NeedMJ", 0),
),
"ResourcesBack":(
@@ -1444,23 +1353,6 @@
("DWORD", "AddExpRate", 0),
),
- "ActCostRebate":(
- ("DWORD", "CfgID", 1),
- ("char", "StartDate", 0),
- ("char", "EndDate", 0),
- ("WORD", "LVLimit", 0),
- ("BYTE", "IsDayReset", 0),
- ("list", "TemplateIDList", 0),
- ),
-
- "CostRebateTemplate":(
- ("DWORD", "TemplateID", 1),
- ("DWORD", "NeedCostGold", 0),
- ("BYTE", "AwardIndex", 0),
- ("dict", "AwardItemList", 0),
- ("char", "NotifyKey", 0),
- ),
-
"ActBuyOne":(
("DWORD", "CfgID", 1),
("char", "StartDate", 0),
@@ -1638,22 +1530,6 @@
("DWORD", "ExpireMinutes", 0),
),
- "ActRechargePrize":(
- ("DWORD", "CfgID", 1),
- ("char", "StartDate", 0),
- ("char", "EndDate", 0),
- ("WORD", "LVLimit", 0),
- ("BYTE", "IsDayReset", 0),
- ("list", "TemplateIDList", 0),
- ),
-
- "RechargePrizeTemplate":(
- ("DWORD", "TemplateID", 1),
- ("WORD", "CTGID", 0),
- ("DWORD", "GoldPrize", 0),
- ("BYTE", "PrizeCountLimit", 0),
- ),
-
"ActTotalRecharge":(
("DWORD", "CfgID", 1),
("char", "StartDate", 0),
@@ -1671,22 +1547,6 @@
("BYTE", "AwardIndex", 0),
("dict", "AwardItem", 0),
("char", "NotifyKey", 0),
- ),
-
- "ActRechargeRebateGold":(
- ("DWORD", "CfgID", 1),
- ("char", "StartDate", 0),
- ("char", "EndDate", 0),
- ("WORD", "LVLimit", 0),
- ("BYTE", "IsDayReset", 0),
- ("list", "TemplateIDList", 0),
- ),
-
- "RechargeRebateGoldTemplate":(
- ("DWORD", "TemplateID", 1),
- ("DWORD", "RMBMin", 0),
- ("DWORD", "RMBMax", 0),
- ("WORD", "RebateRate", 0),
),
"ActGrowupBuy":(
@@ -1822,44 +1682,6 @@
("BYTE", "CopyMapID", 1),
("WORD", "PosX", 0),
("WORD", "PosY", 0),
- ),
-
- "Coat":(
- ("DWORD", "CoatID", 1),
- ("BYTE", "CostQuality", 0),
- ("list", "EquipItemID", 0),
- ("DWORD", "UnlockItemID", 0),
- ("DWORD", "MaxLV", 0),
- ("list", "CostItemCnt", 0),
- ("dict", "StarAttr", 0),
- ("DWORD", "InitFightPower", 0),
- ),
-
- "CoatChestUp":(
- ("DWORD", "LV", 1),
- ("BYTE", "NeedExp", 0),
- ("dict", "AddAttr", 0),
- ),
-
- "ActWeekParty":(
- ("DWORD", "CfgID", 1),
- ("char", "StartDate", 0),
- ("char", "EndDate", 0),
- ("WORD", "AdvanceMinutes", 0),
- ("BYTE", "IsDayReset", 0),
- ("BYTE", "ResetType", 0),
- ("WORD", "LVLimit", 0),
- ("list", "TemplateID", 0),
- ("dict", "PointAward", 0),
- ),
-
- "WeekParty":(
- ("BYTE", "TemplateID", 1),
- ("BYTE", "ActionType", 0),
- ("DWORD", "TotalTimes", 0),
- ("WORD", "SingleTimes", 0),
- ("eval", "Reward", 0),
- ("WORD", "Point", 0),
),
"ActYunshi":(
@@ -2008,27 +1830,6 @@
("char", "WorldNotifyKey", 0),
),
- "ActFeastWeekParty":(
- ("DWORD", "CfgID", 1),
- ("char", "StartDate", 0),
- ("char", "EndDate", 0),
- ("WORD", "AdvanceMinutes", 0),
- ("BYTE", "IsDayReset", 0),
- ("BYTE", "ResetType", 0),
- ("WORD", "LVLimit", 0),
- ("list", "TemplateID", 0),
- ("dict", "PointAward", 0),
- ),
-
- "FeastWeekParty":(
- ("BYTE", "TemplateID", 1),
- ("BYTE", "ActionType", 0),
- ("DWORD", "TotalTimes", 0),
- ("WORD", "SingleTimes", 0),
- ("list", "Reward", 0),
- ("WORD", "Point", 0),
- ),
-
"NewAllPeopleParty":(
("BYTE", "ID", 1),
("WORD", "TotalTimes", 0),
@@ -2059,21 +1860,6 @@
("WORD", "ItemCnt", 0),
("BYTE", "IsBind", 0),
("DWORD", "Weight", 0),
- ),
-
- "CrossActCTGBillboardDabiao":(
- ("DWORD", "TemplateID", 1),
- ("float", "CTGNeed", 0),
- ("BYTE", "AwardIndex", 0),
- ("list", "AwardItemList", 0),
- ),
-
- "CrossActCTGBillboardOrder":(
- ("DWORD", "TemplateID", 1),
- ("WORD", "OrderA", 0),
- ("WORD", "OrderB", 0),
- ("float", "CTGAtleast", 0),
- ("list", "AwardItemList", 0),
),
"EquipPlaceIndexMap":(
@@ -3266,17 +3052,6 @@
def GetPlusAttrValues(self): return self.attrTuple[3] # 强化属性值列表 list
def GetPlusLVUPTotalExp(self): return self.attrTuple[4] # 升级所需累计熟练度总值 DWORD
-# 符印表
-class IPY_Rune():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetID(self): return self.attrTuple[0] # 编号ID DWORD
- def GetAttrType(self): return self.attrTuple[1] # 属性类型 list
- def GetTowerID(self): return self.attrTuple[2] # 解锁符印塔编号 DWORD
-
# 洗练表
class IPY_EquipWash():
@@ -3319,57 +3094,6 @@
def GetRecycleMoney(self): return self.attrTuple[4] # 回收货币值 WORD
def GetFightPowerEx(self): return self.attrTuple[5] # 附加战斗力 DWORD
-# 灵兽表
-class IPY_PetInfo():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetID(self): return self.attrTuple[0] # 灵兽NPCID DWORD
- def GetQuality(self): return self.attrTuple[1] # 品质 BYTE
- def GetUnlockSys(self): return self.attrTuple[2] # 解锁广播提示 char
- def GetUnLockNeedItemID(self): return self.attrTuple[3] # 解锁灵兽物品ID DWORD
- def GetUnLockNeedItemCnt(self): return self.attrTuple[4] # 解锁所需物品数量 BYTE
- def GetDecomposeExp(self): return self.attrTuple[5] # 分解单个解锁物品可获得升阶经验 DWORD
- def GetInitRank(self): return self.attrTuple[6] # 灵兽初始阶数 BYTE
- def GetMaxRank(self): return self.attrTuple[7] # 灵兽最高阶数 WORD
- def GetUseNeedRank(self): return self.attrTuple[8] # 多少阶可切换外观 WORD
- def GetSkillID(self): return self.attrTuple[9] # 灵兽技能ID list
- def GetSkillUnLock(self): return self.attrTuple[10] # 灵兽技能解锁需要阶数 list
- def GetSkillUnLockSys(self): return self.attrTuple[11] # 灵兽技能解锁提示 list
- def GetInitFightPower(self): return self.attrTuple[12] # 初始战力 DWORD
-
-# 灵宠升星表
-class IPY_PetStarUp():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetPetNPCID(self): return self.attrTuple[0] # 灵兽NPCID DWORD
- def GetPetStar(self): return self.attrTuple[1] # 灵兽星级 BYTE
- def GetStarUpNeedItemList(self): return self.attrTuple[2] # 升下一星所需道具 [[物品ID,个数], ...] list
- def GetStarAttrType(self): return self.attrTuple[3] # 累计总属性类型 list
- def GetStarAttrValue(self): return self.attrTuple[4] # 累计总属性值 list
-
-# 灵宠培养表
-class IPY_PetTrain():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTrainType(self): return self.attrTuple[0] # 培养类型 BYTE
- def GetTrainLV(self): return self.attrTuple[1] # 培养等阶 BYTE
- def GetNeedRealmLV(self): return self.attrTuple[2] # 培养所需境界 WORD
- def GetEatCntTotal(self): return self.attrTuple[3] # 升阶所需个数(非累计) DWORD
- def GetEatCntEverytime(self): return self.attrTuple[4] # 每次培养消耗x个 DWORD
- def GetEatItemAttrTypeList(self): return self.attrTuple[5] # 每X个培养丹增加属性类型=EatCntEverytime list
- def GetEatItemAttrValueList(self): return self.attrTuple[6] # 每X个培养丹增加属性值=EatCntEverytime list
- def GetLVAttrTypeList(self): return self.attrTuple[7] # 每级额外属性类(非累积) list
- def GetLVAttrValueList(self): return self.attrTuple[8] # 每级额外属性值(非累积) list
-
# 装备分解属性表
class IPY_EquipDecompose():
@@ -3380,30 +3104,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_PetClassCost():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetPetID(self): return self.attrTuple[0] # 灵兽NPCID DWORD
- def GetClass(self): return self.attrTuple[1] # 灵兽阶数 DWORD
- def GetUpNeedExp(self): return self.attrTuple[2] # 灵兽升阶所需经验数 DWORD
- def GetAtkAdd(self): return self.attrTuple[3] # 每阶攻击力加成 DWORD
-
-# 灵兽吸收装备表
-class IPY_PetEatEquip():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetEquipColor(self): return self.attrTuple[0] # 装备品质 BYTE
- def GetEquipClass(self): return self.attrTuple[1] # 装备阶数 BYTE
- def GetExp(self): return self.attrTuple[2] # 获得灵兽升级经验 DWORD
- def GetFamilyStoreItemScore(self): return self.attrTuple[3] # 仙盟宝库积分 DWORD
# 法器升级表
class IPY_FaQiLVUp():
@@ -3684,24 +3384,6 @@
def GetAttrSpecDict(self): return self.attrTuple[6] # 特殊属性值字典 {attrKey:value, ...} dict
def GetAttrExDict(self): return self.attrTuple[7] # 特殊属性值字典 {attrKey:value, ...} dict
-# 符印塔表
-class IPY_RuneTower():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetID(self): return self.attrTuple[0] # 塔编号 DWORD
- def GetRunePoint(self): return self.attrTuple[1] # 过关给符印精华 DWORD
- def GetYsog(self): return self.attrTuple[2] # 过关给魔精 DWORD
- def GetNPCID(self): return self.attrTuple[3] # npcid DWORD
- def GetIsNotify(self): return self.attrTuple[4] # 是否广播 BYTE
- def GetFixEndAward(self): return self.attrTuple[5] # 固定结算奖励 list
- def GetGoodDrop(self): return self.attrTuple[6] # 珍稀符印通关掉落概率 dict
- def GetSweepRunePoint(self): return self.attrTuple[7] # 扫荡符印精华 DWORD
- def GetSweepYsog(self): return self.attrTuple[8] # 扫荡魔精 DWORD
- def GetSweepGoodDrop(self): return self.attrTuple[9] # 扫荡珍稀符印 dict
-
# 地图表格
class IPY_ChinMap():
@@ -3820,32 +3502,6 @@
def GetNeedCnt(self): return self.attrTuple[2] # 需要数量 DWORD
def GetCondition(self): return self.attrTuple[3] # 辅助条件 list
def GetAwardItemList(self): return self.attrTuple[4] # 奖励物品列表 list
-
-# 通天令等级表
-class IPY_TongTianLV():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTTLV(self): return self.attrTuple[0] # 通天令等级 WORD
- def GetLVUPPoint(self): return self.attrTuple[1] # 升级所需积分(0不可升级) WORD
- def GetCommAwardItemList(self): return self.attrTuple[2] # 常规奖励物品列表 [[物品ID,个数,是否拍品], ...] list
- def GetXianAwardItemList(self): return self.attrTuple[3] # 仙品奖励物品列表 [[物品ID,个数,是否拍品], ...] list
- def GetNotifyItemIDList(self): return self.attrTuple[4] # 需要广播的物品ID列表 list
-
-# 通天令任务表
-class IPY_TongTianTask():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTTTaskID(self): return self.attrTuple[0] # 通天任务ID(确定后不可修改) WORD
- def GetTTTaskType(self): return self.attrTuple[1] # 通天任务类型 BYTE
- def GetIsDailyTask(self): return self.attrTuple[2] # 是否每日任务 BYTE
- def GetFinishNeedValue(self): return self.attrTuple[3] # 任务完成所需值 DWORD
- def GetTaskPoint(self): return self.attrTuple[4] # 任务积分点奖励 DWORD
# 法宝表
class IPY_Treasure():
@@ -4033,17 +3689,6 @@
def GetTotalMaxCount(self): return self.attrTuple[5] # 所有点总怪物数 BYTE
def GetRefreshSeconds(self): return self.attrTuple[6] # 刷怪间隔秒 BYTE
def GetRefreshPerMinutes(self): return self.attrTuple[7] # 每整X分刷怪 BYTE
-
-# 符印合成表
-class IPY_RuneCompound():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTagItemID(self): return self.attrTuple[0] # 合成的符印物品ID DWORD
- def GetNeedItem(self): return self.attrTuple[1] # 需要的物品ID list
- def GetNeedMJ(self): return self.attrTuple[2] # 需要的魔精数量 WORD
# 资源找回表
class IPY_ResourcesBack():
@@ -4386,33 +4031,6 @@
def GetLVLimit(self): return self.attrTuple[1] # 限制等级 WORD
def GetAddExpRate(self): return self.attrTuple[2] # 经验倍率加成,万分率 DWORD
-# 消费返利活动表
-class IPY_ActCostRebate():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
- def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
- def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
- def GetLVLimit(self): return self.attrTuple[3] # 限制等级 WORD
- def GetIsDayReset(self): return self.attrTuple[4] # 是否每天重置 BYTE
- def GetTemplateIDList(self): return self.attrTuple[5] # 模板ID列表 list
-
-# 消费返利模板表
-class IPY_CostRebateTemplate():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTemplateID(self): return self.attrTuple[0] # 模板ID DWORD
- def GetNeedCostGold(self): return self.attrTuple[1] # 需要消费仙玉数 DWORD
- def GetAwardIndex(self): return self.attrTuple[2] # 返利奖励索引0~31,同个模板中不重复 BYTE
- def GetAwardItemList(self): return self.attrTuple[3] # 返利物品信息列表 {世界等级范围:[({职业:物品ID,..},个数,是否绑定), ...]} dict
- def GetNotifyKey(self): return self.attrTuple[4] # 全服广播key,默认两个参数(玩家名, 档位额度) char
-
# 买一送多活动表
class IPY_ActBuyOne():
@@ -4685,32 +4303,6 @@
def GetUnlockDefault(self): return self.attrTuple[1] # 是否默认激活 BYTE
def GetExpireMinutes(self): return self.attrTuple[2] # 时效分钟,0永久 DWORD
-# 充值返利活动表
-class IPY_ActRechargePrize():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
- def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
- def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
- def GetLVLimit(self): return self.attrTuple[3] # 限制等级 WORD
- def GetIsDayReset(self): return self.attrTuple[4] # 是否每天重置 BYTE
- def GetTemplateIDList(self): return self.attrTuple[5] # 模板ID列表 list
-
-# 充值返利模板表
-class IPY_RechargePrizeTemplate():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTemplateID(self): return self.attrTuple[0] # 模板ID DWORD
- def GetCTGID(self): return self.attrTuple[1] # 充值表充值ID WORD
- def GetGoldPrize(self): return self.attrTuple[2] # 返利仙玉数 DWORD
- def GetPrizeCountLimit(self): return self.attrTuple[3] # 最大赠送次数 BYTE
-
# 累计充值活动表
class IPY_ActTotalRecharge():
@@ -4739,32 +4331,6 @@
def GetAwardIndex(self): return self.attrTuple[2] # 返利奖励索引0~31,同个模板中不重复 BYTE
def GetAwardItem(self): return self.attrTuple[3] # 返利物品信息列表 {职业:[(物品ID,个数,是否绑定),...]} dict
def GetNotifyKey(self): return self.attrTuple[4] # 全服广播key,默认两个参数(玩家名, 档位额度) char
-
-# 累计充值返利仙玉活动表
-class IPY_ActRechargeRebateGold():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
- def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
- def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
- def GetLVLimit(self): return self.attrTuple[3] # 限制等级 WORD
- def GetIsDayReset(self): return self.attrTuple[4] # 是否每天重置 BYTE
- def GetTemplateIDList(self): return self.attrTuple[5] # 模板ID列表 list
-
-# 累计充值返利仙玉模板表
-class IPY_RechargeRebateGoldTemplate():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTemplateID(self): return self.attrTuple[0] # 模板ID DWORD
- def GetRMBMin(self): return self.attrTuple[1] # 充值RMB最小值 DWORD
- def GetRMBMax(self): return self.attrTuple[2] # 充值RMB最大值 DWORD
- def GetRebateRate(self): return self.attrTuple[3] # 返利仙玉比例百分比 WORD
# 成长必买活动表
class IPY_ActGrowupBuy():
@@ -4980,64 +4546,6 @@
def GetCopyMapID(self): return self.attrTuple[3] # 虚拟线路ID BYTE
def GetPosX(self): return self.attrTuple[4] # 坐标X WORD
def GetPosY(self): return self.attrTuple[5] # 坐标Y WORD
-
-# 时装表
-class IPY_Coat():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetCoatID(self): return self.attrTuple[0] # 时装编号 DWORD
- def GetCostQuality(self): return self.attrTuple[1] # 时装品质 0-普通;1-稀有;2-传说 BYTE
- def GetEquipItemID(self): return self.attrTuple[2] # 装备物品ID(按职业顺序) list
- def GetUnlockItemID(self): return self.attrTuple[3] # 材料物品ID DWORD
- def GetMaxLV(self): return self.attrTuple[4] # 最大星级 DWORD
- def GetCostItemCnt(self): return self.attrTuple[5] # 材料数量 list
- def GetStarAttr(self): return self.attrTuple[6] # 属性 dict
- def GetInitFightPower(self): return self.attrTuple[7] # 初始战力 DWORD
-
-# 时装柜升级表
-class IPY_CoatChestUp():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetLV(self): return self.attrTuple[0] # 等级 DWORD
- def GetNeedExp(self): return self.attrTuple[1] # 升级所需经验 BYTE
- def GetAddAttr(self): return self.attrTuple[2] # 属性 dict
-
-# 周狂欢活动时间表
-class IPY_ActWeekParty():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
- def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
- def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
- def GetAdvanceMinutes(self): return self.attrTuple[3] # 前端提前X分钟展示活动 WORD
- def GetIsDayReset(self): return self.attrTuple[4] # 是否每天重置 BYTE
- def GetResetType(self): return self.attrTuple[5] # 重置类型,0-0点重置;1-5点重置 BYTE
- def GetLVLimit(self): return self.attrTuple[6] # 限制等级 WORD
- def GetTemplateID(self): return self.attrTuple[7] # 模板编号 list
- def GetPointAward(self): return self.attrTuple[8] # 总积分奖励 dict
-
-# 周狂欢表
-class IPY_WeekParty():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTemplateID(self): return self.attrTuple[0] # 模板ID BYTE
- def GetActionType(self): return self.attrTuple[1] # 活动条目ID BYTE
- def GetTotalTimes(self): return self.attrTuple[2] # 可完成的总次数,0表示不限次数 DWORD
- def GetSingleTimes(self): return self.attrTuple[3] # 单次领奖需要的次数 WORD
- def GetReward(self): return self.attrTuple[4] # 奖励物品 eval
- def GetPoint(self): return self.attrTuple[5] # 积分 WORD
# 运势活动时间表
class IPY_ActYunshi():
@@ -5260,37 +4768,6 @@
def GetGoodItemIDList(self): return self.attrTuple[3] # 需要广播的物品ID列表 [物品ID, ...] list
def GetWorldNotifyKey(self): return self.attrTuple[4] # 全服广播key,参数(玩家名, 物品ID, 物品数据, 个数,) char
-# 节日巡礼活动时间表
-class IPY_ActFeastWeekParty():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
- def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
- def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
- def GetAdvanceMinutes(self): return self.attrTuple[3] # 前端提前X分钟展示活动 WORD
- def GetIsDayReset(self): return self.attrTuple[4] # 是否每天重置 BYTE
- def GetResetType(self): return self.attrTuple[5] # 重置类型,0-0点重置;1-5点重置 BYTE
- def GetLVLimit(self): return self.attrTuple[6] # 限制等级 WORD
- def GetTemplateID(self): return self.attrTuple[7] # 模板编号 list
- def GetPointAward(self): return self.attrTuple[8] # 总积分奖励 dict
-
-# 节日巡礼模板表
-class IPY_FeastWeekParty():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTemplateID(self): return self.attrTuple[0] # 模板ID BYTE
- def GetActionType(self): return self.attrTuple[1] # 活动条目ID BYTE
- def GetTotalTimes(self): return self.attrTuple[2] # 可完成的总次数,0表示不限次数 DWORD
- def GetSingleTimes(self): return self.attrTuple[3] # 单次领奖需要的次数 WORD
- def GetReward(self): return self.attrTuple[4] # 奖励物品 list
- def GetPoint(self): return self.attrTuple[5] # 积分 WORD
-
# 新仙界盛典-全民来嗨表
class IPY_NewAllPeopleParty():
@@ -5342,31 +4819,6 @@
def GetItemCnt(self): return self.attrTuple[3] # 物品数量 WORD
def GetIsBind(self): return self.attrTuple[4] # 是否绑定 BYTE
def GetWeight(self): return self.attrTuple[5] # 权重 DWORD
-
-# 跨服充值排行模板达标奖励表
-class IPY_CrossActCTGBillboardDabiao():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTemplateID(self): return self.attrTuple[0] # 模板ID DWORD
- def GetCTGNeed(self): return self.attrTuple[1] # 需充值RMB float
- def GetAwardIndex(self): return self.attrTuple[2] # 奖励记录索引,从0开始,同个模板不可重复,不可变更 BYTE
- def GetAwardItemList(self): return self.attrTuple[3] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
-
-# 跨服充值排行模板名次奖励表
-class IPY_CrossActCTGBillboardOrder():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetTemplateID(self): return self.attrTuple[0] # 模板ID DWORD
- def GetOrderA(self): return self.attrTuple[1] # 名次A WORD
- def GetOrderB(self): return self.attrTuple[2] # 至名次B WORD
- def GetCTGAtleast(self): return self.attrTuple[3] # 至少充值RMB float
- def GetAwardItemList(self): return self.attrTuple[4] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list
# 装备位背包索引映射表
class IPY_EquipPlaceIndexMap():
@@ -5872,15 +5324,9 @@
self.__LoadFileData("EquipLegendAttrValue", onlyCheck)
self.__LoadFileData("Dogz", onlyCheck)
self.__LoadFileData("DogzEquipPlus", onlyCheck)
- self.__LoadFileData("Rune", onlyCheck)
self.__LoadFileData("EquipWash", onlyCheck)
self.__LoadFileData("AttrFruit", onlyCheck)
- self.__LoadFileData("PetInfo", onlyCheck)
- self.__LoadFileData("PetStarUp", onlyCheck)
- self.__LoadFileData("PetTrain", onlyCheck)
self.__LoadFileData("EquipDecompose", onlyCheck)
- self.__LoadFileData("PetClassCost", onlyCheck)
- self.__LoadFileData("PetEatEquip", onlyCheck)
self.__LoadFileData("FaQiLVUp", onlyCheck)
self.__LoadFileData("HorseClass", onlyCheck)
self.__LoadFileData("HorseSkin", onlyCheck)
@@ -5899,7 +5345,6 @@
self.__LoadFileData("LVReValue", onlyCheck)
self.__LoadFileData("SpecMapPlayerAttrFormat", onlyCheck)
self.__LoadFileData("GMAttr", onlyCheck)
- self.__LoadFileData("RuneTower", onlyCheck)
self.__LoadFileData("ChinMap", onlyCheck)
self.__LoadFileData("FBFunc", onlyCheck)
self.__LoadFileData("FBLine", onlyCheck)
@@ -5909,8 +5354,6 @@
self.__LoadFileData("FBDJGEffect", onlyCheck)
self.__LoadFileData("ADAward", onlyCheck)
self.__LoadFileData("Success", onlyCheck)
- self.__LoadFileData("TongTianLV", onlyCheck)
- self.__LoadFileData("TongTianTask", onlyCheck)
self.__LoadFileData("Treasure", onlyCheck)
self.__LoadFileData("TreasureUp", onlyCheck)
self.__LoadFileData("SignIn", onlyCheck)
@@ -5923,7 +5366,6 @@
self.__LoadFileData("BOSSInfo", onlyCheck)
self.__LoadFileData("NPCShow", onlyCheck)
self.__LoadFileData("MapRefreshNPC", onlyCheck)
- self.__LoadFileData("RuneCompound", onlyCheck)
self.__LoadFileData("ResourcesBack", onlyCheck)
self.__LoadFileData("CollectNPC", onlyCheck)
self.__LoadFileData("Chests", onlyCheck)
@@ -5945,8 +5387,6 @@
self.__LoadFileData("ActDailyGiftbag", onlyCheck)
self.__LoadFileData("DailyGiftbag", onlyCheck)
self.__LoadFileData("ActExpRate", onlyCheck)
- self.__LoadFileData("ActCostRebate", onlyCheck)
- self.__LoadFileData("CostRebateTemplate", onlyCheck)
self.__LoadFileData("ActBuyOne", onlyCheck)
self.__LoadFileData("ActBuyOneTemplate", onlyCheck)
self.__LoadFileData("ActFamilyCTGAssist", onlyCheck)
@@ -5966,12 +5406,8 @@
self.__LoadFileData("ActWishingWell", onlyCheck)
self.__LoadFileData("WishingWell", onlyCheck)
self.__LoadFileData("EmojiPack", onlyCheck)
- self.__LoadFileData("ActRechargePrize", onlyCheck)
- self.__LoadFileData("RechargePrizeTemplate", onlyCheck)
self.__LoadFileData("ActTotalRecharge", onlyCheck)
self.__LoadFileData("TotalRechargeTemplate", onlyCheck)
- self.__LoadFileData("ActRechargeRebateGold", onlyCheck)
- self.__LoadFileData("RechargeRebateGoldTemplate", onlyCheck)
self.__LoadFileData("ActGrowupBuy", onlyCheck)
self.__LoadFileData("ActManyDayRecharge", onlyCheck)
self.__LoadFileData("ActManyDayRechargeAward", onlyCheck)
@@ -5988,10 +5424,6 @@
self.__LoadFileData("CrossPenglaiZoneMap", onlyCheck)
self.__LoadFileData("CrossDemonLandZoneMap", onlyCheck)
self.__LoadFileData("CrossFamilyFlagwarZoneMap", onlyCheck)
- self.__LoadFileData("Coat", onlyCheck)
- self.__LoadFileData("CoatChestUp", onlyCheck)
- self.__LoadFileData("ActWeekParty", onlyCheck)
- self.__LoadFileData("WeekParty", onlyCheck)
self.__LoadFileData("ActYunshi", onlyCheck)
self.__LoadFileData("ActLunhuidian", onlyCheck)
self.__LoadFileData("ActLunhuidianAward", onlyCheck)
@@ -6007,14 +5439,10 @@
self.__LoadFileData("ActFeastWish", onlyCheck)
self.__LoadFileData("ActFeastWishBottle", onlyCheck)
self.__LoadFileData("ActFeastWishPool", onlyCheck)
- self.__LoadFileData("ActFeastWeekParty", onlyCheck)
- self.__LoadFileData("FeastWeekParty", onlyCheck)
self.__LoadFileData("NewAllPeopleParty", onlyCheck)
self.__LoadFileData("NewAllPeoplePartyAward", onlyCheck)
self.__LoadFileData("ActLuckyTreasure", onlyCheck)
self.__LoadFileData("LuckyTreasureTemplate", onlyCheck)
- self.__LoadFileData("CrossActCTGBillboardDabiao", onlyCheck)
- self.__LoadFileData("CrossActCTGBillboardOrder", onlyCheck)
self.__LoadFileData("EquipPlaceIndexMap", onlyCheck)
self.__LoadFileData("EquipShenAttr", onlyCheck)
self.__LoadFileData("EquipShenEvolve", onlyCheck)
@@ -6684,13 +6112,6 @@
self.CheckLoadData("DogzEquipPlus")
return self.ipyDogzEquipPlusCache[index]
- def GetRuneCount(self):
- self.CheckLoadData("Rune")
- return self.ipyRuneLen
- def GetRuneByIndex(self, index):
- self.CheckLoadData("Rune")
- return self.ipyRuneCache[index]
-
def GetEquipWashCount(self):
self.CheckLoadData("EquipWash")
return self.ipyEquipWashLen
@@ -6705,47 +6126,12 @@
self.CheckLoadData("AttrFruit")
return self.ipyAttrFruitCache[index]
- def GetPetInfoCount(self):
- self.CheckLoadData("PetInfo")
- return self.ipyPetInfoLen
- def GetPetInfoByIndex(self, index):
- self.CheckLoadData("PetInfo")
- return self.ipyPetInfoCache[index]
-
- def GetPetStarUpCount(self):
- self.CheckLoadData("PetStarUp")
- return self.ipyPetStarUpLen
- def GetPetStarUpByIndex(self, index):
- self.CheckLoadData("PetStarUp")
- return self.ipyPetStarUpCache[index]
-
- def GetPetTrainCount(self):
- self.CheckLoadData("PetTrain")
- return self.ipyPetTrainLen
- def GetPetTrainByIndex(self, index):
- self.CheckLoadData("PetTrain")
- return self.ipyPetTrainCache[index]
-
def GetEquipDecomposeCount(self):
self.CheckLoadData("EquipDecompose")
return self.ipyEquipDecomposeLen
def GetEquipDecomposeByIndex(self, index):
self.CheckLoadData("EquipDecompose")
return self.ipyEquipDecomposeCache[index]
-
- def GetPetClassCostCount(self):
- self.CheckLoadData("PetClassCost")
- return self.ipyPetClassCostLen
- def GetPetClassCostByIndex(self, index):
- self.CheckLoadData("PetClassCost")
- return self.ipyPetClassCostCache[index]
-
- def GetPetEatEquipCount(self):
- self.CheckLoadData("PetEatEquip")
- return self.ipyPetEatEquipLen
- def GetPetEatEquipByIndex(self, index):
- self.CheckLoadData("PetEatEquip")
- return self.ipyPetEatEquipCache[index]
def GetFaQiLVUpCount(self):
self.CheckLoadData("FaQiLVUp")
@@ -6873,13 +6259,6 @@
self.CheckLoadData("GMAttr")
return self.ipyGMAttrCache[index]
- def GetRuneTowerCount(self):
- self.CheckLoadData("RuneTower")
- return self.ipyRuneTowerLen
- def GetRuneTowerByIndex(self, index):
- self.CheckLoadData("RuneTower")
- return self.ipyRuneTowerCache[index]
-
def GetChinMapCount(self):
self.CheckLoadData("ChinMap")
return self.ipyChinMapLen
@@ -6942,20 +6321,6 @@
def GetSuccessByIndex(self, index):
self.CheckLoadData("Success")
return self.ipySuccessCache[index]
-
- def GetTongTianLVCount(self):
- self.CheckLoadData("TongTianLV")
- return self.ipyTongTianLVLen
- def GetTongTianLVByIndex(self, index):
- self.CheckLoadData("TongTianLV")
- return self.ipyTongTianLVCache[index]
-
- def GetTongTianTaskCount(self):
- self.CheckLoadData("TongTianTask")
- return self.ipyTongTianTaskLen
- def GetTongTianTaskByIndex(self, index):
- self.CheckLoadData("TongTianTask")
- return self.ipyTongTianTaskCache[index]
def GetTreasureCount(self):
self.CheckLoadData("Treasure")
@@ -7040,13 +6405,6 @@
def GetMapRefreshNPCByIndex(self, index):
self.CheckLoadData("MapRefreshNPC")
return self.ipyMapRefreshNPCCache[index]
-
- def GetRuneCompoundCount(self):
- self.CheckLoadData("RuneCompound")
- return self.ipyRuneCompoundLen
- def GetRuneCompoundByIndex(self, index):
- self.CheckLoadData("RuneCompound")
- return self.ipyRuneCompoundCache[index]
def GetResourcesBackCount(self):
self.CheckLoadData("ResourcesBack")
@@ -7195,20 +6553,6 @@
self.CheckLoadData("ActExpRate")
return self.ipyActExpRateCache[index]
- def GetActCostRebateCount(self):
- self.CheckLoadData("ActCostRebate")
- return self.ipyActCostRebateLen
- def GetActCostRebateByIndex(self, index):
- self.CheckLoadData("ActCostRebate")
- return self.ipyActCostRebateCache[index]
-
- def GetCostRebateTemplateCount(self):
- self.CheckLoadData("CostRebateTemplate")
- return self.ipyCostRebateTemplateLen
- def GetCostRebateTemplateByIndex(self, index):
- self.CheckLoadData("CostRebateTemplate")
- return self.ipyCostRebateTemplateCache[index]
-
def GetActBuyOneCount(self):
self.CheckLoadData("ActBuyOne")
return self.ipyActBuyOneLen
@@ -7342,20 +6686,6 @@
self.CheckLoadData("EmojiPack")
return self.ipyEmojiPackCache[index]
- def GetActRechargePrizeCount(self):
- self.CheckLoadData("ActRechargePrize")
- return self.ipyActRechargePrizeLen
- def GetActRechargePrizeByIndex(self, index):
- self.CheckLoadData("ActRechargePrize")
- return self.ipyActRechargePrizeCache[index]
-
- def GetRechargePrizeTemplateCount(self):
- self.CheckLoadData("RechargePrizeTemplate")
- return self.ipyRechargePrizeTemplateLen
- def GetRechargePrizeTemplateByIndex(self, index):
- self.CheckLoadData("RechargePrizeTemplate")
- return self.ipyRechargePrizeTemplateCache[index]
-
def GetActTotalRechargeCount(self):
self.CheckLoadData("ActTotalRecharge")
return self.ipyActTotalRechargeLen
@@ -7369,20 +6699,6 @@
def GetTotalRechargeTemplateByIndex(self, index):
self.CheckLoadData("TotalRechargeTemplate")
return self.ipyTotalRechargeTemplateCache[index]
-
- def GetActRechargeRebateGoldCount(self):
- self.CheckLoadData("ActRechargeRebateGold")
- return self.ipyActRechargeRebateGoldLen
- def GetActRechargeRebateGoldByIndex(self, index):
- self.CheckLoadData("ActRechargeRebateGold")
- return self.ipyActRechargeRebateGoldCache[index]
-
- def GetRechargeRebateGoldTemplateCount(self):
- self.CheckLoadData("RechargeRebateGoldTemplate")
- return self.ipyRechargeRebateGoldTemplateLen
- def GetRechargeRebateGoldTemplateByIndex(self, index):
- self.CheckLoadData("RechargeRebateGoldTemplate")
- return self.ipyRechargeRebateGoldTemplateCache[index]
def GetActGrowupBuyCount(self):
self.CheckLoadData("ActGrowupBuy")
@@ -7496,34 +6812,6 @@
self.CheckLoadData("CrossFamilyFlagwarZoneMap")
return self.ipyCrossFamilyFlagwarZoneMapCache[index]
- def GetCoatCount(self):
- self.CheckLoadData("Coat")
- return self.ipyCoatLen
- def GetCoatByIndex(self, index):
- self.CheckLoadData("Coat")
- return self.ipyCoatCache[index]
-
- def GetCoatChestUpCount(self):
- self.CheckLoadData("CoatChestUp")
- return self.ipyCoatChestUpLen
- def GetCoatChestUpByIndex(self, index):
- self.CheckLoadData("CoatChestUp")
- return self.ipyCoatChestUpCache[index]
-
- def GetActWeekPartyCount(self):
- self.CheckLoadData("ActWeekParty")
- return self.ipyActWeekPartyLen
- def GetActWeekPartyByIndex(self, index):
- self.CheckLoadData("ActWeekParty")
- return self.ipyActWeekPartyCache[index]
-
- def GetWeekPartyCount(self):
- self.CheckLoadData("WeekParty")
- return self.ipyWeekPartyLen
- def GetWeekPartyByIndex(self, index):
- self.CheckLoadData("WeekParty")
- return self.ipyWeekPartyCache[index]
-
def GetActYunshiCount(self):
self.CheckLoadData("ActYunshi")
return self.ipyActYunshiLen
@@ -7629,20 +6917,6 @@
self.CheckLoadData("ActFeastWishPool")
return self.ipyActFeastWishPoolCache[index]
- def GetActFeastWeekPartyCount(self):
- self.CheckLoadData("ActFeastWeekParty")
- return self.ipyActFeastWeekPartyLen
- def GetActFeastWeekPartyByIndex(self, index):
- self.CheckLoadData("ActFeastWeekParty")
- return self.ipyActFeastWeekPartyCache[index]
-
- def GetFeastWeekPartyCount(self):
- self.CheckLoadData("FeastWeekParty")
- return self.ipyFeastWeekPartyLen
- def GetFeastWeekPartyByIndex(self, index):
- self.CheckLoadData("FeastWeekParty")
- return self.ipyFeastWeekPartyCache[index]
-
def GetNewAllPeoplePartyCount(self):
self.CheckLoadData("NewAllPeopleParty")
return self.ipyNewAllPeoplePartyLen
@@ -7670,20 +6944,6 @@
def GetLuckyTreasureTemplateByIndex(self, index):
self.CheckLoadData("LuckyTreasureTemplate")
return self.ipyLuckyTreasureTemplateCache[index]
-
- def GetCrossActCTGBillboardDabiaoCount(self):
- self.CheckLoadData("CrossActCTGBillboardDabiao")
- return self.ipyCrossActCTGBillboardDabiaoLen
- def GetCrossActCTGBillboardDabiaoByIndex(self, index):
- self.CheckLoadData("CrossActCTGBillboardDabiao")
- return self.ipyCrossActCTGBillboardDabiaoCache[index]
-
- def GetCrossActCTGBillboardOrderCount(self):
- self.CheckLoadData("CrossActCTGBillboardOrder")
- return self.ipyCrossActCTGBillboardOrderLen
- def GetCrossActCTGBillboardOrderByIndex(self, index):
- self.CheckLoadData("CrossActCTGBillboardOrder")
- return self.ipyCrossActCTGBillboardOrderCache[index]
def GetEquipPlaceIndexMapCount(self):
self.CheckLoadData("EquipPlaceIndexMap")
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_Chests.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_Chests.py
index ab9923a..8cd26bc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_Chests.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_Chests.py
@@ -20,13 +20,10 @@
import ItemCommon
import PlayerControl
import IpyGameDataPY
-import IPY_GameWorld
import ItemControler
-import PlayerRune
import NPCCommon
import ChConfig
import ChEquip
-import ChItem
import random
import math
@@ -266,10 +263,6 @@
return False
# 符印判断是否已经解锁
- if itemData.GetType() == ChConfig.Def_ItemType_Rune:
- if not PlayerRune.GetIsOpenByRuneID(curPlayer, itemID):
- GameWorld.DebugLog("此符印未解锁无法开出! chestsItemID=%s,itemID=%s" % (chestsItemID, itemID))
- continue
curRate = rate if i == 0 else (rate - randItemList[i - 1][0])
preRate = 0 if not resetRandItemList else resetRandItemList[-1][0]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AICommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AICommon.py
index c71773f..72d8ac6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AICommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AICommon.py
@@ -28,7 +28,6 @@
import OperControlManager
import SkillCommon
import SkillShell
-import PetControl
import ReadChConfig
import GameObj
import FBLogic
@@ -335,22 +334,6 @@
SkillCommon.SetSkillRemainTime(curNPCSkill, 0, tick, curNPC)
useSkill = changeSkill
#GameWorld.DebugLog("----随机技能 %s"%useSkill.GetSkillID())
-
- #===========================================================================
- # 改成被动触发
- # if PetControl.IsPet(curNPC):
- # petOwner = PetControl.GetPetOwner(curNPC)
- #
- # if petOwner == None:
- # GameWorld.ErrLog("宠物(%s)找不到主人"%curNPC.GetRolePet().PetID)
- # return False
- #
- # #血量条件判定
- # effect = SkillCommon.GetSkillEffectByEffectID(useSkill, ChConfig.Def_Skill_Effect_HPPerLimit)
- # if effect:
- # if GameObj.GetHP(petOwner)*ChConfig.Def_MaxRateValue/GameObj.GetMaxHP(petOwner) >= effect.GetEffectValue(0):
- # return False
- #===========================================================================
skillTag = SkillShell.GetSkillAffectTag(useSkill)
skillAim = SkillShell.GetSkillFireAim(useSkill)
@@ -360,22 +343,8 @@
#释放自身类技能
return SkillShell.NPCUseSkill(curNPC, useSkill, tick)
- #---对宠物主人释放---
- if skillTag == ChConfig.Def_UseSkillTag_PetMaster:
- if not PetControl.IsPet(curNPC):
- GameWorld.ErrLog("该NPC非宠物,无法获得主人释放技能")
- return False
-
- petOwner = PetControl.GetPetOwner(curNPC)
-
- if petOwner == None:
- GameWorld.ErrLog("宠物(%s)对主人释放技能,找不到主人"%curNPC.GetRolePet().PetID)
- return False
-
- curTag = petOwner
-
# 召唤兽对主人释放技能
- elif skillTag == ChConfig.Def_UseSkillTag_SummonMaster:
+ if skillTag == ChConfig.Def_UseSkillTag_SummonMaster:
if not NPCCommon.IsSummonNPC(curNPC):
GameWorld.ErrLog("该NPC非召唤兽,无法获得主人释放技能")
return False
@@ -449,9 +418,8 @@
def DoAutoUseSkill(curNPC, curTag, tagDist, tick):
#攻击僵持中
if tick - curNPC.GetAttackTick() < curNPC.GetAtkInterval():
- if not PetControl.IsPet(curNPC):
- #GameWorld.Log('攻击僵持中')
- return False
+ #GameWorld.Log('攻击僵持中')
+ return False
npcID = curNPC.GetNPCID()
npcAITrigger = ReadChConfig.GetEvalChConfig("NPCLogic_AI186_Trigger")
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_104.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_104.py
deleted file mode 100644
index 7456a30..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_104.py
+++ /dev/null
@@ -1,267 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-#
-##@package AIType_104
-# @todo: 宠物AI
-#
-# @author chenxuewei
-# @date 2010-06-26
-# @version 2.2
-#
-# @change: "2010-06-28 20:56" panwei 宠物空闲时按表格数值回血
-# @change: "2010-07-02 13:40" chenxuewei 宠物跟随主人攻击,在攻击前清空其自身所有仇恨值。
-# @change: "2010-07-13 19:30" panwei 修改宠物AI
-# @change: "2010-07-14 18:10" panwei 修改宠物AI
-# @change: "2010-07-29 17:00" panwei 宠物验证逻辑提到入口处
-
-# @change: "2010-08-04 15:20" panwei 宠物新增自动释放技能逻辑
-# @change: "2010-09-02 16:15" panwei 宠物移动方式修改
-# @change: "2010-09-09 13:50" panwei 宠物停止矫正坐标函数修改
-# @change: "2010-09-26 16:45" panwei 宠物移动逻辑判定修改
-# @change: "2010-10-21 17:45" Alee 宠物添加AI模式,跟随AI
-# @change: "2011-07-01 12:40" Alee 防沉迷限制
-# @change: "2017-02-15 10:00" xdh 和主人在同一个位置时,宠物跑开
-#------------------------------------------------------------------------------
-"""Version = 2017-02-15 10:00"""
-#---------------------------------------------------------------------
-#导入
-import IPY_GameWorld
-import GameWorld
-import NPCCommon
-import BaseAttack
-import ChConfig
-import AICommon
-import SkillShell
-import SkillCommon
-import PetControl
-import GameMap
-import GameObj
-#---------------------------------------------------------------------
-## 初始化
-# @param rolePet 宠物实例
-# @return None
-# @remarks 初始化
-def DoInit(rolePet):
- rolePet.GetNPCAngry().Init(ChConfig.Def_Pet_Angry_Count)
- return
-#---------------------------------------------------------------------
-## 执行AI
-# @param rolePet 宠物实例
-# @param tick 当前时间
-# @return None
-# @remarks 执行AI
-def ProcessAI(rolePet, tick):
- #---查找宠物主人---
- curPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, rolePet)
-
- if curPlayer == None:
- GameWorld.ErrLog('宠物 = %s无法查找主人, AI执行失败'%(rolePet.GetID()))
- return
-
- #---刷新宠物的Buff---
- rolePetControl = NPCCommon.NPCControl(rolePet)
- rolePetControl.RefreshBuffState(tick)
- if GameObj.GetHP(rolePet) == 0 :
- # BUFF刷新中可能会导致NPC死亡
- return
-
- #---宠物移动中---
- if rolePet.GetCurAction() == IPY_GameWorld.laNPCMove and \
- __SummonOutRefreshArea(curPlayer, rolePet, rolePetControl):
- return
-
- #---AI模式是 战斗模式---
- if rolePet.GetAIMode() == IPY_GameWorld.pamAttack:
-
- #防沉迷
- if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_Wallow_LV) > ChConfig.Def_GameWallow_LV_First:
- return
-
- #---优先攻击主人打的对象---
- masterAttackObj = AICommon.PlayerSummonAkObj(rolePet, tick, False)
-
- if masterAttackObj != None:
- __NPCFight(curPlayer, rolePet, masterAttackObj.GetID(), masterAttackObj.GetGameObjType(), tick)
- return
-
- #---攻击自己仇恨列表中的对象---
- #刷新自己仇恨度列表
- rolePetControl.RefreshAngryList(tick)
-
- curAngry = rolePetControl.GetMaxAngryTag()
-
- if curAngry != None:
- __NPCFight(curPlayer, rolePet, curAngry.GetObjID(), curAngry.GetObjType(), tick)
- return
-
- #---无仇恨目标逻辑处理---
- curNPCAction = rolePet.GetCurAction()
-
- #空闲状态处理
- if curNPCAction == IPY_GameWorld.laNPCNull:
- #宠物空闲状态下回血
- RestoreHP(rolePet, tick)
-
- #执行跟随移动逻辑
- if __SummonMove(curPlayer, rolePet, rolePetControl):
- return
-
- #宠物不需要移动, 修正宠物的位置, 不让重叠
- rolePetControl.FixTagPos(rolePet.GetPosX(), rolePet.GetPosY(), 1)
- return
-
- #攻击状态处理
- if curNPCAction == IPY_GameWorld.laNPCAttack:
- rolePet.SetCurAction(IPY_GameWorld.laNPCNull)
-
- return
-
-#---------------------------------------------------------------------
-## 战斗
-# @param curPlayer 玩家实例
-# @param rolePet 宠物实例
-# @param tagID 攻击目标ID
-# @param tagType 攻击目标类型
-# @param tick 当前时间
-# @return None
-# @remarks 战斗
-def __NPCFight(curPlayer, rolePet, tagID, tagType, tick):
- rolePetControl = NPCCommon.NPCControl(rolePet)
-
- #追击返回
- if __SummonOutRefreshArea(curPlayer, rolePet, rolePetControl):
- return
-
- #开始攻击
- curTag = GameWorld.GetObj(tagID, tagType)
-
- if curTag == None or GameObj.GetHP(curTag) <= 0:
- return
-
- tagDist = GameWorld.GetDist(rolePet.GetPosX(), rolePet.GetPosY(), curTag.GetPosX(), curTag.GetPosY())
-
- #---优先释放技能---
- if AICommon.DoAutoUseSkill(rolePet, curTag, tagDist, tick):
- return
-
- #---释放普通攻击---
- if tagDist > rolePet.GetAtkDist():
- rolePetControl.MoveToObj_Detel(curTag)
- return
-
- #攻击逻辑
- if tick - rolePet.GetAttackTick() < rolePet.GetAtkInterval():
- #攻击间隔没有到, 返回
- return
-
- if rolePetControl.FixTagPos(curTag.GetPosX(), curTag.GetPosY()):
- #修正这个NPC的站立位置
- return
-
- #普通攻击
- BaseAttack.Attack(rolePet, curTag, None, tick)
- return
-#---------------------------------------------------------------------
-## 召唤兽移动
-# @param rolePet 宠物实例
-# @param curPlayer 当前玩家
-# @param rolePetControl 宠物控制器
-# @return 布尔值
-# @remarks 召唤兽移动
-def __SummonMove(curPlayer, rolePet, rolePetControl):
- dist = GameWorld.GetDist(rolePet.GetPosX(), rolePet.GetPosY(), curPlayer.GetPosX(), curPlayer.GetPosY())
- #停止距离
- stopDist = 3
- #跟随距离
- followDist = ChConfig.Def_Screen_Area
-
- if dist <=0: #和主人在同一个位置时,宠物跑开
- resultPos = GameMap.GetEmptyPlaceInArea(rolePet.GetPosX(), rolePet.GetPosY(), 2)
- moveDestX = resultPos.GetPosX()
- moveDestY = resultPos.GetPosY()
-
- if moveDestX != rolePet.GetPosX() or moveDestY != rolePet.GetPosY():
- #切换至快速移动状态
- NPCCommon.ChangeNPCMoveType(rolePet, IPY_GameWorld.mtRun)
- #NPC开始移动
- rolePet.Move(moveDestX, moveDestY)
- return True
-
- if dist < stopDist:
- return False
-
- if dist < followDist:
- rolePetControl.MoveToObj_Detel(curPlayer, 1)
- else:
- #瞬间移动
- __SummonResetPos(curPlayer, rolePet, rolePetControl)
-
- return True
-#---------------------------------------------------------------------
-## 召唤兽超过区间
-# @param curPlayer 玩家实例
-# @param rolePet 宠物实例
-# @param npcControl npc控制类
-# @return 布尔值
-# @remarks 召唤兽超过区间
-def __SummonOutRefreshArea(curPlayer, rolePet, npcControl):
- dist = GameWorld.GetDist(rolePet.GetPosX(), rolePet.GetPosY(), curPlayer.GetPosX(), curPlayer.GetPosY())
-
- if dist < ChConfig.Def_PlayerSight_Default:
- return False
-
- #重置位置
- __SummonResetPos(curPlayer, rolePet, npcControl)
- return True
-
-#---------------------------------------------------------------------
-## 重置位置
-# @param curPlayer 当前对象
-# @param rolePet 宠物实例
-# @param rolePetControl 宠物控制器
-# @return None
-# @remarks 重置位置
-def __SummonResetPos(curPlayer, rolePet, rolePetControl):
- #清空仇恨,清空伤血列表
- rolePetControl.ClearNPCAngry()
- rolePetControl.ClearNPCHurtList()
-
- #重置坐标
- moveDestX, moveDestY = rolePetControl.GetMoveNearPos(curPlayer.GetPosX(), curPlayer.GetPosY(), 1)
- rolePet.ResetPos(moveDestX, moveDestY)
-
- #重置NPC为空闲状态
- rolePet.SetCurAction(IPY_GameWorld.laNPCNull)
- return
-
-#---------------------------------------------------------------------
-##宠物空闲状态回血
-# @param curNPC NPC实例
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 宠物空闲状态回血
-def RestoreHP(rolePet, tick):
- curHP = GameObj.GetHP(rolePet)
- maxHP = GameObj.GetMaxHP(rolePet)
-
- if curHP == maxHP:
- #满血了
- return
-
- if tick - rolePet.GetRestoreTime() < ChConfig.Def_Pet_ProcessHP_Tick:
- #恢复时间未到
- return
-
- #设置当前时间为恢复起始时间
- rolePet.SetRestoreTime(tick)
-
- #--设置回血
- hpRestore = rolePet.GetHPRestore()
-
- if hpRestore == 0:
- return
-
- PetControl.AddPetHP(rolePet, hpRestore)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_105.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_105.py
deleted file mode 100644
index c62bf78..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_105.py
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-# @todo: 宠物AI
-#
-# @author: Alee
-# @date 2017-11-25 下午05:33:43
-# @version 1.0
-#
-# @note: 宠物同时跟随人物移动和战斗
-#
-#---------------------------------------------------------------------
-#导入
-import NPCCommon
-import IPY_GameWorld
-import GameWorld
-import SkillCommon
-import AICommon
-import ChConfig
-import GameObj
-import PetControl
-
-Def_LastAI1ProTick = "LastAI1ProTick" # 最后一次执行tick
-
-#---------------------------------------------------------------------
-## 初始化
-# @param rolePet 宠物实例
-# @return None
-# @remarks 初始化
-def DoInit(rolePet):
- rolePet.GetNPCAngry().Init(1)
- return
-#---------------------------------------------------------------------
-## 执行AI
-# @param rolePet 宠物实例
-# @param tick 当前时间
-# @return None
-# @remarks 执行AI
-def ProcessAI(rolePet, tick):
- #===========================================================================
- # ## 执行频率, 根据人数降低---------------------------
- # if tick - rolePet.GetDictByKey(Def_LastAI1ProTick) < 3000:
- # return
- # rolePet.SetDict(Def_LastAI1ProTick, tick)
- # #-------------------------------------------------------
- #===========================================================================
-
- curPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, rolePet)
-
- if curPlayer == None:
- GameWorld.ErrLog('宠物 = %s无法查找主人, AI执行失败'%(rolePet.GetID()))
- return
-
- rolePetControl = NPCCommon.NPCControl(rolePet)
- rolePetControl.RefreshBuffState(tick)
-
- dist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), rolePet.GetPosX(), rolePet.GetPosY())
- if dist > 12:
- # 发生传送等情况导致距离突然过远
- petControl = NPCCommon.NPCControl(rolePet)
- posX, posY = petControl.GetMoveNearPos(curPlayer.GetPosX(), curPlayer.GetPosY(), 1)
- rolePet.ResetPos(posX, posY)
-
-
- if tick - rolePet.GetAttackTick() >= rolePet.GetAtkInterval():
- PetControl.PetFight(curPlayer, tick)
-
- #===========================================================================
- # skillManager = rolePet.GetSkillManager()
- # for index in range(0, skillManager.GetSkillCount()):
- # useSkill = skillManager.GetSkillByIndex(index)
- # #已经到尾部了
- # if not useSkill or useSkill.GetSkillTypeID() == 0:
- # break
- #
- # if SkillCommon.isPassiveSkill(useSkill):
- # #GameWorld.Log('被动技能不释放不释放 = %s'%(useSkill.GetSkillName()))
- # continue
- #
- # effect = SkillCommon.GetSkillEffectByEffectID(useSkill, ChConfig.Def_Skill_Effect_HPPerLimit)
- # if not effect:
- # continue
- #
- # if GameObj.GetHP(curPlayer)*ChConfig.Def_MaxRateValue/GameObj.GetMaxHP(curPlayer) >= effect.GetEffectValue(0):
- # continue
- #
- # AICommon.DoNPCUseSkill(rolePet, curPlayer, useSkill, 0, tick)
- #===========================================================================
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index fcd8663..b5fde3d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -23,14 +23,12 @@
import SkillShell
import BuffSkill
import BaseAttack
-import ChNetSendPack
import SkillCommon
import AttackCommon
import ItemControler
import ItemCommon
import FBLogic
import ReadChConfig
-import PetControl
import NPCAI
import OperControlManager
import ShareDefine
@@ -40,21 +38,11 @@
import DataRecordPack
import NetPackCommon
import FBCommon
-import PlayerPrestigeSys
import FormulaControl
-import PlayerCrossYaomoBoss
-import PlayerActCollectWords
-import PlayerTongTianLing
-import CrossPlayerData
-import PlayerFeastWish
-import PlayerWeekParty
import NPCRealmRefresh
-import PlayerActLogin
import PlayerActTask
-#import PlayerZhanling
import IpyGameDataPY
import PlayerState
-import TurnAttack
import PyGameData
import GameObj
import ChNPC
@@ -331,8 +319,7 @@
ownerDetail = GetSummonOwnerDetel(npcObj)
elif npcObjType == IPY_GameWorld.gnotPet:
- #查找宠物主人
- ownerDetail = PetControl.GetPetOwner(npcObj)
+ pass
return ownerDetail
#---------------------------------------------------------------------
@@ -821,9 +808,6 @@
ChNPC.OnNPCSetDead(curNPC)
- if npcid == IpyGameDataPY.GetFuncCfg("CrossYaomoBoss", 1):
- PlayerCrossYaomoBoss.OnCrossYaomoBossDead(curNPC)
-
# 清除队伍成员伤血列表
AttackCommon.ClearTeamPlayerHurtValue(curNPC)
if curNPC.GetType() == ChConfig.ntRobot:
@@ -2266,7 +2250,6 @@
#宠物特殊处理
if curNPC.GetGameNPCObjType() == IPY_GameWorld.gnotPet:
- PetControl.RefurbishPetAttr(curNPC, canSyncClient)
return
DoNPCAttrStrengthen(curNPC, isReborn)
@@ -2504,7 +2487,6 @@
#宠物死亡调用独立接口
if curNPC_GameNPCObjType == IPY_GameWorld.gnotPet:
- PetControl.SetPetDead(curNPC)
return
#---通用死亡逻辑---
@@ -3122,7 +3104,6 @@
else:
if GetNPCLV(curNPC) >= curPlayer.GetLV() - IpyGameDataPY.GetFuncCfg('DailyQuestKillMonster'):
PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_KillNPC)
- #PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1)
if ChConfig.IsGameBoss(curNPC):
OnPlayerKillBoss(curPlayer, npcID, mapID, False)
@@ -4092,8 +4073,6 @@
return
# 增加购买次数
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Boss_KillCntBuyCnt%killBossMark, hasBuyCnt + 1)
-
- CrossPlayerData.SendMergePlayerDataNow(curPlayer)
return
#// A2 23 NPC秀结束 #tagCMNPCShowEnd
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 a523967..2deb268 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -29,7 +29,6 @@
import FunctionNPCCommon
import PlayerGMOper
import ReadChConfig
-import PetControl
import OperControlManager
import ShareDefine
import NetPackCommon
@@ -39,7 +38,6 @@
import PlayerLVAward
import PlayerGoldGift
import PlayerSignDay
-import PlayerPet
import PlayerPrestigeSys
import PlayerFamily
import PlayerLoginDayAward
@@ -49,53 +47,38 @@
import PlayerWishingWell
import PlayerSuccess
import PlayerFreeGoods
-import PlayerCrossRealmPK
-import PlayerCrossChampionship
import GameFuncComm
import PlayerFamilyTaofa
-import PlayerWeekParty
-import PlayerFeastWeekParty
import PlayerFeastLogin
import PlayerFeastWish
import PlayerActLogin
import PlayerTreasure
-import PlayerRune
import IpyGameDataPY
import EventReport
import PassiveBuffEffMng
import PlayerFlashSale
import PlayerFlashGiftbag
import PlayerDailyGiftbag
-import PlayerCostRebate
import PlayerActBuyOne
import PlayerActGrowupBuy
import PlayerActCollectWords
import PlayerActTotalRecharge
-import PlayerActRechargePrize
import PlayerActLianqi
import PlayerActGodGift
import PlayerActFamilyCTGAssist
-import PlayerActRechargeRebateGold
import PlayerActManyDayRecharge
import PlayerActSingleRecharge
import PlayerSpringSale
-import PlayerCrossYaomoBoss
-import PlayerLuckyCloudBuy
import PlayerLuckyTreasure
-import CrossActCTGBillboard
-import CrossActAllRecharge
import PlayerFuncSysPrivilege
import PlayerActTurntable
-import PlayerTongTianLing
import OpenServerActivity
-import CrossRealmPlayer
import ChNetSendPack
import PlayerArena
import PyGameData
import PlayerCoin
import PlayerCharm
import PlayerDogz
-import PlayerCoat
import PlayerFB
import PlayerFaQi
import SkillShell
@@ -257,11 +240,6 @@
__Sync_ClientBuff(curPlayer)
PlayerState.Sync_PKBossState(curPlayer)
-
- if PlayerControl.GetCrossMapID(curPlayer):
- CrossRealmPlayer.DoExitCrossRealm(curPlayer)
-
- PetControl.DoLogic_PetLoadMapOK(curPlayer)
# 恢复视野,刷新自己的视野
curPlayer.SetVisible(True)
@@ -457,8 +435,6 @@
DataRecordPack.DR_PlayerLogin(curPlayer)
EventReport.WriteEvent_login(curPlayer)
- #---玩家上线, 宠物逻辑处理---
- #PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
return
leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer)
@@ -514,10 +490,6 @@
#PK模式
#SyncPKModel(curPlayer)
- #---玩家上线, 宠物逻辑处理---
- #PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
- #PlayerPet.OnPlayerPetLogin(curPlayer)
-
# 通知等级奖励领取记录
PlayerLVAward.Sync_LVAwardGetRecordInfo(curPlayer)
@@ -568,16 +540,6 @@
PlayerFamily.OnPlayerLogin(curPlayer, tick)
- # 时装
- PlayerCoat.OnLogin_Coat(curPlayer)
-
- # 跨服PK
- PlayerCrossRealmPK.DoPlayerLogin(curPlayer)
- PlayerCrossChampionship.DoPlayerLogin(curPlayer)
-
- # 幸运云购
- PlayerLuckyCloudBuy.OnPlayerLogin(curPlayer)
-
# 竞技场
PlayerArena.OnLogin(curPlayer)
@@ -586,19 +548,8 @@
PlayerControl.NotifyUseMoneyTotal(curPlayer)
#通知基础属性
#NotifyPlayerBasePoint(curPlayer)
-
- #跨服充值排行
- CrossActCTGBillboard.OnPlayerLogin(curPlayer)
- #跨服全民充值
- CrossActAllRecharge.OnPlayerLogin(curPlayer)
- #消费返利
- PlayerCostRebate.OnPlayerLogin(curPlayer)
#累计充值
PlayerActTotalRecharge.OnPlayerLogin(curPlayer)
- #累计充值返利仙玉
- PlayerActRechargeRebateGold.OnPlayerLogin(curPlayer)
- #充值返利
- PlayerActRechargePrize.OnPlayerLogin(curPlayer)
#成长必买
PlayerActGrowupBuy.OnPlayerLogin(curPlayer)
#限时特惠
@@ -616,16 +567,12 @@
#集字活动
PlayerActCollectWords.OnPlayerLogin(curPlayer)
ChItem.Sync_ItemDayUseCnt(curPlayer)
- # 符印登录通知
- PlayerRune.PlayerRuneLogin(curPlayer)
# 商店物品购买次数登录通知
FunctionNPCCommon.ShopItemOnLogin(curPlayer)
# 通知设置的被动功法
#PassiveBuffEffMng.OnLoginGFPassive(curPlayer)
# 极品白拿
PlayerFreeGoods.OnLogin(curPlayer)
- # 周狂欢活动
- PlayerWeekParty.OnLogin(curPlayer)
# 购买次数礼包活动
PlayerActBuyCountGift.OnPlayerLogin(curPlayer)
# 任务活动
@@ -636,8 +583,6 @@
PlayerActLunhuidian.OnPlayerLogin(curPlayer)
# 登录活动
PlayerActLoginNew.OnPlayerLogin(curPlayer)
- # 节日巡礼活动
- PlayerFeastWeekParty.OnLogin(curPlayer)
# 节日登录活动
PlayerFeastLogin.OnPlayerLogin(curPlayer)
# 节日祝福活动
@@ -669,8 +614,6 @@
PlayerFB.OnLogin(curPlayer)
#技能专精信息
#SkillShell.NotifyElementSkillInfo(curPlayer)
- #通天令
- PlayerTongTianLing.OnPlayerLogin(curPlayer)
#创角奖励
Sync_CreateRoleAwardInfo(curPlayer)
#自定义奖励
@@ -1373,9 +1316,6 @@
# GameObj.SetHPFull(curSummon)
#===========================================================================
- #初始化宠物 通知客户端
- PetControl.Sync_PetInfo_ChangeMap(curPlayer, tick)
-
#通知GameServer自己现在的地图
#curPlayer.Sync_GameServer_MapID()
@@ -1585,9 +1525,6 @@
#如果登录的副本,执行进入副本逻辑, 因为有时间响应, 必须在EndLoadMap之后...
FBLogic.DoEnterFBLogic(curPlayer, tick)
-
- #触发切换地图宠物逻辑
- PetControl.DoLogic_PetLoadMapOK(curPlayer)
#---检查是否卡障碍---
curMap = GameWorld.GetMap()
@@ -1989,20 +1926,6 @@
curPlayer.ChangePos(sendPack_DestX, sendPack_DestY)
#curPlayer.SetClientMoveTick(sendPack_WorldTick)
-
- fightPet = curPlayer.GetPetMgr().GetFightPet()
- #无出战宠物
- if fightPet == None:
- return
-
- if GameWorld.GetDist(fightPet.GetPosX(), fightPet.GetPosY(), sendPack_DestX, sendPack_DestY) <= 4:
- #战斗中不频繁移动
- return
-
- #出战宠物同时移动
- PetControl.FightPetFollowMove(curPlayer, sendPack_StartX, sendPack_StartY)
-
-
return
#---------------------------------------------------------------------
@@ -2076,9 +1999,6 @@
# 在UpdatePos 调用间隔内多次调用move会使 m_StartMoveTick 重置,导致无法移动
# 而在 CheckMovePos -> PlayerRefreshPos -> __FixPlayerPos -> ChangePos 造成移动的现象
curPlayer.Move(client_DestX, client_DestY)
-
- #出战宠物同时移动
- #PetControl.FightPetFollowMove(curPlayer, client_DestX, client_DestY, client_StartX, client_StartY)
return
##移动点检查, checkObj 是移动对象(在人镖合一状态下, 输入为骠车
@@ -2298,9 +2218,6 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RouteServerInitOK, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PlayerKey_CrossRegisterMap, 0)
-
- #下线召回宠物
- PetControl.ReCallFightPet(curPlayer)
#离线session
EventReport.WriteEvent_session(curPlayer)
@@ -2953,8 +2870,6 @@
elif rebornType == ChConfig.rebornType_MainCity:
#直接取db中配置的复活点
PlayerControl.PlayerResetWorldPos(curPlayer, gameMap.GetRebornMapID(), gameMap.GetRebornMapX(), gameMap.GetRebornMapY())
- #重新召唤宠物
- PlayerPet.AutoSummonPet(curPlayer)
#复活成功,重置状态
PlayerControl.ChangePlayerAction(curPlayer, IPY_GameWorld.paNull)
@@ -3014,8 +2929,7 @@
# WORD LineID;
#};
def OnEnterCrossServer(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- PlayerControl.PlayerEnterCrossServer(curPlayer, clientData.DataMapID, clientData.LineID)
+ #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
return
#===============================================================================
@@ -3423,9 +3337,6 @@
# 领取极品白拿
elif rewardType == ChConfig.Def_RewardType_FreeGoods:
PlayerFreeGoods.OnGetFreeGoods(curPlayer, dataEx)
- # 领取消费返利奖励
- elif rewardType == ChConfig.Def_RewardType_CostRebate:
- PlayerCostRebate.OnGetCostRebateAward(curPlayer, dataEx, dataExStr)
# 领取累计充值奖励
elif rewardType == ChConfig.Def_RewardType_TotalRecharge:
PlayerActTotalRecharge.OnGetTotalRechargeAward(curPlayer, dataEx, dataExStr)
@@ -3438,21 +3349,9 @@
# 领取许愿池奖励
elif rewardType == ChConfig.Def_RewardType_WishingWell:
PlayerWishingWell.DoGetWishingAward(curPlayer)
- # 领取周狂欢活动奖励
- elif rewardType == ChConfig.Def_RewardType_WeekPartyAct:
- PlayerWeekParty.GetWeekPartyActionAward(curPlayer, dataEx, dataExStr)
- # 领取周狂欢积分奖励
- elif rewardType == ChConfig.Def_RewardType_WeekPartyPoint:
- PlayerWeekParty.GetWeekPartyPointAward(curPlayer, dataEx, dataExStr)
# 领取登录奖励活动奖励
elif rewardType == ChConfig.Def_RewardType_ActLoginAwardAct:
PlayerActLogin.GetLoginAwardActionAward(curPlayer, dataEx, dataExStr)
- # 领取节日巡礼活动奖励
- elif rewardType == ChConfig.Def_RewardType_FeastWeekPartyAct:
- PlayerFeastWeekParty.GetFeastWeekPartyActionAward(curPlayer, dataEx, dataExStr)
- # 领取节日巡礼积分奖励
- elif rewardType == ChConfig.Def_RewardType_FeastWeekPartyPoint:
- PlayerFeastWeekParty.GetFeastWeekPartyPointAward(curPlayer, dataEx, dataExStr)
# 领取节日登录奖励
elif rewardType == ChConfig.Def_RewardType_FeastLogin:
PlayerFeastLogin.GetFeastLoginAward(curPlayer, dataEx)
@@ -3465,15 +3364,6 @@
# 领取任务活动奖励
elif rewardType == ChConfig.Def_RewardType_ActTask:
PlayerActTask.OnGetActTaskAward(curPlayer, dataEx, dataExStr)
- # 领取跨服充值排行活动达标奖励
- elif rewardType == ChConfig.Def_RewardType_CACTGBillboardDabiao:
- CrossActCTGBillboard.GetDabiaoAward(curPlayer, dataEx)
- # 跨服全民充值奖励
- elif rewardType == ChConfig.Def_RewardType_CAAllRecharge:
- CrossActAllRecharge.GetCrossActAllRechargeAward(curPlayer, dataEx)
- # 跨服妖魔boss伤害奖励
- elif rewardType == ChConfig.Def_RewardType_CrossYaomoBossHurt:
- PlayerCrossYaomoBoss.GetCrossYaomoBossHurtAward(curPlayer, dataEx, tick)
# 买一送多活动免费奖励
elif rewardType == ChConfig.Def_RewardType_BuyOne:
PlayerActBuyOne.GetBuyOneFreeAward(curPlayer, dataEx, dataExStr)
@@ -4091,16 +3981,6 @@
curPlayer.ChangePos(sendPack_SeverPosX, sendPack_SeverPosY)
PyNotifyPlayerMove(curPlayer, moveDir, clientPosX, clientPosY, sendPack_SeverPosX, sendPack_SeverPosY, moveType)
curPlayer.SetClientMoveTick(sendPack_WorldTick)
-
- # 后面必须返回True
- fightPet = curPlayer.GetPetMgr().GetFightPet()
- if fightPet:
- #出战宠物同时移动
- if moveType == 0 or tick - fightPet.GetActionTick() > 300:
-
- PetControl.FightPetFollowMove(curPlayer,sendPack_SeverPosX, sendPack_SeverPosY)
- fightPet.SetCurAction(IPY_GameWorld.laNPCNull)
-
return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossActAllRecharge.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossActAllRecharge.py
deleted file mode 100644
index 43cd9fa..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossActAllRecharge.py
+++ /dev/null
@@ -1,171 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.CrossActAllRecharge
-#
-# @todo:跨服全民充值
-# @author hxp
-# @date 2022-10-11
-# @version 1.0
-#
-# 详细描述: 跨服全民充值
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-10-11 19:00"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import ShareDefine
-import PlayerControl
-import NetPackCommon
-import CrossRealmPlayer
-import ChPyNetSendPack
-import ItemControler
-import IPY_GameWorld
-import GameWorld
-
-def OnPlayerLogin(curPlayer):
- isReset = __CheckPlayerCrossActAllRecharge(curPlayer)
- if not isReset:
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_AllRecharge)
- # 活动中同步活动信息
- if actInfo.get(ShareDefine.ActKey_State):
- Sync_CrossActAllRechargePlayerInfo(curPlayer)
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeRMB):
- SendGameServerActRechargeRMB(curPlayer, actInfo)
- return
-
-def RefreshCrossActAllRechargeInfo():
- ## 收到GameServer同步的活动信息,刷新活动信息
- playerManager = GameWorld.GetPlayerManager()
- for index in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(index)
- if not GameWorld.IsNormalPlayer(curPlayer):
- continue
- __CheckPlayerCrossActAllRecharge(curPlayer)
-
- return
-
-def __CheckPlayerCrossActAllRecharge(curPlayer):
-
- playerID = curPlayer.GetPlayerID()
-
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_AllRecharge)
- cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
- actID = actInfo.get(ShareDefine.ActKey_ID, 0)
- state = actInfo.get(ShareDefine.ActKey_State, 0)
- dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex, 0)
-
- playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeID) # 玩家身上的活动ID
-
- # 活动ID 相同的话不处理
- if actID == playerActID:
- GameWorld.DebugLog("跨服全民充值活动ID不变,不处理!cfgID=%s,dayIndex=%s,actID=%s" % (cfgID, dayIndex, actID), playerID)
- return
-
- GameWorld.DebugLog("跨服全民充值活动重置! cfgID=%s,actID=%s,playerActID=%s,state=%s" % (cfgID, actID, playerActID, state), playerID)
-
- if not state:
- CrossRealmPlayer.NotifyCrossActEnd(curPlayer, ShareDefine.CrossActName_AllRecharge)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_AllRechargeID, actID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_AllRechargeRMB, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_AllRechargeAward, 0)
-
- Sync_CrossActAllRechargePlayerInfo(curPlayer)
- return True
-
-def GetCrossActAllRechargeAward(curPlayer, awardIndex):
- ## 领奖
-
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_AllRecharge)
- state = actInfo.get(ShareDefine.ActKey_State, 0)
- if not state:
- GameWorld.DebugLog("非活动中")
- return
-
- cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
- ipyDataDict = actInfo.get(ShareDefine.ActKey_IpyDataInfo, {})
- if not ipyDataDict:
- return
- zoneID = ipyDataDict.get("ZoneID", 0)
- if not zoneID:
- return
-
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeAward)
- if awardRecord & pow(2, awardIndex):
- GameWorld.DebugLog("已领取过该奖励! awardIndex=%s" % awardIndex, curPlayer.GetPlayerID())
- return
-
- sendMsg = str(["AllRechargeAward", [cfgID, zoneID, awardIndex]])
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "CrossActAllRecharge", sendMsg, len(sendMsg))
- return
-
-def GameServer_CrossActAllRecharge(curPlayer, msgList):
-
- msgType = msgList[0]
-
- if msgType == "AllRechargeAward":
- awardIndex, awardItemList = msgList[1:]
-
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeAward)
- if awardRecord & pow(2, awardIndex):
- GameWorld.DebugLog("已领取过该奖励! awardIndex=%s" % awardIndex, curPlayer.GetPlayerID())
- return
-
- if not ItemControler.CheckPackSpaceEnough(curPlayer, awardItemList):
- return
-
- updAwardRecord = awardRecord | pow(2, awardIndex)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_AllRechargeAward, updAwardRecord)
- GameWorld.Log("领取全民充值奖励: awardIndex=%s" % (awardIndex), curPlayer.GetPlayerID())
-
- Sync_CrossActAllRechargePlayerInfo(curPlayer)
-
- for itemID, itemCount, isAuctionItem in awardItemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem],
- event=["CrossActAllRecharge", False, {}])
- return
-
-def AddCTGRMB(curPlayer, addRMB):
- ## 增加活动已累计充值RMB
-
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_AllRecharge)
- if not actInfo:
- return
-
- if not actInfo.get(ShareDefine.ActKey_State):
- GameWorld.DebugLog("跨服全民充值非活动中! playerServerID=%s" % GameWorld.GetPlayerServerID(curPlayer), curPlayer.GetPlayerID())
- return
-
- totalRMB = min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeRMB) + addRMB, ChConfig.Def_UpperLimit_DWord)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_AllRechargeRMB, totalRMB)
-
- GameWorld.DebugLog("跨服全民充值活动增加玩家累计充值RMB: addRMB=%s,totalRMB=%s" % (addRMB, totalRMB), curPlayer.GetPlayerID())
- Sync_CrossActAllRechargePlayerInfo(curPlayer)
- SendGameServerActRechargeRMB(curPlayer, actInfo)
- return
-
-def SendGameServerActRechargeRMB(curPlayer, actInfo):
- cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
- ipyDataDict = actInfo.get(ShareDefine.ActKey_IpyDataInfo, {})
- if not ipyDataDict:
- return
- zoneID = ipyDataDict.get("ZoneID", 0)
- if not zoneID:
- return
- totalRMB = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeRMB)
- sendMsg = str(["AllRechargeRMB", [cfgID, zoneID, totalRMB]])
- GameWorld.Log("SendGameServerActRechargeRMB: %s" % sendMsg, curPlayer.GetPlayerID())
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "CrossActAllRecharge", sendMsg, len(sendMsg))
- return
-
-def Sync_CrossActAllRechargePlayerInfo(curPlayer):
- ## 通知活动玩家数据信息
- clientPack = ChPyNetSendPack.tagMCCrossActAllRechargePlayerInfo()
- clientPack.CTGRMBTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeRMB)
- clientPack.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeAward)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossActCTGBillboard.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossActCTGBillboard.py
deleted file mode 100644
index f8f3fa2..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossActCTGBillboard.py
+++ /dev/null
@@ -1,309 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.CrossActCTGBillboard
-#
-# @todo:跨服运营活动 - 充值排行
-# @author hxp
-# @date 2020-01-13
-# @version 1.0
-#
-# 详细描述: 跨服运营活动 - 充值排行
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2020-01-13 17:00"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import ShareDefine
-import PlayerControl
-import NetPackCommon
-import PlayerBillboard
-import CrossRealmPlayer
-import ChPyNetSendPack
-import ItemControler
-import IPY_GameWorld
-import IpyGameDataPY
-import GameWorld
-import CommFunc
-
-def OnPlayerLogin(curPlayer):
- isReset = __CheckPlayerCrossActCTGBillboard(curPlayer)
- if not isReset:
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_CTGBillboard)
- # 活动中同步活动信息
- if actInfo.get(ShareDefine.ActKey_State):
- Sync_CrossActCTGBillboardInfo(curPlayer)
- Sync_CrossActCTGBillboardPlayerInfo(curPlayer)
- UpdateCTGRMBCrossBillboard(curPlayer, actInfo)
- return
-
-def RefreshCrossActCTGBillboardInfo():
- ## 收到GameServer同步的活动信息,刷新活动信息
- playerManager = GameWorld.GetPlayerManager()
- for index in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(index)
- if not GameWorld.IsNormalPlayer(curPlayer):
- continue
- __CheckPlayerCrossActCTGBillboard(curPlayer)
- return
-
-def __CheckPlayerCrossActCTGBillboard(curPlayer):
- ## 检查玩家累计充值活动数据信息
-
- playerID = curPlayer.GetPlayerID()
-
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_CTGBillboard)
- cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
- actID = actInfo.get(ShareDefine.ActKey_ID, 0)
- state = actInfo.get(ShareDefine.ActKey_State, 0)
- dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex, 0)
- templateID = actInfo.get(ShareDefine.ActKey_TemplateID, 0)
-
- playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardID) # 玩家身上的活动ID
- playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardTemplateID)
-
- # 活动ID 相同的话不处理
- if actID == playerActID:
- GameWorld.DebugLog("跨服充值排行活动ID不变,不处理!cfgID=%s,dayIndex=%s,templateID=%s" % (cfgID, dayIndex, templateID), playerID)
- if state:
- if playerTemplateID != templateID and templateID:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_CTGBillboardTemplateID, templateID)
- GameWorld.DebugLog(" 活动模板ID变更,更新玩家身上模板ID记录!playerTemplateID=%s,updTemplateID=%s"
- % (playerTemplateID, templateID), playerID)
- Sync_CrossActCTGBillboardInfo(curPlayer)
-
- return
-
- GameWorld.DebugLog("跨服充值排行活动重置! cfgID=%s,actID=%s,playerActID=%s,state=%s" % (cfgID, actID, playerActID, state), playerID)
-
- if not state:
- CrossRealmPlayer.NotifyCrossActEnd(curPlayer, ShareDefine.CrossActName_CTGBillboard)
-
- if playerActID and playerTemplateID:
- __SendDabiaoAwardMail(curPlayer, playerTemplateID)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_CTGBillboardID, actID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_CTGBillboardTemplateID, templateID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_CTGBillboardRMB, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_CTGBillboardAward, 0)
-
- Sync_CrossActCTGBillboardInfo(curPlayer)
- Sync_CrossActCTGBillboardPlayerInfo(curPlayer)
- return True
-
-def __SendDabiaoAwardMail(curPlayer, playerTemplateID):
- ## 补发未领取的达标奖励
-
- totalRMB = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardRMB)
- if not totalRMB:
- return
-
- ipyDataList = IpyGameDataPY.GetIpyGameDataList("CrossActCTGBillboardDabiao", playerTemplateID)
- if not ipyDataList:
- return
-
- playerID = curPlayer.GetPlayerID()
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardAward)
- batchPlayerIDList, batchAddItemList, batchParamList = [], [], []
- for ipyData in ipyDataList:
- ctgNeed = ipyData.GetCTGNeed()
- awardIndex = ipyData.GetAwardIndex()
- if totalRMB < CommFunc.RMBToCoin(ctgNeed):
- continue
- if awardRecord & pow(2, awardIndex):
- continue
- batchPlayerIDList.append([playerID])
- batchAddItemList.append(ipyData.GetAwardItemList())
- batchParamList.append([ctgNeed])
- awardRecord = awardRecord | pow(2, awardIndex)
-
- if not batchPlayerIDList:
- return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_CTGBillboardAward, awardRecord)
-
- GameWorld.DebugLog("补发跨服充值排行活动未领取达标奖励!", playerID)
- PlayerControl.SendMailBatch("CACTGBillboardDabiao", batchPlayerIDList, batchAddItemList, batchParamList)
- return
-
-def GetDabiaoAward(curPlayer, awardIndex):
- ## 手动领取达标奖励
-
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_CTGBillboard)
- state = actInfo.get(ShareDefine.ActKey_State, 0)
- if not state:
- GameWorld.DebugLog("非活动中")
- return
-
- totalRMB = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardRMB)
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardAward)
- if awardRecord & pow(2, awardIndex):
- GameWorld.DebugLog("已领取过该奖励! awardIndex=%s" % awardIndex)
- return
-
- playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardTemplateID)
- ipyDataList = IpyGameDataPY.GetIpyGameDataList("CrossActCTGBillboardDabiao", playerTemplateID)
- if not ipyDataList:
- return
-
- awardItemList = []
- for ipyData in ipyDataList:
- ctgNeed = CommFunc.RMBToCoin(ipyData.GetCTGNeed())
- if awardIndex == ipyData.GetAwardIndex():
- if totalRMB < ctgNeed:
- GameWorld.DebugLog("充值额度未达标,无法领取! awardIndex=%s,totalRMB=%s,ctgNeed=%s"
- % (awardIndex, totalRMB, ctgNeed))
- return
- awardItemList = ipyData.GetAwardItemList()
- break
-
- GameWorld.DebugLog("领取跨服充值活动达标奖励!awardIndex=%s,awardItemList=%s" % (awardIndex, awardItemList))
- if not awardItemList:
- return
-
- if not ItemControler.CheckPackSpaceEnough(curPlayer, awardItemList):
- return
-
- updAwardRecord = awardRecord | pow(2, awardIndex)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_CTGBillboardAward, updAwardRecord)
- Sync_CrossActCTGBillboardPlayerInfo(curPlayer)
-
- for itemID, itemCount, isAuctionItem in awardItemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem],
- event=["CrossActCTGBillboard", False, {}])
-
- return
-
-def AddCTGRMB(curPlayer, addRMB):
- ## 增加活动已累计充值RMB
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_CTGBillboard)
- if not actInfo:
- return
-
- if not actInfo.get(ShareDefine.ActKey_State):
- GameWorld.DebugLog("玩家区服ID跨服充值排行非活动中!playerServerID=%s" % GameWorld.GetPlayerServerID(curPlayer))
- return
-
- totalRMB = min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardRMB) + addRMB, ChConfig.Def_UpperLimit_DWord)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_CTGBillboardRMB, totalRMB)
-
- GameWorld.DebugLog("跨服充值排行活动增加玩家累计充值RMB: addRMB=%s,totalRMB=%s" % (addRMB, totalRMB), curPlayer.GetPlayerID())
- Sync_CrossActCTGBillboardPlayerInfo(curPlayer)
- UpdateCTGRMBCrossBillboard(curPlayer, actInfo)
- return
-
-def UpdateCTGRMBCrossBillboard(curPlayer, actInfo):
- ## 更新跨服充值活动榜
- totalRMB = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardRMB)
- if not totalRMB:
- return
- cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
- if not cfgID:
- return
-
- playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardTemplateID)
- orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("CrossActCTGBillboardOrder", playerTemplateID)
- if not orderIpyDataList:
- return
-
- atleastRMBMin = None
- for orderIpyData in orderIpyDataList:
- atleastRMB = orderIpyData.GetCTGAtleast()
- if atleastRMBMin == None or atleastRMBMin > atleastRMB:
- atleastRMBMin = atleastRMB
-
- if atleastRMBMin == None:
- return
-
- if totalRMB < atleastRMBMin:
- GameWorld.DebugLog("跨服充值排行活动充值额度不足,无法上榜! totalRMB(%s) < atleastRMBMin(%s)"
- % (totalRMB, atleastRMBMin), curPlayer.GetPlayerID())
- return
-
- cmpValue = totalRMB
- PlayerBillboard.UpdatePlayerCrossBillboard(curPlayer, ShareDefine.Def_CBT_ActCTG, cfgID, cmpValue)
- return
-
-def Sync_CrossActCTGBillboardPlayerInfo(curPlayer):
- ## 通知活动玩家数据信息
- playerActInfo = ChPyNetSendPack.tagMCCACTGBillboardPlayerInfo()
- playerActInfo.CTGRMBTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardRMB)
- playerActInfo.DabiaoAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_CTGBillboardAward)
- NetPackCommon.SendFakePack(curPlayer, playerActInfo)
- return
-
-def Sync_CrossActCTGBillboardInfo(curPlayer):
- ## 通知活动信息
-
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_CTGBillboard)
- if not actInfo:
- return
-
- if not actInfo.get(ShareDefine.ActKey_State):
- return
-
- ipyDataDict = actInfo.get(ShareDefine.ActKey_IpyDataInfo, {})
- if not ipyDataDict:
- return 0
-
- templateIDList = ipyDataDict.get("TemplateIDList", [])
- if not templateIDList:
- return
-
- actPack = ChPyNetSendPack.tagMCCACTGBillboardInfo()
- actPack.ServerIDRangeInfo = str(actInfo.get(ShareDefine.ActKey_ServerIDRangeList, []))
- actPack.ServerInfoLen = len(actPack.ServerIDRangeInfo)
- actPack.GroupValue1 = actInfo.get(ShareDefine.ActKey_CfgID, 0)
- actPack.StartDate = ipyDataDict.get("StartDate", "")
- actPack.EndtDate = ipyDataDict.get("EndDate", "")
- actPack.TemplateID = actInfo.get(ShareDefine.ActKey_TemplateID, 0)
- actPack.TempInfo = []
- for templateID in templateIDList:
- tempInfo = ChPyNetSendPack.tagMCCACTGBillboardTempInfo()
-
- # 达标
- tempInfo.TemplateID = templateID
- tempInfo.DabiaoAwardInfo = []
- dabiaoIpyDataList = IpyGameDataPY.GetIpyGameDataList("CrossActCTGBillboardDabiao", templateID)
- if dabiaoIpyDataList:
- for dabiaoIpyData in dabiaoIpyDataList:
- dabiaoInfo = ChPyNetSendPack.tagMCCACTGBillboardDabiao()
- dabiaoInfo.NeedRMB = dabiaoIpyData.GetCTGNeed()
- dabiaoInfo.AwardIndex = dabiaoIpyData.GetAwardIndex()
- dabiaoInfo.AwardItemList = []
- for itemID, itemCount, isBind in dabiaoIpyData.GetAwardItemList():
- itemInfo = ChPyNetSendPack.tagMCCACTGBillboardAwardItem()
- itemInfo.ItemID = itemID
- itemInfo.ItemCount = itemCount
- itemInfo.IsBind = isBind
- dabiaoInfo.AwardItemList.append(itemInfo)
- dabiaoInfo.AwardItemCount = len(dabiaoInfo.AwardItemList)
- tempInfo.DabiaoAwardInfo.append(dabiaoInfo)
- tempInfo.DabiaoAwardCount = len(tempInfo.DabiaoAwardInfo)
-
- # 排行
- tempInfo.OrderAwardInfo = []
- orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("CrossActCTGBillboardOrder", templateID)
- if orderIpyDataList:
- for orderIpyData in orderIpyDataList:
- orderInfo = ChPyNetSendPack.tagMCCACTGBillboardOrder()
- orderInfo.OrderA = orderIpyData.GetOrderA()
- orderInfo.OrderB = orderIpyData.GetOrderB()
- orderInfo.NeedRMB = orderIpyData.GetCTGAtleast()
- orderInfo.AwardItemList = []
- for itemID, itemCount, isBind in orderIpyData.GetAwardItemList():
- itemInfo = ChPyNetSendPack.tagMCCACTGBillboardAwardItem()
- itemInfo.ItemID = itemID
- itemInfo.ItemCount = itemCount
- itemInfo.IsBind = isBind
- orderInfo.AwardItemList.append(itemInfo)
- orderInfo.AwardItemCount = len(orderInfo.AwardItemList)
- tempInfo.OrderAwardInfo.append(orderInfo)
- tempInfo.OrderAwardCount = len(tempInfo.OrderAwardInfo)
-
- actPack.TempInfo.append(tempInfo)
-
- actPack.TemplateCount = len(actPack.TempInfo)
- NetPackCommon.SendFakePack(curPlayer, actPack)
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossPlayerData.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossPlayerData.py
deleted file mode 100644
index 1eb6bd8..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossPlayerData.py
+++ /dev/null
@@ -1,590 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo:
-#
-# @author: Alee
-# @date 2019-1-14 下午11:30:12
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-import GameWorld
-import CommFunc
-import PlayerControl
-import IPY_GameWorld
-import BuffSkill
-import SkillCommon
-import base64
-import ChConfig
-import PyGameData
-import IpyGameDataPY
-import PlayerPet
-import traceback
-import ShareDefine
-import md5
-# 发送格式: 类型+(数量)+数据
-# 向跨服发送的数据类型
-(
-MergeData_Player, # 对比处理
-MergeData_Item, # 对比处理 只算属性的背包 装备 宠物
-MergeData_Skill, # 只处理ID
-MergeData_Buff, # 即时发送
-CrossData_PetState, # 即时发送 宠物出战
-) = range(0, 5)
-
-## 写数据类型定义
-(
-WDT_BYTE,
-WDT_WORD,
-WDT_DWORD,
-WDT_String,
-) = range(4)
-
-CrossDataInfo = {
- CrossData_PetState:[[WDT_DWORD, WDT_BYTE, WDT_BYTE], lambda curObj, valueList:PlayerPet.CrossServer_DoChangePetState(curObj, valueList)],
- }
-
-# 影响跨服战力属性列表
-CrossFightPowerAttrList = [
- [lambda curObj:curObj.GetBaseSTR(), lambda curObj, value:curObj.SetBaseSTR(value)], # 力量
- [lambda curObj:curObj.GetBasePNE(), lambda curObj, value:curObj.SetBasePNE(value)], # 智力
- [lambda curObj:curObj.GetBasePHY(), lambda curObj, value:curObj.SetBasePHY(value)], # 敏捷
- [lambda curObj:curObj.GetBaseCON(), lambda curObj, value:curObj.SetBaseCON(value)], # 体质
- [lambda curObj:curObj.GetLV(), lambda curObj, value:curObj.SetLV(value)], # 等级
- [lambda curObj:curObj.GetOfficialRank(), lambda curObj, value:curObj.SetOfficialRank(value)], # 境界
- [lambda curObj:curObj.GetVIPLv(), lambda curObj, value:curObj.SetVIPLv(value)], # VIP等级
- ]
-
-# 发送主服玩家数据给跨服
-def SendMergeData_Buff(curPlayer, buffID, plusValueList):
- if buffID in [ChConfig.Def_SkillID_LimitSuperBuff]:
- # 不需要处理的buff
- return
- if curPlayer.GetGameObjType() != IPY_GameWorld.gotPlayer:
- return
-
- if GameWorld.IsCrossServer():
- # 非主服
- return
-
- if not PlayerControl.GetCrossMapID(curPlayer):
- # 非跨服中
- return
-
- data = ''
- data = CommFunc.WriteBYTE(data, MergeData_Buff)
- data = CommFunc.WriteDWORD(data, buffID)
- data = CommFunc.WriteBYTE(data, len(plusValueList))
- for value in plusValueList:
- data = CommFunc.WriteDWORD(data, value)
-
-
- #直接用字节流会报错
- data = base64.b64encode(data)
- curPlayer.SendMergePlayerData(data)
- return
-
-
-# 接收子服玩家数据
-def OnMergePlayerData(index, tick):
- if not GameWorld.IsCrossServer():
- # 非跨服
- return
-
- try:
- # 跨服服务器处理
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- pdata = base64.b64decode(curPlayer.GetMergePlayerData())
- if not pdata:
- return
- pos = 0
- dataType, pos = CommFunc.ReadBYTE(pdata, pos)
- if dataType == MergeData_Buff:
- buffID, pos = CommFunc.ReadDWORD(pdata, pos)
- curSkill = GameWorld.GetGameData().GetSkillBySkillID(buffID)
- if not curSkill:
- return
-
- plusValueList = []
- cnt, pos = CommFunc.ReadBYTE(pdata, pos)
- for i in range(cnt):
- value, pos = CommFunc.ReadDWORD(pdata, pos)
- plusValueList.append(value)
-
- buffType = SkillCommon.GetBuffType(curSkill)
- BuffSkill.AddBuffNoRefreshState(curPlayer, buffType, curSkill, tick, plusValueList)
-
- elif dataType == MergeData_Player:
- __ReadMainServerSyncPlayerData(curPlayer, curPlayer.GetMergePlayerData(), pos)
-
- else:
- __ReadCrossData(curPlayer, dataType, curPlayer.GetMergePlayerData(), pos)
-
- except BaseException:
- errorMsg = str(traceback.format_exc())
- GameWorld.RaiseException('接收跨服变更玩家数据错误 \r\n%s' % errorMsg, curPlayer.GetPlayerID())
- return
-
-## ----------------------------------------------------------------------------------------------
-
-def SendDataToCrossServer(curPlayer, dataType, dataList):
- ## 通用的根据类型向跨服发送数据
- if dataType not in CrossDataInfo:
- return
-
- if not IsNeedProcessCrossPlayer(curPlayer):
- return
-
- dataInfo = CrossDataInfo[dataType][0]
- if len(dataList) != len(dataInfo):
- return
-
- data = ''
- data = CommFunc.WriteBYTE(data, dataType)
- for i, wDType in enumerate(dataInfo):
- value = dataList[i]
- if wDType == WDT_BYTE:
- data = CommFunc.WriteBYTE(data, value)
- elif wDType == WDT_WORD:
- data = CommFunc.WriteWORD(data, value)
- elif wDType == WDT_DWORD:
- data = CommFunc.WriteDWORD(data, value)
- elif wDType == WDT_String:
- sLen = len(value)
- data = CommFunc.WriteBYTE(data, sLen)
- data = CommFunc.WriteString(data, sLen, value)
-
- #直接用字节流会报错
- data = base64.b64encode(data)
- curPlayer.SendMergePlayerData(data)
- GameWorld.DebugLog("发送数据到跨服服务器: dataType=%s,dataList=%s" % (dataType, dataList), curPlayer.GetPlayerID())
- return
-
-def __ReadCrossData(curPlayer, dataType, pdata, pos):
- if dataType not in CrossDataInfo:
- return
- dataInfo, callFunc = CrossDataInfo[dataType]
-
- if not callFunc:
- return
-
- dataList = []
- pdata = base64.b64decode(pdata)
-
- for wDType in dataInfo:
- if wDType == WDT_BYTE:
- value, pos = CommFunc.ReadBYTE(pdata, pos)
- elif wDType == WDT_WORD:
- value, pos = CommFunc.ReadWORD(pdata, pos)
- elif wDType == WDT_DWORD:
- value, pos = CommFunc.ReadDWORD(pdata, pos)
- elif wDType == WDT_String:
- sLen, pos = CommFunc.ReadBYTE(pdata, pos)
- value, pos = CommFunc.ReadString(pdata, pos, sLen)
- else:
- continue
- dataList.append(value)
-
- GameWorld.DebugLog("收到主服数据: dataType=%s,dataList=%s" % (dataType, dataList), curPlayer.GetPlayerID())
- callFunc(curPlayer, dataList)
- return
-
-def IsNeedProcessCrossPlayer(curPlayer):
- ## 是否需要处理同步跨服中的玩家数据
- if GameWorld.IsCrossServer():
- return
-
- crossMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_PlayerKey_CrossRegisterMap)
- if not crossMapID:
- crossMapID = PlayerControl.GetCrossMapID(curPlayer)
- if not crossMapID or crossMapID not in ChConfig.Def_CrossMapIDList:
- return
-
- # 不需要处理的跨服地图
- if crossMapID in []:
- return
-
- if not IpyGameDataPY.GetFuncCfg("CrossSyncPlayerData", 1):
- return
-
- return True
-
-def ClearCrossSyncDataCache(curPlayer):
- ## 清除同步跨服数据的临时缓存
- playerID = curPlayer.GetPlayerID()
- PyGameData.g_crossRegPlayerAttrDict.pop(playerID, None)
- PyGameData.g_crossSyncTickDict.pop(playerID, None)
- PyGameData.g_crossPlayerDictChangeInfo.pop(playerID, None)
- PyGameData.g_crossPlayerItemsChangeInfo.pop(playerID, None)
- PyGameData.g_crossPlayerSkillsChangeInfo.pop(playerID, None)
- GameWorld.DebugLog("清除同步跨服数据的临时缓存", playerID)
- return
-
-def OnPlayerCrossReg(curPlayer):
- ## 玩家跨服数据注册
-
- if not IsNeedProcessCrossPlayer(curPlayer):
- return
-
- ClearCrossSyncDataCache(curPlayer)
- attrList = []
- for attrInfo in CrossFightPowerAttrList:
- attrList.append(attrInfo[0](curPlayer))
- playerID = curPlayer.GetPlayerID()
- PyGameData.g_crossRegPlayerAttrDict[playerID] = attrList
-
- OnPlayerCrossRegItems(curPlayer) # 物品
- OnPlayerCrossRegSkills(curPlayer) # 技能
- return
-
-# 物品数据更新
-def OnPlayerCrossRegItems(curPlayer):
- # 影响战力的物品,新功能注意添加,下次需要加上诛仙塔
- PyGameData.g_crossPlayerItemsChangeInfo[curPlayer.GetPlayerID()] = GetPlayerCrossRegItems(curPlayer)
-
- return
-
-def GetPlayerCrossRegItems(curPlayer):
- itemsDict = {}
- # 影响战力的物品,新功能注意添加,下次需要加上诛仙塔
-
- packList = [IPY_GameWorld.rptEquip, ShareDefine.rptPet, ShareDefine.rptDogzEquip]
- for packIndex in packList:
- curPack = curPlayer.GetItemManager().GetPack(packIndex)
- for i in range(curPack.GetCount()):
- curItem = curPack.GetAt(i)
- if not curItem or curItem.IsEmpty():
- continue
-
- itemMark = (curItem.GetItemPlaceType(), curItem.GetItemPlaceIndex())
- itemsDict[itemMark] = md5.md5(curItem.GetB64ItemData()).hexdigest()
-
- return itemsDict
-
-# 技能数据更新
-def OnPlayerCrossRegSkills(curPlayer):
- PyGameData.g_crossPlayerSkillsChangeInfo[curPlayer.GetPlayerID()] = GetPlayerCrossRegSkills(curPlayer)
-
-def GetPlayerCrossRegSkills(curPlayer):
- skills = []
- skillManager = curPlayer.GetSkillManager()
- for i in range(0 , skillManager.GetSkillCount()):
- curSkill = skillManager.GetSkillByIndex(i)
- skills.append(curSkill.GetSkillID())
-
- return skills
-#===============================================================================
-# def test(curPlayer):
-# curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-# curItem = curPack.GetAt(1)
-# curItem.GetB64ItemData()
-# curSingleItem = GameWorld.GetItemFactory().AddItem(curItem.GetB64ItemData())
-# if not curSingleItem:
-# return
-#
-# curItem2 = curPack.GetAt(2)
-# curItem2.AssignItem(curSingleItem)
-#===============================================================================
-
-def OnPlayerFightPowerChange(curPlayer):
- ## 玩家战力变更时
- if not IsNeedProcessCrossPlayer(curPlayer):
- return
- playerID = curPlayer.GetPlayerID()
- if playerID in PyGameData.g_crossSyncTickDict:
- return
- tick = GameWorld.GetGameWorld().GetTick()
- PyGameData.g_crossSyncTickDict[playerID] = tick
- #GameWorld.DebugLog("标记需要同步跨服玩家战力变更相关数据! tick=%s" % tick, curPlayer.GetPlayerID())
- return
-
-def SendMergePlayerDataNow(curPlayer):
- ## 马上同步一次玩家数据到跨服 MergeData_Player
- GameWorld.DebugLog("SendMergePlayerDataNow")
- ProcessCrossPlayer(curPlayer, 0)
- return
-
-def ProcessCrossPlayer(curPlayer, tick):
- ## 跨服状态的本服玩家处理
- if not IsNeedProcessCrossPlayer(curPlayer):
- return
-
- playerID = curPlayer.GetPlayerID()
- # tick 传0时不检查CD,立即同步
- if tick:
- if playerID not in PyGameData.g_crossSyncTickDict:
- return
- setTick = PyGameData.g_crossSyncTickDict[playerID]
- if tick - setTick < IpyGameDataPY.GetFuncCfg("CrossSyncPlayerData", 1) * 1000:
- return
- PyGameData.g_crossSyncTickDict.pop(playerID, None)
- GameWorld.DebugLog("开始同步本服变更的属性...", playerID)
-
- try:
- # 这里只做可能引起战力变化所需要同步的数据
- data = ""
- data = CommFunc.WriteBYTE(data, MergeData_Player)
- data = __WriteSyncPlayerAttrData(curPlayer, data) # 玩家属性
- data = __WriteSyncPlayerDictData(curPlayer, data) # 字典
- data = __WriteSyncPlayerItems(curPlayer, data)# 物品
- data = __WriteSyncPlayerSkills(curPlayer, data)# 技能
-
- #直接用字节流会报错
- data = base64.b64encode(data)
- curPlayer.SendMergePlayerData(data)
- except BaseException:
- errorMsg = str(traceback.format_exc())
- GameWorld.ErrLog('打包跨服变更玩家数据错误 - > %s' % errorMsg, curPlayer.GetPlayerID())
- if GameWorld.GetGameWorld().GetDebugLevel():
- raise Exception(errorMsg)
-
- return
-
-
-
-def __ReadMainServerSyncPlayerData(curPlayer, pdata, pos):
- ## 读取子服同步的玩家战力变更相关属性
-
- GameWorld.DebugLog("收到子服同步的玩家变更数据:", curPlayer.GetPlayerID())
-
- pos = __ReadSyncPlayerAttrData(curPlayer, pdata, pos) # 玩家属性
- pos = __ReadSyncPlayerDictData(curPlayer, pdata, pos) # 字典
- pos = __ReadSyncPlayerItems(curPlayer, pdata, pos) # 物品
- pos = __ReadSyncPlayerSkills(curPlayer, pdata, pos)# 技能
-
- # 强刷一次属性
- PlayerControl.PlayerControl(curPlayer).ReCalcAllState()
- return
-
-def __WriteSyncPlayerAttrData(curPlayer, data):
- ## 写入需要同步的玩家属性
-
- playerID = curPlayer.GetPlayerID()
- if playerID not in PyGameData.g_crossRegPlayerAttrDict:
- return CommFunc.WriteBYTE(data, 0)
- attrList = PyGameData.g_crossRegPlayerAttrDict[playerID]
-
- if len(attrList) != len(CrossFightPowerAttrList):
- return CommFunc.WriteBYTE(data, 0)
-
- changeAttrList = []
- for i, attrInfo in enumerate(CrossFightPowerAttrList):
- befValue = attrList[i]
- curValue = attrInfo[0](curPlayer)
- if befValue == curValue:
- continue
- changeAttrList.append([i, curValue])
- attrList[i] = curValue # 更新记录的值
-
- if not changeAttrList:
- return CommFunc.WriteBYTE(data, 0)
-
- count = len(changeAttrList)
- GameWorld.DebugLog("变更的玩家属性个数: %s" % count)
- data = CommFunc.WriteBYTE(data, count)
- for index, curValue in changeAttrList:
- data = CommFunc.WriteBYTE(data, index)
- data = CommFunc.WriteDWORD(data, curValue)
- GameWorld.DebugLog(" index=%s,value=%s" % (index, curValue))
-
- return data
-
-def __ReadSyncPlayerAttrData(curPlayer, pdata, pos):
- ## 读取同步的玩家属性
- pdata = base64.b64decode(pdata)
- count, pos = CommFunc.ReadBYTE(pdata, pos)
- GameWorld.DebugLog("变更的玩家属性个数: %s" % count)
- for _ in range(count):
- index, pos = CommFunc.ReadBYTE(pdata, pos)
- value, pos = CommFunc.ReadDWORD(pdata, pos)
- if index >= len(CrossFightPowerAttrList):
- break
- CrossFightPowerAttrList[index][1](curPlayer, value) # 设置更新值
- GameWorld.DebugLog(" index=%s,value=%s" % (index, value))
-
- return pos
-
-def __WriteSyncPlayerDictData(curPlayer, data):
- ## 写入需要同步的玩家字典
- playerID = curPlayer.GetPlayerID()
- if playerID not in PyGameData.g_crossPlayerDictChangeInfo:
- return CommFunc.WriteWORD(data, 0)
- changeDict = PyGameData.g_crossPlayerDictChangeInfo.pop(playerID)
-
- count = len(changeDict)
- GameWorld.DebugLog("变更的玩家字典个数: %s" % count)
- data = CommFunc.WriteWORD(data, count)
- for keyInfo, value in changeDict.items():
- key, dType = keyInfo
- keyLen = len(key)
- data = CommFunc.WriteBYTE(data, keyLen)
- data = CommFunc.WriteString(data, keyLen, key)
- data = CommFunc.WriteDWORD(data, value)
- data = CommFunc.WriteBYTE(data, dType)
- GameWorld.DebugLog(" key=%s, value=%s, dType=%s" % (key, value, dType))
-
- return data
-
-def __ReadSyncPlayerDictData(curPlayer, pdata, pos):
- ## 读取同步的玩家字典
- pdata = base64.b64decode(pdata)
- count, pos = CommFunc.ReadWORD(pdata, pos)
- GameWorld.DebugLog("变更的玩家字典个数: %s" % count)
- for _ in xrange(count):
- keyLen, pos = CommFunc.ReadBYTE(pdata, pos)
- key, pos = CommFunc.ReadString(pdata, pos, keyLen)
- value, pos = CommFunc.ReadDWORD(pdata, pos)
- dType, pos = CommFunc.ReadBYTE(pdata, pos)
- PlayerControl.NomalDictSetProperty(curPlayer, key, value, dType)
- GameWorld.DebugLog(" key=%s, value=%s, dType=%s" % (key, value, dType))
-
- return pos
-
-def __WriteSyncPlayerItems(curPlayer, data):
- ## 写入需要同步的玩家物品,包含删除
- playerID = curPlayer.GetPlayerID()
- if playerID not in PyGameData.g_crossPlayerItemsChangeInfo:
- data = CommFunc.WriteBYTE(data, 0) # 删除
- data = CommFunc.WriteBYTE(data, 0) # 增改
- return data
- lastItems = PyGameData.g_crossPlayerItemsChangeInfo[playerID]
- # 对比数据区分增改和删除
- nowItems = GetPlayerCrossRegItems(curPlayer)
-
- delItems = []
- addItems = []
- # --删除物品
- for indexs in lastItems:
- if indexs not in nowItems:
- delItems.append(indexs)
-
- data = CommFunc.WriteBYTE(data, len(delItems)) # 删除数量
- for indexs in delItems:
- data = CommFunc.WriteBYTE(data, indexs[0])
- data = CommFunc.WriteBYTE(data, indexs[1])
-
- # --添加修改物品
- for indexs in nowItems:
- if indexs not in lastItems:
- addItems.append(indexs)
- elif lastItems[indexs] != nowItems[indexs]:
- addItems.append(indexs)
-
- tmpData = ""
- cnt = 0
- for indexs in addItems:
- curPack = curPlayer.GetItemManager().GetPack(indexs[0])
- curItem = curPack.GetAt(indexs[1])
- if not curItem or curItem.IsEmpty():
- continue
- itemData = base64.b64decode(curItem.GetB64ItemData())
- tmpData = CommFunc.WriteWORD(tmpData, len(itemData)) # 物品数据长度
- tmpData = CommFunc.WriteString(tmpData, len(itemData), itemData)
- cnt += 1
-
- data = CommFunc.WriteBYTE(data, cnt) # 增改数量
- data += tmpData
-
- # 同步最新物品数据
- PyGameData.g_crossPlayerItemsChangeInfo[playerID] = nowItems
- return data
-
-def __ReadSyncPlayerItems(curPlayer, pdata, pos):
- ## 读取同步的玩家物品
- pdata = base64.b64decode(pdata)
- count, pos = CommFunc.ReadBYTE(pdata, pos)
- GameWorld.DebugLog("删除的玩家物品个数: %s" % count)
-
- # 删除物品
- for _ in xrange(count):
- packType, pos = CommFunc.ReadBYTE(pdata, pos)
- itemIndex, pos = CommFunc.ReadBYTE(pdata, pos)
- curPack = curPlayer.GetItemManager().GetPack(packType)
- curItem = curPack.GetAt(itemIndex)
- if not curItem or curItem.IsEmpty():
- continue
- curItem.Clear()
-
-
- # 增改物品
- count, pos = CommFunc.ReadBYTE(pdata, pos)
- GameWorld.DebugLog("增改的玩家物品个数: %s" % count)
-
- for _ in xrange(count):
- #def ReadString(buf, pos, _len):
- itemDataLen, pos = CommFunc.ReadWORD(pdata, pos)
- itemData, pos = CommFunc.ReadString(pdata, pos, itemDataLen)
- curSingleItem = GameWorld.GetItemFactory().AddItem(base64.b64encode(itemData))
- if not curSingleItem or curSingleItem.GetItemTypeID() == 0:
- continue
-
- curPack = curPlayer.GetItemManager().GetPack(curSingleItem.GetItemPlaceType())
- curItem = curPack.GetAt(curSingleItem.GetItemPlaceIndex())
- curItem.AssignItem(curSingleItem)
-
- return pos
-
-
-def __WriteSyncPlayerSkills(curPlayer, data):
- ## 写入需要同步的玩家技能,包含删除
- playerID = curPlayer.GetPlayerID()
- if playerID not in PyGameData.g_crossPlayerSkillsChangeInfo:
- data = CommFunc.WriteBYTE(data, 0) # 删除
- data = CommFunc.WriteBYTE(data, 0) # 添加
- return data
-
- # 对比数据区分添加和删除
- lastSkills = PyGameData.g_crossPlayerSkillsChangeInfo[playerID]
- nowSkills = GetPlayerCrossRegSkills(curPlayer)
-
- delSkills = []
- # --删除物品
- for skillID in lastSkills:
- if skillID not in nowSkills:
- delSkills.append(skillID)
-
- data = CommFunc.WriteBYTE(data, len(delSkills)) # 删除数量
- for skillID in delSkills:
- data = CommFunc.WriteDWORD(data, skillID)
-
- # --添加修改物品
- addSkills = []
- for skillID in nowSkills:
- if skillID not in lastSkills:
- addSkills.append(skillID)
-
- data = CommFunc.WriteBYTE(data, len(addSkills)) # 增加数量
- for skillID in addSkills:
- data = CommFunc.WriteDWORD(data, skillID)
-
-
- # 同步最新技能数据
- PyGameData.g_crossPlayerSkillsChangeInfo[playerID] = nowSkills
- return data
-
-def __ReadSyncPlayerSkills(curPlayer, pdata, pos):
- ## 读取同步的玩家技能
- skillManager = curPlayer.GetSkillManager()
- pdata = base64.b64decode(pdata)
- count, pos = CommFunc.ReadBYTE(pdata, pos)
- GameWorld.DebugLog("删除的玩家技能个数: %s" % count)
-
- # 删除技能
- for _ in xrange(count):
- skillID, pos = CommFunc.ReadDWORD(pdata, pos)
- skillManager.DeleteSkillBySkillID(skillID, False)
-
- count, pos = CommFunc.ReadBYTE(pdata, pos)
- GameWorld.DebugLog("增加的玩家技能个数: %s" % count)
-
- # 添加技能
- for _ in xrange(count):
- skillID, pos = CommFunc.ReadDWORD(pdata, pos)
- skillManager.LearnSkillByID(skillID, False)
-
- return pos
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py
deleted file mode 100644
index 5bcb5c8..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.CrossRealmPlayer
-#
-# @todo:跨服玩家
-# @author hxp
-# @date 2018-12-21
-# @version 1.0
-#
-# 详细描述: 跨服玩家
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-12-21 18:00"""
-#-------------------------------------------------------------------------------
-import GameWorld
-import PyGameData
-import ReadChConfig
-import PlayerControl
-import IpyGameDataPY
-import IPY_GameWorld
-import ChPyNetSendPack
-import NetPackCommon
-import ShareDefine
-import ChConfig
-import FBLogic
-
-def GetPlayerCrossPropDataShort(curPlayer):
- ## 获取跨服玩家属性简短信息
- PropData = {}
- PropData["AccID"] = curPlayer.GetAccID()
- PropData["LV"] = curPlayer.GetLV()
- PropData["RealmLV"] = curPlayer.GetOfficialRank()
- PropData["Job"] = curPlayer.GetJob()
- PropData["Name"] = GetCrossPlayerName(curPlayer)
- PropData["FightPower"] = PlayerControl.GetFightPower(curPlayer)
- return PropData
-
-# 获取玩家跨服服务器上的名字
-def GetCrossPlayerName(curPlayer):
- # 通过游戏账号中的平台标志获取名称,目前为spid
- playerName = curPlayer.GetPlayerName()
-
- opName = ReadChConfig.GetPyMongoConfig("Merge", "OpName_%s_%s" % (GameWorld.GetPlayerPlatform(curPlayer),
- GameWorld.GetPlayerServerSID(curPlayer)))
-
- if not opName:
- return playerName
-
- return opName.decode('gbk').encode(GameWorld.GetCharacterEncoding()) + playerName
-
-def GetCrossPlayerZoneID(curPlayer, mapID):
- ## 获取玩家跨服功能所属分区
- serverGroupID = PlayerControl.GetPlayerServerGroupID(curPlayer)
- zoneIpyData = GetCrossZoneIpyDataByServerGroupID(mapID, serverGroupID)
- if not zoneIpyData:
- return 0
- return zoneIpyData.GetZoneID()
-
-def GetCrossZoneIpyDataByServerGroupID(mapID, serverGroupID):
- ## 获取跨服分区
- zoneTypeName = ChConfig.Def_CrossZoneTypeName.get(mapID, "CrossZoneComm")
- crossZoneName = "" #GameWorld.GetCrossZoneName()
- ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition(zoneTypeName, {"CrossZoneName":crossZoneName}, True)
- if not ipyDataList:
- return
- for ipyData in ipyDataList:
- serverGroupIDList = ipyData.GetServerGroupIDList()
- for serverGroupIDInfo in serverGroupIDList:
- if (isinstance(serverGroupIDInfo, tuple) and serverGroupIDInfo[0] <= serverGroupID <= serverGroupIDInfo[1]) \
- or (isinstance(serverGroupIDInfo, int) and serverGroupIDInfo == serverGroupID):
- return ipyData
- GameWorld.ErrLog("没有找到跨服玩法对应分区! mapID=%s, serverGroupID=%s, zoneTypeName=%s" % (mapID, serverGroupID, zoneTypeName))
- return
-
-def GetServerCrossZoneMapIpyData(zoneID, mapID):
- ## 获取本服对应跨服玩法分区地图信息 - 仅适用于固定地图及虚拟分线的跨服玩法
- if mapID not in ChConfig.Def_CrossZoneMapTableName:
- return
- tableName = ChConfig.Def_CrossZoneMapTableName[mapID]
- return IpyGameDataPY.GetIpyGameDataByCondition(tableName, {"ZoneID":zoneID})
-
-def IsCrossServerOpen():
- ## 跨服服务器是否开放中
- return GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossServerOpen)
-
-def SetCrossPlayerAttrValue(curPlayer, setDict, isDelay=True):
- ''' 批量设置玩家属性值
- @param setDict: 设置属性字典 {attrName:attrValue, ...}
- @param isDelay: 是否延迟同步,比如OnDay更新的数值,可能多个玩家同时更新多个属性值,所以需要设置延迟统一同步,其他具体根据功能需要选择是否延迟
- '''
- if not setDict or not PlayerControl.GetCrossMapID(curPlayer):
- return
- playerID = curPlayer.GetPlayerID()
- setType = "PlayerAttr"
- msgList = str([playerID, setType, setDict, isDelay])
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "SetCrossPlayerAttrValue", msgList, len(msgList))
- GameWorld.DebugLog("更新跨服玩家属性: isDelay=%s,%s" % (isDelay, setDict), playerID)
- return
-
-def SetCrossPlayerNomalDict(curPlayer, setDict, isDelay=True):
- ''' 批量设置玩家字典值
- @param setDict: 设置字典, 无 dictType 信息时默认类型0 {dictKey:dictValue, dictKey:[dictValue, dictType], ...}
- @param isDelay: 是否延迟同步,比如OnDay更新的数值,可能多个玩家同时更新多个属性值,所以需要设置延迟统一同步,其他具体根据功能需要选择是否延迟
- '''
- if not setDict or not PlayerControl.GetCrossMapID(curPlayer):
- return
- playerID = curPlayer.GetPlayerID()
- setType = "PlayerDict"
- msgList = str([playerID, setType, setDict, isDelay])
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "SetCrossPlayerAttrValue", msgList, len(msgList))
- GameWorld.DebugLog("更新跨服玩家字典: isDelay=%s,%s" % (isDelay, setDict), playerID)
- return
-
-def ClientServerMsg_SetPlayerAttrValue(curPlayer, playerSetInfoList):
- ## 收到子服同步的设置跨服玩家属性值
- playerID = curPlayer.GetPlayerID()
- GameWorld.DebugLog("收到子服同步的设置跨服玩家属性值: %s" % playerSetInfoList, playerID)
- for setType, setDict in playerSetInfoList:
- if setType == "PlayerDict":
- for dictKey, valeInfo in setDict.items():
- if isinstance(valeInfo, int):
- dictValue, dictType = valeInfo, 0
- else:
- dictValue, dictType = valeInfo
- PlayerControl.NomalDictSetProperty(curPlayer, dictKey, dictValue, dictType)
- GameWorld.DebugLog(" NomalDictSetProperty dictKey=%s, dictValue=%s, dictType=%s" % (dictKey, dictValue, dictType), playerID)
- else:
- for attrName, attrValue in setDict.items():
- if hasattr(curPlayer, attrName):
- getattr(curPlayer, attrName)(attrValue)
- GameWorld.DebugLog(" curPlayer.%s(%s)" % (attrName, attrValue))
- elif hasattr(PlayerControl, attrName):
- getattr(PlayerControl, attrName)(curPlayer, attrValue)
- GameWorld.DebugLog(" PlayerControl.%s(curPlayer, %s)" % (attrName, attrValue), playerID)
- return
-
-#// C1 04 主动退出跨服 #tagCMExitCrossRealm
-#
-#struct tagCMExitCrossRealm
-#{
-# tagHead Head;
-#};
-def OnExitCrossRealm(index, curPackData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
- if not GameWorld.IsCrossServer():
- return
-
- GameWorld.Log("玩家主动退出跨服", curPlayer.GetPlayerID())
-
- FBLogic.DoPlayerLeaveFB(curPlayer, tick)
-
- PlayerExitCrossServer(curPlayer)
- return
-
-def PlayerExitCrossServer(curPlayer):
- ## 玩家退出跨服服务器
-
- # 通知子服玩家退出跨服服务器
- playerID = curPlayer.GetPlayerID()
- serverGroupID = PlayerControl.GetPlayerServerGroupID(curPlayer)
- GameWorld.SendMsgToClientServer(ShareDefine.CrossServerMsg_ExitCrossServer, playerID, [serverGroupID])
-
- # 设置非跨服状态,踢下线
- PlayerControl.SetCrossMapID(curPlayer, 0)
- curPlayer.Kick(IPY_GameWorld.disMapServerClose)
- GameWorld.Log("PlayerExitCrossServer...", curPlayer.GetPlayerID())
- return
-
-def DoEnterCrossRealm(curPlayer):
- ## 玩家进入跨服处理,本服的逻辑处理
- PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
- return
-
-def DoExitCrossRealm(curPlayer):
- ## 玩家退出跨服处理,本服的逻辑处理
- GameWorld.Log("DoExitCrossRealm...", curPlayer.GetPlayerID())
- PlayerControl.SetPlayerSightLevel(curPlayer, 0)
- if PlayerControl.GetCrossMapID(curPlayer):
- PlayerControl.SetCrossMapID(curPlayer, 0)
- return
-
-def GetPlayerCrossActInfo(curPlayer, actName):
- ## 获取跨服玩家对应的跨服活动信息
- actInfoDict = PyGameData.g_crossActInfoDict.get(actName, {})
- if not actInfoDict:
- return {}
- playerServerID = GameWorld.GetPlayerServerID(curPlayer)
- for actInfo in actInfoDict.values():
- if not actInfo.get(ShareDefine.ActKey_State, 0):
- continue
- if ShareDefine.ActKey_ServerIDRangeList not in actInfo:
- continue
- serverIDRangeList = actInfo[ShareDefine.ActKey_ServerIDRangeList]
- if not serverIDRangeList:
- # 全服开启
- return actInfo
- for serverIDA, serverIDB in serverIDRangeList:
- if serverIDA <= playerServerID <= serverIDB:
- return actInfo
- return {}
-
-def GetCrossActInfoByZoneID(actName, zoneID):
- ## 根据分区获取跨服对应的跨服活动信息
- actInfoDict = PyGameData.g_crossActInfoDict.get(actName, {})
- if not actInfoDict:
- return {}
- for actInfo in actInfoDict.values():
- if not actInfo.get(ShareDefine.ActKey_State, 0):
- continue
- ipyDataDict = actInfo.get(ShareDefine.ActKey_IpyDataInfo, {})
- if zoneID == ipyDataDict.get("ZoneID", 0):
- return actInfo
- return {}
-
-def NotifyCrossActEnd(curPlayer, actName):
- '''通知跨服运营活动结束
- 防止跨服服务器与子服时间不一致导致可能出现活动实际已关闭
- 但是前端根据本服服务器时间判断还未关闭,可能引起玩家误以为活动未关闭而引发的一系列问题
- 前端跨服活动显隐规则:
- 显示:根据通知的活动包 且 时间>=活动开始日期 才显示
- 关闭:收到后端通知的活动结束包 或 时间>=活动结束日期 则直接关闭活动界面
- '''
-
- clientPack = ChPyNetSendPack.tagGCCrossActEnd()
- clientPack.ActName = actName
- clientPack.ActNameLen = len(clientPack.ActName)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GMTExec/CrossPK.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GMTExec/CrossPK.py
deleted file mode 100644
index 96a7033..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GMTExec/CrossPK.py
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Script.Player.GMTExec.CrossPK
-#
-# @todo:设置跨服PK玩家数据
-# @author hxp
-# @date 2023-02-16
-# @version 1.0
-#
-# 详细描述: 设置跨服PK玩家数据
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2023-02-16 18:30"""
-#-------------------------------------------------------------------------------
-
-def runMyTest(exec_locals):
- ''' 运行命令函数
- @param exec_locals: GY_Query_GMTExecfile 模块中的 DoLogic 函数 locals()
-
- import 其他模块需要写在此函数里,不然无法引用到
- '''
- import GameWorld
- import PlayerCrossRealmPK
-
- orderId = exec_locals["orderId"]
- cmdInfo = exec_locals["cmdInfo"]
- curPlayer = exec_locals["curPlayer"]
- resultDict = exec_locals["resultDict"] # 建议都进行更新结果字典记录详细处理信息,GY_Query_GMTExecfile 模块会统一写入流向
-
- # 以下为详细处理逻辑
- # ============================ 配置信息 ============================
- '''设置后需要检查数据是否正确同步到跨服服务器
- 1. 后台返回如果有关键字 "errorMsg":"OK",代表本服设置成功;
- 如果 errorMsg 是其他信息,代表本服就已经设置失败了,比如无赛季信息或赛季已结束是无法执行命令的;
- 2. 后台成功代表本服数据已成功设置,需要再检查是否成功同步跨服服务器;直接看榜单,如果已经更新证明同步成功;
- 3. 如果没看到榜单更新,检查跨服服务器日志,搜索 GMSetCrossPK, 看是否有相关错误日志;
- 4. 也可以直接看跨服流向 CrossPK_GMSet_xxx.txt,看是否有相关设置流向记录,有的话代表成功;
- 注:如果跨服数据没有成功同步,则需要后台重复执行命令直到成功
- '''
- danLV = 20 # 段位等级,需与所设置的积分所属段位匹配,参考 K.跨服竞技场段位表
- pkScore = 32000 # 积分
- cWinCount = 50 # 连胜
- # =================================================================
- PlayerCrossRealmPK.GMSetPlayerCrossPKData(curPlayer, danLV, pkScore, cWinCount, resultDict)
- GameWorld.Log("This is MameServer GMT_Execfile run %s. orderId=%s" % (cmdInfo, orderId), curPlayer.GetPlayerID())
- return
-
-exec_locals = locals()
-if exec_locals.get("cmdInfo"):
- runMyTest(exec_locals)
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
deleted file mode 100644
index 818c5a2..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
+++ /dev/null
@@ -1,640 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PetControl
-#
-# @todo:宠物控制器
-# @author hxp
-# @date 2016-4-29
-# @version 1.2
-#
-# @change: "2016-06-15 12:00" hxp 增加宠物守护状态
-# @change: "2016-07-02 16:30" hxp 宠物继承主人移动速度
-#
-# 详细描述: 宠物控制器
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2016-07-02 16:30"""
-#-------------------------------------------------------------------------------
-#宠物C++接口:
-#curPlayer.GetPetMgr -> IPY_RolePetMgr;
-#IPY_RolePetMgr.PetList_Find\GetFightPet\PetList_At -> IPY_RolePet;
-#IPY_RolePet.GetRolePet -> tagIPY_RolePet(结构体);
-#IPY_RolePet.GetPetData -> IPY_Pet;
-#
-#
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import ChConfig
-import GameWorld
-import BuffSkill
-import SkillShell
-import PlayerPet
-import PlayerControl
-import NPCCommon
-import SkillCommon
-import GameMap
-import OperControlManager
-import ShareDefine
-
-import random
-import copy
-import math
-import GameObj
-import AICommon
-import BaseAttack
-import PassiveBuffEffMng
-import ChNetSendPack
-import IpyGameDataPY
-import AttackCommon
-#---------------------------------------------------------------------
-
-DefPetRebornHPRate = 100 # 宠物死亡复活血量百分比
-
-#---------------------------------------------------------------------
-## 检查宠物是否出战中
-# @param curPlayer 玩家对象
-# @param curPetID 宠物ID
-# @return True or False 是否出战中
-# @remarks 检查宠物是否出战中
-def CheckPetIsFight(curPlayer, curPetID):
- petMgr = curPlayer.GetPetMgr()
- #出战的宠物对象
- fightPetObj = petMgr.GetFightPet()
-
- if fightPetObj == None:
- return False
-
- if fightPetObj.GetRolePet().PetID == curPetID:
- return True
-
- return False
-
-
-
-
-# 宠物跟随人物同时攻击
-def PetFight(curPlayer, tick):
-
- rolePet = curPlayer.GetPetMgr().GetFightPet()
- #无出战宠物
- if rolePet == None:
- return
- rolePetControl = NPCCommon.NPCControl(rolePet)
-
- useSkillTagID = curPlayer.GetUseSkillTagID()
- useSkillTagType = curPlayer.GetUseSkillTagType()
-
- curTag = GameWorld.GetObj(useSkillTagID, useSkillTagType)
- if not curTag or GameObj.GetHP(curTag) <= 0:
- # 没有主目标就从仇恨中找
- for i in range(curPlayer.GetAngryNPCCount()):
- curTag = curPlayer.GetAngryNPCByIndex(i)
- if not curTag or GameObj.GetHP(curTag) <= 0:
- continue
-
- # 还没有就从视野中查找
- if not curTag or GameObj.GetHP(curTag) <= 0:
- seePlayerCount = rolePet.GetInSightObjCount()
- for i in range(0, seePlayerCount):
- seeObj = rolePet.GetInSightObjByIndex(i)
- if seeObj == None:
- continue
- seeObjID = seeObj.GetID()
- seeObjType = seeObj.GetGameObjType()
- # 只允许主动攻击NPC,且目标NPC是主动怪
- if seeObjType != IPY_GameWorld.gotNPC:
- continue
- seeObjDetail = GameWorld.GetObj(seeObjID, seeObjType)
- if not seeObjDetail:
- continue
- if seeObjDetail.GetAtkType() == 1:
- # 1为非主动怪
- continue
- if not AttackCommon.CheckCanAttackTag(rolePet, seeObjDetail):
- continue
- relation = BaseAttack.GetTagRelation(rolePet, seeObjDetail, None, tick)[0]
- if relation != ChConfig.Type_Relation_Enemy:
- continue
- curTag = seeObjDetail
- break
-
- if not curTag or GameObj.GetHP(curTag) <= 0:
- return
-
- #tagDist = GameWorld.GetDist(rolePet.GetPosX(), rolePet.GetPosY(), curTag.GetPosX(), curTag.GetPosY())
- tagDist = 0
- #---优先释放技能---
- if AICommon.DoAutoUseSkill(rolePet, curTag, tagDist, tick):
- return
-
- #---释放普通攻击--- 边走边攻击纠正一次位置
- #if tagDist > rolePet.GetAtkDist():
- # rolePetControl.MoveToObj_Detel(curTag)
-
- #普通攻击
- BaseAttack.Attack(rolePet, curTag, None, tick)
- return
-
-
-#---------------------------------------------------------------------
-##出战宠物跟随移动
-# @param curPlayer 玩家实例
-# @param destPosX 移动目标X点
-# @param destPosY 移动目标Y点
-# @return 返回值无意义
-# @remarks 出战宠物跟随移动
-def FightPetFollowMove(curPlayer, destPosX, destPosY):
- #主人在战斗中, 宠物不跟随移动
-
- fightPet = curPlayer.GetPetMgr().GetFightPet()
- #无出战宠物
- if fightPet == None:
- return
-
- petControl = NPCCommon.NPCControl(fightPet)
- movePosX, movePosY = petControl.GetMoveNearPos(destPosX, destPosY, 2)
- # 执行一次重置位置,避免快速发包导致无法移动
- fightPet.ChangePos(movePosX, movePosY)
-
- #movePosX, movePosY = petControl.GetMoveNearPos(destPosX, destPosY, 1)
- PetMove(fightPet, movePosX, movePosY)
- return
-
-
-def PetMove(fightPet, posX, posY):
-
- sendPack = ChNetSendPack.tagObjMove()
-
- sendPack.Clear()
- sendPack.ObjID = fightPet.GetID()
- sendPack.ObjType = IPY_GameWorld.gotNPC
- sendPack.MoveType = IPY_GameWorld.mtNormal
- sendPack.DestPosX = posX
- sendPack.DestPosY = posY
- sendPack.Speed = fightPet.GetSpeed()
- sendPack.StartPosX = fightPet.GetPosX()
- sendPack.StartPosY = fightPet.GetPosY()
-
- fightPet.NotifyAll(sendPack.GetBuffer(), sendPack.GetLength())
- return
-#---------------------------------------------------------------------
-##清除出战宠物仇恨.
-# @param curPlayer 玩家实例
-# @return 返回值无意义
-# @remarks 清除出战宠物仇恨
-def ClearFightPetAngry(curPlayer):
- fightPet = curPlayer.GetPetMgr().GetFightPet()
- #无出战宠物
- if fightPet == None:
- return
-
- petControl = NPCCommon.NPCControl(fightPet)
- petControl.ClearNPCAngry()
- return
-#---------------------------------------------------------------------
-
-##获得宠物的拥有者
-# @param curPet 宠物
-# @return 返回值, 宠物拥有者(实例) or None
-# @remarks 获得宠物的拥有者
-def GetPetOwner(curPet):
- if curPet == None:
- return
-
- curPlayerID = curPet.GetRolePet().PlayerID # 宠物主人ID
-
- if curPlayerID <= 0:
- return
-
- curObj = GameWorld.GetObj(curPlayerID, IPY_GameWorld.gotPlayer)
-
- #人物需要判断是否为空
- if curObj != None and curObj.IsEmpty():
- return
-
- return curObj
-#---------------------------------------------------------------------
-##是否是宠物
-# @param curObj 对象(NPC、召唤兽、宠物、玩家等)
-# @return 是否宠物
-# @remarks 通过传入的对象判断是否是宠物
-def IsPet(curObj):
- curObjType = curObj.GetGameObjType()
-
- if curObjType != IPY_GameWorld.gotNPC:
- return False
-
- npcObjType = curObj.GetGameNPCObjType()
-
- if npcObjType == IPY_GameWorld.gnotPet: # 宠物
- return True
-
- return False
-#---------------------------------------------------------------------
-##清空宠物身上所有buff
-# @param curPet 宠物对象
-# @return None
-# @remarks 清空宠物身上所有buff
-def ClearPetBuff(curPet):
- buffRefreshList = NPCCommon.GetNPCBuffRefreshList(curPet, True)
-
- for buffState, canPileup in buffRefreshList:
- buffState.Clear()
-
- return
-#---------------------------------------------------------------------
-##召唤宠物
-# @param curPet 宠物对象
-# @param curPosX 宠物出身点位置
-# @param curPosY 宠物出身点位置
-# @return None
-# @remarks 召唤宠物,初始化宠物所有属性(C++处理)
-def SummonPet(curPet, curPosX, curPosY):
- #出现(出战逻辑在C++, 将清空宠物的相关信息)
- curPet.Summon(curPosX, curPosY)
- #记录该宠物被召回
- curPet.SetIsBattle(True)
- #初始化宠物
- InitRolePet(curPet)
- PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPet)
- return
-#---------------------------------------------------------------------
-##初始化宠物属性
-# @param rolePet 宠物实例
-# @param canSyncClient 是否通知客户端
-# @return 返回值无意义
-# @remarks 初始化宠物属性
-def InitRolePet(rolePet, canSyncClient=True):
- #---初始化时钟---
- NPCCommon.InitNPC(rolePet)
-
- #---初始化仇恨列表---
- npcAngry = rolePet.GetNPCAngry()
- if npcAngry.GetAngryCount() == 0:
- npcAngry.Init(ChConfig.Def_Pet_Angry_Count)
- else:
- npcAngry.Clear()
-
- #---初始化宠物属性---
- petControl = NPCCommon.NPCControl(rolePet)
- petControl.RefreshNPCState(canSyncClient)
-
- #加一个防御措施, 如果宠物血为0, 不可召唤出来, 默认为宠物召回时候的血量
- if GameObj.GetHP(rolePet) <= 0:
- PetDead_ReStoreHP(rolePet, GameObj.GetMaxHP(rolePet))
- GameWorld.ErrLog('宠物重生血量为0, PetID = %s' % (rolePet.GetRolePet().PetID))
-
- return
-#---------------------------------------------------------------------
-##召回出战的宠物
-# @param curPlayer 玩家实例
-# @return 布尔值
-# @remarks 召回出战的宠物
-def ReCallFightPet(curPlayer):
- rolePetMgr = curPlayer.GetPetMgr()
- #获得战斗的宠物
- fightPet = rolePetMgr.GetFightPet()
-
- if fightPet == None:
- return False
-
- #清空宠物身上附加的buff
- ClearPetBuff(fightPet)
- #记录该宠物被召回
- fightPet.SetIsBattle(False)
- #此死亡接口(C++将重置所有战斗属性, 要在刷一次)
- NPCCommon.SetDeadEx(fightPet)
- #刷新宠物属性
- petControl = NPCCommon.NPCControl(fightPet)
- petControl.RefreshNPCState(canSyncClient=True)
-
- #宠物数据物品状态变更
- petItemIndex = PlayerPet.GetPetObjItemIndex(fightPet)
- petItem = PlayerPet.GetPetDataItemByIndex(curPlayer, petItemIndex)
- if petItem:
- petItem.SetUserAttr(ShareDefine.Def_IudetPet_State, ShareDefine.Def_PetState_Null)
-
- petID = fightPet.GetRolePet().PetID
- npcID = fightPet.GetRolePet().NPCID
- rolePetMgr.PetList_SetFree(petID) # 永恒召回后默认放生, 最多只存在一个出战宠物实例
- GameWorld.DebugLog("随从召回后默认放生, petID=%s, npcID=%s" % (petID, npcID))
- return True
-#---------------------------------------------------------------------
-## 设置宠物死亡
-# @param curPet 宠物对象
-# @return None
-# @remarks 设置宠物死亡
-def SetPetDead(curPet):
- #---执行死亡惩罚逻辑---
-
- #宠物主人
- curPetOwner = GetPetOwner(curPet)
- if not curPetOwner:
- return
- ReCallFightPet(curPetOwner)
- return
-
-#---------------------------------------------------------------------
-##宠物死亡恢复血量
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 宠物死亡恢复血量
-def PetDead_ReStoreHP(curPet, maxHP):
- #设置宠物当前血量为其上限的30%
- SetPetHP(curPet, int(maxHP * DefPetRebornHPRate / 100))
- return
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-##设置宠物HP
-# @param rolePet 玩家宠物
-# @param 值
-# @param canSyncClient是否通知客户端
-# @return 返回值无意义
-# @remarks 设置宠物HP
-def SetPetHP(rolePet, value, canSyncClient=True):
- GameObj.SetHP(rolePet, value, canSyncClient)
-
- if not canSyncClient:
- return
-
- #rolePet.Sync_RefreshProp(IPY_GameWorld.PetInfoRefresh_HP, value, True)
- return
-#---------------------------------------------------------------------
-##增加宠物HP
-# @param rolePet 玩家宠物
-# @param 值
-# @return 返回值无意义
-# @remarks 加宠物HP
-def AddPetHP(rolePet, value):
- remainValue = min(GameObj.GetHP(rolePet) + value, GameObj.GetMaxHP(rolePet))
- SetPetHP(rolePet, remainValue)
- return
-
-#---------------------------------------------------------------------
-##刷新宠物的属性
-# @param rolePet 玩家宠物
-# @param canSyncClient 是否通知客户端(默认为True)
-# @return 返回值无意义
-# @remarks 刷新宠物的属性
-def RefurbishPetAttr(rolePet, canSyncClient=True):
- curPlayer = GetPetOwner(rolePet)
- if not curPlayer:
- return
-
- petDataItem = PlayerPet.GetPetDataItem(curPlayer, rolePet)
- if not petDataItem:
- return
-
- # 变更需要同步的信息配置, 客户端取宠物信息全部以宠物物品数据为准
- syncList = [
- [lambda petObj:petObj.GetMaxAtk(), IPY_GameWorld.PetInfoRefresh_PhysicAtk], #攻击
- #[lambda petObj:petObj.GetQualityLV(), IPY_GameWorld.PetInfoRefresh_QualityLV], #品质
- ]
- beforeValueList = []
- for syncInfo in syncList:
- beforeValueList.append(syncInfo[0](rolePet))
-
- #添加Buff到宠物身上
- #AddPlayerPetSkillBuff(rolePet)
-
- #计算Buff对基础属性的影响
- #SkillShell.CalcBuffer_NPCBaseEffect(rolePet)
-
- #宠物不可被攻击, 命中与攻速直接继承主人攻击属性,攻击取等级阶级加成
- #rolePet.SetMinAtk(PlayerControl.GetPetMinAtk(curPlayer))
- #rolePet.SetMaxAtk(PlayerControl.GetPetMaxAtk(curPlayer))
- #rolePet.SetSkillAtkRate(PlayerControl.GetPetSkillAtkRate(curPlayer))
- GameObj.SetPetDamPer(rolePet, GameObj.GetPetDamPer(curPlayer))
- #rolePet.SetMAtkMin(curPlayer.GetMAtkMin())
- #rolePet.SetMAtkMax(curPlayer.GetMAtkMax())
- rolePet.SetHit(curPlayer.GetHit())
- rolePet.SetSpeed(curPlayer.GetSpeed())
-
- allAttrList = [{} for i in range(4)]
- #计算技能对战斗属性的影响
- PlayerPet.CalcSkill_PetBattleEffect(curPlayer, rolePet, allAttrList)
- #计算Buff对战斗属性的影响
- PlayerPet.CalcBuffer_PetBattleEffect(rolePet, allAttrList)
-
- GameWorld.DebugLog("RefurbishPetAttr ID=%s,npcID=%s,atk=%s,hit=%s,skillAtkRate=%s"
- % (rolePet.GetID(), rolePet.GetNPCID(), rolePet.GetMaxAtk(), rolePet.GetHit(), rolePet.GetSkillAtkRate()))
-
- #是否需要通知客户端属性刷新
- if not canSyncClient:
- return
-
- #===========================================================================
- # for i, syncInfo in enumerate(syncList):
- # nowValue = syncInfo[0](rolePet)
- # if beforeValueList[i] != nowValue:
- # rolePet.Sync_RefreshProp(syncInfo[1], nowValue, True)
- # #GameWorld.DebugLog("Sync_RefreshProp i=%s,befValue=%s,nowValue=%s,type=%s" % (i, beforeValueList[i], nowValue, syncInfo[1]))
- #===========================================================================
- return
-
-#---------------------------------------------------------------------
-##添加宠物技能Buff
-# @param rolePet 宠物实例
-# @return 返回值无意义
-# @remarks 添加宠物技能Buff
-#===============================================================================
-# def AddPlayerPetSkillBuff(rolePet):
-# tick = GameWorld.GetGameWorld().GetTick()
-#
-# #---先清掉---
-# passiveBuffManager = rolePet.GetPassiveBuf()
-# passiveBuffManager.Clear()
-#
-# #---在加上---
-# rolePetSkillManager = rolePet.GetSkillManager()
-#
-# for i in range(0, rolePetSkillManager.GetSkillCount()):
-# learnSkill = rolePetSkillManager.GetSkillByIndex(i)
-# #只添加被动技能
-# if not SkillCommon.isPassiveBuffSkill(learnSkill):
-# continue
-#
-# #加上buff不刷新状态
-# BuffSkill.AddBuffNoRefreshState(rolePet, IPY_GameWorld.btPassiveBuf, learnSkill, tick)
-#
-# return
-#===============================================================================
-#---------------------------------------------------------------------
-def DoLogic_PlayerPetLearnSkillList(rolePet, learnSkillList):
- #GameWorld.DebugLog("DoLogic_PlayerPetLearnSkillList----%s"%learnSkillList)
- gameData = GameWorld.GetGameData()
-
- rolePetSkillManager = rolePet.GetSkillManager()
- for leSkillID in learnSkillList:
- learnSkillData = gameData.GetSkillBySkillID(leSkillID)
- if not learnSkillData:
- GameWorld.ErrLog('PlayerPetLearnSkillList LeanrSkillID = %s, noFindInTable' % leSkillID)
- return
- rolePetSkillManager.LearnSkillByID(leSkillID)
-
- PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(rolePet)
- #rolePet.Sync_PetInfo()
- #rolePet.Sync_SkillList()
- return
-
-#---------------------------------------------------------------------
-##检查当前指定宠物是否可出战
-# @param curPlayer 玩家实例
-# @param curPetObj 指定宠物实例
-# @return BOOL 是否可出战
-# @remarks 检查当前指定宠物是否可出战
-def CheckPetCanFight(curPlayer, curPetObj):
- if not GetMapCanOutPet(curPlayer):
- #Pet_liubo_314885 此地图禁止宠物
- #PlayerControl.NotifyCode(curPlayer, "Pet_liubo_314885")
- return False
-
- petData = curPetObj.GetPetData()
-
- #防沉迷
- if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_Wallow_LV) > ChConfig.Def_GameWallow_LV_First:
- PlayerControl.NotifyCode(curPlayer, "AvoidSink09")
- return False
-
- if GameObj.GetHP(curPlayer) <= 0:
- #死亡状态无法出战宠物
- return False
-
-# if curPlayer.GetLV() < petData.GetBringLV():
-# #Pet_hgg_442426 对不起,您尚未到达该宠物的携带等级.
-# PlayerControl.NotifyCode(curPlayer, "Pet_hgg_442426")
-# return False
-#
-# if curPetObj.GetLV() - curPlayer.GetLV() > ChConfig.Def_PetRoleGapLVMax:
-# #Pet_liubo_570355 对不起,您不能出战超过人物5级的宠物!
-# PlayerControl.NotifyCode(curPlayer, "Pet_liubo_570355", [ChConfig.Def_PetRoleGapLVMax])
-# return False
-
- #---是否已有宠物出战---
- #fightPetObj = curPlayer.GetPetMgr().GetFightPet() # 出战的宠物对象
-
- #if fightPetObj != None:
- # #Pet_hgg_892377 对不起,您只能同时出战一只宠物,请先召回出战的宠物!
- # PlayerControl.NotifyCode(curPlayer, "Pet_hgg_892377")
- # return False
-
- #GameWorld.Log('宠物血量:%s,宠物ID:%s'%(curPetStruct.HP,curPetStruct.PetID))
- return True
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-##玩家离开服务器通知宠物信息
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 玩家离开服务器通知宠物信息
-def DoLogic_PetInfo_OnLeaveServer(curPlayer, tick):
- return
-
-#---------------------------------------------------------------------
-##玩家登陆通知宠物信息
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 玩家登陆通知宠物信息
-def DoLogic_PetInfo_OnLogin(curPlayer, tick):
-
- petMgr = curPlayer.GetPetMgr()
- if GameWorld.IsCrossServer():
- ''' 0435宠物出现包同步的ID是根据宠物的列表位置来的,比如在第2位发的就是2,而地图的可能是1,会导致ID不一致
- 所以跨服服务器登录时先清除出战宠物列表,确保登录地图成功后都是从1开始的即可
- '''
- petList = []
- for index in range(0, petMgr.PetList_Cnt()):
- rolePet = petMgr.PetList_At(index)
- petList.append(rolePet)
- for rolePet in petList:
- petMgr.PetList_SetFree(rolePet.GetRolePet().PetID)
- else:
- for index in range(0, petMgr.PetList_Cnt()):
- rolePet = petMgr.PetList_At(index)
- #刷新宠物信息并通知客户端
- __RefreshAndSyncPetInfo(rolePet)
- #自动出战宠物
- __AutoSummonPet_OnLogin(curPlayer, rolePet)
-
- return
-#---------------------------------------------------------------------
-##玩家上线, 自动出战宠物
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 玩家上线, 自动出战宠物
-def __AutoSummonPet_OnLogin(curPlayer, rolePet):
- #是否有出战标志
- if not rolePet.GetIsBattle():
- return
-
- if not GetMapCanOutPet(curPlayer):
- #此地图禁止宠物
- return
- #召唤宠物出战
- resultPos = GameMap.GetEmptyPlaceInArea(curPlayer.GetPosX(), curPlayer.GetPosY(), ChConfig.Def_SummonAppearDist)
-
- SummonPet(rolePet, resultPos.GetPosX(), resultPos.GetPosY())
- return
-
-#---------------------------------------------------------------------
-##玩家切换地图通知宠物信息.
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 玩家切换地图通知宠物信息.
-def Sync_PetInfo_ChangeMap(curPlayer, tick):
- petMgr = curPlayer.GetPetMgr()
-
- for index in range(0, petMgr.PetList_Cnt()):
- rolePet = petMgr.PetList_At(index)
- #刷新宠物信息并通知客户端
- __RefreshAndSyncPetInfo(rolePet)
-
- return
-
-#---------------------------------------------------------------------
-##玩家携带宠物登陆地图
-# @param curPlayer 玩家实例
-# @return 返回值无意义
-# @remarks
-def DoLogic_PetLoadMapOK(curPlayer):
-
- if GetMapCanOutPet(curPlayer):
- #此地图宠物可以上
- PlayerPet.AutoSummonPet(curPlayer)
- return
-
- #此地图禁止宠物, 召回出战的宠物
- if not ReCallFightPet(curPlayer):
- return
-
- #Pet_liubo_314885 此地图禁止宠物
- #PlayerControl.NotifyCode(curPlayer, "Pet_liubo_314885")
- return
-
-def GetMapCanOutPet(curPlayer):
- ## 检查本地图可否出战宠物
- canOutPet = GameWorld.GetMap().GetMapCanOutPet()
- return canOutPet
-
-#---------------------------------------------------------------------
-## 刷新宠物信息并通知客户端
-# @param rolePet 宠物实例
-# @return 无返回值
-# @remarks 刷新宠物信息并通知客户端
-def __RefreshAndSyncPetInfo(rolePet):
- #---刷新宠物信息(不通知客户端)---
- InitRolePet(rolePet, False)
-
- return
-
-#---------------------------------------------------------------------
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyGCZ.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyGCZ.py
index 64d3b20..5a1c3b4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyGCZ.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyGCZ.py
@@ -20,7 +20,6 @@
import ShareDefine
import IpyGameDataPY
import NetPackCommon
-import CrossRealmPlayer
import ChPyNetSendPack
import IPY_GameWorld
import PlayerControl
@@ -105,7 +104,7 @@
playerZoneID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyGCZZoneID)
playerRoundNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyGCZRoundNum)
- actInfo = CrossRealmPlayer.GetCrossActInfoByZoneID(ShareDefine.CrossActName_FamilyGCZ, playerZoneID)
+ actInfo = {}#CrossRealmPlayer.GetCrossActInfoByZoneID(ShareDefine.CrossActName_FamilyGCZ, playerZoneID)
actID = actInfo.get(ShareDefine.ActKey_ID, 0)
state = actInfo.get(ShareDefine.ActKey_State, 0)
if not playerActID and not playerZoneID:
@@ -137,7 +136,7 @@
playerID = curPlayer.GetPlayerID()
zoneID, familyID = joinInfo
- actInfo = CrossRealmPlayer.GetCrossActInfoByZoneID(ShareDefine.CrossActName_FamilyGCZ, zoneID)
+ actInfo = {}#CrossRealmPlayer.GetCrossActInfoByZoneID(ShareDefine.CrossActName_FamilyGCZ, zoneID)
actID = actInfo.get(ShareDefine.ActKey_ID, 0)
state = actInfo.get(ShareDefine.ActKey_State, 0)
@@ -346,7 +345,7 @@
playerID = curPlayer.GetPlayerID()
zoneID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyGCZZoneID)
- actInfo = CrossRealmPlayer.GetCrossActInfoByZoneID(ShareDefine.CrossActName_FamilyGCZ, zoneID)
+ actInfo = {}#CrossRealmPlayer.GetCrossActInfoByZoneID(ShareDefine.CrossActName_FamilyGCZ, zoneID)
if not actInfo:
return
state = actInfo.get(ShareDefine.ActKey_State, 0)
@@ -483,7 +482,7 @@
return
zoneID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyGCZZoneID)
- actInfo = CrossRealmPlayer.GetCrossActInfoByZoneID(ShareDefine.CrossActName_FamilyGCZ, zoneID)
+ actInfo = {}#CrossRealmPlayer.GetCrossActInfoByZoneID(ShareDefine.CrossActName_FamilyGCZ, zoneID)
if not actInfo:
return
state = actInfo.get(ShareDefine.ActKey_State, 0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLianqi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLianqi.py
index b03df1e..ddaf97f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLianqi.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLianqi.py
@@ -20,7 +20,6 @@
import IpyGameDataPY
import NetPackCommon
import ChPyNetSendPack
-import CrossRealmPlayer
#import PlayerZhanling
import ItemControler
import ItemCommon
@@ -56,7 +55,7 @@
playerID = curPlayer.GetPlayerID()
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_Lianqi)
+ actInfo = {}#CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_Lianqi)
cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
actID = actInfo.get(ShareDefine.ActKey_ID, 0)
state = actInfo.get(ShareDefine.ActKey_State, 0)
@@ -90,8 +89,8 @@
ReStartGame(curPlayer, isNotify=False)
Sync_CrossActLianqiActionInfo(curPlayer)
Sync_LianqiPlayerInfo(curPlayer)
- else:
- CrossRealmPlayer.NotifyCrossActEnd(curPlayer, ShareDefine.CrossActName_Lianqi)
+ #else:
+ # CrossRealmPlayer.NotifyCrossActEnd(curPlayer, ShareDefine.CrossActName_Lianqi)
return True
@@ -179,7 +178,7 @@
OPValue3 = clientData.OPValue3
if OPType not in [4]:
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_Lianqi)
+ actInfo = {}#CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_Lianqi)
if not actInfo:
GameWorld.DebugLog("非炼器活动中,无法操作! OPType=%s" % OPType, playerID)
return
@@ -560,7 +559,7 @@
def Sync_CrossActLianqiActionInfo(curPlayer):
## 通知活动信息
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_Lianqi)
+ actInfo = {}#CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_Lianqi)
if not actInfo:
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargePrize.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargePrize.py
deleted file mode 100644
index d51db44..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargePrize.py
+++ /dev/null
@@ -1,196 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerActRechargePrize
-#
-# @todo:充值返利活动
-# @author hxp
-# @date 2020-09-23
-# @version 1.0
-#
-# 详细描述: 充值返利活动
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2020-09-23 12:00"""
-#-------------------------------------------------------------------------------
-
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import ChPyNetSendPack
-import NetPackCommon
-import GameWorld
-import ChConfig
-
-def __GetActTemplateID(cfgID, dayIndex):
- if cfgID == None or dayIndex == None:
- return 0
- ipyData = IpyGameDataPY.GetIpyGameData("ActRechargePrize", cfgID)
- if not ipyData:
- return 0
- templateIDList = ipyData.GetTemplateIDList()
- templateID = templateIDList[-1] if dayIndex >= len(templateIDList) else templateIDList[dayIndex]
- return templateID
-
-def OnPlayerLogin(curPlayer):
- isReset = __CheckPlayerRechargePrizeAction(curPlayer)
- if not isReset:
- actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargePrize, {})
- # 活动中同步活动信息
- if actInfo.get(ShareDefine.ActKey_State):
- Sync_RechargePrizeActionInfo(curPlayer)
- Sync_RechargePrizeInfo(curPlayer)
- return
-
-def RefreshRechargePrizeActionInfo():
- ## 收到GameServer同步的活动信息,刷新活动信息
- playerManager = GameWorld.GetPlayerManager()
- for index in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(index)
- if not GameWorld.IsNormalPlayer(curPlayer):
- continue
- __CheckPlayerRechargePrizeAction(curPlayer)
- return
-
-def __CheckPlayerRechargePrizeAction(curPlayer):
- ## 检查玩家充值返利活动数据信息
-
- playerID = curPlayer.GetPlayerID()
-
- actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargePrize, {})
- actID = actInfo.get(ShareDefine.ActKey_ID, 0)
- state = actInfo.get(ShareDefine.ActKey_State, 0)
-
- playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargePrizeID) # 玩家身上的活动ID
-
- # 活动ID 相同的话不处理
- if actID == playerActID:
- GameWorld.DebugLog("充值返利活动ID不变,不处理!", curPlayer.GetPlayerID())
- return
- GameWorld.DebugLog("充值返利重置! actID=%s,playerActID=%s,state=%s" % (actID, playerActID, state), playerID)
-
- templateID = __GetActTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargePrizeID, actID)
-
- ipyDataList = IpyGameDataPY.GetIpyGameDataList("RechargePrizeTemplate", templateID)
- if ipyDataList:
- for ipyData in ipyDataList:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargePrizeCount % ipyData.GetCTGID(), 0)
-
- Sync_RechargePrizeActionInfo(curPlayer)
- Sync_RechargePrizeInfo(curPlayer)
- return True
-
-def DoAddPlayerActRechargePrizeCount(curPlayer, ctgID):
- ## 执行增加玩家充值返利活动返利次数
- # @return: 返利仙玉 数
- actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargePrize, {})
- if not actInfo:
- GameWorld.DebugLog("无充值返利活动")
- return
- if not actInfo.get(ShareDefine.ActKey_State):
- GameWorld.DebugLog("充值返利活动未开启")
- return
- templateID = __GetActTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
- actIpyData = None
- ipyDataList = IpyGameDataPY.GetIpyGameDataList("RechargePrizeTemplate", templateID)
- if ipyDataList:
- for ipyData in ipyDataList:
- if ctgID == ipyData.GetCTGID():
- actIpyData = ipyData
- break
- if not actIpyData:
- GameWorld.DebugLog("该充值ID无充值返利! ctgID=%s,templateID=%s" % (ctgID, templateID))
- return
-
- prizeCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargePrizeCount % ctgID)
- prizeCountLimit = actIpyData.GetPrizeCountLimit()
- if prizeCount >= prizeCountLimit:
- GameWorld.DebugLog("已达充值返利最大次数: ctgID=%s,prizeCount=%s" % (ctgID, prizeCount))
- return
- prizeCount += 1
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargePrizeCount % ctgID, prizeCount)
- goldPrize = actIpyData.GetGoldPrize()
-
- Sync_RechargePrizeInfo(curPlayer, ctgID)
- GameWorld.DebugLog("充值返利: ctgID=%s,goldPrize=%s,prizeCount=%s" % (ctgID, goldPrize, prizeCount))
- return goldPrize
-
-def Sync_RechargePrizeInfo(curPlayer, ctgID=0):
- ## 通知充值返利玩家数据信息
- actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargePrize, {})
- if not actInfo:
- return
- if not actInfo.get(ShareDefine.ActKey_State):
- return
- templateID = __GetActTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
-
- if ctgID > 0:
- syncCTGIDList = [ctgID]
- else:
- syncCTGIDList = []
- ipyDataList = IpyGameDataPY.GetIpyGameDataList("RechargePrizeTemplate", templateID)
- if ipyDataList:
- for ipyData in ipyDataList:
- syncCTGIDList.append(ipyData.GetCTGID())
-
- playerActInfo = ChPyNetSendPack.tagMCRechargePrizePlayerInfo()
- playerActInfo.PlayerInfoList = []
- for syncCTGID in syncCTGIDList:
- prizeInfo = ChPyNetSendPack.tagMCRechargePrizeInfo()
- prizeInfo.CTGID = syncCTGID
- prizeInfo.PrizeCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargePrizeCount % syncCTGID)
- playerActInfo.PlayerInfoList.append(prizeInfo)
- playerActInfo.Count = len(playerActInfo.PlayerInfoList)
- NetPackCommon.SendFakePack(curPlayer, playerActInfo)
- return
-
-def Sync_RechargePrizeActionInfo(curPlayer):
- ## 通知充值返利活动信息
- actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargePrize, {})
- if not actInfo:
- return
-
- if not actInfo.get(ShareDefine.ActKey_State):
- return
-
- cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
- ipyData = IpyGameDataPY.GetIpyGameData("ActRechargePrize", cfgID)
- if not ipyData:
- return
-
- templateIDList = ipyData.GetTemplateIDList()
- if not templateIDList:
- return
- startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
- actInfo = ChPyNetSendPack.tagMCActRechargePrizeInfo()
- actInfo.StartDate = startDateStr
- actInfo.EndtDate = endDateStr
- actInfo.LimitLV = ipyData.GetLVLimit()
- actInfo.IsDayReset = ipyData.GetIsDayReset()
- actInfo.PrizeDayInfo = []
- for templateID in templateIDList:
- ipyDataList = IpyGameDataPY.GetIpyGameDataList("RechargePrizeTemplate", templateID)
- if not ipyDataList:
- continue
-
- dayInfo = ChPyNetSendPack.tagMCActRechargePrizeDay()
- dayInfo.PrizeInfo = []
- for prizeData in ipyDataList:
- prize = ChPyNetSendPack.tagMCActRechargePrize()
- prize.CTGID = prizeData.GetCTGID()
- prize.GoldPrize = prizeData.GetGoldPrize()
- prize.PrizeCountLimit = prizeData.GetPrizeCountLimit()
- dayInfo.PrizeInfo.append(prize)
-
- dayInfo.Prizes = len(dayInfo.PrizeInfo)
- actInfo.PrizeDayInfo.append(dayInfo)
-
- actInfo.PrizeDays = len(actInfo.PrizeDayInfo)
- NetPackCommon.SendFakePack(curPlayer, actInfo)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargeRebateGold.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargeRebateGold.py
deleted file mode 100644
index 907c940..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargeRebateGold.py
+++ /dev/null
@@ -1,193 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerActRechargeRebateGold
-#
-# @todo:累计充值返利仙玉活动
-# @author hxp
-# @date 2020-10-15
-# @version 1.0
-#
-# 详细描述: 累计充值返利仙玉活动(活动结束邮件发放,只算最高一档)
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2020-10-15 12:00"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import ShareDefine
-import PlayerControl
-import PyGameData
-import GameWorld
-import NetPackCommon
-import ChPyNetSendPack
-import IpyGameDataPY
-
-def OnPlayerLogin(curPlayer):
- isReset = __CheckPlayerRechargeRebateGoldAction(curPlayer)
- if not isReset:
- actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargeRebateGold, {})
- # 活动中同步活动信息
- if actInfo.get(ShareDefine.ActKey_State):
- Sync_RechargeRebateGoldActionInfo(curPlayer)
- Sync_RechargeRebateGoldPlayerInfo(curPlayer)
- return
-
-def RefreshRechargeRebateGoldActionInfo():
- ## 收到GameServer同步的活动信息,刷新活动信息
- playerManager = GameWorld.GetPlayerManager()
- for index in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(index)
- if not GameWorld.IsNormalPlayer(curPlayer):
- continue
- __CheckPlayerRechargeRebateGoldAction(curPlayer)
- return
-
-def __CheckPlayerRechargeRebateGoldAction(curPlayer):
- ## 检查玩家累计充值活动数据信息
-
- playerID = curPlayer.GetPlayerID()
-
- actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargeRebateGold, {})
- actID = actInfo.get(ShareDefine.ActKey_ID, 0)
- state = actInfo.get(ShareDefine.ActKey_State, 0)
-
- playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeRebateGoldID) # 玩家身上的活动ID
- templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
- playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeRebateGoldTemplateID)
-
- # 活动ID 相同的话不处理
- if actID == playerActID:
- GameWorld.DebugLog("累计充值返利仙玉活动ID不变,不处理!", playerID)
- if state:
- if playerTemplateID != templateID and templateID:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeRebateGoldTemplateID, templateID)
- GameWorld.DebugLog(" 活动模板ID变更,更新玩家身上模板ID记录!playerTemplateID=%s,updTemplateID=%s"
- % (playerTemplateID, templateID), playerID)
- return
-
- GameWorld.DebugLog("累计充值返利仙玉活动重置! actID=%s,playerActID=%s,state=%s" % (actID, playerActID, state), playerID)
-
- totalRMB = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeRebateGoldRMB)
- if playerActID and playerTemplateID and totalRMB > 0:
- __SendRebateGoldMail(curPlayer, playerTemplateID, totalRMB)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeRebateGoldID, actID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeRebateGoldTemplateID, templateID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeRebateGoldRMB, 0)
-
- Sync_RechargeRebateGoldActionInfo(curPlayer)
- Sync_RechargeRebateGoldPlayerInfo(curPlayer)
- return True
-
-def GetTemplateID(cfgID, dayIndex):
- if cfgID == None or dayIndex == None:
- return 0
- ipyData = IpyGameDataPY.GetIpyGameData("ActRechargeRebateGold", cfgID)
- if not ipyData:
- return 0
- templateIDList = ipyData.GetTemplateIDList()
- templateID = templateIDList[-1] if dayIndex >= len(templateIDList) else templateIDList[dayIndex]
- return templateID
-
-def __SendRebateGoldMail(curPlayer, playerTemplateID, totalRMB):
- ## 发送返利奖励邮件,取最大奖励档发奖励
-
- playerID = curPlayer.GetPlayerID()
- GameWorld.DebugLog("累计充值返利仙玉发送奖励邮件! playerTemplateID=%s,totalRMB=%s" % (playerTemplateID, totalRMB), playerID)
-
- ipyDataList = IpyGameDataPY.GetIpyGameDataList("RechargeRebateGoldTemplate", playerTemplateID)
- if not ipyDataList:
- return
-
- rebateIpyData = None
- for ipyData in ipyDataList:
- rmbMin = ipyData.GetRMBMin()
- rmbMax = ipyData.GetRMBMax()
- if (rmbMin <= totalRMB <= rmbMax) or (rmbMin <= totalRMB and rmbMax == 0):
- rebateIpyData = ipyData
- break
-
- if not rebateIpyData:
- GameWorld.DebugLog("玩家无返利仙玉奖励!", playerID)
- return
-
- rebateRate = rebateIpyData.GetRebateRate()
- addItemList = []
- paramList = [totalRMB, rebateRate]
- gold = min(int(totalRMB * rebateRate / 100.0), ShareDefine.Def_UpperLimit_DWord)
- GameWorld.DebugLog(" 返利仙玉百分比=%s%%, gold=%s" % (rebateRate, gold), playerID)
- PlayerControl.SendMailByKey("RechargeRebateGold", [playerID], addItemList, paramList, gold)
- return
-
-def AddRechargeRebateGoldRMB(curPlayer, addRMB):
- ## 增加活动已累计充值RMB, 主干分支记录的是仙玉,只算直充,主干没有RMB对应比例配置,直接记录仙玉
- actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargeRebateGold, {})
- if not actInfo:
- return
-
- if not actInfo.get(ShareDefine.ActKey_State):
- return
-
- totalRMB = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeRebateGoldRMB) + addRMB
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeRebateGoldRMB, totalRMB)
-
- GameWorld.DebugLog("累计充值返利仙玉活动增加玩家累计充值RMB: addRMB=%s,totalRMB=%s" % (addRMB, totalRMB), curPlayer.GetPlayerID())
- Sync_RechargeRebateGoldPlayerInfo(curPlayer)
- return
-
-
-def Sync_RechargeRebateGoldPlayerInfo(curPlayer):
- ## 通知累计充值返利仙玉活动玩家数据信息
- playerActInfo = ChPyNetSendPack.tagMCRechargeRebateGoldPlayerInfo()
- playerActInfo.RechargeRMBTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeRebateGoldRMB)
- NetPackCommon.SendFakePack(curPlayer, playerActInfo)
- return
-
-def Sync_RechargeRebateGoldActionInfo(curPlayer):
- ## 通知累计充值返利仙玉活动信息
-
- actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargeRebateGold, {})
- if not actInfo:
- return
-
- if not actInfo.get(ShareDefine.ActKey_State):
- return
-
- cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
- ipyData = IpyGameDataPY.GetIpyGameData("ActRechargeRebateGold", cfgID)
- if not ipyData:
- return
-
- templateIDList = ipyData.GetTemplateIDList()
- if not templateIDList:
- return
-
- startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
- actInfo = ChPyNetSendPack.tagMCActRechargeRebateGoldInfo()
- actInfo.StartDate = startDateStr
- actInfo.EndtDate = endDateStr
- actInfo.LimitLV = ipyData.GetLVLimit()
- actInfo.IsDayReset = ipyData.GetIsDayReset()
- actInfo.RebateDayInfo = []
- for templateID in templateIDList:
- ipyDataList = IpyGameDataPY.GetIpyGameDataList("RechargeRebateGoldTemplate", templateID)
- if not ipyDataList:
- continue
-
- dayInfo = ChPyNetSendPack.tagMCActRechargeRebateDay()
- dayInfo.RebateInfo = []
- for dayIpyData in ipyDataList:
- rebateInfo = ChPyNetSendPack.tagMCActRechargeRebate()
- rebateInfo.RMBMin = dayIpyData.GetRMBMin()
- rebateInfo.RMBMax = dayIpyData.GetRMBMax()
- rebateInfo.RebateRate = dayIpyData.GetRebateRate()
- dayInfo.RebateInfo.append(rebateInfo)
-
- dayInfo.Rebates = len(dayInfo.RebateInfo)
- actInfo.RebateDayInfo.append(dayInfo)
-
- actInfo.RebateDays = len(actInfo.RebateDayInfo)
- NetPackCommon.SendFakePack(curPlayer, actInfo)
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
index 62fadad..5c3416a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
@@ -96,10 +96,6 @@
##更新玩家总战斗力
return
-def UpdatePyPetBillboard(curPlayer, isForceUpdate=False, isUpdateTotal=True):
- ## 更新宠物排行榜
- return
-
#def __CanPlayerBillboardComm(curPlayer):
# ## 玩家可否上榜通用检查
# if not GameWorld.IsNormalPlayer(curPlayer):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoat.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoat.py
deleted file mode 100644
index 0d3cc62..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoat.py
+++ /dev/null
@@ -1,304 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerCoat
-#
-# @todo:玩家时装外套
-# @author xdh
-# @date 2019-01-07
-# @version 1.0
-#
-# 详细描述: 玩家时装外套
-#
-#---------------------------------------------------------------------
-"""Version = 2019-01-07 10:00"""
-#---------------------------------------------------------------------
-
-import NetPackCommon
-import IPY_GameWorld
-import PlayerControl
-import ItemControler
-import ChPyNetSendPack
-import ShareDefine
-import ItemCommon
-import DataRecordPack
-import IpyGameDataPY
-import GameWorld
-import ChConfig
-
-import math
-
-## 登录
-# @param curPlayer
-# @return None
-def OnLogin_Coat(curPlayer):
- Sync_ClothesCoatSkinInfo(curPlayer)
- return
-
-#// A5 0B 玩家时装升级 #tagCMCoatUp
-#
-#struct tagCMCoatUp
-#{
-# tagHead Head;
-# BYTE CoatIndex; // 时装索引
-#};
-def OnPlayerCoatUp(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- coatIndex = clientData.CoatIndex
- ipyData = IpyGameDataPY.GetIpyGameData('Coat', coatIndex)
- if not ipyData:
- return
-
- curSkinLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesSkinLV % coatIndex)
- if curSkinLV >= ipyData.GetMaxLV():
- GameWorld.DebugLog("该时装已满级,无法升级!coatIndex=%s,curSkinLV=%s" % (coatIndex, curSkinLV), playerID)
- return
- needCntList = ipyData.GetCostItemCnt()
- if curSkinLV >= len(needCntList):
- return
- plusCost = needCntList[curSkinLV]
- costItemID = ipyData.GetUnlockItemID()
- curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- hasEnough, itemIndexList = ItemCommon.GetItem_FromPack_ByID(costItemID, curPack, plusCost)
- if not hasEnough:
- GameWorld.DebugLog("OnPlayerCoatUp() 时装升级材料不足, coatIndex=%s, costItemID=%s, needCnt=%s" % (coatIndex, costItemID, plusCost))
- return
-
- reduceCnt = plusCost
- aftlv = curSkinLV + 1
-
- #扣除物品
- ItemCommon.ReduceItem(curPlayer, curPack, itemIndexList, reduceCnt, True, 'CoatUp')
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ClothesSkinLV % coatIndex, aftlv)
-
- Sync_ClothesCoatSkinInfo(curPlayer, coatIndex)
- # 刷属性
- CalcClothesCoatSkinAttr(curPlayer)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
-
- extraInfoDict = {"coatID":coatIndex}
- #DataRecordPack.DR_ClassUpSystem(curPlayer, "CoatUp", aftlv, extraInfoDict)
-
- GameWorld.DebugLog("时装升级!coatIndex=%s,curSkinLV=%s,reduceCnt=%s,aftlv=%s"
- % (coatIndex, curSkinLV, reduceCnt, aftlv), playerID)
- return
-
-#// A5 20 时装分解 #tagCMCoatDecompose
-#
-#struct tagCMCoatDecompose
-#{
-# tagHead Head;
-# BYTE Count; //材料所在背包索引的数量
-# WORD IndexList[Count]; //材料所在背包索引列表
-# DWORD ItemIDList[Count]; //材料所在背包物品ID列表
-#};
-def OnCoatDecompose(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- indexList = clientData.IndexList
- ItemIDList = clientData.ItemIDList
-
- itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- addExp = 0
- for i, index in enumerate(indexList):
- eatItem = itemPack.GetAt(index)
- if not eatItem or eatItem.IsEmpty():
- continue
- eatItemID = eatItem.GetItemTypeID()
- if eatItemID != ItemIDList[i]:
- GameWorld.Log('时装分解 发的物品ID不对应index=%s eatItemID=%s,ItemIDList[i]=%s'%(index, eatItemID, ItemIDList[i]), playerID)
- continue
- itemData = GameWorld.GetGameData().GetItemByTypeID(eatItemID)
- if not itemData:
- continue
- curEff = itemData.GetEffectByIndex(0)
- coatID = curEff.GetEffectValue(0)
- ipyData = IpyGameDataPY.GetIpyGameData('Coat', coatID)
- if not ipyData:
- continue
- curSkinLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesSkinLV % coatID)
- if curSkinLV < ipyData.GetMaxLV():
- continue
- itemCnt = eatItem.GetCount()
- addExp += itemCnt * curEff.GetEffectValue(1)
- ItemCommon.DelItem(curPlayer, eatItem, itemCnt, True, ChConfig.ItemDel_CoatDecompose)
- if not addExp:
- GameWorld.Log(' 时装分解, 没有可分解的ItemIDList=%s'%ItemIDList, playerID)
- return
- totalExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesChestEXP) + addExp
- curChestLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesChestLV)
- updChestLV = curChestLV
- maxChestLV = IpyGameDataPY.IPY_Data().GetCoatChestUpByIndex(IpyGameDataPY.IPY_Data().GetCoatChestUpCount() - 1).GetLV()
- for chestLV in xrange(curChestLV + 1, maxChestLV + 1):
- ipyData = IpyGameDataPY.GetIpyGameData('CoatChestUp', chestLV)
- if not ipyData:
- break
- needExp = ipyData.GetNeedExp()
- if totalExp < needExp:
- break
- updChestLV = chestLV
- totalExp -= needExp
- if updChestLV != curChestLV:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ClothesChestLV, updChestLV)
- # 刷属性
- CalcClothesCoatSkinAttr(curPlayer)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ClothesChestEXP, min(totalExp, ChConfig.Def_UpperLimit_DWord))
-
- Sync_ClothesCoatSkinInfo(curPlayer, coatID)
- return
-
-def GetCoatQualityLVInfo(curPlayer):
- costQualityLVDict = {}
- ipyMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyMgr.GetCoatCount()):
- ipyData = ipyMgr.GetCoatByIndex(i)
- coatID = ipyData.GetCoatID()
- costQuality = ipyData.GetCostQuality()
- skinLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesSkinLV % coatID)
- if not skinLV:
- continue
- costQualityLVDict[costQuality] = costQualityLVDict.get(costQuality, 0) + skinLV
- return costQualityLVDict
-
-## 计算时装属性
-# @param curPlayer 玩家
-# @param allAttrList 属性列表
-# @return None
-def CalcClothesCoatSkinAttr(curPlayer):
- initFPAdd = 0 #初始战力
- allAttrList = [{} for _ in range(4)]
- ipyMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyMgr.GetCoatCount()):
- ipyData = ipyMgr.GetCoatByIndex(i)
- coatID = ipyData.GetCoatID()
- skinLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesSkinLV % coatID)
- if not skinLV:
- continue
- initFPAdd += ipyData.GetInitFightPower()
- starAttrDict = ipyData.GetStarAttr()
- if str(skinLV) not in starAttrDict:
- continue
- for attrID, attrValue in starAttrDict[str(skinLV)].items():
- PlayerControl.CalcAttrDict_Type(int(attrID), attrValue, allAttrList)
- #时装柜属性
- curChestLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesChestLV)
- ipyData = IpyGameDataPY.GetIpyGameDataNotLog('CoatChestUp', curChestLV)
- if ipyData:
- for attrID, attrValue in ipyData.GetAddAttr().items():
- PlayerControl.CalcAttrDict_Type(int(attrID), attrValue, allAttrList)
-
- # 保存计算值
- PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Coat, initFPAdd)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Coat, allAttrList)
- return
-
-
-##穿上/脱下时装
-# @param curPlayer 玩家实例
-# @param srcBackpack 起点背包
-# @param desBackPack 目标背包
-# @param srcIndex 起点索引
-# @param destIndex 目标索引
-# @return
-def SwitchCoat(curPlayer, srcBackpack, desBackPack, srcIndex, destIndex):
- clothesPlaceList = [6,7,8]#[ShareDefine.retWeaponSkin, ShareDefine.retClothesSkin, ShareDefine.retWeapon2Skin]
- if not ((desBackPack == IPY_GameWorld.rptEquip and srcBackpack == ShareDefine.rptTempSwap and destIndex in clothesPlaceList) \
- or (srcBackpack == IPY_GameWorld.rptEquip and desBackPack == ShareDefine.rptTempSwap and srcIndex in clothesPlaceList)):
- return False
-
- #===============================================================================================
- # # 不可以交换时装
- # if curPlayer.GetMapID() in [ChConfig.Def_FBMapID_RedFort]:
- # PlayerControl.NotifyCode(curPlayer, "GeRen_liubo_422737")
- # return True
- #===============================================================================================
-
- playerID = curPlayer.GetPlayerID()
-
- # 穿时装
- if desBackPack == IPY_GameWorld.rptEquip:
- # 穿的时候srcIndex代表时装的索引
- skinLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesSkinLV%srcIndex)
- if skinLV <= 0:
- GameWorld.Log("时装未激活,不能穿!srcIndex=%s" % (srcIndex), playerID)
- return True
- ipyData = IpyGameDataPY.GetIpyGameData('Coat', srcIndex)
- if not ipyData:
- return True
- EquipItemIDList = ipyData.GetEquipItemID()
- job = curPlayer.GetJob()
- if job > len(EquipItemIDList):
- GameWorld.Log("找不到该职业时装配置,不能穿!srcIndex=%s,job=%s" % (srcIndex, job), playerID)
- return True
- equipItemID = EquipItemIDList[job-1]
- # 找到时装ID后,srcIndex转化为交换物品的格子索引,默认0
- srcIndex= 0
-
- # 给临时交换物品
- if not ItemControler.PutItemInTempSwap(curPlayer, equipItemID):
- GameWorld.Log("时装ID(%s)放入临时交换背包失败!" % (equipItemID), playerID)
- return True
-
- # 脱时装
- else:
- ItemControler.ClearPack(curPlayer, ShareDefine.rptTempSwap)
- destIndex = 0
-
- isOK = ItemCommon.DoLogicSwitchItemEx(curPlayer, srcBackpack, desBackPack, srcIndex, destIndex)
- # 下发周围玩家时装穿戴状态
- if isOK:
- if desBackPack == IPY_GameWorld.rptEquip:
- packIndex = IPY_GameWorld.rptEquip
- itemPlace = destIndex
- itemPack = curPlayer.GetItemManager().GetPack(packIndex)
- curItem = itemPack.GetAt(itemPlace)
- itemId = curItem.GetItemTypeID()
- itemStarLV = 0#curItem.GetItemStarLV()
- itemHoleCnt = 0#curItem.GetCanPlaceStoneCount()
- itemStoneCnt = 0#curItem.GetUseStoneCount()
- itemUseData = curItem.GetUserData()
- curPlayer.ChangeEquip(itemId, itemPlace, itemStarLV, itemHoleCnt, itemStoneCnt, itemUseData)
- else:
- packIndex = ShareDefine.rptTempSwap
- itemPack = curPlayer.GetItemManager().GetPack(packIndex)
- curItem = itemPack.GetAt(0)
- if curItem:
- curPlayer.Sync_UnEquipItem(curItem.GetItemTypeID(), srcIndex)
- GameWorld.DebugLog("SwitchCoat isOK=%s" % isOK)
- return True
-
-
-## 通知客户端时装开启状态
-# @param curPlayer
-# @return None
-def Sync_ClothesCoatSkinInfo(curPlayer, coatIndex= -1):
- stateData = ChPyNetSendPack.tagMCClothesCoatSkinState()
- stateData.Clear()
- stateData.CoatChestExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesChestEXP)
- stateData.CoatChestLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesChestLV)
- stateData.CoatInfoList = []
- if coatIndex == -1:
- coatIDList =[]
- ipyMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyMgr.GetCoatCount()):
- ipyData = ipyMgr.GetCoatByIndex(i)
- coatID = ipyData.GetCoatID()
- coatIDList.append(coatID)
- else:
- coatIDList = [coatIndex]
-
- for coatID in coatIDList:
- coatInfo = ChPyNetSendPack.tagMCClothesCoatLVInfo()
- coatInfo.Clear()
- coatInfo.CoatIndex = coatID
- coatInfo.CoatLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ClothesSkinLV % coatID)
- stateData.CoatInfoList.append(coatInfo)
- stateData.CoatNum = len(stateData.CoatInfoList)
- NetPackCommon.SendFakePack(curPlayer, stateData)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
index 5687f87..0996c27 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -45,18 +45,11 @@
import PlayerDailyGiftbag
import PlayerGoldGift
import PlayerActTotalRecharge
-import PlayerActRechargeRebateGold
-import PlayerActFamilyCTGAssist
import PlayerActManyDayRecharge
import PlayerActSingleRecharge
-import PlayerActRechargePrize
-import CrossActCTGBillboard
-import CrossActAllRecharge
import PlayerActGrowupBuy
-import PlayerWeekParty
import PlayerGoldInvest
import PlayerActTurntable
-import PlayerTongTianLing
import PlayerZhanling
import PlayerGoldRush
import PlayerLLMJ
@@ -594,14 +587,7 @@
gainGoldPrize = ipyData.GetGainGoldPrize() # 赠送货币数,首次充值赠送仙玉时,此仙玉不给
firstGoldPrize = ipyData.GetFirstGoldPrize() # 首次充值赠送的仙玉
prizeGold = firstGoldPrize if (not totalBuyCount and firstGoldPrize) else gainGoldPrize
- if moneyType == IPY_GameWorld.TYPE_Price_Gold_Money:
- #if payType in [PayType_Gold, PayType_GoldPlus] and PlayerGoldInvest.GetInvestState(curPlayer, ChConfig.InvestType_Life):
- # prizeGold = addGold # bt tqxbqy 版本,永久卡仙玉直充固定双倍
- actPrizeGold = PlayerActRechargePrize.DoAddPlayerActRechargePrizeCount(curPlayer, recordID)
- if actPrizeGold:
- prizeGold += actPrizeGold
- addDRDict.update({"actRechargePrize":1})
-
+
syncRecordIDList = [recordID]
# 打包购买 - 目前用于每日特惠,有需要可扩展为通用
if recordID == IpyGameDataPY.GetFuncCfg("DailyTehui", 2):
@@ -822,30 +808,19 @@
# 所有真实充值均有效的
if coinType in [ChConfig.CoinType_Gold, ChConfig.CoinType_Buy, ChConfig.CoinType_UsePayCoin]:
- #跨服充值排行活动
- CrossActCTGBillboard.AddCTGRMB(curPlayer, orderCoin)
- #跨服全民充值
- CrossActAllRecharge.AddCTGRMB(curPlayer, orderCoin)
PlayerActManyDayRecharge.AddManyDayRechargeValue(curPlayer, orderCoin) # 多日连充
-
- # 只算充仙玉的
- if coinType == ChConfig.CoinType_Gold:
- PlayerActRechargeRebateGold.AddRechargeRebateGoldRMB(curPlayer, addGold)
#累积充值X元
PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin, coinType)
PlayerActSingleRecharge.UpdSingleRechargeValue(curPlayer, orderCoin, coinType) # 单笔累充
PlayerActTurntable.OnPlayerRecharge(curPlayer, orderCoin, coinType) # 转盘
- PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Recharge, addVIPExp)
#投资
if ctgIpyData:
ctgID = ctgIpyData.GetRecordID()
- #PlayerActFamilyCTGAssist.OnPlayerCTG(curPlayer, ctgID)
PlayerGoldInvest.InvestByCTG(curPlayer, ctgID)
PlayerGoldGift.OnGiftByCTGID(curPlayer, ctgID)
PlayerZhanling.OnActiviteByCTGID(curPlayer, ctgID)
PlayerGoldRush.OnGoldRushByCTGID(curPlayer, ctgID)
- PlayerTongTianLing.OnActiviteTTTByCTGID(curPlayer, ctgID)
PlayerLLMJ.OnActiviteByCTGID(curPlayer, ctgID)
serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
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 aa3d385..434cc25 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -24,7 +24,6 @@
import ItemCommon
import ReadChConfig
import BuffSkill
-import PetControl
import OperControlManager
import PlayerFamily
import ShareDefine
@@ -44,13 +43,7 @@
import GameFuncComm
import IpyGameDataPY
import PyGameData
-import PlayerActTurntable
-import PlayerCostRebate
-import PlayerActLunhuidian
-import GY_Query_CrossRealmReg
import OpenServerActivity
-import CrossRealmPlayer
-import CrossPlayerData
import PlayerActivity
import ChNetSendPack
import PlayerState
@@ -617,10 +610,6 @@
# curPlayer.SetIsConfronting(False)
# #通知客户端 //0进入;其他退出
# curPlayer.View_PlayerBattle(0, 0, 1)
-#
-# #清除战宠仇恨
-# PetControl.ClearFightPetAngry(curPlayer)
-#
# #添加测试信息
# GameWorld.GodLog(curPlayer, '退出战斗对峙成功')
return
@@ -881,8 +870,6 @@
PassiveBuffEffMng.OnPlayerLeaveMap(curPlayer)
#杀死所有召唤的灵
KillPlayerSummonNPC(curPlayer)
- #召唤回出战的宠物
- PetControl.ReCallFightPet(curPlayer)
curPlayer.DeleteMirror()
return
@@ -960,8 +947,6 @@
PlayerSuccess.FinishDelayAddSuccessProgress(curPlayer, tick)
playerID = curPlayer.GetPlayerID()
- if not isDisconnect:
- CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
#清除地图玩家缓存
PyGameData.g_playerReqEnterFBEx.pop(playerID, None)
#移除地图缓存的境界难度玩家ID信息
@@ -1115,9 +1100,6 @@
# @return 返回值无意义
# @remarks 玩家离开服务器
def PlayerLeaveServer(curPlayer, tick):
- #宠物下线逻辑, 这里要进行排行榜, 优先做, 避免玩家光环等属性影响宠物属性失效
- PetControl.DoLogic_PetInfo_OnLeaveServer(curPlayer, tick)
-
RecordTodayOnlineTime(curPlayer)
#清除下线消失的buff, 在更新排行榜之前
__DisconnectClearBuff(curPlayer, tick)
@@ -1175,8 +1157,6 @@
FBLogic.DoPlayerChangeMapLogic(curPlayer, tick)
#summonList = list()
- #召回宠物
- PetControl.ReCallFightPet(curPlayer)
#1. 删除自己不需要的召唤兽(火焰之灵等)
#必须用while, 因为在循环中要删除
# 召唤兽切地图不带过去
@@ -1232,7 +1212,6 @@
GameWorld.Log("PlayerLeaveFB...", curPlayer.GetPlayerID())
if GameWorld.IsCrossServer():
- CrossRealmPlayer.PlayerExitCrossServer(curPlayer)
return
funcLineID = 0
@@ -1310,74 +1289,6 @@
return
#---------------------------------------------------------------------
-
-def PlayerEnterCrossServer(curPlayer, mapID, lineID):
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("玩家请求进入跨服地图: mapID=%s,lineID=%s" % (mapID, lineID), playerID)
- if mapID not in ChConfig.Def_CrossMapIDList:
- return
-
- tick = GameWorld.GetGameWorld().GetTick()
- lastRequestTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_RequestEnterCrossServerTick)
- if lastRequestTick and tick - lastRequestTick < 5000:
- GameWorld.DebugLog(" 请求进入跨服CD中!", playerID)
- NotifyCode(curPlayer, "RequestEnterCrossServerCD")
- return
-
- crossRegisterMap = curPlayer.NomalDictGetProperty(ChConfig.Def_PlayerKey_CrossRegisterMap)
- if crossRegisterMap:
- GameWorld.ErrLog("跨服已经在上传数据,不重复提交!crossRegisterMap=%s,mapID=%s" % (crossRegisterMap, mapID), playerID)
- return
-
- if GameWorld.IsCrossServer():
- GameWorld.DebugLog("跨服服务器不允许该操作!")
- return
-
- if GetCrossMapID(curPlayer):
- GameWorld.ErrLog("玩家当前为跨服状态,不允许再次请求进入跨服!", curPlayer.GetPlayerID())
- return
-
- if not CrossRealmPlayer.IsCrossServerOpen():
- NotifyCode(curPlayer, "CrossMatching18")
- return
-
- if GameObj.GetHP(curPlayer) <= 0:
- NotifyCode(curPlayer, "CrossMap4")
- return
-
- if PlayerState.IsInPKState(curPlayer):
- NotifyCode(curPlayer, "SingleEnterPK", [mapID])
- return
-
- fbIpyData = FBCommon.GetFBIpyData(mapID)
- if fbIpyData:
- fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID, False)
- if not fbLineIpyData:
- GameWorld.DebugLog("副本表找不到副本对应功能线路!mapID=%s,lineID=%s" % (mapID, lineID))
- return
- ret = FBCommon.CheckCanEnterFBComm(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData)
- if ret != ShareDefine.EntFBAskRet_OK:
- return
-
- if not FBLogic.OnEnterFBEvent(curPlayer, mapID, lineID, tick):
- GameWorld.DebugLog(" OnEnterFBEvent False!", curPlayer.GetPlayerID())
- NotifyCode(curPlayer, "SingleEnterDefaul")
- return
-
- # 需要动态分布线路的地图,发送到跨服服务器进行分配
- if mapID in ChConfig.Def_CrossDynamicLineMap:
- extendInfo = {}
- msgDict = {"PlayerID":curPlayer.GetPlayerID(), "MapID":mapID, "FuncLineID":lineID, "LV":curPlayer.GetLV()}
- if extendInfo:
- msgDict.update(extendInfo)
- GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_EnterFB, msgDict)
- else:
- isSend = GY_Query_CrossRealmReg.RegisterEnterCrossServer(curPlayer, mapID, lineID=lineID)
- if not isSend:
- return
- curPlayer.SetDict(ChConfig.Def_PlayerKey_RequestEnterCrossServerTick, tick)
- return
-
##玩家进入副本
# @param curPlayer 玩家实例
# @param mapID 地图ID
@@ -2764,10 +2675,6 @@
elif type_Price == IPY_GameWorld.TYPE_Price_Silver_Paper:
__PayMoneyAfterBySilverPaper(curPlayer, price)
- #转盘活动
- #PlayerActTurntable.OnPlayerUseGold(curPlayer, type_Price, price)
- #轮回殿
- #PlayerActLunhuidian.AddLunhuidianValue(curPlayer, PlayerActLunhuidian.AwardType_PayMoney, type_Price, price)
if type_Price == ShareDefine.TYPE_Price_Xiantao:
# 累加未结算战锤 - 经验
unXiantaoCntExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntExp)
@@ -2850,17 +2757,6 @@
# @param price ,货币价格
# @return None
def __PayMoneyAfterByGoldMoney(curPlayer, type_Price, price, costType, infoDict, costVIPGold):
-
-
- # 充值活动玩家消耗元宝处理
- #PlayerGoldAction.PlayerUseGold(curPlayer, price)
-
- # 消费返利
- if costType not in ChConfig.CostRebate_DisableType:
- PlayerCostRebate.AddCostRebateGold(curPlayer, costType, price, infoDict)
- else:
- GameWorld.DebugLog("不计入消费活动的消费类型!costType=%s" % costType, curPlayer.GetPlayerID())
-
return
## 付款以后后续操作(金票)
@@ -3389,7 +3285,6 @@
#aftFreePoint = curPlayer.GetFreePoint()
if aftLV > befLV:
curPlayer.SetLV(aftLV, False) # 这里不再通知GameServer
- #PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_LVUp, aftLV - befLV)
PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_LV)
ChPlayer.OnPlayerBaseInfoChange(curPlayer, IPY_PlayerDefine.CDBPlayerRefresh_LV) # 等级
@@ -3602,9 +3497,6 @@
#杀死所有召唤的灵
KillPlayerSummonNPC(curPlayer)
-
- #召唤回出战的宠物
- PetControl.ReCallFightPet(curPlayer)
#清空使用技能记录
curPlayer.ClearUseSkillRec()
@@ -4020,7 +3912,7 @@
if crossActName and crossActIDKey:
playerActID = curPlayer.NomalDictGetProperty(crossActIDKey)
- actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, crossActName)
+ actInfo = {}#GetPlayerCrossActInfo(curPlayer, crossActName)
actID = actInfo.get(ShareDefine.ActKey_ID, 0)
cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
state = actInfo.get(ShareDefine.ActKey_State, 0)
@@ -4323,11 +4215,8 @@
def GetFBFuncLineID(curPlayer): return 0
## 跨服状态所在地图ID: 0-非跨服状态,非0-跨服状态对应的地图ID
-def GetCrossMapID(curPlayer): return curPlayer.GetExAttr5()
+def GetCrossMapID(curPlayer): return 0
def SetCrossMapID(curPlayer, value):
- curPlayer.SetExAttr5(value, False, True)
- if not value:
- CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
return
## 铜钱点, 支持铜钱超20亿
@@ -4432,9 +4321,6 @@
#if value < beforeFightPower:
# DataRecordPack.DR_FightPowerChangeInfo(curPlayer, beforeFightPower)
GameWorld.DebugLog("总战力: %s, beforeFightPower=%s" % (value, beforeFightPower), curPlayer.GetPlayerID())
- #PlayerBillboard.UpdatePlayerFPTotalBillboard(curPlayer)
- #if beforeFightPower != totalFightPower:
- # CrossPlayerData.OnPlayerFightPowerChange(curPlayer)
ChPlayer.OnPlayerBaseInfoChange(curPlayer, IPY_PlayerDefine.CDBPlayerRefresh_FightPower) # 战力
return
@@ -4724,13 +4610,6 @@
#-------------------------------------------------------------------------------
## 设置玩家字典值, 存库
def NomalDictSetProperty(curPlayer, key, value, dType=0):
- if CrossPlayerData.IsNeedProcessCrossPlayer(curPlayer) and key not in \
- [ChConfig.Def_PlayerKey_CrossRegisterMap]:
- playerID = curPlayer.GetPlayerID()
- changeDict = PyGameData.g_crossPlayerDictChangeInfo.get(playerID, {})
- changeDict[(key, dType)] = value
- PyGameData.g_crossPlayerDictChangeInfo[playerID] = changeDict
-
if value == 0:
curPlayer.NomalDictDelProperty(key, dType)
return 0
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py
deleted file mode 100644
index 8803cce..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py
+++ /dev/null
@@ -1,321 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerCostRebate
-#
-# @todo:消费返利活动
-# @author hxp
-# @date 2018-7-16
-# @version 1.0
-#
-# 详细描述: 消费返利活动
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-7-16 12:00"""
-#-------------------------------------------------------------------------------
-
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import ItemControler
-import ChPyNetSendPack
-import DataRecordPack
-import IPY_GameWorld
-import NetPackCommon
-import GameWorld
-import ChConfig
-
-def GetTemplateID(cfgID, dayIndex):
- if cfgID == None or dayIndex == None:
- return 0
- ipyData = IpyGameDataPY.GetIpyGameData("ActCostRebate", cfgID)
- if not ipyData:
- return 0
- templateIDList = ipyData.GetTemplateIDList()
- templateID = templateIDList[-1] if dayIndex >= len(templateIDList) else templateIDList[dayIndex]
- return templateID
-
-def OnPlayerLogin(curPlayer):
-
- for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_CostRebate, {}).values():
- actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
- isReset = __CheckPlayerCostRebateAction(curPlayer, actNum)
- if not isReset:
- # 活动中同步活动信息
- if actInfo.get(ShareDefine.ActKey_State):
- Sync_CostRebateActionInfo(curPlayer, actNum)
- Sync_CostRebateInfo(curPlayer, actNum)
- return
-
-def RefreshCostRebateActionInfo(actNum):
- ## 收到GameServer同步的活动信息,刷新活动信息
- playerManager = GameWorld.GetPlayerManager()
- for index in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(index)
- if not GameWorld.IsNormalPlayer(curPlayer):
- continue
- __CheckPlayerCostRebateAction(curPlayer, actNum)
- return
-
-def __CheckPlayerCostRebateAction(curPlayer, actNum):
- ## 检查玩家消费返利活动数据信息
-
- playerID = curPlayer.GetPlayerID()
-
- actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_CostRebate, actNum)
- actID = actInfo.get(ShareDefine.ActKey_ID, 0)
- state = actInfo.get(ShareDefine.ActKey_State, 0)
-
- playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateID % actNum) # 玩家身上的活动ID
-
- # 活动ID 相同的话不处理
- if actID == playerActID:
- GameWorld.DebugLog("消费返利活动ID不变,不处理!actNum=%s,actID=%s" % (actNum, actID), curPlayer.GetPlayerID())
- return
- actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
- playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateWorldLV % actNum)
- templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
- playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateTemplateID % actNum)
-
- GameWorld.DebugLog("消费返利重置! actNum=%s,actID=%s,playerActID=%s,state=%s,templateID=%s,playerTemplateID=%s"
- % (actNum, actID, playerActID, state, templateID, playerTemplateID), playerID)
-
- # 未领取的奖励邮件发放
- __SendCostRebateMail(curPlayer, playerTemplateID, playerWorldLV, actNum)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateID % actNum, actID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateTemplateID % actNum, templateID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateWorldLV % actNum, actWorldLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateGold % actNum, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateAwardRecord % actNum, 0)
-
- Sync_CostRebateActionInfo(curPlayer, actNum)
- Sync_CostRebateInfo(curPlayer, actNum)
- return True
-
-def __SendCostRebateMail(curPlayer, playerTemplateID, playerWorldLV, actNum):
- # 未领取的奖励邮件发放
-
- if not playerTemplateID:
- return
-
- costGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateGold % actNum)
- if not costGold:
- return
-
- ipyDataList = IpyGameDataPY.GetIpyGameDataList("CostRebateTemplate", playerTemplateID)
- if not ipyDataList:
- return
- job = curPlayer.GetJob()
- playerID = curPlayer.GetPlayerID()
- batchPlayerIDList, batchAddItemList, batchParamList = [], [], []
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateAwardRecord % actNum)
-
- for ipyData in ipyDataList:
- awardIndex = ipyData.GetAwardIndex()
- if awardRecord & pow(2, awardIndex):
- continue
-
- needCostGold = ipyData.GetNeedCostGold()
- if costGold < needCostGold:
- continue
- awardRecord |= pow(2, awardIndex)
-
- awardItemList = __GetItemList(ipyData.GetAwardItemList(), job, playerWorldLV)
- batchPlayerIDList.append([playerID])
- batchAddItemList.append(awardItemList)
- batchParamList.append([needCostGold])
-
- if batchPlayerIDList:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateAwardRecord % actNum, awardRecord)
- PlayerControl.SendMailBatch("ConsumptionRebateMail", batchPlayerIDList, batchAddItemList, batchParamList)
-
- return
-
-
-def __GetItemList(itemDict, job, worldLV):
- #{世界等级范围:[(物品ID,个数,是否绑定), ...]},若物品ID要区分职业则配{世界等级范围:[({职业:物品ID,..},个数,是否绑定), ...]}
- itemList = []
- itemInfoList = GameWorld.GetDictValueByRangeKey(itemDict, worldLV, [])
- for itemInfo in itemInfoList:
- if type(itemInfo[0]) == dict:
- itemID = itemInfo[0].get(job)
- if not itemID:
- GameWorld.ErrLog('累计充值奖励未配置该职业itemDict=%s,job=%s'%(itemDict, job))
- continue
- else:
- itemID = itemInfo[0]
- itemList.append([itemID, itemInfo[1], itemInfo[2]])
- return itemList
-
-
-def AddCostRebateGold(curPlayer, costType, costGold, infoDict):
- if costGold <= 0:
- return
- if costType in ChConfig.CostRebate_DisableType:
- GameWorld.DebugLog("不计入消费返利的消费类型!costType=%s" % costType, curPlayer.GetPlayerID())
- return
-
- for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_CostRebate, {}).values():
- actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-
- if not actInfo.get(ShareDefine.ActKey_State):
- GameWorld.DebugLog("消费返利活动当前未开启!actNum=%s" % actNum)
- continue
-
- actID = actInfo.get(ShareDefine.ActKey_ID)
- templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
- if not actID or not templateID:
- GameWorld.ErrLog("消费返利活动数据异常!actNum=%s,actID=%s,templateID=%s" % (actNum, actID, templateID), curPlayer.GetPlayerID())
- continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateID % actNum, actID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateTemplateID % actNum, templateID)
-
- curCostGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateGold % actNum)
- updCostGold = curCostGold + costGold
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateGold % actNum, updCostGold)
- Sync_CostRebateInfo(curPlayer, actNum)
- GameWorld.DebugLog("玩家消费返利活动: actNum=%s,actID=%s,templateID=%s,curCostGold=%s,costGold=%s,updCostGold=%s"
- % (actNum, actID, templateID, curCostGold, costGold, updCostGold), curPlayer.GetPlayerID())
- return
-
-def OnGetCostRebateAward(curPlayer, awardIndex, actNum):
- ## 领取消费返利奖励
-
- actNum = GameWorld.ToIntDef(actNum, 0)
- if actNum <= 0:
- GameWorld.DebugLog("没有该活动编号! actNum=%s" % actNum)
- return
-
- playerID = curPlayer.GetPlayerID()
-
- actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_CostRebate, actNum)
- costRebateID = actInfo.get(ShareDefine.ActKey_ID, 0)
- state = actInfo.get(ShareDefine.ActKey_State, 0)
- templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
- if not state or not templateID:
- GameWorld.DebugLog("没有消费返利活动,无法领奖!actNum=%s,state=%s,templateID=%s" % (actNum, state, templateID), playerID)
- return
-
- playerCostRebateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateID % actNum) # 玩家身上的活动ID
- if costRebateID != playerCostRebateID:
- return
-
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateAwardRecord % actNum)
- if awardRecord & pow(2, awardIndex):
- GameWorld.DebugLog("已经领取过该消费返利活动奖励!actNum=%s,awardIndex=%s,awardRecord=%s" % (actNum, awardIndex, awardRecord), playerID)
- return
-
- ipyDataList = IpyGameDataPY.GetIpyGameDataList("CostRebateTemplate", templateID)
- if not ipyDataList:
- return
-
- awardIpyData = None
- for ipyData in ipyDataList:
- if ipyData.GetAwardIndex() == awardIndex:
- awardIpyData = ipyData
- break
-
- if not awardIpyData:
- GameWorld.DebugLog("找不到该返利活动档位索引奖励!templateID=%s,awardIndex=%s" % (templateID, awardIndex), playerID)
- return
-
- needCostGold = awardIpyData.GetNeedCostGold()
- actWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateWorldLV % actNum)
- awardItemList = __GetItemList(awardIpyData.GetAwardItemList(), curPlayer.GetJob(), actWorldLV)
-
- curCostGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateGold % actNum)
- if curCostGold < needCostGold:
- GameWorld.DebugLog("所需消费仙玉数不足,无法领取!templateID=%s,awardIndex=%s,needCostGold=%s,curCostGold=%s"
- % (templateID, awardIndex, needCostGold, curCostGold), playerID)
- return
-
- if not ItemControler.CheckPackSpaceEnough(curPlayer, awardItemList):
- return
-
- awardRecord |= pow(2, awardIndex)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateAwardRecord % actNum, awardRecord)
- Sync_CostRebateInfo(curPlayer, actNum)
-
- notifyKey = awardIpyData.GetNotifyKey()
- if notifyKey:
- PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), needCostGold])
-
- for itemID, itemCount, _ in awardItemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
-
- addDataDict = {"TemplateID":templateID, "NeedCostGold":needCostGold, "AwardIndex":awardIndex,
- "ItemList":str(awardItemList), "ActNum":actNum}
- DataRecordPack.DR_FuncGiveItem(curPlayer, "CostRebateAward", addDataDict)
- return
-
-def Sync_CostRebateInfo(curPlayer, actNum):
- ## 通知消费返利玩家数据信息
- playerActInfo = ChPyNetSendPack.tagMCCostRebatePlayerInfo()
- playerActInfo.ActNum = actNum
- playerActInfo.CostGoldTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateGold % actNum)
- playerActInfo.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateAwardRecord % actNum)
- NetPackCommon.SendFakePack(curPlayer, playerActInfo)
- return
-
-def Sync_CostRebateActionInfo(curPlayer, actNum):
- ## 通知消费返利活动信息
-
- actCostRebateInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_CostRebate, actNum)
- if not actCostRebateInfo:
- return
-
- if not actCostRebateInfo.get(ShareDefine.ActKey_State):
- return
-
- cfgID = actCostRebateInfo.get(ShareDefine.ActKey_CfgID)
- ipyData = IpyGameDataPY.GetIpyGameData("ActCostRebate", cfgID)
- if not ipyData:
- return
-
- templateIDList = ipyData.GetTemplateIDList()
- if not templateIDList:
- return
- job = curPlayer.GetJob()
- actWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateWorldLV % actNum)
- startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
- startDateSync = actCostRebateInfo.get(ShareDefine.ActKey_StartDateSync, startDateStr)
- actInfo = ChPyNetSendPack.tagMCCostRebateInfo()
- actInfo.ActNum = actNum
- actInfo.StartDate = startDateSync
- actInfo.EndtDate = endDateStr
- actInfo.LimitLV = ipyData.GetLVLimit()
- actInfo.IsDayReset = ipyData.GetIsDayReset()
- actInfo.AwardDayInfo = []
- for templateID in templateIDList:
- ipyDataList = IpyGameDataPY.GetIpyGameDataList("CostRebateTemplate", templateID)
- if not ipyDataList:
- continue
-
- dayInfo = ChPyNetSendPack.tagMCCostRebateAwardDay()
- dayInfo.AwardInfo = []
- for ipyData in ipyDataList:
- awardInfo = ChPyNetSendPack.tagMCCostRebateAward()
- awardInfo.AwardIndex = ipyData.GetAwardIndex()
- awardInfo.NeedGold = ipyData.GetNeedCostGold()
- awardInfo.AwardItem = []
- for itemID, itemCount, isBind in __GetItemList(ipyData.GetAwardItemList(), job, actWorldLV):
- awardItem = ChPyNetSendPack.tagMCCostRebateAwardItem()
- awardItem.ItemID = itemID
- awardItem.ItemCount = itemCount
- awardItem.IsBind = isBind
- awardInfo.AwardItem.append(awardItem)
- awardInfo.AwardItemCount = len(awardInfo.AwardItem)
-
- dayInfo.AwardInfo.append(awardInfo)
-
- dayInfo.AwardCount = len(dayInfo.AwardInfo)
- actInfo.AwardDayInfo.append(dayInfo)
-
- actInfo.AwardDays = len(actInfo.AwardDayInfo)
- NetPackCommon.SendFakePack(curPlayer, actInfo)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossChampionship.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossChampionship.py
deleted file mode 100644
index 0365b79..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossChampionship.py
+++ /dev/null
@@ -1,249 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerCrossChampionship
-#
-# @todo:跨服排位争霸赛
-# @author hxp
-# @date 2022-09-21
-# @version 1.0
-#
-# 详细描述: 跨服排位争霸赛
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-09-21 21:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import ShareDefine
-import PlayerControl
-import CrossRealmPlayer
-import ChPyNetSendPack
-import NetPackCommon
-import IpyGameDataPY
-import ChConfig
-
-import random
-import time
-
-
-def DoChampionshipOpen(curPlayer):
- DoPlayerLogin(curPlayer)
- return
-
-def DoPlayerLogin(curPlayer):
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Championship_WorshipCount):
- Sync_ChampionshipPlayerInfo(curPlayer)
- return
-
-def DoPlayerOnDay(curPlayer):
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Championship_WorshipCount):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Championship_WorshipCount, 0)
- Sync_ChampionshipPlayerInfo(curPlayer)
- return
-
-#// C1 20 跨服排位仙官申请 #tagCMChampionshipOfficialApply
-#
-#struct tagCMChampionshipOfficialApply
-#{
-# tagHead Head;
-# BYTE ZoneID; //仙官数据分区ID
-# WORD MainOfficialID; //界主官职ID
-# WORD OfficialID; //申请官职ID
-# BYTE Cancel; //是否取消申请,默认0-申请;1-取消申请
-#};
-def OnChampionshipOfficialApply(index, clientData, tick):
- if GameWorld.IsCrossServer():
- return
-
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
-
- zoneID = clientData.ZoneID
- mainOfficialID = clientData.MainOfficialID
- officialID = clientData.OfficialID
- cancel = clientData.Cancel
-
- realmLV = curPlayer.GetOfficialRank()
- needRealmLV = IpyGameDataPY.GetFuncCfg("CrossChamOfficial", 3)
- if realmLV < needRealmLV:
- GameWorld.DebugLog("所需境界不足,无法申请仙官! realmLV(%s) < %s" % (realmLV, needRealmLV), playerID)
- return
-
- # 发送跨服服务器
- dataMsg = {"zoneID":zoneID, "mainOfficialID":mainOfficialID, "officialID":officialID, "cancel":cancel,
- "playerID":playerID, "PropData":CrossRealmPlayer.GetPlayerCrossPropDataShort(curPlayer)}
- GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_ChampionshipOfficialApply, dataMsg)
- return
-
-
-#// C1 21 跨服排位仙官挑战 #tagCMChampionshipOfficialChallenge
-#
-#struct tagCMChampionshipOfficialChallenge
-#{
-# tagHead Head;
-# BYTE ZoneID; //仙官数据分区ID
-# WORD MainOfficialID; //界主官职ID
-# WORD OfficialID; //挑战的目标官职ID
-# DWORD PlayerID; //挑战时的目标玩家ID
-#};
-def OnChampionshipOfficialChallenge(index, clientData, tick):
- if GameWorld.IsCrossServer():
- return
-
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
-
- zoneID = clientData.ZoneID
- mainOfficialID = clientData.MainOfficialID
- officialID = clientData.OfficialID
- tagPlayerID = clientData.PlayerID
-
- realmLV = curPlayer.GetOfficialRank()
- needRealmLV = IpyGameDataPY.GetFuncCfg("CrossChamOfficial", 3)
- if realmLV < needRealmLV:
- GameWorld.DebugLog("所需境界不足,无法挑战仙官! realmLV(%s) < %s" % (realmLV, needRealmLV), playerID)
- return
-
- # 发送跨服服务器
- dataMsg = {"zoneID":zoneID, "mainOfficialID":mainOfficialID, "officialID":officialID,
- "playerID":playerID, "tagPlayerID":tagPlayerID, "PropData":CrossRealmPlayer.GetPlayerCrossPropDataShort(curPlayer)}
- GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_ChampionshipOfficialChallenge, dataMsg)
- return
-
-
-#// C1 22 跨服排位竞猜 #tagCMChampionshipGuess
-#
-#struct tagCMChampionshipGuess
-#{
-# tagHead Head;
-# BYTE ZoneID; //排位数据分区ID
-# BYTE GuessType; //竞猜类型 8-8强;4-4强排位
-# DWORD PlayerID; //目标玩家ID
-# BYTE GuessCount; //投注/追加份数
-# BYTE GuessRank; // 竞猜名次,没有名次的竞猜默认0;1-代表第一名
-#};
-def OnChampionshipGuess(index, clientData, tick):
- if GameWorld.IsCrossServer():
- return
-
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- zoneID = clientData.ZoneID
- guessType = clientData.GuessType
- tagPlayerID = clientData.PlayerID
- guessCount = clientData.GuessCount
- guessRank = clientData.GuessRank
-
- moneyType, moneyValue = IpyGameDataPY.GetFuncEvalCfg("CrossChamGuess", 1)
- guessMoney = moneyValue * guessCount
- if guessMoney <= 0:
- return
-
- if not PlayerControl.HaveMoney(curPlayer, moneyType, guessMoney):
- return
-
- if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_Championship, tick):
- PlayerControl.NotifyCode(curPlayer, "RequestLater")
- return
-
- # 发送跨服服务器
- dataMsg = {"zoneID":zoneID, "guessType":guessType, "playerID":playerID, "tagPlayerID":tagPlayerID,
- "guessRank":guessRank, "guessMoney":guessMoney, "moneyType":moneyType, "exDataType":"ChampionshipGuess"}
- GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_ChampionshipGuess, dataMsg)
- return
-
-
-#// C1 23 跨服排位膜拜 #tagCMChampionshipWorship
-#
-#struct tagCMChampionshipWorship
-#{
-# tagHead Head;
-# BYTE ZoneID; //仙官数据分区ID
-# DWORD PlayerID; //目标玩家ID
-#};
-def OnChampionshipWorship(index, clientData, tick):
- if GameWorld.IsCrossServer():
- return
-
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- zoneID = clientData.ZoneID
- tagPlayerID = clientData.PlayerID
-
- worshipCountMax = IpyGameDataPY.GetFuncCfg("CrossChamWorship", 1)
- if worshipCountMax:
- worshipCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Championship_WorshipCount)
- if worshipCountToday >= worshipCountMax:
- GameWorld.DebugLog("膜拜次数不足! worshipCountToday=%s >= %s" % (worshipCountToday, worshipCountMax), curPlayer.GetPlayerID())
- return False
-
- if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_Championship, tick):
- PlayerControl.NotifyCode(curPlayer, "RequestLater")
- return
-
- # 发送跨服服务器
- dataMsg = {"zoneID":zoneID, "playerID":playerID, "tagPlayerID":tagPlayerID, "exDataType":"OfficialWorship", "WorshipTime":int(time.time())}
- GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_ChampionshipWorship, dataMsg)
- return
-
-def GameServer_Championship(curPlayer, msgData):
-
- playerID = curPlayer.GetPlayerID()
-
- msgType = msgData[0]
- if msgType == "ChampionshipGuess":
- dataMsg = msgData[1]
- if not isinstance(dataMsg, dict) or "moneyType" not in dataMsg:
- return
- moneyType = dataMsg["moneyType"]
- guessMoney = dataMsg["guessMoney"]
- infoDict = dataMsg
- PlayerControl.PayMoney(curPlayer, moneyType, guessMoney, msgType, infoDict)
-
- elif msgType == "OfficialWorship":
- dataMsg = msgData[1]
- worshipTime = dataMsg["WorshipTime"]
- worshipDouble = dataMsg.get("worshipDouble", 0)
- if GameWorld.CheckTimeIsSameServerDayEx(worshipTime):
- worshipCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Championship_WorshipCount) + 1
- worshipCountMax = IpyGameDataPY.GetFuncCfg("CrossChamWorship", 1)
- if worshipCountToday > worshipCountMax:
- return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Championship_WorshipCount, worshipCountToday)
- GameWorld.DebugLog("更新膜拜次数! worshipCountToday=%s" % worshipCountToday, playerID)
- Sync_ChampionshipPlayerInfo(curPlayer)
-
- gongdePointRange = IpyGameDataPY.GetFuncEvalCfg("CrossChamWorship", 2) # 随机奖励功德点范围
- if len(gongdePointRange) != 2:
- return
- gongdePoint = random.randint(gongdePointRange[0], gongdePointRange[1])
- GameWorld.DebugLog("膜拜随机功德点: gongdePoint=%s" % gongdePoint, playerID)
- doubleHMList = IpyGameDataPY.GetFuncEvalCfg("CrossChamWorship", 3) # 双倍膜拜时间范围
- if worshipDouble and len(doubleHMList) == 2:
- fromHour, fromMinute = doubleHMList[0]
- toHour, toMinute = doubleHMList[1]
- serverTime = GameWorld.GetCurrentTime()
- curHour, curMinute = serverTime.hour, serverTime.minute
- fromValue = fromHour * 100 + fromMinute
- toValue = toHour * 100 + toMinute
- curValue = curHour * 100 + curMinute
- if fromValue <= curValue <= toValue:
- gongdePoint *= 2
- GameWorld.DebugLog("膜拜双倍功德点: gongdePoint=%s" % gongdePoint, playerID)
- else:
- GameWorld.DebugLog("非双倍膜拜期间: doubleHM(%s~%s), curHM=%s" % (fromValue, toValue, curValue), playerID)
-
- if gongdePoint:
- PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_GongdePoint, gongdePoint, "OfficialWorship")
-
- return
-
-def Sync_ChampionshipPlayerInfo(curPlayer):
- clientPack = ChPyNetSendPack.tagMCChampionshipPlayerInfo()
- clientPack.WorshipCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Championship_WorshipCount)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py
deleted file mode 100644
index d2a64f0..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py
+++ /dev/null
@@ -1,798 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerCrossRealmPK
-#
-# @todo:跨服PK竞技场
-# @author hxp
-# @date 2018-12-21
-# @version 1.0
-#
-# 详细描述: 跨服PK竞技场
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-12-21 18:00"""
-#-------------------------------------------------------------------------------
-
-import ShareDefine
-import PlayerControl
-import NetPackCommon
-import IpyGameDataPY
-import ChPyNetSendPack
-import CrossRealmPlayer
-import PlayerTongTianLing
-import DataRecordPack
-import PlayerWeekParty
-import IPY_GameWorld
-import ItemControler
-import ItemCommon
-import GameWorld
-import ChConfig
-import GameObj
-
-def DoPlayerOnDay(curPlayer):
- if GameWorld.IsCrossServer():
- return
- totalScore = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TotalScore)
- if not totalScore:
- return
-
- zoneID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_ZoneID)
- seasonID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_SeasonID)
-
- # 邮件发放未领取的每日PK次数奖励
- dayPKCountAwardDict = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKAward", 1, {})
- dayPKCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayPKCount)
- dayPKCountAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_DayPKCountAwardState)
- SendDayPKAwardByMail(curPlayer, zoneID, seasonID, "PKCount", dayPKCount, dayPKCountAwardState, dayPKCountAwardDict, "CrossServer1")
-
- # 邮件发放未领取的每日胜利次数奖励
- dayWinCountAwardDict = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKAward", 2, {})
- dayWinCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayWinCount)
- dayWinCountAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_DayWinCountAwardState)
- SendDayPKAwardByMail(curPlayer, zoneID, seasonID, "WinCount", dayWinCount, dayWinCountAwardState, dayWinCountAwardDict, "CrossServer2")
-
- # 重置每日奖励状态
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayPKCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayWinCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayBuyCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_ItemAddCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_RefreshCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DayPKCountAwardState, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DayWinCountAwardState, 0)
- SyncCrossRealmPKPlayerInfo(curPlayer)
- SyncCrossRealmPKAwardState(curPlayer)
- return
-
-def DoPlayerLogin(curPlayer):
- if GameWorld.IsCrossServer():
- return
-
- mapZoneID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
- mapSeasonID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
- if not mapZoneID or not mapSeasonID:
- return
-
- if not __CheckResetPlayerCrossPKData(curPlayer, mapZoneID, mapSeasonID):
- SyncCrossRealmPKPlayerInfo(curPlayer)
- SyncCrossRealmPKAwardState(curPlayer)
- SyncCrossRealmPKHisSeasonInfo(curPlayer)
- return
-
-def IsCrossRealmPKMatchState():
- ## 跨服PK匹配赛是否开启
- return False
-
-def GetCrossPKDanAwardIpyData(seasonID, awardDanLV, isLog):
- ## 获取跨服段位奖励配置信息
- crossZoneName = "" #GameWorld.GetCrossZoneName()
- danLVAwardIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CrossRealmPKDanAward", crossZoneName, seasonID, awardDanLV)
- if not danLVAwardIpyData:
- danLVAwardIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CrossRealmPKDanAward", "", seasonID, awardDanLV)
- if not danLVAwardIpyData and isLog:
- GameWorld.ErrLog("找不到段位奖励配置: seasonID=%s, awardDanLV=%s" % (seasonID, awardDanLV))
- return danLVAwardIpyData
-
-def OnCrossRealmPKSeasonChange(value):
- ## 赛区赛季状态变更,规定所有赛区的赛季ID都一样,且赛季ID一定是自增的,所以这里只判断赛季ID变更即可
-
- if GameWorld.IsCrossServer():
- return
-
- mapZoneID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
- mapSeasonID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
-
- if mapSeasonID == value:
- GameWorld.DebugLog("跨服PK赛季信息与地图当前值相同,不处理!")
- return
- GameWorld.Log("跨服PK赛季信息变更: mapSeasonID=%s,value=%s" % (mapSeasonID, value))
- mapSeasonID = value
-
- playerManager = GameWorld.GetPlayerManager()
- for i in xrange(playerManager.OnlineCount()):
- curPlayer = playerManager.OnlineAt(i)
- if not GameWorld.IsNormalPlayer(curPlayer):
- continue
-
- #检查重置玩家信息
- __CheckResetPlayerCrossPKData(curPlayer, mapZoneID, mapSeasonID)
-
- return
-
-def __CheckResetPlayerCrossPKData(curPlayer, mapZoneID, mapSeasonID):
- ## 检查玩家赛区赛季状态数据
-
- playerID = curPlayer.GetPlayerID()
- zoneID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_ZoneID)
- seasonID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_SeasonID)
- if mapSeasonID == seasonID:
- GameWorld.DebugLog("玩家跨服PK赛季信息相同,不处理! mapSeasonID=%s,seasonID=%s" % (mapSeasonID, seasonID), playerID)
- return
- GameWorld.Log("玩家跨服PK赛区赛季信息不同! 处理相关数据! mapSeasonID=%s,seasonID=%s" % (mapSeasonID, seasonID), playerID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonID, mapSeasonID)
-
- playerDanLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_DanLV)
- danLVAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_DanLVAwardState)
-
- GameWorld.Log("开始新赛季,发放上赛季未领取的奖励,重置赛季数据! zoneID=%s,seasonID=%s,newSeasonID=%s,playerDanLV=%s,danLVAwardState=%s"
- % (zoneID, seasonID, mapSeasonID, playerDanLV, danLVAwardState), playerID)
-
- # 邮件发放上赛季未领取的段位奖励、赛季奖励(排名或段位)
- for awardDanLV in xrange(playerDanLV + 1):
- danLVAwardIpyData = GetCrossPKDanAwardIpyData(seasonID, awardDanLV, False)
- if not danLVAwardIpyData:
- continue
- awardItemList = danLVAwardIpyData.GetDanLVAwardList()
- if not awardItemList:
- continue
- if pow(2, awardDanLV) & danLVAwardState:
- GameWorld.DebugLog(" 已经领取过该段位达标奖励!awardDanLV=%s,danLVAwardState=%s" % (awardDanLV, danLVAwardState), playerID)
- continue
- eventName = "DanLV"
- GameWorld.Log(" 邮件补发未领取的段位达标奖励!awardDanLV=%s,danLVAwardState=%s,awardItemList=%s"
- % (awardDanLV, danLVAwardState, awardItemList), playerID)
- mailDetail = {"EventName":eventName, "zoneID":zoneID, "seasonID":seasonID, "awardDanLV":awardDanLV,
- "danLVAwardState":danLVAwardState, "mapSeasonID":mapSeasonID}
- PlayerControl.SendMailByKey("CrossServer3", [playerID], awardItemList, [seasonID, awardDanLV], detail=mailDetail)
- DR_GetCrossPKAward(curPlayer, zoneID, seasonID, eventName, True, mailDetail)
-
- # 查询 GameServer 玩家赛季排名
- if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_SeasonAwardState) and playerDanLV:
- OnQueryCrossPKSeasonOrderAward(curPlayer, zoneID, seasonID, True)
-
- # 重置状态
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TotalScore, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DanLV, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_PKCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_WinCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CWinCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CLoseCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayPKCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayWinCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayBuyCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_ItemAddCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_RefreshCount, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DayPKCountAwardState, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DayWinCountAwardState, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DanLVAwardState, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonAwardState, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_ZoneID, mapZoneID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonID, mapSeasonID)
-
- SyncCrossRealmPKPlayerInfo(curPlayer)
- SyncCrossRealmPKAwardState(curPlayer)
-
- # 重置商店物品
- #FunctionNPCCommon.ShopItemOnCrossPKSeasonChange(curPlayer)
- return True
-
-#// C1 01 跨服PK匹配 #tagCMCrossRealmPKMatch
-#
-#struct tagCMCrossRealmPKMatch
-#{
-# tagHead Head;
-# BYTE Type; // 0-查询匹配;1-刷新匹配
-#};
-def OnCrossRealmPKMatch(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- accID = curPlayer.GetAccID()
- playerID = curPlayer.GetPlayerID()
- requestType = clientData.Type
-
- GameWorld.DebugLog("跨服PK匹配请求: type=%s,accID=%s" % (requestType, accID), playerID)
-
- # 刷新匹配
- if requestType == 1:
- if not CheckCanMatch(curPlayer):
- return
-
- refreshCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_RefreshCount)
- freeRefreshCountMax = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatchRefresh", 1)
- if freeRefreshCountMax <= 0 or refreshCount < freeRefreshCountMax:
- GameWorld.DebugLog("免费刷新: refreshCount=%s < %s" % (refreshCount, freeRefreshCountMax), playerID)
- else:
- refreshBuyCount = max(0, refreshCount - freeRefreshCountMax)
- refreshBuyCountMax = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatchRefresh", 2)
- if refreshBuyCountMax and refreshBuyCount >= refreshBuyCountMax:
- GameWorld.DebugLog("购买刷新次数已达每日上限! refreshBuyCount=%s >= %s" % (refreshBuyCount, refreshBuyCountMax), playerID)
- return
- costMoney = eval(IpyGameDataPY.GetFuncCompileCfg("CrossRealmPKMatchRefresh", 3))
- moneyType = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatchRefresh", 4)
- GameWorld.DebugLog("付费刷新: refreshCount=%s,refreshBuyCount=%s,costMoney=%s,moneyType=%s"
- % (refreshCount, refreshBuyCount, costMoney, moneyType), playerID)
- if not PlayerControl.PayMoney(curPlayer, moneyType, costMoney, ChConfig.Def_Cost_CrossRealmPK, {"Event":"Refresh", "refreshBuyCount":refreshBuyCount}):
- return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_RefreshCount, refreshCount + 1)
- SyncCrossRealmPKPlayerInfo(curPlayer)
-
- dataMsg = {
- "requestType":requestType,
- "seasonID":GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID), # 赛季ID
- "zoneID":GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID), # PK赛区
- "playerID":playerID,
- "fightPower":PlayerControl.GetFightPower(curPlayer),
- }
- GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_PKMatch, dataMsg)
- GameWorld.DebugLog("发送请求匹配到跨服服务器 dataMsg=%s" % str(dataMsg), playerID)
- return
-
-def CheckCanMatch(curPlayer):
- ## 可否匹配、挑战
- playerID = curPlayer.GetPlayerID()
- if GameWorld.IsCrossServer():
- GameWorld.DebugLog("跨服服务器无法发起匹配!", playerID)
- return
-
- if not CrossRealmPlayer.IsCrossServerOpen():
- PlayerControl.NotifyCode(curPlayer, "CrossMatching18")
- return
-
- if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
- GameWorld.DebugLog("副本中,无法进行跨服匹配!", playerID)
- return
-
- if curPlayer.GetPlayerAction() == IPY_GameWorld.paDie or GameObj.GetHP(curPlayer) == 0:
- #GameWorld.DebugLog("已死亡,无法进行跨服匹配!", playerID)
- return
-
- if GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState) != 1:
- GameWorld.DebugLog("OnCrossRealmPKMatch 跨服赛季未开启,不可进行匹配!", playerID)
- #PlayerControl.NotifyCode(curPlayer, "SeasonIsNotOpen")
- return
-
- if not IsCrossRealmPKMatchState():
- GameWorld.DebugLog("OnCrossRealmPKMatch 跨服匹配未开启,不可进行匹配!", playerID)
- #PlayerControl.NotifyCode(curPlayer, "MatchIsNotOpen")
- return
-
- return True
-
-def CheckHavePKCount(curPlayer):
- ## 检查是否有PK次数
- dayFreeMatchCountMax = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatchCount", 1)
- if dayFreeMatchCountMax:
- todayPKCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayPKCount)
- todayBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayBuyCount)
- todayItemAddCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_ItemAddCount)
-
- if todayPKCount >= (dayFreeMatchCountMax + todayBuyCount + todayItemAddCount):
- GameWorld.DebugLog("PK次数不足,无法发起匹配! todayPKCount=%s >= (dayFreeMatchCountMax=%s + todayBuyCount=%s + todayItemAddCount=%s)"
- % (todayPKCount, dayFreeMatchCountMax, todayBuyCount, todayItemAddCount), curPlayer.GetPlayerID())
- return False
- return True
-
-def CrossServerMsg_PKOverInfo(curPlayer, overInfo):
- ## 收到跨服服务器的PK结算信息
- playerID = curPlayer.GetPlayerID()
- zoneID, seasonID, timeStr, winnerID, pkScore, danLV, cWinCount, addScore, tagPlayerID, tagPlayerName = overInfo
- isWinner = winnerID == playerID
- GameWorld.Log("地图收到跨服PK结算: isWinner=%s,zoneID=%s,seasonID=%s,timeStr=%s,winnerID=%s,pkScore=%s,danLV=%s,cWinCount=%s,addScore=%s,tagPlayerID=%s"
- % (isWinner, zoneID, seasonID, timeStr, winnerID, pkScore, danLV, cWinCount, addScore, tagPlayerID), playerID)
-
- isToday = GameWorld.CheckTimeIsSameServerDayEx(GameWorld.ChangeTimeStrToNum(timeStr))
- if not __DoAddPKOverData(curPlayer, zoneID, seasonID, danLV, pkScore, cWinCount, isWinner, isToday):
- return
-
- overPack = ChPyNetSendPack.tagGCCrossRealmPKOverInfo()
- overPack.TimeStr = timeStr
- overPack.OverType = 0
- overPack.WinnerID = winnerID
- overPack.RoundWinnerID = []
- overPack.RoundCount = len(overPack.RoundWinnerID)
- overPack.AddScore = addScore
- overPack.Score = pkScore
- overPack.DanLV = danLV
- overPack.CWinCnt = cWinCount
- overPack.TagName = tagPlayerName
- overPack.TagNameLen = len(overPack.TagName)
- NetPackCommon.SendFakePack(curPlayer, overPack)
- return
-
-def __DoAddPKOverData(curPlayer, zoneID, seasonID, danLV, pkScore, cWinCount, isWinner, isToday):
- playerID = curPlayer.GetPlayerID()
- curSeasonID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
- if curSeasonID != seasonID:
- GameWorld.Log(" 非本赛季的结算信息,不处理!curSeasonID=%s,seasonID=%s" % (curSeasonID, seasonID), playerID)
- return
-
- # 赛季已关闭
- if GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState) != 1:
- GameWorld.Log(" 赛季已关闭,不处理!seasonID=%s" % (seasonID), playerID)
- return
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_ZoneID, zoneID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonID, seasonID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonDanLV % seasonID, danLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonScore % seasonID, pkScore)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TotalScore, pkScore)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DanLV, danLV)
-
- pkCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_PKCount) + 1
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_PKCount, pkCount)
- GameWorld.Log(" 更新数据: danLV=%s,pkScore=%s,pkCount=%s" % (danLV, pkScore, pkCount), playerID)
- if isWinner:
- winCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_WinCount) + 1
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_WinCount, winCount)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CWinCount, cWinCount)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CLoseCount, 0)
- GameWorld.Log(" winner winCount=%s,cWinCount=%s" % (winCount, cWinCount), playerID)
- else:
- cLoseCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_CLoseCount) + 1
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CLoseCount, cLoseCount)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CWinCount, 0)
- GameWorld.Log(" loser cLoseCount=%s" % cLoseCount, playerID)
-
- # 同一天的话增加当日PK次数
- if isToday:
- todayPKCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayPKCount) + 1
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayPKCount, todayPKCount)
- GameWorld.Log(" 同一天的PK结算增加今日PK次数: todayPKCount=%s" % todayPKCount, playerID)
- if isWinner:
- todayWinCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayWinCount) + 1
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayWinCount, todayWinCount)
- GameWorld.Log(" 增加今日已获胜次数: todayWinCount=%s" % todayWinCount, playerID)
- PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_CrossPK, 1)
- PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_CrossPK, 1)
- else:
- GameWorld.Log(" 不同天的PK结算不增加今日PK次数! ", playerID)
-
- SyncCrossRealmPKPlayerInfo(curPlayer)
- return True
-
-#// C1 08 跨服PK挑战机器人结算 #tagCMCrossRealmPKRobotOver
-#
-#struct tagCMCrossRealmPKRobotOver
-#{
-# tagHead Head;
-# BYTE IsWin; //是否获胜
-# DWORD TagPlayerID; //目标玩家ID
-#};
-def OnCrossRealmPKRobotOver(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- isWinner = clientData.IsWin
- tagPlayerID = clientData.TagPlayerID
-
- if GameWorld.IsCrossServer():
- GameWorld.DebugLog("跨服服务器无法发起机器人结算!", playerID)
- return
-
- if not CheckHavePKCount(curPlayer):
- return
-
- SendPKOver(curPlayer, tagPlayerID, isWinner)
- return
-
-def SendPKOver(curPlayer, tagPlayerID, isWinner):
- ## 发送给跨服PK结算
- playerID = curPlayer.GetPlayerID()
- dataMsg = {
- "playerID":playerID,
- "tagPlayerID":tagPlayerID,
- "isWinner":isWinner,
- "seasonID":GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID), # 赛季ID
- "pkZoneID":GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID), # PK赛区
- "playerName":CrossRealmPlayer.GetCrossPlayerName(curPlayer),
- "playerJob":curPlayer.GetJob(),
- "face":curPlayer.GetFace(),
- "facePic":curPlayer.GetFacePic(),
- "realmLV":curPlayer.GetOfficialRank(),
- "fightPower":PlayerControl.GetFightPower(curPlayer),
- "pkScore":curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TotalScore), # 当前积分
- "danLV":curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_DanLV), # 当前段位
- "cWinCount":curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_CWinCount), # 连胜次数
- }
- GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_PKOver, dataMsg)
- GameWorld.DebugLog("同步跨服服务器PK结算: %s" % str(dataMsg), playerID)
- return
-
-def GMSetPlayerCrossPKData(curPlayer, danLV, pkScore, cWinCount=None, resultDict=None, zoneID=0, seasonID=0):
- ## GM设置玩家跨服PK数据,一般用于测试或修复外网数据
- if not zoneID or not seasonID:
- zoneID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
- seasonID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
-
- errorMsg = ""
- playerInfoDict = {}
- if not zoneID or not seasonID:
- errorMsg = "zone season or state error."
- else:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_DanLV, danLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TotalScore, pkScore)
- if cWinCount >= 0:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CWinCount, cWinCount)
- if cWinCount > 0:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_CLoseCount, 0)
- else:
- cWinCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_CLoseCount)
-
- # 请求查询跨服服务器
- playerInfoDict = {"accID":curPlayer.GetAccID(),
- "playerID":curPlayer.GetPlayerID(),
- "playerName":CrossRealmPlayer.GetCrossPlayerName(curPlayer),
- "playerJob":curPlayer.GetJob(),
- "face":curPlayer.GetFace(),
- "facePic":curPlayer.GetFacePic(),
- "realmLV":curPlayer.GetOfficialRank(),
- "pkScore":pkScore, "danLV":danLV, "cWinCount":cWinCount,
- }
- dataMsg = {"ZoneID":zoneID, "SeasonID":seasonID, "PlayerInfo":playerInfoDict}
- GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_PKBillboard, dataMsg)
- SyncCrossRealmPKPlayerInfo(curPlayer)
-
- if resultDict:
- resultDict.update({"zoneID":zoneID, "seasonID":seasonID, "errorMsg":errorMsg, "PlayerInfo":playerInfoDict})
- return errorMsg
-
-#// C1 02 跨服PK购买次数 #tagCMCrossRealmPKBuy
-#
-#struct tagCMCrossRealmPKBuy
-#{
-# tagHead Head;
-#};
-def OnCrossRealmPKBuy(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- if not CrossRealmPlayer.IsCrossServerOpen():
- PlayerControl.NotifyCode(curPlayer, "CrossMatching18")
- return
- if not IsCrossRealmPKMatchState():
- GameWorld.DebugLog("跨服匹配未开启,不可进行购买次数!", playerID)
- return
- dayFreeMatchCountMax = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatchCount", 1)
- if not dayFreeMatchCountMax:
- GameWorld.DebugLog("每日匹配次数没有限制,不需要购买次数!", playerID)
- return
- todayPKCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayPKCount)
- todayBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayBuyCount)
- todayItemAddCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_ItemAddCount)
- canPKCount = dayFreeMatchCountMax + todayBuyCount + todayItemAddCount - todayPKCount
- if canPKCount >= dayFreeMatchCountMax:
- GameWorld.DebugLog("可PK次数不能大于每日免费次数!", playerID)
- return
- dayBuyCountMax = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatchCount", 2)
- #todayBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayBuyCount)
- if dayBuyCountMax and todayBuyCount >= dayBuyCountMax:
- GameWorld.DebugLog("今日购买次数已满,无法购买!todayBuyCount=%s" % (todayBuyCount), playerID)
- return
-
- costGold = eval(IpyGameDataPY.GetFuncCompileCfg("CrossRealmPKMatchCount", 3))
- costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, ShareDefine.TYPE_Price_Gold_Paper_Money, costGold)
- if not costMoneyList:
- GameWorld.DebugLog("仙玉绑玉不足: todayBuyCount=%s,costGold=%s" % (todayBuyCount, costGold), playerID)
- return
-
- infoDict = {"Event":"BuyPKCount", "todayBuyCount":todayBuyCount}
- for moneyType, moneyNum in costMoneyList:
- PlayerControl.PayMoney(curPlayer, moneyType, moneyNum, ChConfig.Def_Cost_CrossRealmPK, infoDict)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayBuyCount, todayBuyCount + 1)
- GameWorld.DebugLog("购买跨服PK次数: todayBuyCount=%s" % (todayBuyCount), playerID)
- SyncCrossRealmPKPlayerInfo(curPlayer)
- return
-
-
-#// C1 03 跨服PK领取奖励 #tagCMCrossRealmPKGetAward
-#
-#struct tagCMCrossRealmPKGetAward
-#{
-# tagHead Head;
-# BYTE AwardType; // 奖励类型;1-每日匹配奖励,2-每日胜利奖励,3-段位达标奖励,4-赛季结算奖励
-# BYTE AwardData; // 奖励类型对应领取值;每日匹配奖励时为匹配次数,每日胜利奖励时为胜利次数,段位达标奖励时为领取的段位
-#};
-def OnCrossRealmPKGetAward(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- if not curPlayer:
- return
- playerID = curPlayer.GetPlayerID()
- awardType = clientData.AwardType
- awardData = clientData.AwardData
- zoneID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
- seasonID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
- if not zoneID or not seasonID:
- GameWorld.DebugLog("当前没有跨服PK赛季, 无法领取奖励! zoneID=%s,seasonID=%s" % (zoneID, seasonID))
- return
-
- if awardType == 1:
- awardPKCount = awardData
- playerTodayPKCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayPKCount)
- GameWorld.DebugLog("玩家领取每日匹配次数奖励! awardPKCount=%s,playerTodayPKCount=%s" % (awardPKCount, playerTodayPKCount), playerID)
- if playerTodayPKCount < awardPKCount:
- GameWorld.DebugLog(" PK次数不足,无法领取!", playerID)
- return
- dayPKCountAwardDict = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKAward", 1, {}) # {"次数":[[物品ID,个数,是否绑定], ...], ...}
- awardPKCountList = dayPKCountAwardDict.keys()
- awardPKCountList = [int(k) for k in awardPKCountList]
- awardPKCountList.sort()
- GameWorld.DebugLog(" awardPKCountList=%s" % awardPKCountList, playerID)
- if awardPKCount not in awardPKCountList:
- GameWorld.DebugLog(" 没有该PK次数奖励!")
- return
- awardIndex = awardPKCountList.index(awardPKCount)
- awardStateDictName = ChConfig.Def_PDict_CrossPK_DayPKCountAwardState
- awardItemList = dayPKCountAwardDict[str(awardPKCount)]
- eventName = "PKCount"
- drDataDict = {"awardPKCount":awardPKCount}
-
- elif awardType == 2:
- awardWinCount = awardData
- playerTodayWinCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayWinCount)
- GameWorld.DebugLog("玩家领取每日胜利次数奖励! awardWinCount=%s,playerTodayWinCount=%s" % (awardWinCount, playerTodayWinCount), playerID)
- if playerTodayWinCount < awardWinCount:
- GameWorld.DebugLog(" 胜利次数不足,无法领取!", playerID)
- return
- dayWinCountAwardDict = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKAward", 2, {}) # {"次数":[[物品ID,个数,是否绑定], ...], ...}
- awardWinCountList = dayWinCountAwardDict.keys()
- awardWinCountList = [int(k) for k in awardWinCountList]
- awardWinCountList.sort()
- GameWorld.DebugLog(" awardWinCountList=%s" % awardWinCountList, playerID)
- if awardWinCount not in awardWinCountList:
- GameWorld.DebugLog(" 没有该胜利次数奖励!", playerID)
- return
- awardIndex = awardWinCountList.index(awardWinCount)
- awardStateDictName = ChConfig.Def_PDict_CrossPK_DayWinCountAwardState
- awardItemList = dayWinCountAwardDict[str(awardWinCount)]
- eventName = "WinCount"
- drDataDict = {"awardWinCount":awardWinCount}
-
- elif awardType == 3:
- awardDanLV = awardData
- playerDanLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_DanLV)
- GameWorld.DebugLog("玩家领取段位达标奖励! awardDanLV=%s,playerDanLV=%s" % (awardDanLV, playerDanLV), playerID)
- if playerDanLV < awardDanLV:
- GameWorld.DebugLog(" 段位未达标,无法领取!", playerID)
- return
- danLVAwardIpyData = GetCrossPKDanAwardIpyData(seasonID, awardDanLV, True)
- if not danLVAwardIpyData:
- return
- awardIndex = awardDanLV
- awardStateDictName = ChConfig.Def_PDict_CrossPK_DanLVAwardState
- awardItemList = danLVAwardIpyData.GetDanLVAwardList()
- eventName = "DanLV"
- drDataDict = {"awardDanLV":awardDanLV}
-
- elif awardType == 4:
- GameWorld.DebugLog("玩家领取赛季结算奖励!", playerID)
- totalScore = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TotalScore)
- if not totalScore:
- GameWorld.DebugLog("无赛季积分无法领取奖励!", playerID)
- return
- if GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState) != 2:
- GameWorld.DebugLog("非赛季结算阶段,不可领取!", playerID)
- return
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_SeasonAwardState):
- GameWorld.DebugLog("已经领取过该奖励,不可领取!", playerID)
- return
- # 查询 GameServer 玩家赛季排名
- OnQueryCrossPKSeasonOrderAward(curPlayer, zoneID, seasonID, False)
- return
-
- else:
- return
-
- if not awardItemList:
- GameWorld.DebugLog("该奖励没有配置奖励物品!", playerID)
- return
-
- awardState = curPlayer.NomalDictGetProperty(awardStateDictName)
- if pow(2, awardIndex) & awardState:
- GameWorld.DebugLog(" 已经领取过该奖励!awardIndex=%s,awardState=%s" % (awardIndex, awardState), playerID)
- return
-
- needSpace = len(awardItemList)
- # 背包空间
- packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if packSpace < needSpace:
- PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_202580")
- return
-
- awardState |= pow(2, awardIndex)
- PlayerControl.NomalDictSetProperty(curPlayer, awardStateDictName, awardState)
- SyncCrossRealmPKAwardState(curPlayer)
- GameWorld.DebugLog("玩家领取跨服PK奖励! awardType=%s,awardData=%s,awardIndex=%s,awardState=%s,awardItemList=%s"
- % (awardType, awardData, awardIndex, awardState, awardItemList), playerID)
- drDataDict.update({"awardIndex":awardIndex, "awardState":awardState, "awardItemList":awardItemList})
- for itemID, itemCnt, isBind in awardItemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
-
- if awardType == 3 and awardDanLV >= IpyGameDataPY.GetFuncCfg("CrossRealmPKAward", 4):
- PlayerControl.WorldNotify(0, "CrossMatching22", [curPlayer.GetPlayerName(), awardDanLV])
-
- DR_GetCrossPKAward(curPlayer, zoneID, seasonID, eventName, False, drDataDict)
- return
-
-def SendDayPKAwardByMail(curPlayer, zoneID, seasonID, eventName, dataCount, awardState, awardItemDict, mailTypeKey):
- ## 邮件发放未领取的每日奖励
- playerID = curPlayer.GetPlayerID()
- awardCountList = awardItemDict.keys()
- awardCountList = [int(k) for k in awardCountList]
- awardCountList.sort()
- GameWorld.DebugLog(" awardCountList=%s" % awardCountList, playerID)
- for i, awardCount in enumerate(awardCountList):
- if dataCount < awardCount:
- GameWorld.DebugLog("跨服PK每日奖励次数不足: eventName=%s,i=%s,awardCount=%s > dataCount=%s" % (eventName, i, awardCount, dataCount), playerID)
- break
- if pow(2, i) & awardState:
- GameWorld.DebugLog("已领取该跨服PK每日奖励: eventName=%s,i=%s,awardCount=%s" % (eventName, i, awardCount), playerID)
- continue
- awardItemList = awardItemDict[str(awardCount)]
- GameWorld.Log("邮件发放跨服PK未领取的每日奖励: zoneID=%s,seasonID=%s,eventName=%s,i=%s,awardCount=%s,dataCount=%s,awardState=%s,awardItemList=%s"
- % (zoneID, seasonID, eventName, i, awardCount, dataCount, awardState, awardItemList), playerID)
-
- mailDetail = {"EventName":eventName, "zoneID":zoneID, "seasonID":seasonID, "awardCount":awardCount, "awardState":awardState}
- PlayerControl.SendMailByKey(mailTypeKey, [playerID], awardItemList, [awardCount], detail=mailDetail)
- DR_GetCrossPKAward(curPlayer, zoneID, seasonID, eventName, True, mailDetail)
-
- return
-
-def OnQueryCrossPKSeasonOrderAward(curPlayer, zoneID, seasonID, isMail):
- # 查询 GameServer 玩家赛季排名
- playerID = curPlayer.GetPlayerID()
- danLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_DanLV)
- eventName, eventData = "SeasonAward", [danLV, isMail]
- sendMsg = str([zoneID, seasonID, eventName, eventData])
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(playerID, 0, 0, "CrossPKSeasonOrder", sendMsg, len(sendMsg))
- GameWorld.Log("查询GameServer玩家赛区赛季排名: zoneID=%s, seasonID=%s, sendMsg=%s" % (zoneID, seasonID, sendMsg), playerID)
- return
-
-def GameServer_CrossPKSeasonOrder(curPlayer, msgList):
- zoneID, seasonID, eventName, eventData, order = msgList
-
- # 领取赛季奖励
- if eventName == "SeasonAward":
- danLV, isMail = eventData
- DoGetPKSeasonAward(curPlayer, eventName, zoneID, seasonID, order, danLV, isMail)
-
- return
-
-def DoGetPKSeasonAward(curPlayer, eventName, zoneID, seasonID, order, danLV, isMail):
- ## 执行发放赛季结算奖励,名次奖励与最高段位奖励互斥,优先名次奖励
- isNotify = not isMail
- notifyKey = ""
- awardItemList = []
- seasonAwardLV = danLV
- playerID = curPlayer.GetPlayerID()
- mapSeasonID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
- GameWorld.Log("发放玩家跨服PK赛季结算奖励! zoneID=%s,seasonID=%s,order=%s,danLV=%s,isMail=%s,seasonAwardLV=%s,mapSeasonID=%s"
- % (zoneID, seasonID, order, danLV, isMail, seasonAwardLV, mapSeasonID), playerID)
- mailTypeKey, mailParamList, mailDetail = "", [], {"EventName":eventName, "zoneID":zoneID, "seasonID":seasonID,
- "order":order, "danLV":danLV, "mapSeasonID":mapSeasonID}
- if order > 0:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonOrder % seasonID, order)
- crossZoneName = "" #GameWorld.GetCrossZoneName()
- seasonOrderAwardIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CrossRealmPKOrderAward", crossZoneName, seasonID)
- if not seasonOrderAwardIpyData:
- seasonOrderAwardIpyData = IpyGameDataPY.GetIpyGameData("CrossRealmPKOrderAward", "", seasonID)
- seasonOrderAwardDict = {} if not seasonOrderAwardIpyData else seasonOrderAwardIpyData.GetOrderAwardInfo() # {"名次":[[物品ID,个数,是否绑定], ...], ...}
- awardOrderList = seasonOrderAwardDict.keys()
- awardOrderList = [int(k) for k in awardOrderList]
- awardOrderList.sort()
- GameWorld.DebugLog(" awardOrderList=%s" % awardOrderList, playerID)
- fromOrder, toOrder = 1, 1
- for i, awardOrder in enumerate(awardOrderList):
- if order <= awardOrder:
- toOrder = awardOrder
- awardItemList = seasonOrderAwardDict[str(awardOrder)]
- maxDanLV = IpyGameDataPY.IPY_Data().GetCrossRealmPKDanCount() - 1 # 因为段位等级从0开始,所以最大段位等级要减1
- seasonAwardLV = maxDanLV + (len(awardOrderList) - i)
- GameWorld.Log("获得排名奖励, 更新奖励等级: awardOrderList=%s,i=%s,maxDanLV=%s,seasonAwardLV=%s" % (awardOrderList, i, maxDanLV, seasonAwardLV), playerID)
- mailTypeKey = "CrossServer4"
- notifyKey = "CrossMatching23" if order <= IpyGameDataPY.GetFuncCfg("CrossRealmPKAward", 5) else ""
- mailParamList = [seasonID, fromOrder, toOrder]
- break
- fromOrder = awardOrder + 1
-
- # 没有奖励的话取段位奖励
- if not awardItemList:
- danLVAwardIpyData = GetCrossPKDanAwardIpyData(seasonID, danLV, False)
- if not danLVAwardIpyData:
- return
- awardItemList = danLVAwardIpyData.GetSeasonDanLVAwardList()
- mailTypeKey = "CrossServer5"
- notifyKey = "CrossMatching24" if danLV >= IpyGameDataPY.GetFuncCfg("CrossRealmPKAward", 4) else ""
- mailParamList = [seasonID, danLV]
-
- if not awardItemList:
- GameWorld.Log("没有玩家对应的赛季结算奖励!", playerID)
- return
- ## 发奖励之前需再判断一次,防止重复发包重复领取
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_SeasonAwardState):
- GameWorld.Log("已经发放过赛季结算奖励!", playerID)
- return
- if seasonID == mapSeasonID:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonAwardState, 1)
- SyncCrossRealmPKAwardState(curPlayer)
- GameWorld.Log("还是同一个赛季,设置赛季奖励已领取!")
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_SeasonAwardLV % seasonID, seasonAwardLV)
- SyncCrossRealmPKHisSeasonInfo(curPlayer)
-
- if not isMail:
- needSpace = len(awardItemList)
- packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if packSpace < needSpace:
- isMail = True
-
- if isMail:
- PlayerControl.SendMailByKey(mailTypeKey, [playerID], awardItemList, mailParamList, detail=mailDetail)
- else:
- for itemID, itemCnt, isBind in awardItemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
-
- GameWorld.Log("领取成功! awardItemList=%s" % (awardItemList), playerID)
- drDataDict = {"awardItemList":awardItemList, "order":order, "danLV":danLV, "seasonAwardLV":seasonAwardLV, "isMail":isMail}
- DR_GetCrossPKAward(curPlayer, zoneID, seasonID, eventName, isMail, drDataDict)
-
- if isNotify and notifyKey:
- PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName()] + mailParamList + [awardItemList[0][0]])
- return
-
-def SyncCrossRealmPKPlayerInfo(curPlayer):
- ## 同步玩家跨服PK玩家相关信息,积分、段位、相关次数等信息
- pkPlayerInfo = ChPyNetSendPack.tagMCCrossRealmPKPlayerInfo()
- pkPlayerInfo.Score = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TotalScore)
- pkPlayerInfo.DanLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_DanLV)
- pkPlayerInfo.PKCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_PKCount)
- pkPlayerInfo.WinCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_WinCount)
- pkPlayerInfo.CWinCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_CWinCount)
- pkPlayerInfo.DayPKCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayPKCount)
- pkPlayerInfo.DayWinCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayWinCount)
- pkPlayerInfo.DayBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayBuyCount)
- pkPlayerInfo.DayItemAddCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_ItemAddCount)
- pkPlayerInfo.DayRefreshCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_RefreshCount)
- NetPackCommon.SendFakePack(curPlayer, pkPlayerInfo)
- return
-
-def SyncCrossRealmPKAwardState(curPlayer):
- ## 同步玩家跨服PK相关奖励状态
- pkAwardPack = ChPyNetSendPack.tagMCCrossRealmPKAwardState()
- pkAwardPack.DayPKCountAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_DayPKCountAwardState)
- pkAwardPack.DayWinCountAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_DayWinCountAwardState)
- pkAwardPack.DanLVAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_DanLVAwardState)
- pkAwardPack.SeasonAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_SeasonAwardState)
- NetPackCommon.SendFakePack(curPlayer, pkAwardPack)
- return
-
-def SyncCrossRealmPKHisSeasonInfo(curPlayer):
- mapSeasonID = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
- hisSeasonInfo = ChPyNetSendPack.tagMCCrossRealmPKPlayerHisSeasonInfo()
- hisSeasonInfo.SeasonList = []
- for seasonID in xrange(1, mapSeasonID + 1):
- seasonInfo = ChPyNetSendPack.tagMCCrossRealmPKPlayerHisSeason()
- seasonInfo.SeasonID = seasonID
- seasonInfo.DanLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_SeasonDanLV % seasonID)
- seasonInfo.Score = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_SeasonScore % seasonID)
- seasonInfo.Order = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_SeasonOrder % seasonID)
- seasonInfo.AwardLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_SeasonAwardLV % seasonID)
- hisSeasonInfo.SeasonList.append(seasonInfo)
- hisSeasonInfo.Count = len(hisSeasonInfo.SeasonList)
- NetPackCommon.SendFakePack(curPlayer, hisSeasonInfo)
- return
-
-def DR_GetCrossPKAward(curPlayer, zoneID, seasonID, eventName, isMail, drDataDict):
- ## 记录领奖流向
- drDataDict.update({"zoneID":zoneID, "seasonID":seasonID, "isMail":isMail})
- DataRecordPack.SendEventPack("GetCrossPKAward_%s" % eventName, drDataDict, curPlayer)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossYaomoBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossYaomoBoss.py
deleted file mode 100644
index 9392e52..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossYaomoBoss.py
+++ /dev/null
@@ -1,117 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerCrossYaomoBoss
-#
-# @todo:跨服妖魔boss
-# @author hxp
-# @date 2022-11-11
-# @version 1.0
-#
-# 详细描述: 跨服妖魔boss
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-11-11 15:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerControl
-import IpyGameDataPY
-import ItemControler
-import IPY_GameWorld
-import ShareDefine
-import ItemCommon
-import ChConfig
-
-def OnYaomoBossStateChange(state, tick):
- ## 活动状态变更
- if state:
- # 开始的不需要处理
- return
- return
-
-def OnCrossYaomoBossDead(curNPC):
-
- objID = curNPC.GetID()
- npcID = curNPC.GetNPCID()
- mapID = GameWorld.GetGameWorld().GetMapID()
- lineID = GameWorld.GetGameWorld().GetLineID()
- realMapID = GameWorld.GetGameWorld().GetRealMapID()
- copyMapID = GameWorld.GetGameWorld().GetCopyMapID()
-
- zoneID = 0
- zoneTypeName = ChConfig.Def_CrossZoneMapTableName.get(mapID)
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- if zoneTypeName and hasattr(ipyDataMgr, "Get%sCount" % zoneTypeName):
- for index in range(getattr(ipyDataMgr, "Get%sCount" % zoneTypeName)()):
- ipyData = getattr(ipyDataMgr, "Get%sByIndex" % zoneTypeName)(index)
- if realMapID == ipyData.GetMapID() and copyMapID == ipyData.GetCopyMapID():
- zoneID = ipyData.GetZoneID()
- break
-
- npcHurtList = [] #NPCHurtMgr.GetPlayerHurtList(curNPC)
- if not npcHurtList or not npcHurtList.GetHurtCount():
- GameWorld.ErrLog("跨服妖魔boss结算无伤害列表: mapID=%s,lineID=%s,realMapID=%s,copyMapID=%s,zoneID=%s,npcID=%s,objID=%s"
- % (mapID, lineID, realMapID, copyMapID, zoneID, npcID, objID))
- return
-
- GameWorld.Log("跨服妖魔boss伤害结算: mapID=%s,lineID=%s,realMapID=%s,copyMapID=%s,zoneID=%s,npcID=%s,objID=%s"
- % (mapID, lineID, realMapID, copyMapID, zoneID, npcID, objID))
- npcHurtList.Sort() #sort以后伤血列表从大到小排序
-
- rank = 0
- playerHurtList = []
- for index in xrange(npcHurtList.GetHurtCount()):
- #获得伤血对象
- hurtObj = npcHurtList.GetHurtAt(index)
- hurtType = hurtObj.GetValueType()
- hurtID = hurtObj.GetValueID()
- hurtValue = hurtObj.GetHurtValue()
- hurtName = hurtObj.GetHurtName()
- if hurtType != ChConfig.Def_NPCHurtTypePlayer or not hurtID:
- continue
- rank += 1
- playerID = hurtID
- GameWorld.Log(" zoneID=%s,rank=%s,playerID=%s,hurtValue=%s" % (zoneID, rank, playerID, hurtValue))
- playerHurtList.append([playerID, hurtValue, hurtName])
-
- msgInfo = str([zoneID, npcID, playerHurtList])
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "CrossYaomoBossHurtInfo", msgInfo, len(msgInfo))
- return
-
-def GetCrossYaomoBossHurtAward(curPlayer, awardIndex, tick):
-
- playerID = curPlayer.GetPlayerID()
- if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem, True):
- return
-
- if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_CrossYaomoBoss, tick):
- PlayerControl.NotifyCode(curPlayer, "RequestLater")
- return
-
- # 发送跨服服务器
- dataMsg = {"playerID":playerID, "awardIndex":awardIndex}
- GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_CrossYaomoBossHurtAward, dataMsg)
- return
-
-def GameServer_CrossYaomoBoss_DoResult(curPlayer, msgData):
- msgType, dataMsg = msgData[:2]
- #ret = msgData[2] if len(msgData) > 2 else None
-
- ## 伤害目标奖励
- if msgType == "HurtValueAward":
- __DoGiveCrossYaomoBossHurtAward(curPlayer, dataMsg)
-
- ## 参与击杀妖魔boss
- if msgType == "KillYaomoBoss":
- pass
-
- return
-
-def __DoGiveCrossYaomoBossHurtAward(curPlayer, dataMsg):
- playerID = curPlayer.GetPlayerID()
- awardIndex, awardItemList = dataMsg
- GameWorld.Log("给玩家跨服妖魔boss伤害目标奖励: awardIndex=%s,awardItemList=%s" % (awardIndex, awardItemList), playerID)
- ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["CrossYaomoBoss", False, {}])
- 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
index 345bf91..94d6dd6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
@@ -29,8 +29,6 @@
import SkillCommon
import SkillShell
import DataRecordPack
-import PlayerWeekParty
-import ItemControler
import time
@@ -291,7 +289,6 @@
if curItem.IsEmpty():
GameWorld.DebugLog("神兽有装备未穿戴,无法助战!dogzID=%s,packIndex=%s" % (dogzID, i), playerID)
return
- PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Dogz, dogzID, False)
isFight = True if batteState else False
GameWorld.DebugLog("神兽助战状态变更!dogzID=%s,isFight=%s" % (dogzID, isFight), playerID)
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 1da98ec..0cdd336 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -37,27 +37,16 @@
import ChItem
import GameLogic_Tianzi
import PlayerGoldInvest
-import PlayerCrossRealmPK
-import PlayerCrossChampionship
-import PlayerCostRebate
-import CrossActCTGBillboard
-import CrossActAllRecharge
import PlayerActCollectWords
import PlayerActTotalRecharge
-import PlayerActLianqi
import PlayerActGodGift
-import PlayerActFamilyGCZ
import PlayerActFamilyCTGAssist
-import PlayerActRechargeRebateGold
import PlayerActManyDayRecharge
import PlayerActSingleRecharge
-import PlayerActRechargePrize
import PlayerActGrowupBuy
import PlayerActTurntable
import PlayerActBuyOne
import PlayerSpringSale
-import PlayerWeekParty
-import PlayerFeastWeekParty
import PlayerFeastLogin
import PlayerFeastWish
import PlayerActTask
@@ -69,12 +58,9 @@
import PlayerFlashGiftbag
import PlayerDailyGiftbag
import PlayerOfflineSupport
-import PlayerLuckyCloudBuy
import PlayerLuckyTreasure
-import PlayerTongTianLing
import PlayerFlashSale
import PlayerWishingWell
-import CrossPlayerData
import PlayerTreasure
import PlayerZhanling
import PlayerLove
@@ -358,21 +344,13 @@
PlayerFreeGoods.OnDay(curPlayer)
#采集次数重置
NPCCommon.PlayerOnDay(curPlayer)
- #跨服竞技场
- PlayerCrossRealmPK.DoPlayerOnDay(curPlayer)
- #跨服排位
- PlayerCrossChampionship.DoPlayerOnDay(curPlayer)
#竞技场
PlayerArena.OnDayEx(curPlayer)
- #特殊时间点过天的,一般是游戏功能,此时立即同步一次跨服玩家数据
- CrossPlayerData.SendMergePlayerDataNow(curPlayer)
# 以下为支持两种重置模式切换配置的
FBCommon.FBOnDay(curPlayer, onEventType)
#许愿池
PlayerWishingWell.OnDay(curPlayer)
- #通天令
- PlayerTongTianLing.OnDay(curPlayer, onEventType)
#任务活动
PlayerActTask.OnDay(curPlayer)
#登录活动
@@ -944,9 +922,6 @@
if actionName == ShareDefine.OperationActionName_ExpRate:
PlayerControl.RefreshOperationAction_ExpRate()
- elif actionName == ShareDefine.OperationActionName_CostRebate:
- PlayerCostRebate.RefreshCostRebateActionInfo(actNum)
-
elif actionName == ShareDefine.OperationActionName_TotalRecharge:
PlayerActTotalRecharge.RefreshTotalRechargeActionInfo(actNum)
@@ -986,9 +961,6 @@
elif actionName == ShareDefine.OperationActionName_CollectWords:
PlayerActCollectWords.RefreshActCollectWordsInfo(actNum)
- elif actionName == ShareDefine.OperationActionName_WeekParty:
- PlayerWeekParty.RefreshOperationAction_WeekParty()
-
elif actionName == ShareDefine.OperationActionName_BuyCountGift:
PlayerActBuyCountGift.RefreshBuyCountGiftActionInfo(actNum)
@@ -1013,20 +985,11 @@
elif actionName == ShareDefine.OperationActionName_FeastWish:
PlayerFeastWish.RefreshFeastWishActionInfo()
- elif actionName == ShareDefine.OperationActionName_FeastWeekParty:
- PlayerFeastWeekParty.RefreshOperationAction_FeastWeekParty()
-
elif actionName == ShareDefine.OperationActionName_LuckyTreasure:
PlayerLuckyTreasure.RefreshLuckyTreasureAction()
- elif actionName == ShareDefine.OperationActionName_RechargePrize:
- PlayerActRechargePrize.RefreshRechargePrizeActionInfo()
-
elif actionName == ShareDefine.OperationActionName_GrowupBuy:
PlayerActGrowupBuy.RefreshGrowupBuyActionInfo()
-
- elif actionName == ShareDefine.OperationActionName_RechargeRebateGold:
- PlayerActRechargeRebateGold.RefreshRechargeRebateGoldActionInfo()
return
@@ -1042,28 +1005,10 @@
#GameWorld.DebugLog("跨服服务器地图,不处理")
return
- if actionName == ShareDefine.CrossActName_CTGBillboard:
- CrossActCTGBillboard.RefreshCrossActCTGBillboardInfo()
-
- elif actionName == ShareDefine.CrossActName_AllRecharge:
- CrossActAllRecharge.RefreshCrossActAllRechargeInfo()
-
- elif actionName == ShareDefine.CrossActName_Lianqi:
- PlayerActLianqi.RefreshCrossActLianqiInfo()
-
- elif actionName == ShareDefine.CrossActName_FamilyGCZ:
- PlayerActFamilyGCZ.RefreshActFamilyGCZInfo()
-
return
if key == ShareDefine.Def_Notify_WorldKey_CrossZoneName:
PyGameData.g_crossZoneName = msgValue
- return
-
- # 幸运云购
- if key == ShareDefine.Def_Notify_WorldKey_LuckyCloudBuyInfo:
- PyGameData.g_luckyCloudBuyInfo = eval(msgValue)
- PlayerLuckyCloudBuy.OnLuckyCloudBuyChange()
return
if msgValue.isdigit():
@@ -1092,11 +1037,6 @@
# elif key == ShareDefine.Def_Notify_WorldKey_MapServerScriptReloadVersion:
# ReloadModule.DoMapServerScriptReload(value, tick)
#===============================================================================================
-
- # 跨服PK
- elif key == ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID:
- PlayerCrossRealmPK.OnCrossRealmPKSeasonChange(value)
-
#通用设置
befValue = gameWorldMgr.GetGameWorldDictByKey(key)
gameWorldMgr.SetGameWorldDict(key, value)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py
deleted file mode 100644
index f34a963..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py
+++ /dev/null
@@ -1,421 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerFeastWeekParty
-#
-# @todo:节日巡礼
-# @author xdh
-# @date 2018-07-12 16:50
-# @version 1.0
-#
-#
-# 详细描述: 节日巡礼
-#
-#---------------------------------------------------------------------
-"""Version = 2018-07-12 16:50"""
-#---------------------------------------------------------------------
-
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import IpyGameDataPY
-import PlayerControl
-import ItemControler
-import ChPyNetSendPack
-import DataRecordPack
-import NetPackCommon
-import ShareDefine
-import PyGameData
-import ItemCommon
-
-
-def OnLogin(curPlayer):
- isReset = __CheckPlayerFeastWeekPartyAction(curPlayer)
- if not isReset:
- actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
- # 活动中同步活动信息
- SyncFeastWeekPartyInfo(curPlayer)
- if actCostRebateInfo.get(ShareDefine.ActKey_State):
- AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False, False)
- SyncFeastWeekPartyPlayerInfo(curPlayer)
- return
-
-
-def RefreshOperationAction_FeastWeekParty():
- playerManager = GameWorld.GetPlayerManager()
- for i in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(i)
- if not GameWorld.IsNormalPlayer(curPlayer):
- continue
- __CheckPlayerFeastWeekPartyAction(curPlayer)
- return
-
-
-def __CheckPlayerFeastWeekPartyAction(curPlayer):
- ## 检查玩家节日巡礼活动数据信息
- playerID = curPlayer.GetPlayerID()
-
- actFeastWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
- state = actFeastWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
- actID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_ID, 0)
- cfgID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
- playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyActID, 0, ChConfig.Def_PDictType_FeastWeekParty) # 玩家身上的活动ID
- playerFeastWeekPartyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyID, 0, ChConfig.Def_PDictType_FeastWeekParty) # 玩家身上的活动配置ID
- # 活动ID 相同的话不处理
- if actID == playerActID:
- GameWorld.DebugLog("节日巡礼活动ID不变,不处理!playerActID=%s" % playerActID, curPlayer.GetPlayerID())
- if state:
- CheckFeastWeekPartyActionCnt(curPlayer, True)
- return
- # 未领取的奖励邮件发放
- if playerFeastWeekPartyID:
- __SendFeastWeekPartyMail(curPlayer, playerFeastWeekPartyID)
-
- GameWorld.DebugLog(' 节日巡礼活动重置!')
- curPlayer.ClearNomalDict(ChConfig.Def_PDictType_FeastWeekParty)
-
- GameWorld.DebugLog("节日巡礼变更! state=%s,actID=%s,cfgID=%s,playerFeastWeekPartyID=%s" % (state, actID, cfgID, playerFeastWeekPartyID), playerID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyActID, actID, ChConfig.Def_PDictType_FeastWeekParty)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyID, cfgID, ChConfig.Def_PDictType_FeastWeekParty)
- if state:
- CheckFeastWeekPartyActionCnt(curPlayer, False)
- SyncFeastWeekPartyInfo(curPlayer)
- SyncFeastWeekPartyPlayerInfo(curPlayer)
-
- return True
-
-
-def __SendFeastWeekPartyMail(curPlayer, cfgID):
- # 未领取的奖励邮件发放
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID)
- if not actBossIpyData:
- return
- templateIDList = actBossIpyData.GetTemplateID()
- if not templateIDList:
- return
-
- totalItemDict = {}
- for day, tidList in enumerate(templateIDList):
- for tid in tidList:
- ipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', tid)
- if not ipyData:
- continue
- singleTimes = ipyData.GetSingleTimes()
- curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyCurTimes % (day, tid), 0, ChConfig.Def_PDictType_FeastWeekParty)
- gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyGotTimes % (day, tid), 0, ChConfig.Def_PDictType_FeastWeekParty)
- canGotCnt = (curTimes - gotTimes) / singleTimes
- if not canGotCnt:
- continue
- itemDict = __GetAwardItem(curPlayer, ipyData, canGotCnt)
- GameWorld.AddDictValue(totalItemDict, itemDict)
- #积分奖励
- for day, awardDict in actBossIpyData.GetPointAward().items():
- pointList = awardDict.keys()
- pointList.sort()
- for i, point in enumerate(pointList):
- curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyPoint % day, 0, ChConfig.Def_PDictType_FeastWeekParty)
- if curPoint < point:
- continue
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyAwardRecord % day, 0, ChConfig.Def_PDictType_FeastWeekParty)
- if awardRecord & pow(2, i):
- continue
- itemList = awardDict[point]
- for itemID, itemCnt, isBind in itemList:
- totalItemDict[itemID] = totalItemDict.get(itemID, 0) + itemCnt
- DataRecordPack.DR_FeastWeekPartyPoint(curPlayer, day, point)
- if not totalItemDict:
- return
- totalItemList = [[itemID, itemCnt, 1] for itemID, itemCnt in totalItemDict.items()]
- PlayerControl.SendMailByKey('SecondWeekReward2', [curPlayer.GetID()], totalItemList)
- return
-
-
-def AddFeastWeekPartyActionCnt(curPlayer, actionID, addCnt=1, isAdd=True, isCompatible=False, isSync=True):
- '''增加节日巡礼相关活动完成次数'''
- #判断活动是否开启
- if not addCnt:
- return
- actFeastWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
- state = actFeastWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
- cfgID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
-
- if not cfgID:
- return
- if not state:
- return
-
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID)
- if not actBossIpyData:
- return
- templateIDList = actBossIpyData.GetTemplateID()
- dayIndex = actFeastWeekPartyInfo.get(ShareDefine.ActKey_DayIndex, 0)
- if dayIndex >= len(templateIDList):
- return
-
- dayTidList = templateIDList[dayIndex]
- findTid = 0
- for tid in dayTidList:
- if tid / 100 == actionID:
- findTid = tid
- break
- if not findTid:
- return
- ipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', findTid)
- if not ipyData:
- return
- totalTimes = ipyData.GetTotalTimes()
- curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyCurTimes % (dayIndex, findTid), 0, ChConfig.Def_PDictType_FeastWeekParty)
- if isAdd:
- addCnt = addCnt if totalTimes == 0 else min(totalTimes - curTimes, addCnt)
- if addCnt <= 0:
- return
- updTimes = curTimes + addCnt
- else:
- if not isCompatible and addCnt != totalTimes:
- return
- updTimes = min(addCnt, totalTimes)
- realAddCnt = updTimes - curTimes
- if realAddCnt <= 0:
- return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyCurTimes % (dayIndex, findTid), updTimes, ChConfig.Def_PDictType_FeastWeekParty)
- #加积分
- singleTimes = ipyData.GetSingleTimes()
- addPoint = (curTimes % singleTimes + realAddCnt)/singleTimes* ipyData.GetPoint()
- curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyPoint % dayIndex, 0, ChConfig.Def_PDictType_FeastWeekParty)
- updPoint = curPoint + addPoint
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyPoint % dayIndex, updPoint, ChConfig.Def_PDictType_FeastWeekParty)
- GameWorld.DebugLog(' 增加节日巡礼相关活动完成次数 dayIndex=%s, findTid=%s, realAddCnt=%s,addPoint=%s' % (dayIndex, findTid, realAddCnt, addPoint))
- if isSync:
- SyncFeastWeekPartyPlayerInfo(curPlayer, dayIndex, findTid)
- return True
-
-def CheckFeastWeekPartyActionCnt(curPlayer, isSync):
- ## 同步活动状态时需要触发的
-
- # 灵宠激活
- petDataPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
- for petDataIndex in range(petDataPack.GetCount()):
- petItem = petDataPack.GetAt(petDataIndex)
- if petItem.IsEmpty():
- continue
- petNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Pet, petNPCID, False, isSync=isSync)
-
- # 出战神兽
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyDataMgr.GetDogzCount()):
- ipyData = ipyDataMgr.GetDogzByIndex(i)
- if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
- AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Dogz, ipyData.GetDogzID(), False, isSync=isSync)
-
- # 穿戴某品质符印
- runeHoleCnt = IpyGameDataPY.GetFuncCfg("RuneUnlock", 4)
- for holeNum in xrange(1, runeHoleCnt + 1):
- runeData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % holeNum, 0)
- if not runeData:
- continue
- runeItemID = ItemControler.GetRuneItemID(runeData)
- itemData = GameWorld.GetGameData().GetItemByTypeID(runeItemID)
- if not itemData:
- continue
- itemColor = itemData.GetItemColor()
- AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Rune, itemColor, False, isSync=isSync)
-
- AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False, isSync)
- return
-
-def GetFeastWeekPartyActionAward(curPlayer, day, templateID):
- '''领取节日巡礼活动奖励'''
- templateID = GameWorld.ToIntDef(templateID, 0)
- ipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', templateID)
- if not ipyData:
- return
- singleTimes = ipyData.GetSingleTimes()
- curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyCurTimes % (day, templateID), 0, ChConfig.Def_PDictType_FeastWeekParty)
- gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyGotTimes % (day, templateID), 0, ChConfig.Def_PDictType_FeastWeekParty)
- if curTimes - gotTimes < singleTimes:
- return
-
- #给奖励
- awardDict = __GetAwardItem(curPlayer, ipyData)
- # 检查背包
- needSpace = len(awardDict)
- packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if needSpace > packSpace:
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
- return
- #更新次数 每次领奖只领一次
- newGotTimes = gotTimes + singleTimes
-
- #GameWorld.Log(' actionID=%s,curTimes=%s,gotTimes=%s,singleTimes=%s,newGotTimes=%s'%(actionID, curTimes, gotTimes,singleTimes, newGotTimes))
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyGotTimes % (day, templateID), newGotTimes, ChConfig.Def_PDictType_FeastWeekParty)
- for itemID, itemCnt in awardDict.items():
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
- SyncFeastWeekPartyPlayerInfo(curPlayer, day, templateID)
- return
-
-
-def GetFeastWeekPartyPointAward(curPlayer, day, getPoint):
- ##领取节日巡礼积分奖励
- getPoint = GameWorld.ToIntDef(getPoint, 0)
- actFeastWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
- state = actFeastWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
- cfgID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
- if not state or not cfgID:
- return
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID)
- if not actBossIpyData:
- return
- curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyPoint % day, 0, ChConfig.Def_PDictType_FeastWeekParty)
- if curPoint < getPoint:
- return
- pointAwardDict = actBossIpyData.GetPointAward().get(day, {})
- pointList = pointAwardDict.keys()
- pointList.sort()
- if getPoint not in pointList:
- return
- getIndex = pointList.index(getPoint)
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyAwardRecord % day, 0, ChConfig.Def_PDictType_FeastWeekParty)
- if awardRecord & pow(2, getIndex):
- GameWorld.Log(' 领取节日巡礼积分奖励, 已领取 day=%s, getPoint=%s' % (day, getPoint))
- return
- itemList = pointAwardDict[getPoint]
- needSpace = len(itemList)
- packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if needSpace > packSpace:
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
- return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyAwardRecord % day, awardRecord | pow(2, getIndex), ChConfig.Def_PDictType_FeastWeekParty)
- for itemID, itemCnt, isBind in itemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
- SyncFeastWeekPartyPlayerInfo(curPlayer, day)
- DataRecordPack.DR_FeastWeekPartyPoint(curPlayer, day, getPoint)
- return
-
-
-def __GetAwardItem(curPlayer, ipyData, times=1):
- awardDict = {}
- for itemID, itemCnt, isbind in ipyData.GetReward():
- if not itemID or not itemCnt:
- continue
- awardDict[itemID] = awardDict.get(itemID, 0) + itemCnt * times
-
- return awardDict
-
-
-def SyncFeastWeekPartyPlayerInfo(curPlayer, day=-1, templateID=-1):
- #通知当前次数、已领次数
- actFeastWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
- state = actFeastWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
- cfgID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
- if not state or not cfgID:
- return
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID)
- if not actBossIpyData:
- return
- templateIDList = actBossIpyData.GetTemplateID()
- if not templateIDList:
- return
- if day != -1:
- if day >= len(templateIDList):
- return
- syncDayList = [day]
- else:
- syncDayList = range(len(templateIDList))
-
- packData = ChPyNetSendPack.tagMCFeastWeekPartyPlayerInfo()
- packData.DayInfoList = []
- for cday in syncDayList:
- tiemInfo = ChPyNetSendPack.tagMCFeastWeekPartyDayPlayerInfo()
- tiemInfo.DayIndex = cday
- tiemInfo.Point = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyPoint % cday, 0, ChConfig.Def_PDictType_FeastWeekParty)
- tiemInfo.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyAwardRecord % cday, 0, ChConfig.Def_PDictType_FeastWeekParty)
- tiemInfo.TaskList = []
- for tID in templateIDList[cday]:
- if templateID != -1 and tID != templateID:
- continue
- tipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', tID)
- if not tipyData:
- continue
- taskInfo = ChPyNetSendPack.tagMCFeastWeekPartyTaskInfo()
- taskInfo.TemplateID = tID
- taskInfo.CurTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyCurTimes % (cday, tID), 0, ChConfig.Def_PDictType_FeastWeekParty)
- taskInfo.GotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyGotTimes % (cday, tID), 0, ChConfig.Def_PDictType_FeastWeekParty)
- tiemInfo.TaskList.append(taskInfo)
- tiemInfo.ACount = len(tiemInfo.TaskList)
- packData.DayInfoList.append(tiemInfo)
- packData.Count = len(packData.DayInfoList)
- NetPackCommon.SendFakePack(curPlayer, packData)
- return
-
-
-def SyncFeastWeekPartyInfo(curPlayer):
- actFeastWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
- state = actFeastWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
- cfgID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
- if not cfgID:
- return
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID)
- if not actBossIpyData:
- return
- templateIDList = actBossIpyData.GetTemplateID()
- if not templateIDList:
- return
- pointAwardDict = actBossIpyData.GetPointAward()
- actInfo = ChPyNetSendPack.tagMCFeastWeekPartyInfo()
- actInfo.Clear()
- actInfo.StartDate = actBossIpyData.GetStartDate()
- actInfo.EndtDate = actBossIpyData.GetEndDate()
- actInfo.AdvanceMinutes = actBossIpyData.GetAdvanceMinutes()
- actInfo.IsDayReset = actBossIpyData.GetIsDayReset()
- actInfo.ResetType = actBossIpyData.GetResetType()
- actInfo.LimitLV = actBossIpyData.GetLVLimit()
- actInfo.DayInfoList = []
- tidList = []
- for day, dayActList in enumerate(templateIDList):
- dayInfo = ChPyNetSendPack.tagMCFeastWeekPartyDayInfo()
- dayInfo.TemplateList = dayActList
- dayInfo.ActCnt = len(dayActList)
- for tid in dayActList:
- if tid not in tidList:
- tidList.append(tid)
- dayInfo.PItemInfo = []
- for point, itemList in pointAwardDict.get(day, {}).items():
- for itemID, itemCnt, isBind in itemList:
- awardItem = ChPyNetSendPack.tagMCFeastWeekPartyItem()
- awardItem.ItemID = itemID
- awardItem.ItemCnt = itemCnt
- awardItem.IsBind = isBind
- awardItem.NeedPoint = point
- dayInfo.PItemInfo.append(awardItem)
- dayInfo.PCount = len(dayInfo.PItemInfo)
- actInfo.DayInfoList.append(dayInfo)
- actInfo.DayCnt = len(actInfo.DayInfoList)
- actInfo.ActionInfo = []
- for tid in tidList:
- ipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', tid)
- if not ipyData:
- GameWorld.ErrLog(' 节日巡礼模板表找不到模板%s' % tid)
- continue
- tInfo = ChPyNetSendPack.tagMCFeastWeekPartyAction()
- tInfo.TemplateID = tid
- tInfo.ActionType = ipyData.GetActionType()
- tInfo.TotalTimes = ipyData.GetTotalTimes()
- tInfo.SingleTimes = ipyData.GetSingleTimes()
- tInfo.Point = ipyData.GetPoint()
- tInfo.ItemInfo = []
- for itemID, itemCnt, isBind in ipyData.GetReward():
- awardItem = ChPyNetSendPack.tagMCFeastWeekPartyItem()
- awardItem.ItemID = itemID
- awardItem.ItemCnt = itemCnt
- awardItem.IsBind = isBind
- awardItem.NeedPoint = 0
- tInfo.ItemInfo.append(awardItem)
- tInfo.Count = len(tInfo.ItemInfo)
- actInfo.ActionInfo.append(tInfo)
- actInfo.TCount = len(actInfo.ActionInfo)
- NetPackCommon.SendFakePack(curPlayer, actInfo)
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
index b151c43..43af6b8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
@@ -23,7 +23,6 @@
import ChPyNetSendPack
import DataRecordPack
import ItemControler
-import PlayerWeekParty
import GameWorld
import ChConfig
import CommFunc
@@ -183,7 +182,6 @@
PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), rmb, giftbagIpyData.GetMainItemID()])
SyncFlashGiftbagBuyCount(curPlayer, actNum, [giftbagID])
- PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GiftBag, actGiftbagType, False)
canBuy = True
GameWorld.DebugLog(" 购买限时礼包: actNum=%s,actGiftbagType=%s,giftbagID=%s,buyCount=%s,isJueban=%s"
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncTeam.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncTeam.py
deleted file mode 100644
index e49429c..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncTeam.py
+++ /dev/null
@@ -1,1075 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerFuncTeam
-#
-# @todo:功能队伍表
-# @author hxp
-# @date 2025-05-28
-# @version 1.0
-#
-# 详细描述: 功能队伍表,支持跨服
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2025-05-28 10:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import ShareDefine
-import IpyGameDataPY
-#import CrossBattlefield
-import CrossRealmPlayer
-import PlayerViewCache
-import ChPyNetSendPack
-#import CrossRealmMsg
-import PlayerControl
-import NetPackCommon
-import DBDataMgr
-import DirtyList
-import ChConfig
-
-# 队伍操作
-Def_FuncTeamOPList = (
-Def_FuncTeamOP_JoinApply, # 申请加入 1
-Def_FuncTeamOP_JoinCancel, # 申请取消 2
-Def_FuncTeamOP_JoinAgree, # 同意入队 3
-Def_FuncTeamOP_JoinRefuse, # 拒绝入队 4
-Def_FuncTeamOP_Exit, # 退出队伍 5
-Def_FuncTeamOP_Kick, # 踢出队伍 6
-Def_FuncTeamOP_Transfer, # 转让队长 7
-Def_FuncTeamOP_Dissolve, # 解散队伍 8
-) = range(1, 1 + 8)
-
-def IsOPLimitInAct(curPlayer, funcMapID):
- ## 活动期间是否限制队伍操作
- ipyData = IpyGameDataPY.GetIpyGameData("FuncTeamSet", funcMapID)
- if not ipyData:
- return
- if not ipyData.GetOPLimitInAct():
- return
- isInAct = False
- if isInAct:
- GameWorld.ErrLog("活动期间无法操作队伍! funcMapID=%s" % funcMapID, curPlayer.GetPlayerID())
- return isInAct
-
-def GetFuncTeamZoneID(funcMapID):
- zoneID = 0
- return zoneID
-
-#// B9 20 创建功能队伍 #tagCMCreateFuncTeam
-#
-#struct tagCMCreateFuncTeam
-#{
-# tagHead Head;
-# DWORD FuncMapID; // 功能地图ID或自定义的活动功能ID
-# DWORD FuncMapEx; // 功能地图扩展,如不同的层级
-# BYTE NameLen;
-# char TeamName[NameLen]; // 队伍名称,可为空
-# WORD MinLV; //最低等级限制
-# DWORD MinFightPower; //最低战力限制,求余亿
-# DWORD MinFightPowerEx; //最低战力限制,整除亿
-# BYTE ServerOnly; //是否仅本服玩家可加入,0-否,1-是
-# BYTE NeedCheck; //是否需要审核
-#};
-def OnCreateFuncTeam(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- funcMapID = clientData.FuncMapID
- funcMapEx = clientData.FuncMapEx
- teamName = clientData.TeamName
- minLV = clientData.MinLV
- minFightPower = clientData.MinFightPower
- minFightPowerEx = clientData.MinFightPowerEx
- serverOnly = clientData.ServerOnly
- needCheck = clientData.NeedCheck
-
- if IsOPLimitInAct(curPlayer, funcMapID):
- return
-
- zoneID = GetFuncTeamZoneID(funcMapID)
- if not zoneID:
- return
-
- teamInfo = {"funcMapID":funcMapID, "funcMapEx":funcMapEx, "teamName":teamName, "minLV":minLV,
- "minFightPower":minFightPower, "minFightPowerEx":minFightPowerEx,
- "serverOnly":serverOnly, "needCheck":needCheck}
- dataMsg = {"zoneID":zoneID, "playerID":playerID, "teamInfo":teamInfo, "cacheBase":PlayerViewCache.GetSyncCrossCacheBase(curPlayer)}
- CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_CreateFuncTeam, dataMsg)
- return
-
-#// B9 21 修改功能队伍 #tagCMChangeFuncTeam
-#
-#struct tagCMChangeFuncTeam
-#{
-# tagHead Head;
-# DWORD TeamID;
-# DWORD FuncMapID; // 功能地图ID或自定义的活动功能ID
-# WORD MinLV; //最低等级限制
-# DWORD MinFightPower; //最低战力限制,求余亿
-# DWORD MinFightPowerEx; //最低战力限制,整除亿
-# BYTE ServerOnly; //是否仅本服玩家可加入,0-否,1-是
-# BYTE NeedCheck; //是否需要审核
-#};
-def OnChangeFuncTeam(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- teamID = clientData.TeamID
- funcMapID = clientData.FuncMapID
- minLV = clientData.MinLV
- minFightPower = clientData.MinFightPower
- minFightPowerEx = clientData.MinFightPowerEx
- serverOnly = clientData.ServerOnly
- needCheck = clientData.NeedCheck
-
- if IsOPLimitInAct(curPlayer, funcMapID):
- return
-
- zoneID = GetFuncTeamZoneID(funcMapID)
- if not zoneID:
- return
-
- teamInfo = {"teamID":teamID, "funcMapID":funcMapID, "minLV":minLV,
- "minFightPower":minFightPower, "minFightPowerEx":minFightPowerEx,
- "serverOnly":serverOnly, "needCheck":needCheck}
- dataMsg = {"zoneID":zoneID, "playerID":playerID, "teamInfo":teamInfo, "cacheBase":PlayerViewCache.GetSyncCrossCacheBase(curPlayer)}
- CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_ChangeFuncTeam, dataMsg)
- return
-
-#// B9 22 功能队伍成员操作 #tagCMFuncTeamMemOP
-#
-#struct tagCMFuncTeamMemOP
-#{
-# tagHead Head;
-# DWORD TeamID;
-# DWORD FuncMapID; // 功能地图ID或自定义的活动功能ID
-# BYTE OPType; // 1-申请加入;2-申请取消;3-同意入队;4-拒绝入队;5-退出队伍;6-踢出队伍;7-转让队长;8-解散队伍;
-# DWORD OPData; // 可选
-#};
-def OnFuncTeamMemOP(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- teamID = clientData.TeamID
- funcMapID = clientData.FuncMapID
- opType = clientData.OPType
- opData = clientData.OPData
-
- if opType not in Def_FuncTeamOPList:
- return
-
- if IsOPLimitInAct(curPlayer, funcMapID):
- return
-
- zoneID = GetFuncTeamZoneID(funcMapID)
- if not zoneID:
- return
-
- dataMsg = {"zoneID":zoneID, "playerID":playerID, "teamID":teamID, "funcMapID":funcMapID,
- "opType":opType, "opData":opData}
- dataMsg["cacheBase"] = PlayerViewCache.GetSyncCrossCacheBase(curPlayer)
- CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_FuncTeamMemOP, dataMsg)
- return
-
-#// B9 23 查找功能队伍列表 #tagCMQueryFuncTeam
-#
-#struct tagCMQueryFuncTeam
-#{
-# tagHead Head;
-# DWORD FuncMapID; // 功能地图ID或自定义的活动功能ID
-# DWORD FuncMapEx; // 功能地图扩展,如不同的层级,0代表所有
-# DWORD StartIndex; // 查看的起始索引, 默认0
-# BYTE QueryCnt; // 查看条数,默认20,最大不超过100
-# BYTE HaveSpace; // 是否只查看有空位置的队伍
-# BYTE IDLimitType; // ID限制类型:1-同仙盟队长;2-同ServerGroupID队长;3-同ServerID队长
-# BYTE SearchLen;
-# char SearchMsg[SearchLen]; // 指定搜索时有用,可搜索指定队伍ID或模糊搜索队伍名称,搜索时返回最多QueryCnt个数的队伍
-#};
-def OnQueryFuncTeam(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- funcMapID = clientData.FuncMapID
- funcMapEx = clientData.FuncMapEx
- startIndex = clientData.StartIndex
- queryCnt = clientData.QueryCnt
- haveSpace = clientData.HaveSpace
- idLimitType = clientData.IDLimitType
- searchMsg = clientData.SearchMsg
-
- zoneID = GetFuncTeamZoneID(funcMapID)
- if not zoneID:
- return
-
- dataMsg = {"zoneID":zoneID, "playerID":playerID, "funcMapID":funcMapID, "funcMapEx":funcMapEx,
- "startIndex":startIndex, "queryCnt":queryCnt, "haveSpace":haveSpace, "idLimitType":idLimitType,
- "searchMsg":searchMsg}
- dataMsg["cacheBase"] = PlayerViewCache.GetSyncCrossCacheBase(curPlayer)
- CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_QueryFuncTeam, dataMsg)
- return
-
-#// B9 24 查找玩家功能队伍 #tagCMQueryPlayerFuncTeam
-#
-#struct tagCMQueryPlayerFuncTeam
-#{
-# tagHead Head;
-# DWORD FuncMapID; // 功能地图ID或自定义的活动功能ID
-#};
-def OnQueryPlayerFuncTeam(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- funcMapID = clientData.FuncMapID
-
- zoneID = GetFuncTeamZoneID(funcMapID)
- if not zoneID:
- return
-
- dataMsg = {"zoneID":zoneID, "playerID":playerID, "funcMapID":funcMapID}
- dataMsg["cacheBase"] = PlayerViewCache.GetSyncCrossCacheBase(curPlayer)
- CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_QueryFuncTeam, dataMsg)
- return
-
-def CrossServerMsg_FuncTeamInfo(msgData):
- ## 子服收到跨服信息 - 队伍刷新信息
- infoType = msgData["infoType"]
- playerID = msgData["playerID"]
- funcMapID = msgData["funcMapID"]
- teamInfo = msgData["teamInfo"]
- teamID = msgData.get("teamID", 0)
- syncPlayerIDList = msgData.get("syncPlayerIDList", [])
- notifyMark = msgData.get("notifyMark", "")
-
- curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
- if curPlayer:
- if notifyMark:
- PlayerControl.NotifyCode(curPlayer, notifyMark)
-
- if infoType == "QueryPlayerFuncTeam":
- if curPlayer:
- if teamInfo:
- Sync_FuncTeamRefresh(teamInfo, [playerID])
- else:
- clientPack = ChPyNetSendPack.tagGCQueryPlayerFuncTeamRet()
- clientPack.FuncMapID = funcMapID
- clientPack.TeamID = 0
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
- if not teamInfo:
- # 操作后没有队伍信息了,解散
- if infoType == "FuncTeamMemOP":
- Sync_FuncTeamDissolve(teamID, syncPlayerIDList)
- return
-
- Sync_FuncTeamRefresh(teamInfo, syncPlayerIDList)
- return
-
-def CrossServerMsg_FuncTeamDel(msgData):
- ## 子服收到跨服信息 - 队伍删除
- #"zoneID":zoneID, "funcMapID":funcMapID, "delTeamDict":delTeamDict
- #zoneID = msgData["zoneID"]
- #funcMapID = msgData["funcMapID"]
- delTeamDict = msgData["delTeamDict"]
- for teamID, syncPlayerIDList in delTeamDict.items():
- Sync_FuncTeamDissolve(teamID, syncPlayerIDList)
- return
-
-def CrossServerMsg_FuncTeamList(msgData):
- ## 子服收到跨服信息 - 队伍列表
- queryInfo = msgData["queryInfo"]
- loopIndex = msgData["loopIndex"]
- teamInfoList = msgData["teamInfoList"]
-
- playerID = queryInfo["playerID"]
- curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
- if not curPlayer:
- return
-
- clientPack = ChPyNetSendPack.tagGCFuncTeamList()
- clientPack.FuncMapID = queryInfo["funcMapID"]
- clientPack.FuncMapEx = queryInfo["funcMapEx"]
- clientPack.StartIndex = queryInfo["startIndex"]
- clientPack.QueryCnt = queryInfo["queryCnt"]
- clientPack.HaveSpace = queryInfo["haveSpace"]
- clientPack.IDLimitType = queryInfo["idLimitType"]
- clientPack.SearchMsg = queryInfo["searchMsg"]
- clientPack.SearchLen = len(clientPack.SearchMsg)
- clientPack.LoopIndex = loopIndex
-
- for teamInfo in teamInfoList:
- team = ChPyNetSendPack.tagGCFuncTeam()
- team.TeamID = teamInfo["TeamID"]
- team.CreateTime = teamInfo["CreateTime"]
- team.FuncMapEx = teamInfo["FuncMapEx"]
- team.TeamName = teamInfo["TeamName"]
- team.NameLen = len(team.TeamName)
- team.CaptainID = teamInfo["CaptainID"]
- team.MinLV = teamInfo["MinLV"]
- team.MinFightPower = teamInfo["MinFightPower"] % ChConfig.Def_PerPointValue
- team.MinFightPowerEx = teamInfo["MinFightPower"] / ChConfig.Def_PerPointValue
- team.ServerOnly = teamInfo["ServerOnly"]
- team.NeedCheck = teamInfo["NeedCheck"]
- team.Value1 = teamInfo["Value1"]
- team.Value2 = teamInfo["Value2"]
-
- memberList = []
- for memberInfo in teamInfo["MemberList"]:
- mem = ChPyNetSendPack.tagGCFuncTeamMem()
- mem.ServerID = memberInfo.get("ServerID", 0)
- mem.PlayerID = memberInfo["PlayerID"]
- mem.Name = memberInfo.get("Name", "")
- mem.NameLen = len(mem.Name)
- mem.LV = memberInfo.get("LV", 0)
- mem.Job = memberInfo.get("Job", 0)
- mem.RealmLV = memberInfo.get("RealmLV", 0)
- mem.Face = memberInfo.get("Face", 0)
- mem.FacePic = memberInfo.get("FacePic", 0)
- mem.FightPower = memberInfo.get("FightPower", 0) % ChConfig.Def_PerPointValue
- mem.FightPowerEx = memberInfo.get("FightPower", 0) / ChConfig.Def_PerPointValue
- mem.Value1 = memberInfo["Value1"]
- mem.Value2 = memberInfo["Value2"]
- memberList.append(mem)
-
- team.MemberList = memberList
- team.MemberCount = len(team.MemberList)
- team.ApplyIDList = teamInfo["ApplyIDList"]
- team.ApplyCount = len(team.ApplyIDList)
-
- clientPack.TeamList.append(team)
- clientPack.TeamCount = len(clientPack.TeamList)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
-def Sync_FuncTeamRefresh(teamInfo, syncPlayerIDList):
- ## 功能队伍刷新
- if not teamInfo or not syncPlayerIDList:
- return
-
- syncPlayerList = []
- playerManager = GameWorld.GetPlayerManager()
- for playerID in syncPlayerIDList:
- player = playerManager.FindPlayerByID(playerID)
- if player == None or not player.GetInitOK():
- continue
- syncPlayerList.append(player)
-
- if not syncPlayerList:
- return
-
- clientPack = ChPyNetSendPack.tagGCFuncTeamRefresh()
- clientPack.TeamID = teamInfo["TeamID"]
- clientPack.CreateTime = teamInfo["CreateTime"]
- clientPack.FuncMapID = teamInfo["FuncMapID"]
- clientPack.FuncMapEx = teamInfo["FuncMapEx"]
- clientPack.TeamName = teamInfo["TeamName"]
- clientPack.NameLen = len(clientPack.TeamName)
- clientPack.CaptainID = teamInfo["CaptainID"]
- clientPack.MinLV = teamInfo["MinLV"]
- clientPack.MinFightPower = teamInfo["MinFightPower"] % ChConfig.Def_PerPointValue
- clientPack.MinFightPowerEx = teamInfo["MinFightPower"] / ChConfig.Def_PerPointValue
- clientPack.ServerOnly = teamInfo["ServerOnly"]
- clientPack.NeedCheck = teamInfo["NeedCheck"]
- clientPack.Value1 = teamInfo["Value1"]
- clientPack.Value2 = teamInfo["Value2"]
-
- memberInfoList = teamInfo["MemberList"]
- applyInfoList = teamInfo["ApplyList"]
-
- memberList = []
- for memberInfo in memberInfoList:
- mem = ChPyNetSendPack.tagGCFuncTeamRefreshMem()
- mem.ServerID = memberInfo.get("ServerID", 0)
- mem.PlayerID = memberInfo["PlayerID"]
- mem.Name = memberInfo.get("Name", "")
- mem.NameLen = len(mem.Name)
- mem.LV = memberInfo.get("LV", 0)
- mem.Job = memberInfo.get("Job", 0)
- mem.RealmLV = memberInfo.get("RealmLV", 0)
- mem.Face = memberInfo.get("Face", 0)
- mem.FacePic = memberInfo.get("FacePic", 0)
- mem.FightPower = memberInfo.get("FightPower", 0) % ChConfig.Def_PerPointValue
- mem.FightPowerEx = memberInfo.get("FightPower", 0) / ChConfig.Def_PerPointValue
- mem.OfflineValue = memberInfo.get("OfflineValue", 0)
- mem.Value1 = memberInfo["Value1"]
- mem.Value2 = memberInfo["Value2"]
- memberList.append(mem)
-
- applyList, applyIDList = [], []
- for applyInfo in applyInfoList:
- applyP = ChPyNetSendPack.tagGCFuncTeamRefreshApply()
- applyP.ServerID = applyInfo["ServerID"]
- applyP.PlayerID = applyInfo["PlayerID"]
- applyP.Name = applyInfo["Name"]
- applyP.NameLen = len(applyP.Name)
- applyP.LV = applyInfo["LV"]
- applyP.Job = applyInfo["Job"]
- applyP.RealmLV = applyInfo["RealmLV"]
- applyP.Face = applyInfo.get("Face", 0)
- applyP.FacePic = applyInfo.get("FacePic", 0)
- applyP.FightPower = applyInfo["FightPower"] % ChConfig.Def_PerPointValue
- applyP.FightPowerEx = applyInfo["FightPower"] / ChConfig.Def_PerPointValue
- applyList.append(applyP)
- applyIDList.append(applyInfo["PlayerID"])
-
- clientPack.MemberList = memberList
- clientPack.MemberCount = len(clientPack.MemberList)
- clientPack.ApplyIDList = applyIDList
- clientPack.ApplyInfoList = applyList
- clientPack.ApplyCount = len(clientPack.ApplyInfoList)
-
- for player in syncPlayerList:
- NetPackCommon.SendFakePack(player, clientPack)
- return
-
-def Sync_FuncTeamDissolve(teamID, syncPlayerIDList):
- ## 功能队伍解散
- if not teamID or not syncPlayerIDList:
- return
-
- syncPlayerList = []
- playerManager = GameWorld.GetPlayerManager()
- for playerID in syncPlayerIDList:
- player = playerManager.FindPlayerByID(playerID)
- if player == None or not player.GetInitOK():
- continue
- syncPlayerList.append(player)
-
- if not syncPlayerList:
- return
-
- clientPack = ChPyNetSendPack.tagGCFuncTeamDissolve()
- clientPack.TeamID = teamID
- for player in syncPlayerList:
- NetPackCommon.SendFakePack(player, clientPack)
- return
-
-##--------------------------------------------------------------------------------------------------
-
-def GetFuncTeamMapIDZoneInfo(funcMapID, serverGroupID):
- ## 获取功能队伍分区信息
-
- funcZoneID = 0
- serverGroupList = []
-
- return funcZoneID, serverGroupList
-
-def ClientServerMsg_CreateFuncTeam(serverGroupID, msgData):
- ## 收到子服 - 功能队伍创建
-
- zoneID = msgData["zoneID"]
- playerID = msgData["playerID"]
- teamInfo = msgData["teamInfo"]
- cacheBase = msgData["cacheBase"]
-
- funcMapID = teamInfo["funcMapID"]
-
- zoneInfo = GetFuncTeamMapIDZoneInfo(funcMapID, serverGroupID)
- if not zoneInfo:
- return
- funcZoneID, _ = zoneInfo
-
- if zoneID != funcZoneID:
- GameWorld.ErrLog("功能队伍分区不一致,无法创建! funcMapID=%s,zoneID=%s != %s" % (funcMapID, zoneID, funcZoneID), playerID)
- return
-
- canCreate, notifyMark = CheckCanCreateFuncTeam(playerID, teamInfo, zoneID)
-
- # 某些功能创建前检查
- #if funcMapID == ChConfig.Def_FBMapID_CrossBattlefield:
- # pass
-
- newTeam = None
- teamID = 0
- newTeamInfo = {}
- if canCreate:
- PlayerViewCache.UpdCrossCacheBase(playerID, cacheBase)
- funcTeamMgr = DBDataMgr.GetFuncTeamMgr()
- newTeam = funcTeamMgr.CreateFuncTeam(playerID, teamInfo, zoneID)
-
- if newTeam:
- teamID = newTeam.GetTeamID()
- newTeamInfo = newTeam.GetSyncDict(True)
-
- # 某些功能创建后处理
- #if funcMapID == ChConfig.Def_FBMapID_CrossBattlefield:
- # pass
-
- else:
- if not notifyMark:
- notifyMark = "CreatTeamFail"
-
- serverGroupList = [serverGroupID] # 创建仅通知指定服即可
- syncPlayerIDList = [playerID]
- sendMsg = {"infoType":"CreateFuncTeam", "zoneID":zoneID, "playerID":playerID, "funcMapID":funcMapID,
- "teamInfo":newTeamInfo, "teamID":teamID, "syncPlayerIDList":syncPlayerIDList, "notifyMark":notifyMark}
- CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FuncTeamInfo, sendMsg, serverGroupList)
- return
-
-def CheckCanCreateFuncTeam(playerID, teamInfo, zoneID=0, checkInTeam=True):
- ## 检查可否创建功能队伍 - 本服跨服通用
- # @param checkInTeam: 是否检查已经在队伍中,如果功能只允许单个队伍,则需要检查,反之可设置为不检查
- # @return: 是否可创建, 不可创建提示信息
-
- funcMapID = teamInfo["funcMapID"]
- ipyData = IpyGameDataPY.GetIpyGameData("FuncTeamSet", funcMapID)
- if not ipyData:
- return False, ""
-
- needName = ipyData.GetNeedName()
- if needName:
- teamName = teamInfo["teamName"]
- if not teamName or len(teamName) > 33:
- # 队伍名不合法
- return False, "TeamNameLenError"
-
- if DirtyList.IsWordForbidden(teamName):
- return False, "TeamNameUnallow"
-
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- teamList = funcTeamMgr.GetFuncTeamList(zoneID, funcMapID)
- for funcTeam in teamList:
- if needName:
- if teamName == funcTeam.GetTeamName():
- # 队伍名已存在
- return False, "TeamNameExist"
-
- if checkInTeam:
- if funcTeam.GetMemberByID(playerID):
- # 已经在队伍中
- return False, "AlreadyHaveTeam"
-
- return True, ""
-
-def ClientServerMsg_ChangeFuncTeam(serverGroupID, msgData):
- ## 收到子服 - 功能队伍修改
-
- zoneID = msgData["zoneID"]
- playerID = msgData["playerID"]
- teamInfo = msgData["teamInfo"]
- cacheBase = msgData.get("cacheBase", {})
-
- teamID = teamInfo["teamID"]
- funcMapID = teamInfo["funcMapID"]
-
- zoneInfo = GetFuncTeamMapIDZoneInfo(funcMapID, serverGroupID)
- if not zoneInfo:
- return
- funcZoneID, serverGroupList = zoneInfo
-
- if zoneID != funcZoneID:
- GameWorld.ErrLog("功能队伍分区不一致,无法修改! funcMapID=%s,zoneID=%s != %s" % (funcMapID, zoneID, funcZoneID), playerID)
- return
-
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if not funcTeam:
- GameWorld.ErrLog("功能队伍不存在! funcMapID=%s,teamID=%s" % (funcMapID, teamID), playerID)
- return
-
- if playerID != funcTeam.GetCaptainID():
- GameWorld.DebugLog("非功能队伍队长,无法修改! funcMapID=%s,teamID=%s,CaptainID=%s" % (funcMapID, teamID, funcTeam.GetCaptainID()), playerID)
- return
-
- if cacheBase:
- PlayerViewCache.UpdCrossCacheBase(playerID, cacheBase)
-
- funcTeam.SetMinFightPower(teamInfo["minFightPower"] + teamInfo["minFightPowerEx"] * ChConfig.Def_PerPointValue)
- funcTeam.SetMinLV(teamInfo["minLV"])
- funcTeam.SetServerOnly(teamInfo["serverOnly"])
- funcTeam.SetNeedCheck(teamInfo["needCheck"])
-
- if not funcTeam.GetNeedCheck():
- pass
-
- teamID = funcTeam.GetTeamID()
- teamInfo = funcTeam.GetSyncDict(True)
- syncPlayerIDList = funcTeam.GetSyncPlayerIDList()
- sendMsg = {"infoType":"ChangeFuncTeam", "zoneID":zoneID, "playerID":playerID, "funcMapID":funcMapID,
- "teamInfo":teamInfo, "teamID":teamID, "syncPlayerIDList":syncPlayerIDList}
- CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FuncTeamInfo, sendMsg, serverGroupList)
- return
-
-def ClientServerMsg_FuncTeamMemOP(serverGroupID, msgData):
- ## 收到子服 - 功能队伍操作
-
- zoneID = msgData["zoneID"]
- playerID = msgData["playerID"] # 操作的玩家ID
- teamID = msgData["teamID"]
- funcMapID = msgData["funcMapID"]
- opType = msgData["opType"]
- opData = msgData["opData"]
- cacheBase = msgData.get("cacheBase", {})
-
- zoneInfo = GetFuncTeamMapIDZoneInfo(funcMapID, serverGroupID)
- if not zoneInfo:
- return
- funcZoneID, serverGroupList = zoneInfo
-
- if zoneID != funcZoneID:
- GameWorld.ErrLog("功能队伍分区不一致,无法操作! funcMapID=%s,zoneID=%s != %s" % (funcMapID, zoneID, funcZoneID), playerID)
- return
-
- if cacheBase:
- PlayerViewCache.UpdCrossCacheBase(playerID, cacheBase)
-
- isOK = False
- syncDict = {}
- teamInfo = {}
-
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if not funcTeam:
- GameWorld.ErrLog("功能队伍不存在! funcMapID=%s,teamID=%s,opType=%s" % (funcMapID, teamID, opType), playerID)
- syncDict["notifyMark"] = "TeamNotExist"
- syncPlayerIDList = [playerID]
- else:
- # 仅队长可操作
- if opType in [Def_FuncTeamOP_JoinAgree, Def_FuncTeamOP_JoinRefuse, Def_FuncTeamOP_Kick,
- Def_FuncTeamOP_Transfer, Def_FuncTeamOP_Dissolve]:
- if playerID != funcTeam.GetCaptainID():
- GameWorld.ErrLog("仅队长可操作! funcMapID=%s,teamID=%s,opType=%s,CaptainID=%s"
- % (funcMapID, teamID, opType, funcTeam.GetCaptainID()), playerID)
- return
-
- syncPlayerIDList = funcTeam.GetSyncPlayerIDList()
-
- # 申请加入
- if opType == Def_FuncTeamOP_JoinApply:
- isOK = __DoFuncTeamOP_JoinApply(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict)
- if playerID not in syncPlayerIDList:
- syncPlayerIDList.append(playerID)
-
- # 申请取消
- elif opType == Def_FuncTeamOP_JoinCancel:
- isOK = __DoFuncTeamOP_JoinCancel(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict)
- if playerID not in syncPlayerIDList:
- syncPlayerIDList.append(playerID)
-
- # 同意入队
- elif opType == Def_FuncTeamOP_JoinAgree:
- isOK = __DoFuncTeamOP_JoinAgree(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict)
-
- # 拒绝入队
- elif opType == Def_FuncTeamOP_JoinRefuse:
- isOK = __DoFuncTeamOP_JoinRefuse(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict)
-
- # 退出队伍
- elif opType == Def_FuncTeamOP_Exit:
- isOK = __DoFuncTeamOP_Exit(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict)
-
- # 踢出队伍
- elif opType == Def_FuncTeamOP_Kick:
- isOK = __DoFuncTeamOP_Kick(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict)
-
- # 转让队长
- elif opType == Def_FuncTeamOP_Transfer:
- isOK = __DoFuncTeamOP_Transfer(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict)
-
- # 解散队伍
- elif opType == Def_FuncTeamOP_Dissolve:
- isOK = __DoFuncTeamOP_Dissolve(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict)
-
- if not isOK and not syncDict:
- # 没有执行成功 且 没有需要回复的信息,则不需要回发子服
- return
-
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if funcTeam:
- teamInfo = funcTeam.GetSyncDict(True)
-
- sendMsg = {"infoType":"FuncTeamMemOP", "zoneID":zoneID, "playerID":playerID, "funcMapID":funcMapID,
- "teamInfo":teamInfo, "teamID":teamID, "syncPlayerIDList":syncPlayerIDList, "opType":opType}
- sendMsg.update(syncDict)
- CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FuncTeamInfo, sendMsg, serverGroupList)
- return
-
-def DelTeam(teamID):
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if not funcTeam:
- GameWorld.ErrLog("删除功能队伍时不存在! teamID=%s" % teamID)
- return
- zoneID = funcTeam.GetZoneID()
- funcMapID = funcTeam.GetFuncMapID()
- syncPlayerIDList = funcTeam.GetSyncPlayerIDList()
-
- funcTeamMgr.DelTeam(teamID)
-
- if not funcTeamMgr.IsLockBatch():
- sendMsg = {"zoneID":zoneID, "funcMapID":funcMapID, "delTeamDict":{teamID:syncPlayerIDList}}
- CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FuncTeamDel, sendMsg)
-
- return syncPlayerIDList
-
-def DelTeamByFunc(delFuncMapID):
- GameWorld.Log("清空功能队伍! delFuncMapID=%s" % delFuncMapID)
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeamMgr.LockBatch()
- delTeamIDList = []
- for key, teamList in funcTeamMgr.funcTeamListDict.items():
- zoneID, funcMapID = key
- if funcMapID != delFuncMapID:
- continue
- delTeamDict = {}
- for funcTeam in teamList[::-1]:
- teamID = funcTeam.GetTeamID()
- syncPlayerIDList = DelTeam(teamID)
- if syncPlayerIDList:
- delTeamDict[teamID] = syncPlayerIDList
- delTeamIDList.append(teamID)
-
- # 按分区处理后一次性同步子服
- zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByZoneID(funcMapID, zoneID)
- serverGroupIDList = zoneIpyData.GetServerGroupIDList() if zoneIpyData else []
- sendMsg = {"zoneID":zoneID, "funcMapID":funcMapID, "delTeamDict":delTeamDict}
- CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FuncTeamDel, sendMsg, serverGroupIDList)
- funcTeamMgr.UnLockBatch()
-
- delCount = len(delTeamIDList)
- funcTeamMgr.SyncMapFuncTeamMemIDInfo(delTeamIDList)
- return delCount
-
-def DelTealAll():
- delCount = 0
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for index in range(ipyDataMgr.GetFuncTeamSetCount()):
- ipyData = ipyDataMgr.GetFuncTeamSetByIndex(index)
- delCount += DelTeamByFunc(ipyData.GetFuncMapID())
- return delCount
-
-def SendFuncTeamToClientServer(teamID):
- ## 同步队伍明细到子服
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if not funcTeam:
- return
- funcMapID = funcTeam.GetFuncMapID()
- teamInfo = funcTeam.GetSyncDict(True)
- syncPlayerIDList = funcTeam.GetSyncPlayerIDList()
-
- sendMsg = {"infoType":"", "playerID":0, "funcMapID":funcMapID,
- "teamInfo":teamInfo, "teamID":teamID, "syncPlayerIDList":syncPlayerIDList}
- CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FuncTeamInfo, sendMsg)
- return
-
-def __DoFuncTeamOP_JoinApply(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict):
- ## 申请加入
-
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- playerTeamID = funcTeamMgr.GetPlayerTeamID(playerID, funcMapID)
- if playerTeamID:
- GameWorld.Log("已经有功能队伍了,不能再申请! funcMapID=%s,playerTeamID=%s" % (funcMapID, playerTeamID), playerID)
- return
-
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if not funcTeam:
- return
-
- if funcTeam.GetMemberByID(playerID):
- GameWorld.Log("已在功能队伍中! funcMapID=%s,teamID=%s" % (funcMapID, teamID), playerID)
- return
-
- if playerID in funcTeam.GetApplyIDList():
- GameWorld.Log("已在功能队伍申请列表中! funcMapID=%s,teamID=%s" % (funcMapID, teamID), playerID)
- return
-
- ipyData = IpyGameDataPY.GetIpyGameData("FuncTeamSet", funcMapID)
- if not ipyData:
- return
-
- memberMax = ipyData.GetMemberMax()
- applyMax = ipyData.GetApplyMax()
- reqApplyMax = ipyData.GetReqApplyMax()
-
- if len(funcTeam.GetMemberList()) >= memberMax:
- GameWorld.DebugLog("功能队伍成员已满! funcMapID=%s,teamID=%s,memberMax=%s" % (funcMapID, teamID, memberMax), playerID)
- syncDict["notifyMark"] = "TeamMemFull"
- return
-
- if applyMax and len(funcTeam.GetApplyIDList()) >= applyMax:
- GameWorld.DebugLog("功能队伍申请队列已满! funcMapID=%s,teamID=%s,applyMax=%s" % (funcMapID, teamID, applyMax), playerID)
- syncDict["notifyMark"] = "TeamApplyFull"
- return
-
- minLV = funcTeam.GetMinLV()
- if minLV and minLV > cacheBase.get("LV", 0):
- GameWorld.DebugLog("功能队伍最低等级限制,无法申请! funcMapID=%s,teamID=%s,minLV=%s" % (funcMapID, teamID, minLV), playerID)
- syncDict["notifyMark"] = "TeamLVLimit"
- return
-
- minFightPower = funcTeam.GetMinFightPower()
- if minFightPower and minFightPower > cacheBase.get("FightPower", 0):
- GameWorld.DebugLog("功能队伍最低战力限制,无法申请! funcMapID=%s,teamID=%s,minFightPower=%s" % (funcMapID, teamID, minFightPower), playerID)
- syncDict["notifyMark"] = "TeamFightPowerLimit"
- return
-
- minServerOnly = funcTeam.GetServerOnly()
- if minServerOnly:
- # 待扩展,看是取ServerID,还是 ServerGroupID,需注意GroupID合服后可能不一致的问题
- pass
-
- if reqApplyMax:
- applyTeamIDList = []
- teamList = funcTeamMgr.GetFuncTeamList(zoneID, funcMapID)
- for fTeam in teamList:
- if playerID in fTeam.GetApplyIDList():
- applyTeamIDList.append(fTeam.GetTeamID())
- if len(applyTeamIDList) >= reqApplyMax:
- GameWorld.DebugLog("玩家申请加入队伍数已满,无法申请! funcMapID=%s,applyTeamCount=%s, %s"
- % (funcMapID, len(applyTeamIDList), applyTeamIDList), playerID)
- syncDict["notifyMark"] = "TeamReqJoinApplyFull"
- return
-
- if funcTeam.GetNeedCheck():
- syncDict["notifyMark"] = "TeamReqJoinApplyOK"
- funcTeam.AddApplyID(playerID)
- else:
- funcTeam.AddTeamMember(playerID)
-
- return True
-
-def __DoFuncTeamOP_JoinCancel(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict):
- ## 申请取消
-
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if not funcTeam:
- return
-
- funcTeam.DelApplyID(playerID)
-
- return True
-
-def __DoFuncTeamOP_JoinAgree(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict):
- ## 同意入队
- # @param opData: 目标玩家ID,为0时一键同意
-
- ipyData = IpyGameDataPY.GetIpyGameData("FuncTeamSet", funcMapID)
- if not ipyData:
- return
-
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if not funcTeam:
- return
-
- applyIDList = funcTeam.GetApplyIDList()
- if not applyIDList:
- return
-
- memberMax = ipyData.GetMemberMax()
- joinPlayerIDList = []
- tagPlayerID = opData
- if tagPlayerID:
- if tagPlayerID not in applyIDList:
- GameWorld.Log("目标玩家不在功能队伍申请列表中! funcMapID=%s,teamID=%s,tagPlayerID=%s not in applyIDList=%s"
- % (funcMapID, teamID, tagPlayerID, applyIDList), playerID)
- return
-
- tagPlayerTeamID = funcTeamMgr.GetPlayerTeamID(tagPlayerID, funcMapID)
- if tagPlayerTeamID:
- GameWorld.DebugLog("目标玩家已加入其他功能队伍! funcMapID=%s,tagPlayerID=%s,tagPlayerTeamID=%s"
- % (funcMapID, tagPlayerID, tagPlayerTeamID), playerID)
- syncDict["notifyMark"] = "PlayerInOtherTeam"
- else:
- joinPlayerIDList = [tagPlayerID]
- else:
- joinPlayerIDList = [] + applyIDList # 一键同意按申请顺序,如需按战力再做优化
-
- for joinPlayerID in joinPlayerIDList:
- if len(funcTeam.GetMemberList()) >= memberMax:
- GameWorld.DebugLog("功能队伍成员已满! funcMapID=%s,teamID=%s,memberMax=%s" % (funcMapID, teamID, memberMax), playerID)
- break
- tagPlayerTeamID = funcTeamMgr.GetPlayerTeamID(joinPlayerID, funcMapID)
- if tagPlayerTeamID:
- GameWorld.DebugLog("目标玩家已加入其他功能队伍! funcMapID=%s,joinPlayerID=%s,tagPlayerTeamID=%s"
- % (funcMapID, joinPlayerID, tagPlayerTeamID), playerID)
- continue
- funcTeam.AddTeamMember(joinPlayerID)
-
- return True
-
-def __DoFuncTeamOP_JoinRefuse(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict):
- ## 拒绝入队
- # @param opData: 目标玩家ID,为0时一键拒绝
-
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if not funcTeam:
- return
-
- tagPlayerID = opData
- if tagPlayerID:
- funcTeam.DelApplyID(tagPlayerID)
- else:
- funcTeam.DelApplyIDAll() # 一键拒绝
-
- return True
-
-def __DoFuncTeamOP_Exit(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict):
- ## 退出队伍
-
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if not funcTeam:
- return
-
- # 队长退出,直接解散
- if playerID == funcTeam.GetCaptainID():
- return __DoFuncTeamOP_Dissolve(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict)
-
- funcTeam.DelTeamMember(playerID)
-
- return True
-
-def __DoFuncTeamOP_Kick(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict):
- ## 踢出队伍
-
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if not funcTeam:
- return
-
- tagPlayerID = opData
- if not tagPlayerID:
- GameWorld.DebugLog("需指定踢出队伍目标队员! opData=%s" % opData, playerID)
- return
-
- if tagPlayerID == funcTeam.GetCaptainID():
- GameWorld.DebugLog("不能踢队长! opData=%s" % opData, playerID)
- return
-
- funcTeam.DelTeamMember(tagPlayerID)
-
- return True
-
-def __DoFuncTeamOP_Transfer(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict):
- ## 转让队长
-
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- if not funcTeam:
- return
-
- memberIDList = funcTeam.GetMemberIDList()
- tagPlayerID = opData
- if tagPlayerID not in memberIDList:
- GameWorld.Log("目标玩家不是队员,无法转让队长! funcMapID=%s,teamID=%s,tagPlayerID=%s not in %s"
- % (funcMapID, teamID, tagPlayerID, memberIDList), playerID)
- return
-
- funcTeam.SetCaptainID(tagPlayerID)
-
- return True
-
-def __DoFuncTeamOP_Dissolve(zoneID, funcMapID, teamID, playerID, opType, opData, cacheBase, syncDict):
- ## 解散队伍
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- funcTeamMgr.DelTeam(teamID)
- return True
-
-def ClientServerMsg_QueryFuncTeam(serverGroupID, msgData):
- ## 收到子服 - 查找队伍列表
-
- zoneID = msgData["zoneID"]
- playerID = msgData["playerID"]
- funcMapID = msgData["funcMapID"]
- cacheBase = msgData.get("cacheBase", {})
-
- zoneInfo = GetFuncTeamMapIDZoneInfo(funcMapID, serverGroupID)
- if not zoneInfo:
- return
- funcZoneID, _ = zoneInfo
-
- if zoneID != funcZoneID:
- GameWorld.ErrLog("功能队伍分区不一致,无法查询! funcMapID=%s,zoneID=%s != %s" % (funcMapID, zoneID, funcZoneID), playerID)
- return
-
- if cacheBase:
- PlayerViewCache.UpdCrossCacheBase(playerID, cacheBase)
-
- # 非列表查询,返回玩家相关队伍
- if "startIndex" not in msgData:
- syncPlayerIDList = [playerID]
- serverGroupList = [serverGroupID]
-
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- # 申请的队伍
- funcTeamList = funcTeamMgr.GetFuncTeamList(zoneID, funcMapID)
- for funcTeam in funcTeamList:
- if playerID not in funcTeam.GetApplyIDList():
- continue
- teamID = funcTeam.GetTeamID()
- teamInfo = funcTeam.GetSyncDict(True)
- sendMsg = {"infoType":"QueryPlayerFuncTeam", "zoneID":zoneID, "playerID":playerID, "funcMapID":funcMapID,
- "teamInfo":teamInfo, "teamID":teamID, "syncPlayerIDList":syncPlayerIDList}
- CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FuncTeamInfo, sendMsg, serverGroupList)
-
- # 玩家所属队伍
- teamID = funcTeamMgr.GetPlayerTeamID(playerID, funcMapID)
- funcTeam = funcTeamMgr.GetFuncTeam(teamID)
- teamInfo = funcTeam.GetSyncDict(True) if funcTeam else {}
- sendMsg = {"infoType":"QueryPlayerFuncTeam", "zoneID":zoneID, "playerID":playerID, "funcMapID":funcMapID,
- "teamInfo":teamInfo, "teamID":teamID, "syncPlayerIDList":syncPlayerIDList}
- CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FuncTeamInfo, sendMsg, serverGroupList)
- return
-
- # 列表查询
- funcMapEx = msgData["funcMapEx"]
- startIndex = msgData["startIndex"]
- queryCnt = msgData["queryCnt"]
- haveSpace = msgData["haveSpace"]
- idLimitType = msgData["idLimitType"]
- searchMsg = msgData["searchMsg"]
- if queryCnt <= 0:
- queryCnt = 20
- queryCnt = min(100, queryCnt) # 默认20,最大100
-
- ipyData = IpyGameDataPY.GetIpyGameData("FuncTeamSet", funcMapID)
- if not ipyData:
- return
- memberMax = ipyData.GetMemberMax()
-
- idLimitTypeDict = {1:"FamilyID", 2:"ServerGroupID", 3:"AccID"}
- loopIndex = startIndex
- teamInfoList = []
- funcTeamMgr = PyDataManager.GetDBPyFuncTeamManager()
- teamList = funcTeamMgr.GetFuncTeamList(zoneID, funcMapID)
- for index in xrange(startIndex, len(teamList)):
- loopIndex = index + 1
- funcTeam = teamList[index]
- if searchMsg:
- # 精确匹配队伍名、队伍ID的插入在最前面
- if searchMsg == funcTeam.GetTeamName() or searchMsg == str(funcTeam.GetTeamID()):
- teamInfoList.insert(0, funcTeam.GetSyncDict(False))
- elif searchMsg in funcTeam.GetTeamName():
- teamInfoList.append(funcTeam.GetSyncDict(False))
- else:
- continue
- else:
- if funcMapEx != 0 and funcMapEx != funcTeam.GetFuncMapEx():
- continue
- if haveSpace and len(funcTeam.GetMemberList()) >= memberMax:
- #GameWorld.DebugLog("已满员,不加入列表查看 teamID=%s" % funcTeam.GetTeamID())
- continue
- if idLimitType in idLimitTypeDict:
- limitAttrName = idLimitTypeDict[idLimitType]
- curIDValue = cacheBase.get(limitAttrName, 0)
- captainID = funcTeam.GetCaptainID()
- cacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(captainID))
- teamIDValue = cacheDict.get(limitAttrName, 0)
- if limitAttrName == "AccID":
- curIDValue = GameWorld.GetAccIDServerID(str(curIDValue))
- teamIDValue = GameWorld.GetAccIDServerID(str(teamIDValue))
-
- if not curIDValue or curIDValue != teamIDValue:
- #GameWorld.DebugLog("没有或不同ID限制,不加入列表查看! idLimitType=%s,curIDValue=%s != %s, teamID=%s, captainID=%s"
- # % (idLimitType, curIDValue, teamIDValue, funcTeam.GetTeamID(), captainID))
- continue
- teamInfoList.append(funcTeam.GetSyncDict(False))
-
- if len(teamInfoList) >= queryCnt:
- break
-
- serverGroupList = [serverGroupID] # 仅通知查询服即可
- sendMsg = {"teamInfoList":teamInfoList, "loopIndex":loopIndex, "queryInfo":msgData}
- CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_FuncTeamList, sendMsg, serverGroupList)
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLuckyCloudBuy.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLuckyCloudBuy.py
deleted file mode 100644
index 59fe2c9..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLuckyCloudBuy.py
+++ /dev/null
@@ -1,183 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerLuckyCloudBuy
-#
-# @todo:幸运云购
-# @author hxp
-# @date 2021-10-21
-# @version 1.0
-#
-# 详细描述: 幸运云购
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-10-21 17:00"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import CrossRealmPlayer
-import ChPyNetSendPack
-import IPY_GameWorld
-import NetPackCommon
-import ItemControler
-import ItemCommon
-import GameWorld
-
-def OnPlayerLogin(curPlayer):
-
- if GameWorld.IsCrossServer():
- return
-
- if not CrossRealmPlayer.IsCrossServerOpen():
- return
-
- __CheckLuckyCloudBuyID(curPlayer)
- Sync_LuckyCloudBuyPlayerInfo(curPlayer)
- return
-
-def OnLuckyCloudBuyChange():
-
- if GameWorld.IsCrossServer():
- return
-
- if not CrossRealmPlayer.IsCrossServerOpen():
- return
-
- playerManager = GameWorld.GetPlayerManager()
- for index in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(index)
- if not GameWorld.IsNormalPlayer(curPlayer):
- continue
- __CheckLuckyCloudBuyID(curPlayer)
- Sync_LuckyCloudBuyPlayerInfo(curPlayer) # 该功能收到就同步,不论有没有重置,因为可能由跨服关闭变为开启时的数据同步
-
- return
-
-def __CheckLuckyCloudBuyID(curPlayer):
-
- roundID = PyGameData.g_luckyCloudBuyInfo.get("idTime", 0)
- playerRoundID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyCloudBuy_RoundID) # 玩家身上的活动ID
- if playerRoundID == roundID:
- GameWorld.DebugLog("幸运云购奖励期ID相同,不重置! playerRoundID=%s,roundID=%s" % (playerRoundID, roundID), curPlayer.GetPlayerID())
- return
- GameWorld.DebugLog("幸运云购奖励期ID变更,重置! playerRoundID=%s,roundID=%s" % (playerRoundID, roundID), curPlayer.GetPlayerID())
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyCloudBuy_RoundID, roundID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyCloudBuy_BuyCount, 0)
- return True
-
-#// C1 10 幸运云购购买 #tagCMLuckyCloudBuy
-#
-#struct tagCMLuckyCloudBuy
-#{
-# tagHead Head;
-# BYTE BuyCount; // 购买次数
-#};
-def OnLuckyCloudBuy(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- accID = curPlayer.GetAccID()
- playerID = curPlayer.GetPlayerID()
- buyCount = clientData.BuyCount
-
- if GameWorld.IsCrossServer():
- return
-
- if not CrossRealmPlayer.IsCrossServerOpen():
- PlayerControl.NotifyCode(curPlayer, "CrossMatching18")
- return
-
- unLimitHour, unLimitMinute = IpyGameDataPY.GetFuncEvalCfg("LuckyCloudBuyCost", 3)
- crossServerDateTime = None #GameWorld.ChangeStrToDatetime(GameWorld.GetCrossServerTimeStr())
- if not crossServerDateTime:
- return
- unLimitDateTime = GameWorld.ChangeStrToDatetime("%d-%d-%d %d:%d:00" \
- % (crossServerDateTime.year, crossServerDateTime.month, crossServerDateTime.day, unLimitHour, unLimitMinute))
-
- if crossServerDateTime >= unLimitDateTime:
- GameWorld.DebugLog("当前跨服服务器时间不限制幸运云购购买次数了! crossServerDateTime=%s,unLimitHour=%s,unLimitMinute=%s"
- % (crossServerDateTime, unLimitHour, unLimitMinute))
- else:
- hadBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyCloudBuy_BuyCount)
- vipLV = curPlayer.GetVIPLv()
- gmLVLimitBuyCountList = IpyGameDataPY.GetFuncEvalCfg("LuckyCloudBuyCost", 2)
- maxBuyCount = gmLVLimitBuyCountList[vipLV] if len(gmLVLimitBuyCountList) > vipLV else gmLVLimitBuyCountList[-1]
- if hadBuyCount + buyCount > maxBuyCount:
- GameWorld.DebugLog("幸运云购购买次数限制! hadBuyCount=%s,buyCount=%s,vipLV=%s,maxBuyCount=%s,crossServerDateTime=%s"
- % (hadBuyCount, buyCount, vipLV, maxBuyCount, crossServerDateTime))
- return
-
- buyCountCostMoneyDict = IpyGameDataPY.GetFuncEvalCfg("LuckyCloudBuyCost", 1, {})
- if str(buyCount) not in buyCountCostMoneyDict:
- return
- costMoneyType, costMoneyValue = buyCountCostMoneyDict[str(buyCount)]
- if not PlayerControl.HaveMoney(curPlayer, costMoneyType, costMoneyValue):
- return
-
- needSpace = min(buyCount, 10)
- emptySpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if needSpace > emptySpace:
- PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_202580")
- return
-
- if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_LuckyCloudBuy, tick):
- PlayerControl.NotifyCode(curPlayer, "RequestLater")
- return
-
- GameWorld.Log("幸运云购购买: buyCount=%s" % (buyCount), playerID)
-
- dataMsg = {"accID":accID,
- "playerID":playerID,
- "playerName":CrossRealmPlayer.GetCrossPlayerName(curPlayer),
- "buyCount":buyCount,
- "roundID":curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyCloudBuy_RoundID),
- }
- GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_LuckyCloudBuy, dataMsg)
- return
-
-def GameServer_LuckyCloudBuy(curPlayer, msgData):
- msgType = msgData[0]
- if msgType == "LuckyCloudBuyNum":
- CrossServerMsg_LuckyCloudBuyNum(curPlayer, msgData)
-
- return
-
-def CrossServerMsg_LuckyCloudBuyNum(curPlayer, msgData):
-
- playerID = curPlayer.GetPlayerID()
- _, roundID, buyCount, awardItemList = msgData
-
- # 消耗钱及奖励必须执行,增加次数需同一个轮次ID
- playerRoundID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyCloudBuy_RoundID)
- hadBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyCloudBuy_BuyCount)
- GameWorld.Log("地图玩家收到幸运云购购买结算信息! playerRoundID=%s,hadBuyCount=%s, roundID=%s,buyCount=%s"
- % (playerRoundID, hadBuyCount, roundID, buyCount), playerID)
-
- buyCountCostMoneyDict = IpyGameDataPY.GetFuncEvalCfg("LuckyCloudBuyCost", 1, {})
- if str(buyCount) not in buyCountCostMoneyDict:
- return
- costMoneyType, costMoneyValue = buyCountCostMoneyDict[str(buyCount)]
-
- if not PlayerControl.PayMoney(curPlayer, costMoneyType, costMoneyValue, "LuckyCloudBuy"):
- return
-
- if roundID == playerRoundID:
- updBuyCount = hadBuyCount + buyCount
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyCloudBuy_BuyCount, updBuyCount)
- GameWorld.Log(" 更新幸运云购购买次数: updBuyCount=%s" % (updBuyCount), playerID)
-
- GameWorld.Log(" 结算幸运云购购买奖励: awardItemList=%s" % str(awardItemList), playerID)
- ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["LuckyCloudBuy", False, {}])
-
- Sync_LuckyCloudBuyPlayerInfo(curPlayer)
- return
-
-def Sync_LuckyCloudBuyPlayerInfo(curPlayer):
- clientPack = ChPyNetSendPack.tagMCLuckyCloudBuyPlayerInfo()
- clientPack.BuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyCloudBuy_BuyCount)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
deleted file mode 100644
index 0628bf4..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
+++ /dev/null
@@ -1,1162 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerPet
-#
-# @todo:宠物/灵兽
-# @author xdh
-# @date 2018-7-20
-# @version 1.0
-#
-# 详细描述: 宠物
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-7-20 15:30"""
-#-------------------------------------------------------------------------------
-
-#导入
-import ChConfig
-import NPCCommon
-import ItemCommon
-import IPY_GameWorld
-import DataRecordPack
-import PlayerBillboard
-import SkillShell
-import ItemControler
-import PlayerControl
-import GameFuncComm
-import ShareDefine
-import SkillCommon
-import PetControl
-import GameWorld
-import IpyGameDataPY
-import GameMap
-import PlayerWeekParty
-import CalcNoLineEffect
-import PassiveBuffEffMng
-import CrossPlayerData
-import CalcLineEffect
-import ChPyNetSendPack
-import NetPackCommon
-import PlayerActLunhuidian
-import PlayerActTask
-import GameObj
-
-import random
-import math
-#---------------------------------------------------------------------
-
-
-def DoLogic_PetInfo_OnDay(curPlayer):
-
- return
-#---------------------------------------------------------------------
-
-## 宠物功能开启
-# @return: 是否激活成功
-def DoPetOpen(curPlayer):
- GameWorld.DebugLog("DoPetOpen...", curPlayer.GetPlayerID())
-
-# firstPetData = ReadChConfig.GetEvalChConfig("FirstPet")
-# petNPCID = firstPetData[0]
-# isAutoFight = firstPetData[1]
-# if petNPCID <= 0:
-# return
-#
-# # 如果已经有该宠物, 不再给
-# if GetPetDataItemIndexByNPCID(curPlayer, petNPCID) < 0:
-# newPetItem = GetNewPetDataItem(curPlayer, petNPCID)
-# if not newPetItem:
-# return
-#
-# if not ItemControler.PlayerItemControler(curPlayer).PutInItem(ShareDefine.rptPet, newPetItem):
-# return
-#
-# petData = newPetItem.GetUserData()
-# DataRecordPack.DR_UsePetEgg(curPlayer, 0, petNPCID, petData)
-#
-# if isAutoFight and not curPlayer.GetPetMgr().GetFightPet():
-# petItemIndex = GetPetDataItemIndexByNPCID(curPlayer, petNPCID)
-# GameWorld.DebugLog("自动出战新手宠!petNPCID=%s,petItemIndex=%s" % (petNPCID, petItemIndex))
-# DoChangePetState(curPlayer, petItemIndex, ShareDefine.Def_PetState_Fight)
-
- for trainType in xrange(1, GetPetTrainTypes() + 1):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PetTrainLV % trainType, 1)
- Sync_PetTrainData(curPlayer)
- return True
-
-## 功能开启后, 角色升级需要的处理
-def DoLVUPLogic_Pet(curPlayer):
- #GameWorld.DebugLog("DoLVUPLogic_Pet")
- return
-
-def GetPetIpydata(petNPCID):return IpyGameDataPY.GetIpyGameData("PetInfo", petNPCID)
-
-## 获取新宠物数据物品
-def GetNewPetDataItem(curPlayer, petNPCID, classlv= -1):
-
- gameData = GameWorld.GetGameData()
- petNpcData = gameData.FindNPCDataByID(petNPCID)
- if not petNpcData:
- GameWorld.ErrLog("FindNPCDataByID can not find npcData petNPCID=%s" % (petNPCID))
- return
- petIpyData = GetPetIpydata(petNPCID)
- if not petIpyData:
- GameWorld.ErrLog("tagPetInfo.txt can not find petData petNPCID=%s" % (petNPCID))
- return
-
- newPetItem = None#ItemCommon.CreateSingleItem(ChConfig.Def_ItemID_PetData)
- if not newPetItem:
- return
-
- newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_NPCID, petNPCID)
- newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_State, ShareDefine.Def_PetState_Null)
-
- initClass = petIpyData.GetInitRank() if classlv == -1 else classlv#初始阶级
- newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_ClassLV, max(0, initClass - 1)) #代码里从0开始
- newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_QualityLV, petIpyData.GetQuality()) # 宠物品质
-
- petSkillList = petIpyData.GetSkillID()
- petSkillUnLockList = petIpyData.GetSkillUnLock()
-
- for i, skillid in enumerate(petSkillList):
- limitPetClassLV = petSkillUnLockList[i] # 学习此技能所需宠物阶级
- if initClass < limitPetClassLV:
- continue
- curSkilData = GameWorld.GetGameData().GetSkillBySkillID(skillid)
- if not curSkilData:
- continue
- if curSkilData.GetFuncType() == ChConfig.Def_SkillFuncType_PetOwnerSkill:
- __GiveOwnerSkill(curPlayer, skillid)
- continue
- newPetItem.AddUserAttr(ShareDefine.Def_IudetPet_Skill, skillid)
-
- return newPetItem
-
-# 从称号获得技能
-def __GiveOwnerSkill(curPlayer, skillResID):
- GameWorld.DebugLog("给灵宠主人技能: skillResID=%s" % skillResID)
- skillData = GameWorld.GetGameData().FindSkillByType(skillResID, 1)
- if skillData == None:
- GameWorld.DebugLog(" not find skill(%s)" % skillResID)
- return
- if not SkillCommon.CheckSkillJob(curPlayer, skillData):
- return
- if not SkillShell.CheckLearnSkillCondition(curPlayer, skillData):
- GameWorld.DebugLog(" learn skill condition isn't enough! skillResID=%s" % skillResID)
- return
- skillManager = curPlayer.GetSkillManager()
- if skillManager.FindSkillBySkillTypeID(skillResID):
- GameWorld.DebugLog(" have learned skill(%s)" % skillResID)
- return
-
- skillManager.LVUpSkillBySkillTypeID(skillResID)
- PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer, skillResID)
- PlayerControl.PlayerControl(curPlayer).RefreshSkillFightPowerEx(skillResID, 0)
- return
-
-## 获取宠物实例对应的宠物数据物品
-def GetPetDataItem(curPetOwner, rolePet):
- if not curPetOwner:
- return
- packItemIndex = GetPetObjItemIndex(rolePet)
- return GetPetDataItemByIndex(curPetOwner, packItemIndex)
-
-## 获取宠物数据物品
-def GetPetDataItemByIndex(curPlayer, petItemIndex):
-
- petDataPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
- petDataItem = petDataPack.GetAt(petItemIndex)
- if not ItemCommon.CheckItemCanUse(petDataItem):
- GameWorld.DebugLog("PetDataItem is none! PetItemIndex=%s" % petItemIndex, curPlayer.GetPlayerID())
- return
-
- return petDataItem
-
-## 获取宠物数据物品
-def GetPetDataItemByNPCID(curPlayer, petNPCID):
- petDataPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
- for petDataIndex in range(petDataPack.GetCount()):
- petItem = petDataPack.GetAt(petDataIndex)
- if petItem.IsEmpty():
- continue
- if petNPCID == petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID):
- return petItem
- return
-
-## 永恒暂用友好度来存储该宠物所属的宠物背包物品索引
-def GetPetObjItemIndex(rolePet): return rolePet.GetRolePet().Friendliness
-def SetPetObjItemIndex(petStruct, petItemIndex): petStruct.Friendliness = petItemIndex
-
-## 根据宠物NPCID获取宠物数据物品在背包中的索引
-def GetPetDataItemIndexByNPCID(curPlayer, petNPCID):
- petDataPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
- for petDataIndex in range(petDataPack.GetCount()):
- petItem = petDataPack.GetAt(petDataIndex)
- if petItem.IsEmpty():
- continue
- if petNPCID == petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID):
- return petDataIndex
-
- return -1
-
-#===================================================================================================
-# //////////////////////////////////////////////////////////////
-# //16 03 宠物出战/召回#tagCPetStateChange
-# tagCPetStateChange * GettagCPetStateChange();
-#
-# class IPY_CPetStateChange
-# {
-# public:
-#
-# int GetPetID();
-# // 状态.0-召回;1-出战;2xx-守护(守护+目标守护位)
-# int GetState(); 0~255
-# };
-#===================================================================================================
-##客户端封包响应
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //16 03 宠物出战/召回#tagCPetStateChange
-def PetStateChange(index, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- pack = IPY_GameWorld.IPY_CPetStateChange()
- petItemIndex = pack.GetPetID()
- state = pack.GetState()
-
- #时间间隔未到,不处理(2010-06-23 16:20 策划刘鸿生说无须系统提示)
- if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_ChangePetState) \
- < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_ChangePetState]:
- #没有到刷新间隔
- return
-
- curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_ChangePetState, tick)
-
- DoChangePetState(curPlayer, petItemIndex, state)
- return
-
-## 宠物战斗状态变更; 0-收回;1-出战 (手游版本只能出战)
-def DoChangePetState(curPlayer, petItemIndex, tagState, isRefresh=True):
- if petItemIndex < 0:
- return
-
- if tagState not in ShareDefine.Def_PetStateList:
- return
-
- petItem = GetPetDataItemByIndex(curPlayer, petItemIndex)
- if not petItem:
- return
-
- #判断是否达到可切换的阶数
- curClasslv = petItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
- petNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- ipyData = GetPetIpydata(petNPCID)
- if not ipyData:
- return
- needClasslv = ipyData.GetUseNeedRank()
- if curClasslv < needClasslv - 1: #配置的阶级从1开始
- GameWorld.DebugLog(' 灵兽切换外观,阶级不足%s,不可切换!' % needClasslv)
- return
-
- curState = petItem.GetUserAttr(ShareDefine.Def_IudetPet_State) # 当前状态
-
- GameWorld.DebugLog("宠物状态变更!petItemIndex=%s,curState=%s,tagState=%s"
- % (petItemIndex, curState, tagState))
-
- # 当前状态处理
- if curState == ShareDefine.Def_PetState_Fight:
-# curPet = curPlayer.GetPetMgr().GetFightPet()
-# if curPet:
-# #已是出战状态, C++召唤坐标和人重叠
-# resultPos = GameMap.GetEmptyPlaceInArea(curPlayer.GetPosX(), curPlayer.GetPosY(), ChConfig.Def_SummonAppearDist)
-# curPet.ResetPos(resultPos.GetPosX(), resultPos.GetPosY())
-# PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPet)
-# PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveBuff(curPet)
-# return
- #18/10/15 因为某种未知原因宠物物品的状态是出战(实际场景中未出战),导致该宠物无法出战,故再次发包出战时,此处不拦!
- PetControl.ReCallFightPet(curPlayer)
-
- else:
- pass
-
- # 目标状态处理
- if tagState == ShareDefine.Def_PetState_Null:
- #这里可不再宠物设置Null状态
- #petItem.SetUserAttr(ShareDefine.Def_IudetPet_State, ShareDefine.Def_PetState_Null)
- pass
- elif tagState == ShareDefine.Def_PetState_Fight:
- __DoPetGoOutToFight(curPlayer, petItem)
-
-
- if isRefresh:
- RefreshPetItemAddAttr(curPlayer, True) # 不刷排行榜
-
-# if petItem.GetUserAttr(ShareDefine.Def_IudetPet_State) != tagState:
-# petItem.SetUserAttr(ShareDefine.Def_IudetPet_State, tagState)
-# GameWorld.DebugLog("切换宠物状态异常防范! curState=%s,tagState=%s" % (curState, tagState))
-
- if not GameWorld.IsCrossServer():
- dataList = [petNPCID, curClasslv, tagState]
- CrossPlayerData.SendDataToCrossServer(curPlayer, CrossPlayerData.CrossData_PetState, dataList)
-
- return
-
-def CrossServer_DoChangePetState(curPlayer, dataList):
- ## 跨服处理 宠物战斗状态变更
- petNPCID, curClasslv, tagState = dataList
- petItem = GetPetDataItemByNPCID(curPlayer, petNPCID)
- if not petItem:
- newPetItem = GetNewPetDataItem(curPlayer, petNPCID)
- if not newPetItem:
- return
- if not ItemControler.PlayerItemControler(curPlayer).PutInItem(ShareDefine.rptPet, newPetItem):
- return
- petItem = GetPetDataItemByNPCID(curPlayer, petNPCID)
- if not petItem:
- return
-
- curItemClasslv = petItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
- # 处理技能问题,暂不处理
- if curClasslv > curItemClasslv:
- pass
-
- curState = petItem.GetUserAttr(ShareDefine.Def_IudetPet_State) # 当前状态
- if curState == ShareDefine.Def_PetState_Fight:
- PetControl.ReCallFightPet(curPlayer)
-
- if tagState == ShareDefine.Def_PetState_Fight:
- __DoPetGoOutToFight(curPlayer, petItem)
-
- return
-
-
-## 执行宠物出战逻辑
-def __DoPetGoOutToFight(curPlayer, petItem):
- npcID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
-
- petNpcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
- if not petNpcData:
- GameWorld.Log("PetStateChange FindNPCDataByID, pet npcID = %s" % (npcID))
- return
-
- petMgr = curPlayer.GetPetMgr()
- rolePet = petMgr.PetList_Add(npcID)
- if rolePet == None:
- GameWorld.ErrLog("PetStateChange PetList_Add, 添加宠物 = %s失败" % (npcID))
- return
-
- #---初始化宠物属性---
- petStruct = rolePet.GetRolePet()
- petID = petStruct.PetID
- petStruct.BindType = petItem.GetIsBind()
- petStruct.Name = str(petStruct.PetID)#petNpcData.GetName() 配表不是UTF8会导致报错,默认用ID当名字
- petStruct.DailyTrainCnt = 0
- # 宠物lv 改为 阶级 用于客户端显示名字颜色用
-# classLV = petItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
-# rolePet.SetLV(classLV)
-
- #位置.1, 在宠物列表; 2, 在物品背包
- petStruct.Pos = 1
-
- petItemIndex = petItem.GetItemPlaceIndex()
- SetPetObjItemIndex(petStruct, petItemIndex)
- rolePet.SetRolePet(petStruct)
-
- learnSkillList, passiveSkillList = GetPetLearnSkill(curPlayer)
- PetControl.DoLogic_PlayerPetLearnSkillList(rolePet, learnSkillList)
-
- #---刷新属性(不通知)---
- #GameWorld.DebugLog("刷前: petID=%s,playerID=%s,npcID=%s,BindType=%s,AIMode=%s,PetIndex=%s,grade=%s,qualLV=%s,"
- # % (petStruct.PetID, petStruct.PlayerID, petStruct.NPCID, petStruct.BindType, petStruct.AIMode, petStruct.PetIndex,
- # rolePet.GetGrade(), rolePet.GetQualityLV()))
- petControl = NPCCommon.NPCControl(rolePet)
- petControl.RefreshNPCState(canSyncClient=False)
- #GameWorld.DebugLog("刷后: petID=%s,playerID=%s,npcID=%s,BindType=%s,AIMode=%s,PetIndex=%s,grade=%s,qualLV=%s,"
- # % (petStruct.PetID, petStruct.PlayerID, petStruct.NPCID, petStruct.BindType, petStruct.AIMode, petStruct.PetIndex,
- # rolePet.GetGrade(), rolePet.GetQualityLV()))
-
- #当前血量(不通知)
- PetControl.SetPetHP(rolePet, GameObj.GetMaxHP(rolePet), False)
-
- #---通知客户端---
- #rolePet.Sync_PetInfo()
- #刷新技能栏
- #rolePet.Sync_SkillList()
-
- #---收到"宠物出战"请求---
- #检查是否可出战
- if not PetControl.CheckPetCanFight(curPlayer, rolePet):
- GameWorld.DebugLog("不可出战!PetList_SetFree petID=%s" % petID)
- petMgr.PetList_SetFree(petID)
- return
-
- # 先招回出战中的宠物
- PetControl.ReCallFightPet(curPlayer)
-
- #召唤宠物出战
- resultPos = GameMap.GetEmptyPlaceInArea(curPlayer.GetPosX(), curPlayer.GetPosY(), ChConfig.Def_SummonAppearDist)
- PetControl.SummonPet(rolePet, resultPos.GetPosX(), resultPos.GetPosY())
- petItem.SetUserAttr(ShareDefine.Def_IudetPet_State, ShareDefine.Def_PetState_Fight)
-
- #记录出战的宠物索引 默认+1 0则代表没有
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FightPetIndex, petItemIndex + 1)
- rolePet.SetSightLevel(curPlayer.GetSightLevel())
- return True
-
-def AutoSummonPet(curPlayer):
- #重新召唤之前的宠物,复活、切换地图时调用
- fightPetIndex = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FightPetIndex)
- if not fightPetIndex:
- return
- DoChangePetState(curPlayer, fightPetIndex - 1, ShareDefine.Def_PetState_Fight)
- return
-
-## 获取出战宠物要学的技能
-def GetPetLearnSkill(curPlayer):
- learnSkillDict = {}
- passiveSkillList = []
- petPackIndex = ShareDefine.rptPet
- petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
- for i in range(petPack.GetCount()):
- petItem = petPack.GetAt(i)
- if petItem.IsEmpty():
- continue
- for i in range(petItem.GetUserAttrCount(ShareDefine.Def_IudetPet_Skill)):
- skillID = petItem.GetUserAttrByIndex(ShareDefine.Def_IudetPet_Skill, i)
- curSkilData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
- if not curSkilData:
- continue
- if SkillCommon.isPassiveAttr(curSkilData):
- #被动技能属性不学
- passiveSkillList.append(skillID)
- continue
- skillTypeID = curSkilData.GetSkillTypeID()
- if skillTypeID in learnSkillDict:
- learnSkillDict[skillTypeID].append(skillID)
- else:
- learnSkillDict[skillTypeID] = [skillID]
-
- learnSkillIDList = [max(a) for a in learnSkillDict.values()]
- return learnSkillIDList, passiveSkillList
-
-#===============================================================================
-#// A7 02 宠物激活 #tagCMActivatePet
-#
-#struct tagCMActivatePet
-#{
-# tagHead Head;
-# DWORD PetNPCID; // 宠物NPCID
-# BYTE IsUseGold; // 是否使用钻石直接购买激活
-#};
-def OnActivatePet(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- petNPCID = clientData.PetNPCID
- isUseGold = clientData.IsUseGold
- DoActivatePet(curPlayer, petNPCID, isUseGold, True)
- return
-
-def DoActivatePet(curPlayer, petNPCID, isUseGold=False, isUseItem=False):
- if not isUseItem:
- #目前只能物品激活
- return
-
- hasSpace = False
- petPackIndex = ShareDefine.rptPet
- petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
- for i in range(petPack.GetCount()):
- packItem = petPack.GetAt(i)
- if packItem.IsEmpty():
- hasSpace = True
- continue
-
- petItemNPCID = packItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- if petItemNPCID == petNPCID:
- GameWorld.DebugLog("已经拥有该宠物! i=%s,petItemNPCID=%s,petNPCID=%s" % (i, petItemNPCID, petNPCID))
- return
-
- if not hasSpace:
- PlayerControl.NotifyCode(curPlayer, "Pet_liubo_76326") # 宠物数量达到上限
- return
- ipyData = GetPetIpydata(petNPCID)
- if not ipyData:
- return
-
- needItemID = ipyData.GetUnLockNeedItemID()
- needItemCnt = ipyData.GetUnLockNeedItemCnt()
- itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- hasEnough, itemList = ItemCommon.GetItem_FromPack_ByID(needItemID, itemPack, needItemCnt)
- if not hasEnough:
- GameWorld.DebugLog("DoActivatePet() item(%s[%s]) isn't enough" % (needItemID, needItemCnt))
- return
-
- newPetItem = GetNewPetDataItem(curPlayer, petNPCID)
- if not newPetItem:
- return
-
- if not ItemControler.PlayerItemControler(curPlayer).PutInItem(petPackIndex, newPetItem):
- return
-
- ItemCommon.ReduceItem(curPlayer, itemPack, itemList, needItemCnt, False, ChConfig.ItemDel_Pet)
-
- sysMark = ipyData.GetUnlockSys() or 'GetPet'
- PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), petNPCID])
- rolePet = curPlayer.GetPetMgr().GetFightPet()
- if not rolePet:
- petItemIndex = GetPetDataItemIndexByNPCID(curPlayer, petNPCID)
- GameWorld.DebugLog("没有宠物出战,获得新宠物,默认出战该宠物!petNPCID=%s,petItemIndex=%s" % (petNPCID, petItemIndex))
- DoChangePetState(curPlayer, petItemIndex, ShareDefine.Def_PetState_Fight)
- else:
-
- if rolePet:
- learnSkillList, passiveSkillList = GetPetLearnSkill(curPlayer)
- PetControl.DoLogic_PlayerPetLearnSkillList(rolePet, learnSkillList)
- RefreshPetItemAddAttr(curPlayer, True)
-
- PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Pet, petNPCID, False)
- return True
-
-
-def DoPetActivate(curPlayer, index, classlv=None, refresh=True):
- ##直接激活 外部调用GM测试用
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- petInfoCount = ipyDataMgr.GetPetInfoCount()
- if petInfoCount <= 0 or index > petInfoCount:
- GameWorld.ErrLog("激活宠物超过宠物表数据数: index=%s,petInfoCount=%s" % (index, petInfoCount))
- return
- petIpyData = ipyDataMgr.GetPetInfoByIndex(index - 1)
- petNPCID = petIpyData.GetID()
- quality = petIpyData.GetQuality()
- maxClassLV = petIpyData.GetMaxRank()
-
- petPackIndex = ShareDefine.rptPet
- petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
- for i in range(petPack.GetCount()):
- packItem = petPack.GetAt(i)
- if packItem.IsEmpty():
- continue
- petItemNPCID = packItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- if petItemNPCID == petNPCID:
- if classlv:
- packItem.SetUserAttr(ShareDefine.Def_IudetPet_ClassLV, max(0, min(classlv, maxClassLV) - 1))
- packItem.SetUserAttr(ShareDefine.Def_IudetPet_QualityLV, quality) # 宠物品质
- GameWorld.DebugLog("已经拥有该宠物! i=%s,petItemNPCID=%s,petNPCID=%s" % (i, petItemNPCID, petNPCID))
- return True
-
- if classlv == None:
- classlv = 1
- classlv = min(classlv, maxClassLV)
- newPetItem = GetNewPetDataItem(curPlayer, petNPCID, classlv)
- if not newPetItem:
- return
- petPackIndex = ShareDefine.rptPet
-
- if not ItemControler.PlayerItemControler(curPlayer).PutInItem(petPackIndex, newPetItem):
- return
- if not refresh:
- return True
- petItemIndex = GetPetDataItemIndexByNPCID(curPlayer, petNPCID)
- DoChangePetState(curPlayer, petItemIndex, ShareDefine.Def_PetState_Fight)
- RefreshPetItemAddAttr(curPlayer, True)
- return True
-#===============================================================================
-
-
-## 获取已激活的灵兽ID
-def GetActivePetID(curPlayer):
- petIDList = []
- petPackIndex = ShareDefine.rptPet
- petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
- for i in range(petPack.GetCount()):
- packItem = petPack.GetAt(i)
- if packItem.IsEmpty():
- continue
- petItemNPCID = packItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- petIDList.append(petItemNPCID)
- return petIDList
-
-#// A7 04 宠物升阶 #tagCMPetClassUP
-#
-#struct tagCMPetClassUP
-#{
-# tagHead Head;
-# BYTE PetItemIndex; //宠物数据背包索引
-#};
-def PetClassUp(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Pet):
- GameWorld.DebugLog(' 宠物功能未开启')
- return
- playerID = curPlayer.GetPlayerID()
- PetItemIndex = clientData.PetItemIndex
- costItemCount = clientData.UseItemCnt # 消耗材料个数
- isAutoBuy = 0 #clientData.IsAutoBuy # 是否自动购买
- petDataItem = GetPetDataItemByIndex(curPlayer, PetItemIndex)
- if not petDataItem:
- return
-
- petNPCID = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
-
- petNpcData = GameWorld.GetGameData().FindNPCDataByID(petNPCID)
- if not petNpcData:
- GameWorld.ErrLog("can not found pet npcID = %s" % (petNPCID))
- return
-
- classLV = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
- petIpyData = GetPetIpydata(petNPCID)
- if not petIpyData:
- return
- maxClassLV = petIpyData.GetMaxRank()
- if classLV + 2 > maxClassLV:
- GameWorld.DebugLog("宠物升阶 已满级。。。classLV=%s" % classLV, playerID)
- return
-
- ipyData = IpyGameDataPY.GetIpyGameData("PetClassCost", petNPCID, classLV + 1)
- if not ipyData:
- return
-
- needExp = ipyData.GetUpNeedExp()
- if not needExp:
- return
-
- curPetClassExp = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_Exp)
-
-
- curItemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-
- itemIndexList = []
- costItemIDList = []
- specCostItemInfo = IpyGameDataPY.GetFuncEvalCfg('PetUpItem', 4)
- for strItemID, petNPCIDList in specCostItemInfo.items():
- if petNPCID in petNPCIDList:
- costItemIDList = [int(strItemID)]
- break
- if not costItemIDList:
- costItemIDList = IpyGameDataPY.GetFuncEvalCfg('PetUpItem')
- if not costItemIDList:
- return
-
- #扣材料
- nowCnt = 0
- for itemID in costItemIDList:
- hasEnough, indexList, findItemIsBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(itemID, curItemPack, costItemCount - nowCnt)
- itemIndexList.extend(indexList)
- if hasEnough:
- #足够退出
- break
- if itemIndexList:
- nowCnt = 0
- for itemIndex in itemIndexList:
- curItem = curItemPack.GetAt(itemIndex)
- #检查物品
- if not ItemCommon.CheckItemCanUse(curItem):
- continue
- itemCnt = curItem.GetCount()
- nowCnt += itemCnt
- if not hasEnough and not isAutoBuy:
- GameWorld.DebugLog("PetClassUp 升阶道具不足! petNPCID=%s,costItemIDList=%s" % (petNPCID, costItemIDList))
- return
-
- autoBuyItemID = costItemIDList[0]
- if itemIndexList:
- curItem = curItemPack.GetAt(itemIndexList[0])
- else:
- curItem = GameWorld.GetGameData().GetItemByTypeID(autoBuyItemID)
- if not curItem:
- return
-
- if lackCnt > 0:
- return
- #===========================================================================================
- # if not isAutoBuy:
- # return
- # lackCost = ItemCommon.GetAutoBuyItemNeedGold({autoBuyItemID:lackCnt})
- # if lackCost <= 0:
- # return
- # itemData = GameWorld.GetGameData().GetItemByTypeID(autoBuyItemID)
- # itemName = autoBuyItemID if not itemData else itemData.GetName()
- # infoDict = {ChConfig.Def_Cost_Reason_SonKey:itemName}
- # if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, lackCost,
- # ChConfig.Def_Cost_PetClassUP, infoDict, lackCnt):
- # return
- #===========================================================================================
-
- playerName = curPlayer.GetName()
-
- curEff = curItem.GetEffectByIndex(0)
- addExp = curEff.GetEffectValue(0) * costItemCount
- updExp = curPetClassExp + addExp
- updClassLV = classLV
- for lv in xrange(classLV, maxClassLV-1):
- ipyData = IpyGameDataPY.GetIpyGameData("PetClassCost", petNPCID, lv+1)
- if not ipyData:
- break
- upNeedExp = ipyData.GetUpNeedExp()
- if updExp < upNeedExp:
- break
- updExp -= upNeedExp
- updClassLV +=1
-
-
- #扣除物品
- delCnt = max(0, costItemCount - lackCnt) # 实际扣除的个数
- if itemIndexList:
- ItemCommon.ReduceItem(curPlayer, curItemPack, itemIndexList, delCnt, True, ChConfig.ItemDel_Pet)
-
- # 更新经验值
- if updClassLV+1 >=maxClassLV:
- updExp =0
- petDataItem.SetUserAttr(ShareDefine.Def_IudetPet_Exp, updExp)
- if updClassLV > classLV:
- petDataItem.SetUserAttr(ShareDefine.Def_IudetPet_ClassLV, updClassLV)
-
- # 升阶开启技能
- petIpyData = GetPetIpydata(petNPCID)
- petSkillList = petIpyData.GetSkillID()
- petSkillUnLockList = petIpyData.GetSkillUnLock()
- sysMarkList = petIpyData.GetSkillUnLockSys()
- learnSkillList = []
- for i, skillid in enumerate(petSkillList):
- limitPetClassLV = petSkillUnLockList[i] # 学习此技能所需宠物阶级
- #上一阶已经处理过的技能不再处理
- if updClassLV >= limitPetClassLV:
- continue
- # 未达到所需阶级
- if updClassLV + 1 < limitPetClassLV:
- continue
- curSkilData = GameWorld.GetGameData().GetSkillBySkillID(skillid)
- if not curSkilData:
- continue
- if curSkilData.GetFuncType() == ChConfig.Def_SkillFuncType_PetOwnerSkill:
- __GiveOwnerSkill(curPlayer, skillid)
- continue
- petDataItem.AddUserAttr(ShareDefine.Def_IudetPet_Skill, skillid)
- if not SkillCommon.isPassiveAttr(curSkilData):
- #被动技能不学
- learnSkillList.append(skillid)
- #广播
- sysMark = sysMarkList[i] if i < len(sysMarkList) else 'PetUpLv'
- PlayerControl.WorldNotify(0, sysMark, [playerName, petNPCID, limitPetClassLV, skillid])
-
- if not learnSkillList and updClassLV + 1 == maxClassLV:
- PlayerControl.WorldNotify(0, 'PetUpLvMax', [playerName, petNPCID])
- # 如果是当前出战的宠物, 则该宠物学习技能
- fightPet = curPlayer.GetPetMgr().GetFightPet()
- if learnSkillList and fightPet:
- PetControl.DoLogic_PlayerPetLearnSkillList(fightPet, learnSkillList)
-
- RefreshPetItemAddAttr(curPlayer, True)
-
- extraInfoDict = {"petItemIndex":PetItemIndex, "petNPCID":petNPCID}
- extraInfoDict.update(eval(petDataItem.GetUserData()))
- #DataRecordPack.DR_ClassUpSystem(curPlayer, "PetClassUp", updClassLV, extraInfoDict)
-
- PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_PetUpItem, costItemCount)
- PlayerActLunhuidian.AddLunhuidianValue(curPlayer, PlayerActLunhuidian.AwardType_UseItem, autoBuyItemID, costItemCount)
- return
-
-def GetTotalPetLV(curPlayer):
- totalPetLV = 0
- petPackIndex = ShareDefine.rptPet
- petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
- for i in range(petPack.GetCount()):
- petItem = petPack.GetAt(i)
- if petItem.IsEmpty():
- continue
- petItemNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- classLV = petItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV) + 1
- petIpyData = GetPetIpydata(petItemNPCID)
- if not petIpyData:
- continue
- totalPetLV += classLV
- return totalPetLV
-
-def GetTotalPetCount(curPlayer):
- totalPetCount = 0
- petPackIndex = ShareDefine.rptPet
- petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
- for i in range(petPack.GetCount()):
- petItem = petPack.GetAt(i)
- if petItem.IsEmpty():
- continue
- petItemNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- petIpyData = GetPetIpydata(petItemNPCID)
- if not petIpyData:
- continue
- totalPetCount += 1
- return totalPetCount
-
-def IsPetMaxLV(curPlayer, petNPCID):
- petItem = GetPetDataItemByNPCID(curPlayer, petNPCID)
- if not petItem:
- return
- petNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- classLV = petItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
- petIpyData = GetPetIpydata(petNPCID)
- if not petIpyData:
- return
- maxClassLV = petIpyData.GetMaxRank()
- return classLV + 2 > maxClassLV
-
-## 刷新宠物数据物品增加的属性
-def RefreshPetItemAddAttr(curPlayer, isUpdBillboard):
- CalcPetItemAddPlayerAttr(curPlayer)
-
- if isUpdBillboard:
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState(billboardFunc=PlayerBillboard.UpdatePyPetBillboard, isForce=True)
- #PlayerBillboard.UpdatePyPetBillboard(curPlayer, True)
- else:
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState(isForce=True)
-
- fightPet = curPlayer.GetPetMgr().GetFightPet()
- if fightPet:
- PetControl.RefurbishPetAttr(fightPet)
- return
-
-def CalcSkill_PetBattleEffect(curPlayer, rolePet, allAttrListPet):
- #灵兽技能给灵兽加的属性,不给人物加的属性
- learnSkillList, passiveSkillList = GetPetLearnSkill(curPlayer)
- #GameWorld.DebugLog("1刷技能属性: %s" % allAttrList)
- for skillID in passiveSkillList:
- curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
- if not curSkill:
- continue
- for effectIndex in xrange(curSkill.GetEffectCount()):
- curEffect = curSkill.GetEffect(effectIndex)
- if curEffect.GetEffectID() not in ChConfig.Def_SkillEffs_Pet:
- # 不给宠物加的不处理
- continue
- SkillShell.CalcBuffEffAttr(rolePet, curEffect, allAttrListPet)
-
-
-##计算NPC战斗属性
-# @param curNPC NPC实例
-# @return 返回值无意义
-# @remarks 计算NPC战斗属性
-def CalcBuffer_PetBattleEffect(rolePet, allAttrListPet):
- #@warning:战斗属性先算非线性在算线性
- buffRefreshList = NPCCommon.GetNPCBuffRefreshList(rolePet)
-
- for buffState, canPileup in buffRefreshList:
- SkillShell.CalcCurBuffer_Effect(buffState, rolePet, allAttrListPet)
-
- #非线性
- CalcNoLineEffect.ChangeNPCAttrInNoLineEffectList(rolePet, allAttrListPet[ChConfig.CalcAttr_BattleNoline])
- #线性
- CalcLineEffect.ChangeNPCAttrInLineEffectList(rolePet, allAttrListPet[ChConfig.CalcAttr_Battle])
- return
-
-
-## 计算宠物增加的玩家属性
-# @param curPlayer 玩家
-# @return None
-def CalcPetItemAddPlayerAttr(curPlayer):
- return
-# allAttrListPet = [{} for _ in range(4)]
-# allAttrListPetSign = [{} for _ in range(4)] # 属性含 特殊的技能属性(因为签到技能属性成长,战力也是成长的,所以不能放技能中算战力,暂时放魂石中)
-# allAttrListPetSoul = [{} for _ in range(4)]
-# skillAttrList = [{} for _ in range(4)]
-# allAttrListPetSkin = [{} for _ in range(4)]
-# allAttrListTrain = [{} for _ in range(4)]
-# allAttrListStar = [{} for _ in range(4)]
-# customAttrDictPet = {}
-# totalMinAtk, totalMaxAtk, qualityAttrInfo = GetPetAtkValue(curPlayer)
-# customAttrDictPet["petQualityAttrInfo"] = qualityAttrInfo
-# PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_PetMinAtk, totalMinAtk, allAttrListPet)
-# PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_PetMaxAtk, totalMaxAtk, allAttrListPet)
-# totalSignNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalSignNum) # 总签到天数
-# # 果实给人物加属性, 魂石果实算附加属性层,单独计算
-# fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListPetSoul, ShareDefine.Def_AttrFruitFunc_Pet)
-# PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_PetSoul, fightPowerEx)
-#
-# #灵兽技能给人物加的属性
-# learnSkillList, passiveSkillList = GetPetLearnSkill(curPlayer)
-# #GameWorld.DebugLog("1刷技能属性: %s" % allAttrList)
-# for skillID in passiveSkillList:
-# curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
-# if not curSkill:
-# continue
-# # 灵宠签到技能特殊处理
-# if curSkill.GetSkillTypeID() == ChConfig.Def_SkillID_PetSignDay:
-# for effectIndex in xrange(curSkill.GetEffectCount()):
-# curEffect = curSkill.GetEffect(effectIndex)
-# effID = curEffect.GetEffectID()
-# effValue = curEffect.GetEffectValue(0)
-# PlayerControl.CalcAttrDict_Type(effID, effValue * totalSignNum, allAttrListPetSign)
-#
-# continue
-# for effectIndex in xrange(curSkill.GetEffectCount()):
-# curEffect = curSkill.GetEffect(effectIndex)
-# if curEffect.GetEffectID() in ChConfig.Def_SkillEffs_Pet:
-# # 给宠物加的不处理
-# continue
-# SkillShell.CalcBuffEffAttr(curPlayer, curEffect, skillAttrList)
-#
-# # 新培养属性
-# ipyDataMgr = IpyGameDataPY.IPY_Data()
-# for index in xrange(ipyDataMgr.GetPetTrainCount()):
-# trainIpyData = ipyDataMgr.GetPetTrainByIndex(index)
-# trainType = trainIpyData.GetTrainType()
-# dataTrainLV = trainIpyData.GetTrainLV()
-# trainLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PetTrainLV % trainType)
-#
-# if dataTrainLV > trainLV:
-# continue
-# elif dataTrainLV == trainLV:
-# trainItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PetTrainItemCount % trainType)
-# else:
-# trainItemCount = trainIpyData.GetEatCntTotal()
-#
-# # 等阶额外属性
-# lvAttrTypeList = trainIpyData.GetLVAttrTypeList()
-# lvAttrValueList = trainIpyData.GetLVAttrValueList()
-# for i, attrID in enumerate(lvAttrTypeList):
-# attrValue = lvAttrValueList[i]
-# PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListTrain)
-#
-# # 培养丹增加属性
-# eatCntEverytime = trainIpyData.GetEatCntEverytime()
-# if trainItemCount and eatCntEverytime:
-# eatItemAttrTypeList = trainIpyData.GetEatItemAttrTypeList()
-# eatItemAttrValueList = trainIpyData.GetEatItemAttrValueList()
-# attrMultiple = trainItemCount / eatCntEverytime
-# for i, attrID in enumerate(eatItemAttrTypeList):
-# attrValue = eatItemAttrValueList[i]
-# PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrListTrain)
-#
-# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetTarin, allAttrListTrain)
-#
-# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Pet, allAttrListPet, customAttrDict=customAttrDictPet)
-# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSoul, allAttrListPetSoul)
-# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSign, allAttrListPetSign)
-#
-# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSkill, skillAttrList)
-#
-# #初始战力
-# fpExTotal = 0
-# petPackIndex = ShareDefine.rptPet
-# petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
-# for i in range(petPack.GetCount()):
-# petItem = petPack.GetAt(i)
-# if petItem.IsEmpty():
-# continue
-# # 物品上的技能战力,主人上的另算
-# for i in range(petItem.GetUserAttrCount(ShareDefine.Def_IudetPet_Skill)):
-# skillID = petItem.GetUserAttrByIndex(ShareDefine.Def_IudetPet_Skill, i)
-# curSkilData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
-# if not curSkilData:
-# continue
-# fpExTotal += curSkilData.GetFightPower()
-# petItemNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
-# petIpyData = GetPetIpydata(petItemNPCID)
-# if not petIpyData:
-# continue
-# fpExTotal += petIpyData.GetInitFightPower() # 初始战力
-# #觉醒战力
-# skinData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorsePetSkinData % (2, petItemNPCID), 0)
-# skinIpyData = IpyGameDataPY.GetIpyGameDataNotLog('HorsePetSkin', 2, petItemNPCID, skinData/100)
-# if skinIpyData:
-# for attrID, attrValue in skinIpyData.GetAttrInfo().items():
-# PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListPetSkin)
-#
-# #星级
-# curStar = petItem.GetUserAttr(ShareDefine.Def_IudetPet_Star)
-# starIpyData = IpyGameDataPY.GetIpyGameDataNotLog("PetStarUp", petItemNPCID, curStar)
-# if starIpyData:
-# starAttrType = starIpyData.GetStarAttrType()
-# starAttrValue = starIpyData.GetStarAttrValue()
-# for i, attrID in enumerate(starAttrType):
-# attrValue = starAttrValue[i]
-# PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
-#
-# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSkin, allAttrListPetSkin)
-# PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetStar, allAttrListStar)
-# PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Pet, fpExTotal)
-## GameWorld.DebugLog("宠物榜NPCID: %s, petDict=%s" % (billPetNPCID, str(billPetDict)))
-# return
-
-## 获取灵兽出战时的攻击力
-def GetPetAtkValue(curPlayer):
- qualityAttrInfo = {}
- return 0, 0, qualityAttrInfo
-# if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Pet):
-# #GameWorld.DebugLog(' 宠物功能未开启')
-# return 0, 0, qualityAttrInfo
-#
-# classAddAtk = 0
-# petPackIndex = ShareDefine.rptPet
-# petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
-# for i in range(petPack.GetCount()):
-# packItem = petPack.GetAt(i)
-# if packItem.IsEmpty():
-# continue
-# petItemNPCID = packItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
-# classlv = packItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
-# classIpyData = IpyGameDataPY.GetIpyGameData("PetClassCost", petItemNPCID, classlv + 1)
-# atkAdd = classIpyData.GetAtkAdd() if classIpyData else 0
-# classAddAtk += atkAdd
-#
-# petIpyData = GetPetIpydata(petItemNPCID)
-# if petIpyData:
-# quality = petIpyData.GetQuality()
-# if quality not in qualityAttrInfo:
-# qualityAttrInfo[quality] = {}
-# qualityAttrDict = qualityAttrInfo[quality]
-# qualityAttrDict[ShareDefine.Def_Effect_PetAtk] = qualityAttrDict.get(ShareDefine.Def_Effect_PetAtk, 0) + atkAdd
-#
-# totalMinAtk = classAddAtk
-# totalMaxAtk = classAddAtk
-# return totalMinAtk, totalMaxAtk, qualityAttrInfo
-
-def OnPlayerPetLogin(curPlayer):
- ## 登录处理
- if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Pet):
- return
-
- # 培养是后面加的功能,每次登录补检查一下功能开始时设置为培养1级
- for trainType in xrange(1, GetPetTrainTypes() + 1):
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PetTrainLV % trainType) == 0:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PetTrainLV % trainType, 1)
-
- Sync_PetTrainData(curPlayer)
- return
-
-def GetPetTrainTypes():
- return len(IpyGameDataPY.GetFuncEvalCfg("PetUpItem", 3))
-
-#// A7 05 宠物培养 #tagCMPetTrain
-#
-#struct tagCMPetTrain
-#{
-# tagHead Head;
-# BYTE TrainType; //培养类型: 1-基础培养,2-特殊培养,3-百分比培养
-# WORD UseItemCnt; //消耗材料个数
-#};
-def OnPetTrain(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- trainType = clientData.TrainType # 培养类型
- costItemCount = clientData.UseItemCnt # 消耗材料个数
-
- trainLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PetTrainLV % trainType)
- curEatItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PetTrainItemCount % trainType)
- GameWorld.DebugLog("灵宠培养: trainType=%s,trainLV=%s,costItemCount=%s,curEatItemCount=%s"
- % (trainType, trainLV, costItemCount, curEatItemCount))
-
- if trainType <= 0 or trainType > GetPetTrainTypes():
- return
-
- if trainLV <= 0:
- GameWorld.DebugLog(" 培养未激活 trainType=%s" % trainType)
- return
-
- trainIpyData = IpyGameDataPY.GetIpyGameData("PetTrain", trainType, trainLV)
- if not trainIpyData:
- return
-
- needRealmLV = trainIpyData.GetNeedRealmLV()
- curRealmLV = PlayerControl.GetTrainRealmLVReal(curPlayer, 2)
- if curRealmLV < needRealmLV:
- GameWorld.DebugLog(" 境界不足,无法培养! curRealmLV(%s) < needRealmLV(%s)" % (curRealmLV, needRealmLV))
- return
-
- needEatCountTotal = trainIpyData.GetEatCntTotal()
- if not needEatCountTotal:
- GameWorld.DebugLog(" 该培养已满级!")
- return
-
- costItemIDList = IpyGameDataPY.GetFuncEvalCfg("PetUpItem", 3)
- costItemID = costItemIDList[trainType - 1]
- 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
-
- delCnt = costItemCount
-
- # 扣除消耗
- if delCnt:
- ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, delCnt, ChConfig.ItemDel_Pet)
-
- updClassLV = trainLV
- updEatItemCount = curEatItemCount + costItemCount
- GameWorld.DebugLog(" updEatItemCount=%s,needEatCountTotal=%s" % (updEatItemCount, needEatCountTotal))
-
- if updEatItemCount >= needEatCountTotal:
- updClassLV += 1
- updEatItemCount -= needEatCountTotal
- GameWorld.DebugLog(" 进阶: updClassLV=%s,updEatItemCount=%s" % (updClassLV, updEatItemCount))
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PetTrainLV % trainType, updClassLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PetTrainItemCount % trainType, updEatItemCount)
-
- # 升阶
- if updClassLV > trainLV:
- pass
-
- Sync_PetTrainData(curPlayer)
- # 刷属性,更新排行榜
- RefreshPetItemAddAttr(curPlayer, True)
-
- if trainType == 2:
- PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_PetTrainItem2, costItemCount)
- elif trainType == 3:
- PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_PetTrainItem3, costItemCount)
- elif trainType == 1:
- PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_PetTrainItem1, costItemCount)
- return
-
-#// A7 06 宠物升星 #tagCMPetStarUp
-#
-#struct tagCMPetStarUp
-#{
-# tagHead Head;
-# BYTE PetItemIndex; //宠物数据背包索引
-#};
-def OnPetStarUp(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- PetItemIndex = clientData.PetItemIndex
- petDataItem = GetPetDataItemByIndex(curPlayer, PetItemIndex)
- if not petDataItem:
- return
- petNPCID = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- curStar = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_Star)
- nextStar = curStar + 1
- nextIpyData = IpyGameDataPY.GetIpyGameDataNotLog("PetStarUp", petNPCID, nextStar)
- if not nextIpyData:
- GameWorld.DebugLog("灵宠不存在该星级,无法升星. petNPCID=%s,curStar=%s" % (petNPCID, curStar), playerID)
- return
- needItemList = nextIpyData.GetStarUpNeedItemList()
- if not needItemList:
- return
- itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
- if lackItemDict:
- GameWorld.DebugLog("灵宠升星所需物品不足! petNPCID=%s,nextStar=%s,needItemList=%s,lackItemDict=%s"
- % (petNPCID, nextStar, needItemList, lackItemDict), playerID)
- return
-
- ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "PetStarUp")
- petDataItem.SetUserAttr(ShareDefine.Def_IudetPet_Star, nextStar)
- GameWorld.DebugLog("灵宠升星. petNPCID=%s,curStar=%s,nextStar=%s" % (petNPCID, curStar, nextStar), playerID)
-
- RefreshPetItemAddAttr(curPlayer, True)
- return
-
-def Sync_PetTrainData(curPlayer):
- clientPack = ChPyNetSendPack.tagMCPetTrainInfo()
- clientPack.TrainLVList = []
- clientPack.TrainItemCountList = []
- for trainType in xrange(1, GetPetTrainTypes() + 1):
- clientPack.TrainLVList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PetTrainLV % trainType))
- clientPack.TrainItemCountList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PetTrainItemCount % trainType))
- clientPack.TrainTypes = len(clientPack.TrainLVList)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
index 1a0a47d..5cbc417 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
@@ -27,7 +27,6 @@
import ChConfig
import ChPlayer
import IPY_PlayerDefine
-import PlayerTongTianLing
import PlayerTask
import PlayerOnline
import PlayerSuccess
@@ -264,7 +263,6 @@
RefreshOfficialAttr(curPlayer)
GameFuncComm.DoFuncOpenLogic(curPlayer)
SyncRealmInfo(curPlayer, taskIDList=syncTaskIDList)
- PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_RealmUp, 1)
PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_RealmLV)
PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSARealmLV, nextRealmLv)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
deleted file mode 100644
index dfafaa4..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
+++ /dev/null
@@ -1,629 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerRune
-#
-# @todo:玩家符印
-# @author xdh
-# @date 2017-08-04
-# @version 1.0
-#
-# 详细描述: 玩家符印
-#---------------------------------------------------------------------
-#"""Version = 2017-08-04 12:00"""
-#---------------------------------------------------------------------
-
-import GameWorld
-import ShareDefine
-import ChConfig
-import ItemCommon
-import ItemControler
-import PlayerControl
-import ChPyNetSendPack
-import NetPackCommon
-import IpyGameDataPY
-import IPY_GameWorld
-import DataRecordPack
-import PlayerWeekParty
-
-g_runeLVExpDict = {}
-
-##登录处理
-# @param curPlayer 玩家
-# @return None
-def PlayerRuneLogin(curPlayer):
- DoUnlockRuneHole(curPlayer, False)
- Sync_RuneInfo(curPlayer)
- return
-
-
-## 获取符印ipy数据
-def GetRuneIpyData(itemID):return IpyGameDataPY.GetIpyGameData("Rune", itemID)
-
-## 获取符印升级需要经验
-def GetRuneNeedExp(itemID, lv):
- global g_runeLVExpDict
- itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
- if not itemData:
- return 0
- ipyData = GetRuneIpyData(itemID)
- if not ipyData:
- return 0
- itemColor = itemData.GetItemColor()
- if lv == 0: #初始经验
- expDict = IpyGameDataPY.GetFuncEvalCfg('RuneExp', 4, {})
- exp = expDict.get(itemColor, 0)
- else:
- if lv in g_runeLVExpDict:
- exp = g_runeLVExpDict[lv]
- else:
- level = lv + 1 #公式从1开始
- exp = eval(IpyGameDataPY.GetFuncCompileCfg('RuneExp'))
- g_runeLVExpDict[lv] = exp
-
- qualityPerDict = IpyGameDataPY.GetFuncEvalCfg('RuneExp', 2, {})
- if itemColor in qualityPerDict:
- exp *= float(qualityPerDict[itemColor])
- if len(ipyData.GetAttrType()) > 1: #多属性
- specialPer = IpyGameDataPY.GetFuncCfg('RuneExp', 3)
- exp *= specialPer
- return exp
-
-## 获取符印属性数值
-def GetRuneAttrValue(itemID, lv):
- itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
- if not itemData:
- return {}
- ipyData = GetRuneIpyData(itemID)
- if not ipyData:
- return {}
- level = lv + 1 #公式从1开始
-
- attrTypeList = ipyData.GetAttrType()
- isSpecial = len(attrTypeList) > 1 #是否多属性
- itemColor = itemData.GetItemColor()
- attrDict = {}
- for attrType in attrTypeList:
- keyStr = 'RuneAttr%s' % attrType
- attrFormula = IpyGameDataPY.GetFuncCompileCfg(keyStr)
- if not attrFormula:
- continue
-
- value = eval(attrFormula)
- qualityPerDict = IpyGameDataPY.GetFuncEvalCfg(keyStr, 2, {})
- if itemColor in qualityPerDict:
- value *= float(qualityPerDict[itemColor])
- extraValueDict = IpyGameDataPY.GetFuncEvalCfg(keyStr, 4, {})
- value += extraValueDict.get(itemColor, 0)
-
- if isSpecial:
- specialPer = IpyGameDataPY.GetFuncCfg(keyStr, 3)
- if specialPer:
- value *= specialPer
- else:
- GameWorld.ErrLog(' itemID=%s 功能配置表keyStr=%s, 数值3未配置' % (itemID, keyStr))
- attrDict[int(attrType)] = int(value)
- return attrDict
-
-def GetRuneMaxLV(itemID):
- # 获取符印最大等级
- itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
- if not itemData:
- return 0
- runeMaxLVDict = IpyGameDataPY.GetFuncEvalCfg('RuneMaxLV', 1, {})
- itemColor = itemData.GetItemColor()
- runeMaxLV = runeMaxLVDict.get(itemColor, 0)
- return runeMaxLV
-
-#// A5 13 解锁符印孔 #tagCMUnlockRuneHole
-#
-#struct tagCMUnlockRuneHole
-#{
-# tagHead Head;
-# BYTE HoleIndex; // 孔索引
-#};
-def OnUnlockRuneHole(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- holeIndex = clientData.HoleIndex
- runeUnlockDict = IpyGameDataPY.GetFuncEvalCfg("RuneUnlock", 2, {})
- if holeIndex not in runeUnlockDict:
- return
- runeOpenState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_HoleOpenState, 0)
- if runeOpenState & pow(2, holeIndex):
- return
- if curPlayer.GetLV() < IpyGameDataPY.GetFuncEvalCfg("RuneUnlock", 3, {}).get(holeIndex, 0):
- return
- costMoney = runeUnlockDict[holeIndex]
- if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, costMoney, ChConfig.Def_Cost_RuneHole, {'holeIndex':holeIndex}):
- return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Rune_HoleOpenState, runeOpenState |pow(2, holeIndex))
- Sync_RuneInfo(curPlayer)
- PlayerControl.WorldNotify(0, 'RuneSpecialHoleGet', [curPlayer.GetName(), costMoney])
- return
-
-def DoUnlockRuneHole(curPlayer, isSycn=True):
- # 解锁符印孔, 符印塔过关时调用
- runeUnlockList = IpyGameDataPY.GetFuncEvalCfg("RuneUnlock")
-
- runeOpenState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_HoleOpenState, 0)
- trialTowerPassLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV) # 符印塔已过关层数
- updOpenState = runeOpenState
- for holeNum, needTowerPassLV in enumerate(runeUnlockList):
- if runeOpenState & pow(2, holeNum):
- continue
-
- if trialTowerPassLV < needTowerPassLV:
- continue
- updOpenState |= pow(2, holeNum)
- GameWorld.DebugLog(' 解锁符印孔 holeNum=%s,trialTowerPassLV=%s' % (holeNum, trialTowerPassLV))
- if updOpenState != runeOpenState:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Rune_HoleOpenState, updOpenState)
- if isSycn:
- Sync_RuneInfo(curPlayer)
- return
-
-## 获取符印是否已解锁
-def GetIsOpenByRuneID(curPlayer, itemid):
- ipyData = GetRuneIpyData(itemid)
- if ipyData:
- curPassLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV)
- return curPassLV >= ipyData.GetTowerID()
- # 没配置限制层数解锁的默认解锁
- return True
-
-def SwitchRune(curPlayer, srcBackpack, desBackPack, srcIndex, destIndex):
- # 镶嵌/摘下符印
- if not ((desBackPack == ShareDefine.rptRune and srcBackpack == ShareDefine.rptTempSwap) \
- or (srcBackpack == ShareDefine.rptRune and desBackPack == ShareDefine.rptTempSwap)):
- return False
-
-
- maxRuneHole = IpyGameDataPY.GetFuncCfg("RuneUnlock", 4)
- # 穿
- if desBackPack == ShareDefine.rptTempSwap:
- desRuneNum = destIndex + 1
- if desRuneNum < 1 or desRuneNum > maxRuneHole:
- GameWorld.DebugLog("不存在该符印孔! desRuneNum=%s" % desRuneNum, curPlayer.GetPlayerID())
- return True
-
- runeOpenState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_HoleOpenState, 0)
- if not runeOpenState & pow(2, destIndex):
- GameWorld.DebugLog("该符印孔未解锁! desRuneNum=%s,state=%s" % (desRuneNum, runeOpenState), curPlayer.GetPlayerID())
- return True
-
- srcRuneData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_VPackItem
- % (ShareDefine.rptRune, srcIndex)) # 符印背包中的值
- if not srcRuneData:
- GameWorld.DebugLog("符印背包该位置没有符印! srcIndex=%s" % srcIndex, curPlayer.GetPlayerID())
- return True
- srcRuneItemID = ItemControler.GetRuneItemID(srcRuneData)
-
- srcIpyData = GetRuneIpyData(srcRuneItemID)
-
- if not srcIpyData:
- GameWorld.DebugLog("该符印没有配置属性! 无法镶嵌! itemID=%s" % srcRuneItemID, curPlayer.GetPlayerID())
- return True
- srcRuneAttrTypeList = srcIpyData.GetAttrType()
- srcRuneAttrTypeCntDict = {attrType:1 for attrType in srcRuneAttrTypeList}
- maxSameAttrRuneCnt = IpyGameDataPY.GetFuncCfg('RuneUnlock', 5)
- # 判断是否已有镶嵌该属性类型
- doubleCnt = 0 #双属性符印个数
- for RuneNum in xrange(1, maxRuneHole + 1):
- if RuneNum == desRuneNum: # 目标孔不判断
- continue
- RuneData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % RuneNum, 0)
- if not RuneData:
- continue
- RuneItemID = ItemControler.GetRuneItemID(RuneData)
- ipyData = GetRuneIpyData(RuneItemID)
- if not ipyData:
- continue
- attrTypeList = ipyData.GetAttrType()
- for attrType in attrTypeList:
- if attrType in srcRuneAttrTypeCntDict:
- srcRuneAttrTypeCntDict[attrType] += 1
- if srcRuneAttrTypeCntDict[attrType] > maxSameAttrRuneCnt:
- GameWorld.DebugLog(
- "该属性类型已镶嵌数量超过%s! 无法镶嵌! ,attrType=%s" % (maxSameAttrRuneCnt, attrType),
- curPlayer.GetPlayerID())
- return
-
- if len(attrTypeList) > 1:
- doubleCnt +=1
-
- if len(srcRuneAttrTypeList) > 1 and doubleCnt >= __GetCanInlayDoubleAttrRuneCnt(curPlayer):
- GameWorld.DebugLog("当前可镶嵌双属性符印个数已达上限%s! 无法镶嵌! itemID=%s" % (doubleCnt, srcRuneItemID), curPlayer.GetPlayerID())
- return True
-
- desRuneData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % desRuneNum, 0) # 孔上的值
-
- # 设置符印孔数据
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Rune_Data % desRuneNum, srcRuneData)
- # 原来的孔数据,则放入符印背包中
- ItemControler.SetVPackItemKeyData(curPlayer, ShareDefine.rptRune, srcIndex, desRuneData)
- #符印成就
- DoRuneSuccessLogic(curPlayer)
- else:
- srcRuneNum = srcIndex + 1
- srcRuneData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % srcRuneNum, 0)
- if not srcRuneData:
- GameWorld.DebugLog("该符印孔没有镶嵌符印! srcRuneNum=%s, srcRuneData=%s" % (srcRuneNum, srcRuneData), curPlayer.GetPlayerID())
- return True
-
- emptyIndex = ItemCommon.GetEmptyIndexInPack(curPlayer, ShareDefine.rptRune)
- if emptyIndex == -1:
- GameWorld.DebugLog("符印背包已满,无法摘下! ", curPlayer.GetPlayerID())
- return True
- desRuneData = 0
- # 摘下设置孔数据为0
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Rune_Data % srcRuneNum, 0)
- ItemControler.SetVPackItemKeyData(curPlayer, ShareDefine.rptRune, emptyIndex, srcRuneData)
- dataDict = {'desBackPack':desBackPack, 'srcRuneData':srcRuneData, 'desRuneData':desRuneData}
- DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_Rune, dataDict)
- RefreshRuneAttr(curPlayer)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
- Sync_RuneInfo(curPlayer)
- return True
-
-def __GetCanInlayDoubleAttrRuneCnt(curPlayer):
- ##当前可镶嵌几个双属性符印
- runeDoubleInlayCntDict = IpyGameDataPY.GetFuncEvalCfg('RuneDoubleInlayCnt', 1, {})
- trialTowerPassLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV) # 符印塔已过关层数
- sortLVList = sorted(runeDoubleInlayCntDict.keys())
- findLV = 0
- for plv in sortLVList:
- if trialTowerPassLV < plv:
- break
- findLV = plv
- return runeDoubleInlayCntDict.get(findLV, 0)
-
-#// A5 65 符印升级 #tagCMRuneUp
-#
-#struct tagCMRuneUp
-#{
-# tagHead Head;
-# BYTE PlaceType; // 位置类型;0-符印背包,1-符印孔
-# WORD PlaceIndex; // 位置索引
-#};
-def OnRuneUp(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- placeType = clientData.PlaceType
- placeIndex = clientData.PlaceIndex
-
- if placeType == 0:
- RuneData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_VPackItem % (ShareDefine.rptRune, placeIndex))
- elif placeType == 1:
- RuneData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % (placeIndex + 1), 0)
- else:
- return
-
- playerID = curPlayer.GetPlayerID()
- if not RuneData:
- GameWorld.DebugLog("该位置不存在符印, 无法升级! placeType=%s,placeIndex=%s" % (placeType, placeIndex), playerID)
- return
-
- RuneItemID = ItemControler.GetRuneItemID(RuneData)
- RuneItemPlusLV = ItemControler.GetRuneItemPlusLV(RuneData)
- RuneIsLock = ItemControler.GetRuneItemIsLock(RuneData)
- RuneSource = ItemControler.GetRuneItemSource(RuneData)
- itemData = GameWorld.GetGameData().GetItemByTypeID(RuneItemID)
- if not itemData:
- return
-
- runeMaxLV = GetRuneMaxLV(RuneItemID)
- if RuneItemPlusLV + 1 >= runeMaxLV:
- GameWorld.DebugLog('该符印已满级,无法升级!runeMaxLV=%s' % runeMaxLV)
- return
-
- plusCost = GetRuneNeedExp(RuneItemID, RuneItemPlusLV + 1)
- plusCost = int(plusCost)
- if not plusCost:
- GameWorld.DebugLog("该符印无法升级! placeType=%s,placeIndex=%s,itemID=%s,plusLV=%s"
- % (placeType, placeIndex, RuneItemID, RuneItemPlusLV), playerID)
- return
-
-
- updRuneData = ItemControler.GetRuneItemKeyData(RuneItemID, RuneItemPlusLV + 1, RuneIsLock, RuneSource)
- if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_Rune, plusCost):
- curRuneMoney = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_Rune)
- GameWorld.DebugLog("符印精华点不足,无法升级!placeType=%s,placeIndex=%s,itemID=%s,plusLV=%s,plusCost=%s,curRuneMoney=%s"
- % (placeType, placeIndex, RuneItemID, RuneItemPlusLV, plusCost, curRuneMoney), playerID)
- return
-
- if placeType == 0:
- ItemControler.SetVPackItemKeyData(curPlayer, ShareDefine.rptRune, placeIndex, updRuneData)
- elif placeType == 1:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Rune_Data % (placeIndex + 1), updRuneData)
- RefreshRuneAttr(curPlayer)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
- Sync_RuneInfo(curPlayer)
- DoRuneSuccessLogic(curPlayer)
-
- GameWorld.DebugLog("符印升级!placeType=%s,placeIndex=%s,RuneData=%s,updRuneData=%s"
- % (placeType, placeIndex, RuneData, updRuneData), playerID)
- return
-
-
-def DoRuneSuccessLogic(curPlayer):
- #符印成就处理
- #清掉#镶嵌X枚X品质符印的成就信息
- totalLV = 0
- runeHoleCnt = IpyGameDataPY.GetFuncCfg("RuneUnlock", 4)
- for holeNum in xrange(1, runeHoleCnt + 1):
- runeData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % holeNum, 0)
- if not runeData:
- continue
- runeItemID = ItemControler.GetRuneItemID(runeData)
- itemData = GameWorld.GetGameData().GetItemByTypeID(runeItemID)
- if not itemData:
- continue
- itemColor = itemData.GetItemColor()
- runeItemPlusLV = ItemControler.GetRuneItemPlusLV(runeData) + 1 #客户端1开始
- totalLV += runeItemPlusLV
- PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Rune, itemColor, False)
- return
-
-#// A5 66 符印分解 #tagCMRuneDecompose
-#
-#struct tagCMRuneDecompose
-#{
-# tagHead Head;
-# BYTE IsAll; // 是否全部分解,优先级最高,锁定除外
-# BYTE QualityCnt; // 按全部分解品质数
-# BYTE QualityList[QualityCnt]; // 全部分解的品质列表,发送的品质会全部分解,锁定除外
-# BYTE Count; // 指定批量分解数,最大不超过50个
-# WORD PlaceIndexList[Count]; // 批量分解位置索引列表
-#};
-def OnRuneDecompose(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- isAll = clientData.IsAll
- qualityList = clientData.QualityList
- GameWorld.DebugLog("符印分解: isAll=%s,qualityList=%s,PlaceIndexList=%s" % (isAll, qualityList, clientData.PlaceIndexList))
-
- delPlaceDict = {}
- totalDecompose = 0
- totalMJ = 0
- packIndex = ShareDefine.rptRune
- placeList = xrange(ItemCommon.GetVPackCnt(packIndex)) if (isAll or clientData.QualityCnt > 0) else clientData.PlaceIndexList
- addPer = 0
- for place in placeList:
- RuneData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_VPackItem % (packIndex, place))
- if not RuneData:
- continue
- # 锁定的不可分解
- RuneIsLock = ItemControler.GetRuneItemIsLock(RuneData)
- if RuneIsLock:
- continue
- RuneItemID = ItemControler.GetRuneItemID(RuneData)
- RuneItemPlusLV = ItemControler.GetRuneItemPlusLV(RuneData)
- itemData = GameWorld.GetGameData().GetItemByTypeID(RuneItemID)
- if not itemData:
- continue
-
- quality = itemData.GetItemColor()
-
- if not (isAll or quality in qualityList or place in clientData.PlaceIndexList):
- continue
-
- if itemData.GetType() == ChConfig.Def_ItemType_RuneExp: #精华物品读效果值
- curEff = itemData.GetEffectByIndex(0)
- decompose = curEff.GetEffectValue(0)
- decompose += decompose * addPer / ShareDefine.Def_MaxRateValue
- else:
- decompose = 0
- for lv in range(RuneItemPlusLV + 1):
- decompose += GetRuneNeedExp(RuneItemID, lv)
- if lv == 0:
- decompose += decompose * addPer / ShareDefine.Def_MaxRateValue
-
- ipyData = IpyGameDataPY.GetIpyGameDataNotLog('RuneCompound', RuneItemID)
- if ipyData and ItemControler.GetRuneItemSource(RuneData) in [ChConfig.Rune_Source_Unkown,ChConfig.Item_Source_Compound]:
- totalMJ += ipyData.GetNeedMJ()
-
-
- totalDecompose += decompose
- delPlaceDict[place] = [RuneData, int(decompose)]
-
- if delPlaceDict:
- ItemCommon.DelVPackItem(curPlayer, packIndex, delPlaceDict.keys(), ChConfig.ItemDel_Rune)
-
- totalDecompose = int(totalDecompose)
- if totalDecompose:
- addDataDict = {"delPlaceDict":delPlaceDict, "totalDecompose":totalDecompose}
- PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_Rune, totalDecompose,
- ChConfig.Def_GiveMoney_RuneDecompose, addDataDict, False)
- PlayerControl.NotifyCode(curPlayer, 'hwj_20170807_1', [totalDecompose, ShareDefine.TYPE_Price_Rune])
- if totalMJ:
- addDataDict = {"delPlaceDict":delPlaceDict, "totalMJ":totalMJ}
- PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_Ysog, totalMJ,
- ChConfig.Def_GiveMoney_RuneDecompose, addDataDict, False)
- PlayerControl.NotifyCode(curPlayer, 'hwj_20170807_1', [totalMJ, ShareDefine.TYPE_Price_Ysog])
- return
-
-#// A5 67 符印锁定状态变更 #tagCMRuneLock
-#
-#struct tagCMRuneLock
-#{
-# tagHead Head;
-# BYTE LockState; // 锁定状态, 0-锁定,1-解锁
-# BYTE Count; // 批量操作数,最大不超过50个
-# WORD PlaceIndexList[Count]; // 批量操作位置索引列表
-#};
-def OnRuneLock(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- packIndex = ShareDefine.rptRune
- changeLockState = clientData.LockState # 锁定状态, 1-锁定,0-解锁
-
- changePlaceList = []
- for place in clientData.PlaceIndexList:
- RuneData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_VPackItem % (packIndex, place))
- if not RuneData:
- continue
- RuneIsLock = ItemControler.GetRuneItemIsLock(RuneData)
- if changeLockState == RuneIsLock:
- continue
- RuneItemID = ItemControler.GetRuneItemID(RuneData)
- RuneItemPlusLV = ItemControler.GetRuneItemPlusLV(RuneData)
- updRuneData = ItemControler.GetRuneItemKeyData(RuneItemID, RuneItemPlusLV, changeLockState)
- ItemControler.SetVPackItemKeyData(curPlayer, packIndex, place, updRuneData, False)
- changePlaceList.append(place)
-
- if changePlaceList:
- ItemControler.Sync_VPackItem_Refresh(curPlayer, packIndex, changePlaceList)
- GameWorld.DebugLog("修改符印锁定状态: changeLockState=%s, %s" % (changeLockState, changePlaceList))
- return
-
-#// A5 78 符印合成 #tagCMRuneCompound
-#
-#struct tagCMRuneCompound
-#
-#{
-# tagHead Head;
-# BYTE Cnt;
-# BYTE PackList[Cnt]; //所在位置 0-背包 1-符印孔
-# BYTE IndexList[Cnt]; //物品索引
-# DWORD TagItemID; //合成目标物品ID
-#};
-def OnRuneCompound(index, clientData, tick):
- ##符印合成
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- tagItemID = clientData.TagItemID
- packList = clientData.PackList
- indexList = clientData.IndexList
- GameWorld.DebugLog(' 符印合成 tagItemID=%s'%tagItemID)
- ipyData = IpyGameDataPY.GetIpyGameData('RuneCompound', tagItemID)
- if not ipyData:
- return
- materialsIDList = []
- materialsLVDict = {}
- indexList1 = [] #背包的符印索引
- indexList2 = [] #孔索引
- for i, placeType in enumerate(packList):
- index = indexList[i]
- if placeType == 0:
- runeData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_VPackItem % (ShareDefine.rptRune, index)) # 符印背包中的值
- indexList1.append(index)
- else:
- runeData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % (index+1), 0)
- indexList2.append(index+1)
- if not runeData:
- continue
- runeItemID = ItemControler.GetRuneItemID(runeData)
- runeItemPlusLV = ItemControler.GetRuneItemPlusLV(runeData)
- materialsIDList.append(runeItemID)
- materialsLVDict[runeItemID] = runeItemPlusLV
-
-
- needItemIDList = ipyData.GetNeedItem()
- if sorted(materialsIDList) != sorted(needItemIDList):
- GameWorld.DebugLog(' 符印合成 材料不对 tagItemID=%s, materialsIDList=%s, needItemIDList=%s'%(tagItemID,materialsIDList,needItemIDList))
- return
-
- if 0 not in packList:
- #如果没有背包的材料要判断格子数
- emptySpace = ItemCommon.GetItemPackSpace(curPlayer, ShareDefine.rptRune, 1)
- if emptySpace < 1:
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [ShareDefine.rptRune])
- GameWorld.DebugLog(' 符印合成 背包格子数量不足1个')
- return
-
- needMJ = ipyData.GetNeedMJ()
- infoDict = {"TagItemID":tagItemID}
- if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_Ysog, needMJ, ChConfig.Def_Cost_ItemProduce, infoDict):
- return
-
- totalPoint = 0
- for itemID in materialsIDList:
- decompose = 0
- RuneItemPlusLV = materialsLVDict.get(itemID,0)
- for lv in range(1, RuneItemPlusLV + 1):
- decompose += GetRuneNeedExp(itemID, lv)
- totalPoint += decompose
- totalPoint = int(totalPoint)
- tagItemLV = 0
-
- runeMaxLV = GetRuneMaxLV(tagItemID)
- for lv in xrange(1, runeMaxLV):
- needExp = GetRuneNeedExp(tagItemID, lv)
- if totalPoint < needExp:
- break
- tagItemLV = lv
- totalPoint -= needExp
-
- #删除材料物品
- if indexList1:
- ItemCommon.DelVPackItem(curPlayer, ShareDefine.rptRune, indexList1, ChConfig.ItemDel_Rune)
- if indexList2:
- for index in indexList2:
- srcRuneData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % index, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Rune_Data % index, 0)
- dataDict = {'doType':'RuneCompound', 'srcRuneData':srcRuneData, 'desRuneData':0}
- DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_Rune, dataDict)
-
- Sync_RuneInfo(curPlayer)
- RefreshRuneAttr(curPlayer)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
-
- #给新物品
- curItem = ItemControler.GetOutPutItemObj(tagItemID)
- curItem.SetUserAttr(ShareDefine.Def_IudetRuneLV, tagItemLV)
- curItem.SetUserAttr(ShareDefine.Def_IudetRuneSource, ChConfig.Item_Source_Compound)
- PlayerItemControler = ItemControler.PlayerItemControler(curPlayer)
- PlayerItemControler.PutInItem(ShareDefine.rptRune, curItem, event=[ChConfig.ItemGive_RuneCompound, False, {'indexList1':indexList1,'indexList2':indexList2}])
- curPlayer.Sync_MakeItemAnswer(ShareDefine.Def_mitRuneCompound, 1)
- return
-
-
-## 刷符印属性
-def RefreshRuneAttr(curPlayer):
- allAttrList = [{} for _ in range(4)]
- runeHoleCnt = IpyGameDataPY.GetFuncCfg("RuneUnlock", 4)
- for holeNum in xrange(1, runeHoleCnt + 1):
- runeData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % holeNum, 0)
- if not runeData:
- continue
- runeItemID = ItemControler.GetRuneItemID(runeData)
- runeItemPlusLV = ItemControler.GetRuneItemPlusLV(runeData)
-
- attrDict = GetRuneAttrValue(runeItemID, runeItemPlusLV)
-
- if not attrDict:
- continue
- #GameWorld.DebugLog(' 刷符印属性 holeNum=%s, attrDict=%s' % (holeNum, attrDict))
- for attrID, attrValue in attrDict.items():
- PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
-
- # 保存计算值
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Rune, allAttrList)
- return
-
-def GetRuneTotalLV(curPlayer):
- ## 符印累计总等级
- totalLV = 0
- runeHoleCnt = IpyGameDataPY.GetFuncCfg("RuneUnlock", 4)
- for holeNum in xrange(1, runeHoleCnt + 1):
- runeData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % holeNum, 0)
- if not runeData:
- continue
- totalLV += ItemControler.GetRuneItemPlusLV(runeData) + 1
- return totalLV
-
-
-## 同步客户端
-def Sync_RuneInfo(curPlayer):
- runeHoleCnt = IpyGameDataPY.GetFuncCfg("RuneUnlock", 4)
- if not runeHoleCnt:
- return
- RuneInfoPack = ChPyNetSendPack.tagMCRuneInfo()
- RuneInfoPack.Clear()
- RuneInfoPack.RuneHoleOpenState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_HoleOpenState, 0)
- RuneInfoPack.RuneDataList = []
- for RuneNum in xrange(1, runeHoleCnt + 1):
- RuneData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % RuneNum, 0)
- RuneInfoPack.RuneDataList.append(RuneData)
- RuneInfoPack.Count = len(RuneInfoPack.RuneDataList)
- NetPackCommon.SendFakePack(curPlayer, RuneInfoPack)
- 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 9df0805..20d6a29 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -30,7 +30,6 @@
import GameMap
import math
import time
-import PetControl
import AICommon
import PlayerSuccess
import PassiveBuffEffMng
@@ -121,8 +120,6 @@
BaseAttack.Sync_AttackResult(curPlayer, useSkillData)
if useSkillData and useSkillData.GetSkillID() != ChConfig.Def_SkillID_Somersault:
- # 跟随玩家同频率攻击
- PetControl.PetFight(curPlayer, tick)
SummonFollowAtk(curPlayer, tick)
#===========================================================================
# if not result:
@@ -1033,8 +1030,6 @@
#PlayerActLianqi.OnProcess(curPlayer)
#仙盟攻城战
#PlayerActFamilyGCZ.OnProcess(curPlayer)
- #跨服数据同步,放最后
- #CrossPlayerData.ProcessCrossPlayer(curPlayer, tick)
return
def ProcessPlayerSecond(curPlayer, tick):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
index ff8820f..93b4b61 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
@@ -20,7 +20,6 @@
import ShareDefine
import IPY_GameWorld
import ChPyNetSendPack
-import CrossRealmPlayer
import PlayerViewCache
import NetPackCommon
import IpyGameDataPY
@@ -63,9 +62,6 @@
elif channelType == IPY_GameWorld.tcCountry:
if GameWorld.IsCrossServer():
- return
- if not CrossRealmPlayer.IsCrossServerOpen():
- PlayerControl.NotifyCode(curPlayer, "CrossMatching18")
return
if not __CheckTalk(curPlayer, channelType, content, tick):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTongTianLing.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTongTianLing.py
deleted file mode 100644
index bc100e3..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTongTianLing.py
+++ /dev/null
@@ -1,443 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerTongTianLing
-#
-# @todo:通天令
-# @author hxp
-# @date 2022-01-17
-# @version 1.0
-#
-# 详细描述: 通天令
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-01-17 19:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import ChPyNetSendPack
-import NetPackCommon
-import ItemControler
-import ChConfig
-import time
-
-TTL_LVAwardKeyCount = 2
-TTL_TaskAwardKeyCount = 9
-
-def OnPlayerLogin(curPlayer):
- if CheckTongTianLingReset(curPlayer):
- return
- SyncTongTianLVInfo(curPlayer)
- SyncTongTianTaskInfo(curPlayer)
- SyncTongTianTaskAward(curPlayer)
- return
-
-def OnDay(curPlayer, onEventType):
-
- if onEventType == ShareDefine.Def_OnEventType:
- # 常规时间0点过天检查重置
- if CheckTongTianLingReset(curPlayer):
- return
- return
-
- resetTaskTypeList, resetTaskIDList = [], []
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for index in xrange(ipyDataMgr.GetTongTianTaskCount()):
- ipyData = ipyDataMgr.GetTongTianTaskByIndex(index)
- if not ipyData.GetIsDailyTask():
- continue
- ttTaskID = ipyData.GetTTTaskID()
- ttTaskType = ipyData.GetTTTaskType()
- resetTaskTypeList.append(ttTaskType)
-
- if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord, ttTaskID):
- GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord, ttTaskID, 0)
- resetTaskIDList.append(ttTaskID)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_DailyTaskPointToday, 0)
- isDailyTask = 1 # 只处理每日重置的任务
- syncTaskInfoList = []
- for ttTaskType in resetTaskTypeList:
- curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask))
- if not curValue:
- continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask), 0)
- syncTaskInfoList.append([ttTaskType, isDailyTask])
-
- if syncTaskInfoList:
- #GameWorld.DebugLog("重置通天任务进度: syncTaskInfoList=%s" % syncTaskInfoList)
- SyncTongTianTaskInfo(curPlayer, syncTaskInfoList)
-
- if resetTaskIDList:
- #GameWorld.DebugLog("重置通天任务奖励: resetTaskIDList=%s" % resetTaskIDList)
- SyncTongTianTaskAward(curPlayer)
-
- return
-
-def CheckTongTianLingReset(curPlayer):
- ## 检查通天令重置
-
- playerID = curPlayer.GetPlayerID()
- resetDays = IpyGameDataPY.GetFuncCfg("TongTianLing", 4)
- if resetDays <= 0:
- return
-
- curTime = int(time.time())
- startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_StartTime)
- passDays = GameWorld.GetDiff_Day(curTime, startTime) + 1
- if passDays <= resetDays:
- GameWorld.DebugLog("通天令本轮天数未完,不重置! startTime(%s),passDays=%s <= %s"
- % (GameWorld.ChangeTimeNumToStr(startTime), passDays, resetDays), playerID)
- return
-
- syncTaskInfoList = []
- for ttTaskType in ChConfig.TTLTaskTypeList:
- for isDailyTask in [0, 1]:
- curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask))
- if not curValue:
- continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask), 0)
- syncTaskInfoList.append([ttTaskType, isDailyTask])
-
- for i in xrange(TTL_LVAwardKeyCount):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_CommAwardRecord % i, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_XianAwardRecord % i, 0)
-
- for i in xrange(TTL_TaskAwardKeyCount):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord % i, 0)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_StartTime, curTime)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_LVInfo, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_LVPoint, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_DailyTaskPointToday, 0)
-
- GameWorld.Log("通天令重置! StartTime=%s" % curTime, playerID)
- SyncTongTianLVInfo(curPlayer)
- SyncTongTianTaskInfo(curPlayer, syncTaskInfoList)
- SyncTongTianTaskAward(curPlayer)
- return True
-
-def GetTongTianLingLVInfo(curPlayer):
- ## 获取通天令等级状态信息
- # @return: 通天令等级, 是否激活通天令
- lvInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_LVInfo)
- ttLV, ttState = lvInfo / 10, lvInfo % 10
- return ttLV, ttState
-
-def SetTongTianLingLVInfo(curPlayer, ttLV, ttState):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_LVInfo, ttLV * 10 + ttState)
- return
-
-def AddTongTianTaskValue(curPlayer, ttTaskType, addValue):
- ## 增加通天令任务进度
-
- taskIpyList = IpyGameDataPY.GetIpyGameDataByCondition("TongTianTask", {"TTTaskType":ttTaskType}, True, False)
- if not taskIpyList:
- return
-
- addValueDict = {}
- for ipyData in taskIpyList:
- taskID = ipyData.GetTTTaskID()
- if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord, taskID):
- # 已领奖的不再处理
- continue
- isDailyTask = ipyData.GetIsDailyTask()
- finishNeedValue = ipyData.GetFinishNeedValue()
- maxValue = addValueDict.get((ttTaskType, isDailyTask), 0)
- if finishNeedValue > maxValue:
- addValueDict[(ttTaskType, isDailyTask)] = finishNeedValue
-
- syncTaskInfoList = []
- for key, finishNeedValue in addValueDict.items():
- ttTaskType, isDailyTask = key
- curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask))
- if curValue >= finishNeedValue:
- continue
- updValue = min(curValue + addValue, finishNeedValue)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask), updValue)
- #GameWorld.DebugLog("更新通天令任务进度: ttTaskType=%s,isDailyTask=%s,curValue=%s,addValue=%s,updValue=%s"
- # % (ttTaskType, isDailyTask, curValue, addValue, updValue), curPlayer.GetPlayerID())
- syncTaskInfoList.append([ttTaskType, isDailyTask])
-
- if syncTaskInfoList:
- SyncTongTianTaskInfo(curPlayer, syncTaskInfoList)
-
- return
-
-def AddTongTianPoint(curPlayer, addPoint):
- ## 增加通天令经验点
- playerID = curPlayer.GetPlayerID()
- ttLV, ttState = GetTongTianLingLVInfo(curPlayer)
- ttPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_LVPoint)
- ipyData = IpyGameDataPY.GetIpyGameData("TongTianLV", ttLV)
- if not ipyData:
- return
- lvUPPoint = ipyData.GetLVUPPoint()
- if not lvUPPoint:
- GameWorld.DebugLog("通天令已满级!", playerID)
- return
- updLV = ttLV
- updPoint = ttPoint + addPoint
- GameWorld.DebugLog("增加通天令经验: ttLV=%s,ttPoint=%s,addPoint=%s,updPoint=%s,lvUPPoint=%s"
- % (ttLV, ttPoint, addPoint, updPoint, lvUPPoint), playerID)
- doCount = 0
- while lvUPPoint and updPoint >= lvUPPoint and doCount < 50:
- doCount += 1
- updPoint -= lvUPPoint
- updLV += 1
- nextLVIPYData = IpyGameDataPY.GetIpyGameDataNotLog("TongTianLV", updLV)
- lvUPPoint = nextLVIPYData.GetLVUPPoint() if nextLVIPYData else 0
- GameWorld.DebugLog(" 通天令升级: updLV=%s,updPoint=%s,nextLVUPPoint=%s" % (updLV, updPoint, lvUPPoint), playerID)
-
- SetTongTianLingLVInfo(curPlayer, updLV, ttState)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_LVPoint, updPoint)
- SyncTongTianLVInfo(curPlayer)
- return updLV, updPoint
-
-#// A5 43 通天令领取任务奖励 #tagCMGetTongTianTaskAward
-#
-#struct tagCMGetTongTianTaskAward
-#{
-# tagHead Head;
-# BYTE TaskID; // 任务ID
-#};
-def OnGetTongTianTaskAward(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- ttTaskID = clientData.TaskID
-
- ipyData = IpyGameDataPY.GetIpyGameData("TongTianTask", ttTaskID)
- if not ipyData:
- return
-
- if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord, ttTaskID):
- GameWorld.DebugLog("通天任务已领奖! ttTaskID=%s" % ttTaskID, playerID)
- return
-
- ttTaskType = ipyData.GetTTTaskType()
- isDailyTask = ipyData.GetIsDailyTask()
- finishNeedValue = ipyData.GetFinishNeedValue()
- curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask))
- if curValue < finishNeedValue:
- GameWorld.DebugLog("通天任务进度未完成,无法领奖! ttTaskID=%s,ttTaskType=%s,isDailyTask=%s,curValue=%s < %s"
- % (ttTaskID, ttTaskType, isDailyTask, curValue, finishNeedValue), playerID)
- return
-
- addTaskPoint = ipyData.GetTaskPoint()
- dailyTaskPointMax = IpyGameDataPY.GetFuncCfg("TongTianLing", 3)
- if isDailyTask and dailyTaskPointMax:
- dailyTaskPointToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_DailyTaskPointToday)
- if dailyTaskPointToday >= dailyTaskPointMax:
- GameWorld.DebugLog("通天任务日常任务积分奖励已达上限! ttTaskID=%s,ttTaskType=%s,dailyTaskPointToday=%s >= %s"
- % (ttTaskID, ttTaskType, dailyTaskPointToday, dailyTaskPointMax), playerID)
- return
- addTaskPoint = min(addTaskPoint, dailyTaskPointMax - dailyTaskPointToday)
- dailyTaskPointToday += addTaskPoint
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_DailyTaskPointToday, dailyTaskPointToday)
- GameWorld.DebugLog("更新通天任务日常任务今日已获得积分: dailyTaskPointToday=%s" % dailyTaskPointToday, playerID)
- GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord, ttTaskID, 1)
- AddTongTianPoint(curPlayer, addTaskPoint)
- SyncTongTianTaskAward(curPlayer)
- return
-
-#// A5 44 通天令领取等级奖励 #tagCMGetTongTianLVAward
-#
-#struct tagCMGetTongTianLVAward
-#{
-# tagHead Head;
-# BYTE TTLV; // 领取对应等级奖励,发255为一键领取所有等级奖励,包含仙品奖励
-# BYTE IsXian; // 是否领取仙品奖励,仅指定等级奖励有效
-#};
-def OnGetTongTianLVAward(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- getTTLVLV = clientData.TTLV
- isXian = clientData.IsXian
-
- ttLV, ttState = GetTongTianLingLVInfo(curPlayer)
- if getTTLVLV == 255:
- awardLVList = range(0, ttLV + 1)
- isXian = 1 # 一键领取的默认包含仙品奖励
- else:
- awardLVList = [getTTLVLV]
-
- GameWorld.DebugLog("领取通天令奖励: getTTLVLV=%s,isXian=%s,awardLVList=%s" % (getTTLVLV, isXian, awardLVList), playerID)
-
- notifyItemIDList = []
- itemList = []
- for awardTTLV in awardLVList:
- if awardTTLV > ttLV:
- GameWorld.DebugLog(" 通天等级不足,无法领奖! awardTTLV=%s < %s" % (awardTTLV, ttLV), playerID)
- break
- ipyData = IpyGameDataPY.GetIpyGameData("TongTianLV", awardTTLV)
- if not ipyData:
- continue
- commAwardItemList = ipyData.GetCommAwardItemList()
- xianAwardItemList = ipyData.GetXianAwardItemList()
- notifyItemIDList.extend(ipyData.GetNotifyItemIDList())
-
- if commAwardItemList and not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_CommAwardRecord, awardTTLV):
- GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_CommAwardRecord, awardTTLV, 1)
- itemList.extend(commAwardItemList)
- GameWorld.DebugLog(" 常规奖励: awardTTLV=%s,commAwardItemList=%s" % (awardTTLV, commAwardItemList), playerID)
- #elif commAwardItemList:
- # GameWorld.DebugLog(" 已领取过该奖励: awardTTLV=%s" % (awardTTLV), playerID)
-
- getXian = (isXian and xianAwardItemList)
- if getXian and ttState and not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_XianAwardRecord, awardTTLV):
- GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_XianAwardRecord, awardTTLV, 1)
- itemList.extend(xianAwardItemList)
- GameWorld.DebugLog(" 仙品奖励: awardTTLV=%s,xianAwardItemList=%s" % (awardTTLV, xianAwardItemList), playerID)
- #elif getXian:
- # GameWorld.DebugLog(" 仙品通天令未激活或已领奖: awardTTLV=%s,ttState=%s" % (awardTTLV, ttState), playerID)
-
- GameWorld.DebugLog(" 最终奖励: itemList=%s" % itemList, playerID)
- if not itemList:
- return
-
- giveItemDict = {}
- for itemID, itemCount, isBind in itemList:
- key = (itemID, isBind)
- giveItemDict[key] = giveItemDict.get(key, 0) + itemCount
-
- awardItemList = []
- for key, itemCount in giveItemDict.items():
- itemID, isBind = key
- awardItemList.append([itemID, itemCount, isBind])
- if itemID in notifyItemIDList:
- PlayerControl.NotifyCode(curPlayer, "TongTianLingLVAward", [curPlayer.GetPlayerName(), itemID, itemCount])
-
- GameWorld.DebugLog(" 汇总奖励: awardItemList=%s" % awardItemList, playerID)
- dataDict = {"awardLVList":awardLVList, "isXian":isXian}
- ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["TongTianLing", False, dataDict])
- SyncTongTianLVInfo(curPlayer)
- return
-
-#// A5 45 兑换通天令等级经验积分点 #tagCMExchangeTongTianLVPoint
-#
-#struct tagCMExchangeTongTianLVPoint
-#{
-# tagHead Head;
-# DWORD ExchangePoint; // 兑换点数
-#};
-def OnExchangeTongTianLVPoint(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- playerID = curPlayer.GetPlayerID()
- exchangePoint = clientData.ExchangePoint
- exchangeCostInfo = IpyGameDataPY.GetFuncEvalCfg("TongTianLing", 1)
- if len(exchangeCostInfo) != 2:
- return
- costMoneyType, costMoneyValue = exchangeCostInfo
- if not costMoneyType or not costMoneyValue:
- return
-
- ttLV = GetTongTianLingLVInfo(curPlayer)[0]
- ttPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_LVPoint)
- canBuyPointMax = 0
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for index in xrange(ttLV, ipyDataMgr.GetTongTianLVCount()):
- ipyData = ipyDataMgr.GetTongTianLVByIndex(index)
- canBuyPointMax += ipyData.GetLVUPPoint()
- canBuyPointMax -= ttPoint
-
- exchangePoint = min(exchangePoint, canBuyPointMax)
- costMoneyTotal = costMoneyValue * exchangePoint
- GameWorld.DebugLog("兑换通天令等级经验: ttLV=%s,ttPoint=%s,exchangePoint=%s,canBuyPointMax=%s,costMoneyType=%s,costMoneyTotal=%s"
- % (ttLV, ttPoint, exchangePoint, canBuyPointMax, costMoneyType, costMoneyTotal), playerID)
-
- if not PlayerControl.HaveMoney(curPlayer, costMoneyType, costMoneyTotal):
- return
-
- updInfo = AddTongTianPoint(curPlayer, exchangePoint)
- updLV, updPoint = updInfo if updInfo else (ttLV, ttPoint)
-
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:"ExchangeTongTianLVPoint", "exchangePoint":exchangePoint,
- "ttLV":ttLV, "ttPoint":ttPoint, "updLV":updLV, "updPoint":updPoint}
- PlayerControl.PayMoney(curPlayer, costMoneyType, costMoneyTotal, ChConfig.Def_Cost_TongTianLing, infoDict)
- return
-
-#// A5 46 购买通天令 #tagCMBuyTongTianLing
-#
-#struct tagCMBuyTongTianLing
-#{
-# tagHead Head;
-#};
-def OnBuyTongTianLing(index, clientData, tick):
- # 废弃,改为充值激活
- return
-
-def OnActiviteTTTByCTGID(curPlayer, ctgID):
- ctgIDList = IpyGameDataPY.GetFuncEvalCfg("TongTianLing", 5)
- if ctgID not in ctgIDList:
- return
-
- playerID = curPlayer.GetPlayerID()
- ttLV, ttState = GetTongTianLingLVInfo(curPlayer)
- if ttState:
- GameWorld.DebugLog("通天令已经购买过了!", playerID)
- return
-
- ttState = 1
- SetTongTianLingLVInfo(curPlayer, ttLV, ttState)
- GameWorld.DebugLog("购买激活通天令!", playerID)
- PlayerControl.NotifyCode(curPlayer, "TongTianLingActive")
- SyncTongTianLVInfo(curPlayer)
- return
-
-def SyncTongTianLVInfo(curPlayer):
- ## 等级信息
- ttLV, ttState = GetTongTianLingLVInfo(curPlayer)
- clientPack = ChPyNetSendPack.tagMCTongTianLingInfo()
- clientPack.TTLBuyState = ttState
- clientPack.TTLLV = ttLV
- clientPack.CurPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_LVPoint)
- clientPack.CommAwardStateList = []
- clientPack.XianAwardStateList = []
- for i in xrange(TTL_LVAwardKeyCount):
- clientPack.CommAwardStateList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_CommAwardRecord % i))
- clientPack.XianAwardStateList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_XianAwardRecord % i))
- clientPack.AwardStateCount = len(clientPack.CommAwardStateList)
- clientPack.StartTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_StartTime)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
-def SyncTongTianTaskInfo(curPlayer, syncTaskInfoList=None):
- ## 任务进度信息
- syncAppoint = True
- if syncTaskInfoList == None:
- syncAppoint = False
- syncTaskInfoList = []
- for ttTaskType in ChConfig.TTLTaskTypeList:
- syncTaskInfoList.append([ttTaskType, 0])
- syncTaskInfoList.append([ttTaskType, 1])
-
- clientPack = ChPyNetSendPack.tagMCTongTianLingTaskValueInfo()
- clientPack.TaskValueList = []
- for ttTaskType, isDailyTask in syncTaskInfoList:
- curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask))
- if not curValue and not syncAppoint:
- continue
- task = ChPyNetSendPack.tagMCTongTianLingTaskValue()
- task.TaskType = ttTaskType
- task.IsDaily = isDailyTask
- task.TaskValue = curValue
- clientPack.TaskValueList.append(task)
- clientPack.Count = len(clientPack.TaskValueList)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
-def SyncTongTianTaskAward(curPlayer):
- ## 任务奖励信息
- clientPack = ChPyNetSendPack.tagMCTongTianLingTaskAwardInfo()
- clientPack.TaskAwardStateList = []
- for i in xrange(TTL_TaskAwardKeyCount):
- clientPack.TaskAwardStateList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskAwardRecord % i))
- clientPack.AwardStateCount = len(clientPack.TaskAwardStateList)
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
index 33152ad..ae679c0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -16,7 +16,6 @@
#-------------------------------------------------------------------------------
import GameWorld
-import PlayerRune
import IPY_GameWorld
import IpyGameDataPY
import FormulaControl
@@ -840,11 +839,6 @@
return
if heroIpyData.GetRecruitBySelf() and not PlayerHero.GetHeroActivite(curPlayer, itemID):
GameWorld.DebugLog("武将未激活不产出! itemID=%s" % itemID, playerID)
- return
-
- elif itemData.GetType() == ChConfig.Def_ItemType_Rune:
- if not PlayerRune.GetIsOpenByRuneID(curPlayer, itemID):
- GameWorld.DebugLog("未解锁的符印不产出! itemID=%s" % itemID, playerID)
return
return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
deleted file mode 100644
index 559a981..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
+++ /dev/null
@@ -1,468 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerWeekParty
-#
-# @todo:周狂欢
-# @author xdh
-# @date 2018-07-12 16:50
-# @version 1.0
-#
-#
-# 详细描述: 周狂欢
-#
-#---------------------------------------------------------------------
-"""Version = 2018-07-12 16:50"""
-#---------------------------------------------------------------------
-
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import IpyGameDataPY
-import PlayerControl
-import ItemControler
-import ChPyNetSendPack
-import PlayerFeastWeekParty
-import DataRecordPack
-import NetPackCommon
-import ShareDefine
-import PyGameData
-import ItemCommon
-
-
-def OnLogin(curPlayer):
- isReset = __CheckPlayerWeekPartyAction(curPlayer)
- if not isReset:
- actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WeekParty, {})
- # 活动中同步活动信息
- SyncWeekPartyInfo(curPlayer)
- if actCostRebateInfo.get(ShareDefine.ActKey_State):
- AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False, False)
- SyncWeekPartyPlayerInfo(curPlayer)
- return
-
-
-def RefreshOperationAction_WeekParty():
- playerManager = GameWorld.GetPlayerManager()
- for i in xrange(playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(i)
- if not GameWorld.IsNormalPlayer(curPlayer):
- continue
- __CheckPlayerWeekPartyAction(curPlayer)
- return
-
-
-def __CheckPlayerWeekPartyAction(curPlayer):
- ## 检查玩家周狂欢活动数据信息
- playerID = curPlayer.GetPlayerID()
-
- actWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WeekParty, {})
- state = actWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
- actID = actWeekPartyInfo.get(ShareDefine.ActKey_ID, 0)
- cfgID = actWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
- playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyActID, 0, ChConfig.Def_PDictType_WeekParty) # 玩家身上的活动ID
- playerWeekPartyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyID, 0, ChConfig.Def_PDictType_WeekParty) # 玩家身上的活动配置ID
- playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyWorldLV, 0, ChConfig.Def_PDictType_WeekParty) # 玩家身上的活动世界等级
- # 活动ID 相同的话不处理
- if actID == playerActID:
- GameWorld.DebugLog("周狂欢活动ID不变,不处理!playerActID=%s" % playerActID, curPlayer.GetPlayerID())
- if state:
- CheckWeekPartyActionCnt(curPlayer, True)
- return
- # 未领取的奖励邮件发放
- if playerWeekPartyID:
- __SendWeekPartyMail(curPlayer, playerWeekPartyID, playerWorldLV)
-
- GameWorld.DebugLog('周狂欢活动重置!')
- curPlayer.ClearNomalDict(ChConfig.Def_PDictType_WeekParty)
-
- worldLV = actWeekPartyInfo.get(ShareDefine.ActKey_WorldLV, 0)
- GameWorld.DebugLog("周狂欢变更! state=%s,actID=%s,cfgID=%s,playerWeekPartyID=%s,worldLV=%s" % (state, actID, cfgID, playerWeekPartyID, worldLV), playerID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyActID, actID, ChConfig.Def_PDictType_WeekParty)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyID, cfgID, ChConfig.Def_PDictType_WeekParty)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyWorldLV, worldLV, ChConfig.Def_PDictType_WeekParty)
- if state:
- CheckWeekPartyActionCnt(curPlayer, False)
- SyncWeekPartyInfo(curPlayer)
- SyncWeekPartyPlayerInfo(curPlayer)
-
- return True
-
-def __SendWeekPartyMail(curPlayer, cfgID, playerWorldLV):
- # 未领取的奖励邮件发放
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActWeekParty", cfgID)
- if not actBossIpyData:
- return
- templateIDList = actBossIpyData.GetTemplateID()
- if not templateIDList:
- return
-
- totalItemDict = {}
- for day, tidList in enumerate(templateIDList):
- for tid in tidList:
- ipyData = IpyGameDataPY.GetIpyGameData('WeekParty', tid)
- if not ipyData:
- continue
- singleTimes = ipyData.GetSingleTimes()
- curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyCurTimes % (day, tid), 0, ChConfig.Def_PDictType_WeekParty)
- gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyGotTimes % (day, tid), 0, ChConfig.Def_PDictType_WeekParty)
- canGotCnt = (curTimes - gotTimes) / singleTimes
- if not canGotCnt:
- continue
- itemDict = __GetAwardItem(curPlayer, ipyData, playerWorldLV, canGotCnt)
- GameWorld.AddDictValue(totalItemDict, itemDict)
- #积分奖励
- pointAwardInfo = __GetPointAwardInfo(actBossIpyData.GetPointAward(), playerWorldLV)
- for day, awardDict in pointAwardInfo.items():
- pointList = awardDict.keys()
- pointList.sort()
- for i, point in enumerate(pointList):
- curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyPoint % day, 0, ChConfig.Def_PDictType_WeekParty)
- if curPoint < point:
- continue
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyAwardRecord % day, 0, ChConfig.Def_PDictType_WeekParty)
- if awardRecord & pow(2, i):
- continue
- itemList = awardDict[point]
- for itemID, itemCnt, isBind in itemList:
- totalItemDict[itemID] = totalItemDict.get(itemID, 0) + itemCnt
- DataRecordPack.DR_WeekPartyPoint(curPlayer, day, point)
- if not totalItemDict:
- return
- totalItemList = [[itemID, itemCnt, 1] for itemID, itemCnt in totalItemDict.items()]
- PlayerControl.SendMailByKey('SecondWeekReward', [curPlayer.GetID()], totalItemList)
- return
-
-def __GetPointAwardInfo(cfgPointAwardInfo, worldLV):
- return GameWorld.GetDictValueByRangeKey(cfgPointAwardInfo, worldLV, {})
-
-def AddWeekPartyActionCnt(curPlayer, actionID, addCnt=1, isAdd=True, isCompatible=False, isSync=True):
- '''增加周狂欢相关活动完成次数'''
- PlayerFeastWeekParty.AddFeastWeekPartyActionCnt(curPlayer, actionID, addCnt, isAdd, isCompatible, isSync)
- #判断活动是否开启
- if not addCnt:
- return
- actWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WeekParty, {})
- state = actWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
- cfgID = actWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
-
- if not cfgID:
- return
- if not state:
- return
-
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActWeekParty", cfgID)
- if not actBossIpyData:
- return
- templateIDList = actBossIpyData.GetTemplateID()
- dayIndex = actWeekPartyInfo.get(ShareDefine.ActKey_DayIndex, 0)
- if dayIndex >= len(templateIDList):
- return
- if actionID in [ChConfig.Def_WPAct_Login]:
- addDayIndexList = [dayIndex]
- else:
- addDayIndexList = range(dayIndex + 1)
- for dayIndex in addDayIndexList:
- dayTidList = templateIDList[dayIndex]
- findTidList = []
- for tid in dayTidList:
- if tid / 100 == actionID:
- findTidList.append(tid)
- if not findTidList:
- continue
- for findTid in findTidList:
- ipyData = IpyGameDataPY.GetIpyGameData('WeekParty', findTid)
- if not ipyData:
- continue
- totalTimes = ipyData.GetTotalTimes()
- curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyCurTimes % (dayIndex, findTid), 0, ChConfig.Def_PDictType_WeekParty)
- if isAdd:
- curAddCnt = addCnt if totalTimes == 0 else min(totalTimes - curTimes, addCnt)
- if curAddCnt <= 0:
- continue
- updTimes = curTimes + curAddCnt
- else:
- if not isCompatible and addCnt != totalTimes:
- continue
- updTimes = min(addCnt, totalTimes)
- realAddCnt = updTimes - curTimes
- if realAddCnt <= 0:
- continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyCurTimes % (dayIndex, findTid), updTimes, ChConfig.Def_PDictType_WeekParty)
- #加积分
- singleTimes = ipyData.GetSingleTimes()
- addPoint = (curTimes % singleTimes + realAddCnt) / singleTimes * ipyData.GetPoint()
- curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyPoint % dayIndex, 0, ChConfig.Def_PDictType_WeekParty)
- updPoint = curPoint + addPoint
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyPoint % dayIndex, updPoint, ChConfig.Def_PDictType_WeekParty)
- GameWorld.DebugLog(' 增加周狂欢相关活动完成次数 dayIndex=%s, findTid=%s, curTimes=%s, updTimes=%s, realAddCnt=%s,addPoint=%s' % (dayIndex, findTid, curTimes, updTimes, realAddCnt, addPoint))
- if isSync:
- SyncWeekPartyPlayerInfo(curPlayer, dayIndex, findTid)
- return True
-
-def CheckWeekPartyActionCnt(curPlayer, isSync):
- ## 同步活动状态时需要触发的
-
- # 灵宠激活
- petDataPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
- for petDataIndex in range(petDataPack.GetCount()):
- petItem = petDataPack.GetAt(petDataIndex)
- if petItem.IsEmpty():
- continue
- petNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Pet, petNPCID, False, isSync=isSync)
-
- # 出战神兽
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyDataMgr.GetDogzCount()):
- ipyData = ipyDataMgr.GetDogzByIndex(i)
- if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
- AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Dogz, ipyData.GetDogzID(), False, isSync=isSync)
-
- # 穿戴某品质符印
- runeHoleCnt = IpyGameDataPY.GetFuncCfg("RuneUnlock", 4)
- for holeNum in xrange(1, runeHoleCnt + 1):
- runeData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % holeNum, 0)
- if not runeData:
- continue
- runeItemID = ItemControler.GetRuneItemID(runeData)
- itemData = GameWorld.GetGameData().GetItemByTypeID(runeItemID)
- if not itemData:
- continue
- itemColor = itemData.GetItemColor()
- AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Rune, itemColor, False, isSync=isSync)
-
- AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False, isSync)
- return
-
-def GetWeekPartyActionAward(curPlayer, day, templateID):
- '''领取周狂欢活动奖励'''
- templateID = GameWorld.ToIntDef(templateID, 0)
- actWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WeekParty, {})
- state = actWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
- cfgID = actWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
- if not state or not cfgID:
- return
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActWeekParty", cfgID)
- if not actBossIpyData:
- return
- templateIDList = actBossIpyData.GetTemplateID()
- if not templateIDList:
- return
- if day >= len(templateIDList):
- return
- dayTempIDList = templateIDList[day]
- if templateID not in dayTempIDList:
- return
- ipyData = IpyGameDataPY.GetIpyGameData('WeekParty', templateID)
- if not ipyData:
- return
- singleTimes = ipyData.GetSingleTimes()
- curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyCurTimes % (day, templateID), 0, ChConfig.Def_PDictType_WeekParty)
- gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyGotTimes % (day, templateID), 0, ChConfig.Def_PDictType_WeekParty)
- if curTimes - gotTimes < singleTimes:
- return
-
- #给奖励
- playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyWorldLV, 0, ChConfig.Def_PDictType_WeekParty)
- awardDict = __GetAwardItem(curPlayer, ipyData, playerWorldLV)
- # 检查背包
- needSpace = len(awardDict)
- packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if needSpace > packSpace:
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
- return
- #更新次数 每次领奖只领一次
- newGotTimes = gotTimes + singleTimes
-
- #GameWorld.Log(' actionID=%s,curTimes=%s,gotTimes=%s,singleTimes=%s,newGotTimes=%s'%(actionID, curTimes, gotTimes,singleTimes, newGotTimes))
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyGotTimes % (day, templateID), newGotTimes, ChConfig.Def_PDictType_WeekParty)
- for itemID, itemCnt in awardDict.items():
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
- ItemControler.NotifyGiveAwardInfo(curPlayer, awardDict, "WeekParty")
- SyncWeekPartyPlayerInfo(curPlayer, day, templateID)
- return
-
-
-def GetWeekPartyPointAward(curPlayer, day, getPoint):
- ##领取周狂欢积分奖励
- getPoint = GameWorld.ToIntDef(getPoint, 0)
- actWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WeekParty, {})
- state = actWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
- cfgID = actWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
- if not state or not cfgID:
- return
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActWeekParty", cfgID)
- if not actBossIpyData:
- return
- curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyPoint % day, 0, ChConfig.Def_PDictType_WeekParty)
- if curPoint < getPoint:
- return
- worldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyWorldLV, 0, ChConfig.Def_PDictType_WeekParty)
- pointAwardInfo = __GetPointAwardInfo(actBossIpyData.GetPointAward(), worldLV)
- pointAwardDict = pointAwardInfo.get(day, {})
- pointList = pointAwardDict.keys()
- pointList.sort()
- if getPoint not in pointList:
- return
- getIndex = pointList.index(getPoint)
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyAwardRecord % day, 0, ChConfig.Def_PDictType_WeekParty)
- if awardRecord & pow(2, getIndex):
- GameWorld.Log(' 领取周狂欢积分奖励, 已领取 day=%s, getPoint=%s' % (day, getPoint))
- return
- itemList = pointAwardDict[getPoint]
- needSpace = len(itemList)
- packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if needSpace > packSpace:
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
- return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyAwardRecord % day, awardRecord | pow(2, getIndex), ChConfig.Def_PDictType_WeekParty)
- for itemID, itemCnt, isBind in itemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
- ItemControler.NotifyGiveAwardInfo(curPlayer, itemList, "WeekParty")
- SyncWeekPartyPlayerInfo(curPlayer, day)
- DataRecordPack.DR_WeekPartyPoint(curPlayer, day, getPoint)
- return
-
-
-def __GetAwardItem(curPlayer, ipyData, worldLV, times=1):
- awardDict = {}
- awardItemList = __GetAwardItemListByJob(curPlayer, ipyData.GetReward(), worldLV)
- for itemID, itemCnt, isbind in awardItemList:
- if not itemID or not itemCnt:
- continue
- awardDict[itemID] = awardDict.get(itemID, 0) + itemCnt * times
-
- return awardDict
-
-def __GetAwardItemListByJob(curPlayer, rewardItemInfo, worldLV):
- ## 根据职业获取对应奖励
- if not rewardItemInfo:
- return []
- if isinstance(rewardItemInfo, dict):
- keyList = rewardItemInfo.keys()
- # 配世界等级范围的
- if isinstance(keyList[0], tuple) and len(keyList[0]) == 2:
- return __GetAwardItemListByJob(curPlayer, GameWorld.GetDictValueByRangeKey(rewardItemInfo, worldLV), worldLV)
- return rewardItemInfo.get(curPlayer.GetJob(), [])
- return rewardItemInfo
-
-def SyncWeekPartyPlayerInfo(curPlayer, day= -1, templateID= -1):
- #通知当前次数、已领次数
- actWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WeekParty, {})
- state = actWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
- cfgID = actWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
- if not state or not cfgID:
- return
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActWeekParty", cfgID)
- if not actBossIpyData:
- return
- templateIDList = actBossIpyData.GetTemplateID()
- if not templateIDList:
- return
- if day != -1:
- if day >= len(templateIDList):
- return
- syncDayList = [day]
- else:
- syncDayList = range(len(templateIDList))
-
- packData = ChPyNetSendPack.tagMCWeekPartyPlayerInfo()
- packData.DayInfoList = []
- for cday in syncDayList:
- tiemInfo = ChPyNetSendPack.tagMCWeekPartyDayPlayerInfo()
- tiemInfo.DayIndex = cday
- tiemInfo.Point = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyPoint % cday, 0, ChConfig.Def_PDictType_WeekParty)
- tiemInfo.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyAwardRecord % cday, 0, ChConfig.Def_PDictType_WeekParty)
- tiemInfo.TaskList = []
- for tID in templateIDList[cday]:
- if templateID != -1 and tID != templateID:
- continue
- tipyData = IpyGameDataPY.GetIpyGameData('WeekParty', tID)
- if not tipyData:
- continue
- taskInfo = ChPyNetSendPack.tagMCWeekPartyTaskInfo()
- taskInfo.TemplateID = tID
- taskInfo.CurTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyCurTimes % (cday, tID), 0, ChConfig.Def_PDictType_WeekParty)
- taskInfo.GotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyGotTimes % (cday, tID), 0, ChConfig.Def_PDictType_WeekParty)
- tiemInfo.TaskList.append(taskInfo)
- tiemInfo.ACount = len(tiemInfo.TaskList)
- packData.DayInfoList.append(tiemInfo)
- packData.Count = len(packData.DayInfoList)
- NetPackCommon.SendFakePack(curPlayer, packData)
- return
-
-
-def SyncWeekPartyInfo(curPlayer):
- actWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WeekParty, {})
- state = actWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
- cfgID = actWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
- if not cfgID:
- return
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActWeekParty", cfgID)
- if not actBossIpyData:
- return
- templateIDList = actBossIpyData.GetTemplateID()
- if not templateIDList:
- return
- worldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyWorldLV, 0, ChConfig.Def_PDictType_WeekParty)
- pointAwardDict = __GetPointAwardInfo(actBossIpyData.GetPointAward(), worldLV)
- startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(actBossIpyData)
- actInfo = ChPyNetSendPack.tagMCWeekPartyInfo()
- actInfo.Clear()
- actInfo.StartDate = startDateStr
- actInfo.EndtDate = endDateStr
- actInfo.AdvanceMinutes = actBossIpyData.GetAdvanceMinutes()
- actInfo.IsDayReset = actBossIpyData.GetIsDayReset()
- actInfo.ResetType = actBossIpyData.GetResetType()
- actInfo.LimitLV = actBossIpyData.GetLVLimit()
- actInfo.DayInfoList = []
- tidList = []
- for day, dayActList in enumerate(templateIDList):
- dayInfo = ChPyNetSendPack.tagMCWeekPartyDayInfo()
- dayInfo.TemplateList = dayActList
- dayInfo.ActCnt = len(dayActList)
- for tid in dayActList:
- if tid not in tidList:
- tidList.append(tid)
- dayInfo.PItemInfo = []
- for point, itemList in pointAwardDict.get(day, {}).items():
- for itemID, itemCnt, isBind in itemList:
- awardItem = ChPyNetSendPack.tagMCWeekPartyItem()
- awardItem.ItemID = itemID
- awardItem.ItemCnt = itemCnt
- awardItem.IsBind = isBind
- awardItem.NeedPoint = point
- dayInfo.PItemInfo.append(awardItem)
- dayInfo.PCount = len(dayInfo.PItemInfo)
- actInfo.DayInfoList.append(dayInfo)
- actInfo.DayCnt = len(actInfo.DayInfoList)
- actInfo.ActionInfo = []
- for tid in tidList:
- ipyData = IpyGameDataPY.GetIpyGameData('WeekParty', tid)
- if not ipyData:
- GameWorld.ErrLog(' 周狂欢模板表找不到模板%s' % tid)
- continue
- tInfo = ChPyNetSendPack.tagMCWeekPartyAction()
- tInfo.TemplateID = tid
- tInfo.ActionType = ipyData.GetActionType()
- tInfo.TotalTimes = ipyData.GetTotalTimes()
- tInfo.SingleTimes = ipyData.GetSingleTimes()
- tInfo.Point = ipyData.GetPoint()
- tInfo.ItemInfo = []
- awardItemList = __GetAwardItemListByJob(curPlayer, ipyData.GetReward(), worldLV)
- for itemID, itemCnt, isBind in awardItemList:
- awardItem = ChPyNetSendPack.tagMCWeekPartyItem()
- awardItem.ItemID = itemID
- awardItem.ItemCnt = itemCnt
- awardItem.IsBind = isBind
- awardItem.NeedPoint = 0
- tInfo.ItemInfo.append(awardItem)
- tInfo.Count = len(tInfo.ItemInfo)
- actInfo.ActionInfo.append(tInfo)
- actInfo.TCount = len(actInfo.ActionInfo)
- NetPackCommon.SendFakePack(curPlayer, actInfo)
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddBuff.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddBuff.py
deleted file mode 100644
index b9e0c49..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddBuff.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_AddBuff
-# @todo: 增加buff
-#
-# @author: xdh
-# @date 2019-03-19 21:00
-# @version 1.0
-#
-# @note: 增加buff
-#---------------------------------------------------------------------
-#"""Version = 2019-03-19 21:00"""
-#---------------------------------------------------------------------
-import GameWorld
-import SkillShell
-#---------------------------------------------------------------------
-
-## XX
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return ''
-
-
-## 登陆信息
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-def DoResult(curPlayer, callFunName, funResult, tick):
- playerID = curPlayer.GetPlayerID()
- GameWorld.DebugLog("GY_Query_AddBuff funResult=%s" % funResult, playerID)
- buffID = GameWorld.ToIntDef(funResult, 0)
- if not buffID:
- return
- #SkillCommon.AddBuffBySkillType(curPlayer, buffID, tick)
- curSkill = GameWorld.GetGameData().GetSkillBySkillID(buffID)
- if not curSkill:
- return
- SkillShell.__DoLogic_AddBuff(curPlayer, curPlayer, curSkill, False, tick, 0, 0)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Championship.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Championship.py
deleted file mode 100644
index 85d3dfc..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Championship.py
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_Championship
-#
-# @todo:跨服排位
-# @author hxp
-# @date 2022-09-21
-# @version 1.0
-#
-# 详细描述: 跨服排位
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-09-21 21:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerCrossChampionship
-import ChConfig
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_Championship, 0)
- msgData = eval(funResult)
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_Championship msgData=%s" % (msgData), playerID)
- PlayerCrossChampionship.GameServer_Championship(curPlayer, msgData)
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Charm.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Charm.py
deleted file mode 100644
index c537d21..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Charm.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_Charm
-#
-# @todo:魅力
-# @author hxp
-# @date 2021-12-03
-# @version 1.0
-#
-# 详细描述: 魅力
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-12-03 19:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerCharm
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-
- curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
- if not curPlayer or curPlayer.IsEmpty():
- return
-
- PlayerCharm.GameServer_DoLogic_Charm(curPlayer, packCMDList)
- return
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossActAllRecharge.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossActAllRecharge.py
deleted file mode 100644
index 824405d..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossActAllRecharge.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_CrossActAllRecharge
-#
-# @todo:跨服全民充值
-# @author hxp
-# @date 2022-10-11
-# @version 1.0
-#
-# 详细描述: 跨服全民充值
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-10-11 19:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import CrossActAllRecharge
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- msgList = eval(funResult)
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_CrossActAllRecharge %s" % (msgList), playerID)
- CrossActAllRecharge.GameServer_CrossActAllRecharge(curPlayer, msgList)
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossGiveMoney.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossGiveMoney.py
deleted file mode 100644
index 6257f76..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossGiveMoney.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_CrossGiveMoney
-#
-# @todo:跨服获得货币
-# @author hxp
-# @date 2019-01-09
-# @version 1.0
-#
-# 详细描述: 跨服获得货币
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2019-01-09 19:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerControl
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_CrossGiveMoney %s" % funResult, playerID)
- msgInfo = eval(funResult)
- if playerID != msgInfo["PlayerID"]:
- return
- #"PlayerID":curPlayer.GetPlayerID(), "MoneyType":priceType, "Value":value, "GiveType":giveType, "AddDataDict":addDataDict
- priceType = msgInfo["MoneyType"]
- value = msgInfo["Value"]
- giveType = msgInfo["GiveType"]
- addDataDict = msgInfo["AddDataDict"]
- PlayerControl.GiveMoney(curPlayer, priceType, value, giveType, addDataDict)
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossKillBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossKillBoss.py
deleted file mode 100644
index 1d7336c..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossKillBoss.py
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_CrossKillBoss
-#
-# @todo:跨服击杀boss
-# @author hxp
-# @date 2019-01-14
-# @version 1.0
-#
-# 详细描述: 跨服击杀boss
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2019-01-14 16:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import NPCCommon
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- killerExInfo = eval(funResult)
- mapID, bossID = killerExInfo
- GameWorld.Log("GY_Query_CrossKillBoss mapID=%s, bossID=%s" % (mapID, bossID), curPlayer.GetPlayerID())
- if not curPlayer:
- return
- NPCCommon.OnPlayerKillBoss(curPlayer, bossID, mapID, False)
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossPKOverInfo.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossPKOverInfo.py
deleted file mode 100644
index 127c5d2..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossPKOverInfo.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_CrossPKOverInfo
-#
-# @todo:跨服PK结果同步
-# @author hxp
-# @date 2018-12-21
-# @version 1.0
-#
-# 详细描述: 跨服PK结果同步
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-12-21 18:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerCrossRealmPK
-
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- overInfo = eval(funResult)
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_CrossPKOverInfo overInfo=%s" % (overInfo), playerID)
- PlayerCrossRealmPK.CrossServerMsg_PKOverInfo(curPlayer, overInfo)
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossPKSeasonOrder.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossPKSeasonOrder.py
deleted file mode 100644
index 64d5ec7..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossPKSeasonOrder.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_CrossPKSeasonOrder
-#
-# @todo:跨服PK赛季名次
-# @author hxp
-# @date 2018-12-25
-# @version 1.0
-#
-# 详细描述: 跨服PK赛季名次
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-12-25 21:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerCrossRealmPK
-
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- msgList = eval(funResult)
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_CrossPKSeasonOrder msgList=%s" % (msgList), playerID)
- PlayerCrossRealmPK.GameServer_CrossPKSeasonOrder(curPlayer, msgList)
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossPutInItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossPutInItem.py
deleted file mode 100644
index 720824e..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossPutInItem.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_CrossPutInItem
-#
-# @todo:跨服获得物品
-# @author hxp
-# @date 2019-01-09
-# @version 1.0
-#
-# 详细描述: 跨服获得物品
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2019-01-09 19:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import ItemCommon
-import ItemControler
-import PlayerControl
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_CrossPutInItem %s" % funResult, playerID)
- itemInfo = eval(funResult)
- if playerID != itemInfo["PlayerID"]:
- return
- itemData = itemInfo["ItemData"]
- packIndex = itemInfo["PackIndex"]
- event = itemInfo["Event"]
- itemID, itemCount, isAuctionItem, itemUserData = itemData
- curItem = ItemCommon.CreateSingleItem(itemID, itemCount, isAuctionItem)
- if not curItem:
- return
- if itemUserData and itemUserData != "{}":
- curItem.SetUserData(itemUserData, len(itemUserData))
-
- if ItemControler.PlayerItemControler(curPlayer).PutInItem(packIndex, curItem, event=event):
- return
-
- # 放入失败发邮件
- GameWorld.Log("收到跨服获得物品,放入失败,直接发邮件! itemInfo=%s" % str(itemInfo), playerID)
- addItemList = [{"ItemID":itemID, "Count":itemCount, "IsAuctionItem":isAuctionItem, "UserData":itemUserData}]
- PlayerControl.SendMailByKey("", [playerID], addItemList, detail={"CrossPutInItem":1, "Event":event})
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossServerReceiveMsg.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossServerReceiveMsg.py
deleted file mode 100644
index 04e6147..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossServerReceiveMsg.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_CrossServerReceiveMsg
-#
-# @todo:跨服服务器收到子服信息
-# @author hxp
-# @date 2019-01-10
-# @version 1.0
-#
-# 详细描述: 跨服服务器收到子服信息
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2019-01-10 15:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import ShareDefine
-import ChPlayer
-
-#------------------------------------------------------------------------------
-
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_CrossServerReceiveMsg %s" % funResult, playerID)
- msgType, msgData, serverGroupID = eval(funResult)
-
- if msgType == ShareDefine.ClientServerMsg_Reborn:
- ChPlayer.ClientServerMsg_Reborn(curPlayer, msgData, serverGroupID, tick)
-
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossSetPlayerAttrValue.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossSetPlayerAttrValue.py
deleted file mode 100644
index 869c296..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossSetPlayerAttrValue.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_CrossSetPlayerAttrValue
-#
-# @todo:设置跨服玩家属性
-# @author hxp
-# @date 2019-01-14
-# @version 1.0
-#
-# 详细描述: 设置跨服玩家属性
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2019-01-14 16:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import CrossRealmPlayer
-
-#------------------------------------------------------------------------------
-
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_CrossSetPlayerAttrValue %s" % funResult, playerID)
- playerSetInfoList = eval(funResult)
- CrossRealmPlayer.ClientServerMsg_SetPlayerAttrValue(curPlayer, playerSetInfoList)
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossYaomoBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossYaomoBoss.py
deleted file mode 100644
index 1b9ee68..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossYaomoBoss.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_CrossYaomoBoss
-#
-# @todo:跨服妖魔Boss
-# @author hxp
-# @date 2022-11-11
-# @version 1.0
-#
-# 详细描述: 跨服妖魔Boss
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-11-11 15:30"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import GameWorld
-import PlayerCrossYaomoBoss
-
-#------------------------------------------------------------------------------
-## 执行逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_CrossYaomoBoss, 0)
- msgData = eval(funResult)
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_CrossYaomoBoss msgData=%s" % (msgData), playerID)
- PlayerCrossYaomoBoss.GameServer_CrossYaomoBoss_DoResult(curPlayer, msgData)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_DelItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_DelItem.py
deleted file mode 100644
index 1383433..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_DelItem.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_DelItem
-# @todo: 删除物品
-#
-# @author: xdh
-# @date 2016-08-12 21:00
-# @version 1.0
-#
-# @note: 删除物品
-#---------------------------------------------------------------------
-#"""Version = 2016-08-12 21:00"""
-#---------------------------------------------------------------------
-import GameWorld
-import IPY_GameWorld
-import ItemCommon
-#---------------------------------------------------------------------
-
-## XX
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return ''
-
-
-## 登陆信息
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-def DoResult(curPlayer, callFunName, funResult, tick):
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_DelItem funResult=%s" % funResult, playerID)
- result = eval(funResult)
-
- if len(result) !=2:
- return
-
- needItemList, eventName = result
- itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- itemInfoList = []
- for itemId, itemNum in needItemList:
- isEnough, indexList = ItemCommon.GetItem_FromPack_ByID(itemId, itemPack, itemNum)
- if not isEnough:
- GameWorld.DebugLog("%s item(%s) isn't enough" % (eventName, itemId), curPlayer.GetPlayerID())
- continue
- itemInfoList.append((itemId, itemNum, indexList))
-
- for itemId, itemNum, indexList in itemInfoList:
- if not indexList:
- continue
- ItemCommon.ReduceItem(curPlayer, itemPack, indexList, itemNum, False, eventName)
-
-
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFB.py
deleted file mode 100644
index 0b2fd4e..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFB.py
+++ /dev/null
@@ -1,256 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_EnterFB
-#
-# @todo:进入副本
-# @author hxp
-# @date 2014-04-16
-# @version 1.4
-#
-# 详细描述: 进入副本
-# @change: "2014-04-16 18:00" hxp 进入副本修改
-# @change: "2015-03-21 16:00" hxp 进入战盟家园
-# @change: "2015-03-25 21:30" hxp 进入战盟家园增加延迟关闭处理
-# @change: "2015-06-29 17:20" ljd 经典战役
-#
-#---------------------------------------------------------------------
-#"""Version = 2015-06-29 17:20"""
-#---------------------------------------------------------------------
-
-#导入
-import FBLogic
-import IPY_GameWorld
-import PlayerControl
-import GameWorld
-import FBCommon
-import ChConfig
-import random
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-(
-MapInfo_MapID, # 目标地图信息 - 地图id
-MapInfo_LineID, # 目标地图信息 - 场次分线id
-) = range(2)
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令 [ ]
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- GameWorld.Log("GY_Query_EnterFB DoLogic() query_Type=%s,query_ID=%s,packCMDList=%s,tick=%s" % \
- (query_Type, query_ID, packCMDList, tick))
-
-
- if not packCMDList or len(packCMDList) < 2:
- GameWorld.Log(" DoLogic() return []")
- return []
-
- tagMapID = packCMDList[0] # 目标地图id
- tagMapLineID = packCMDList[1] # 目标地图线路属性,从0开始
- resultLineID = -1 # 结果lineID
- hpPer = -1
- notifyMark = 'GeRen_chenxin_500807' #不能进的提示
- if tagMapID in ChConfig.Def_MapID_LineIDToPropertyID:
- GameWorld.Log(" DoLogic() tagMapID in ChConfig.Def_MapID_LineIDToPropertyID")
- tagMapPropertyID = tagMapLineID + 1 # 因为PropertyID默认是0,所以使用时从1开始
-
- resultLineID = -1 # 结果lineID
-
- gameWorldManager = GameWorld.GetGameWorld()
- maxPlayerCount = FBLogic.GetFBLineMaxPlayerCount(tagMapID, tagMapLineID)
-
- GameWorld.Log(" DoLogic() tagMapID=%s,tagMapLineID=%s,maxPlayerCount=%s" % (tagMapID, tagMapLineID,maxPlayerCount))
- if not maxPlayerCount:
- pass
- firstEmptyGameWorld = None
- sameLineGameWorldList = [] #人数未满的线路列表
- fullLineGameWorldList = [] #人数已满的线路列表
- for index in xrange(gameWorldManager.GetGameWorldCount()):
- gameWorld = IPY_GameWorld.IPY_GameWorld(index)
- playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(index)
- propertyID = gameWorld.GetPropertyID()
- curPlayerCnt = playerManager.GetPlayerCount()
-# GameWorld.Log(" DoLogic() check gameworld index=%s,propertyID=%s,playerCount=%s" \
-# % (index, propertyID, curPlayerCnt))
- if propertyID == 0 and not firstEmptyGameWorld:
- firstEmptyGameWorld = gameWorld
- # 如果不是同一线路属性的,则跳过
- # 如果当前人数超过额定人数,则跳过
- if propertyID == tagMapPropertyID:
- if curPlayerCnt < maxPlayerCount:
- sameLineGameWorldList.append([gameWorld, curPlayerCnt])
- else:
- fullLineGameWorldList.append([gameWorld, curPlayerCnt])
- findGameWorld = None
- if sameLineGameWorldList:
- #若是进入过副本则随机一个,否则选人数最少的一个
- enterCnt = packCMDList[2]
- if enterCnt:
- #GameWorld.DebugLog('DoLogic() sameLineGameWorldList=%s'%len(sameLineGameWorldList))
- findGameWorld = random.choice(sameLineGameWorldList)[0]
- else:
- sameLineGameWorldList.sort(key=lambda asd:asd[1])
- findGameWorld = sameLineGameWorldList[0][0]
-
- elif firstEmptyGameWorld:
- findGameWorld = firstEmptyGameWorld
- elif fullLineGameWorldList:
- #线路都满人了则取个人数相对较少的
- fullLineGameWorldList.sort(key=lambda asd:asd[1])
- findGameWorld = fullLineGameWorldList[0][0]
-
- if findGameWorld:
- if findGameWorld.GetPropertyID() == 0:
- findGameWorld.SetFBFirstOpen(1) # 开启副本
- findGameWorld.SetPropertyID(tagMapPropertyID)
- resultLineID = findGameWorld.GetLineID()
- GameWorld.Log(" DoLogic() check ok!resultLineID=%s" % (resultLineID))
-
-
-#===================================================================================================
-# # 战盟家园
-# elif tagMapID == ChConfig.Def_MapID_FamilyHome:
-#
-# if len(packCMDList) < 4:
-# GameWorld.DebugLog(" 请求进入战盟家园:无目标战盟ID!")
-# return
-#
-# tagFamilyID = packCMDList[2]
-# tagFamilyHomeLV = packCMDList[3]
-# if tagFamilyID <= 0:
-# GameWorld.DebugLog(" 请求进入战盟家园:目标战盟ID错误=%s!" % tagFamilyID)
-# return
-#
-# resultLineID = -1 # 结果lineID
-#
-# gameWorldManager = GameWorld.GetGameWorld()
-# firstNotPropertyGameWorld = None
-#
-# for index in range(gameWorldManager.GetGameWorldCount()):
-# gameWorld = IPY_GameWorld.IPY_GameWorld(index)
-# playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(index)
-# propertyID = gameWorld.GetPropertyID()
-#
-# # 不可进入
-# if gameWorld.GetCloseFBTick() > 0:
-# continue
-#
-# if gameWorld.GetOpenState() == IPY_GameWorld.fbosWaitForClose:
-# continue
-#
-# if propertyID <= 0 and firstNotPropertyGameWorld == None:
-# firstNotPropertyGameWorld = gameWorld
-#
-# if propertyID == tagFamilyID:
-# resultLineID = gameWorld.GetLineID()
-# GameWorld.DebugLog(" 找到已经存在的战盟家园: tagFamilyID=%s,resultLineID=%s" % (tagFamilyID, resultLineID))
-# break
-#
-# if resultLineID < 0 and firstNotPropertyGameWorld != None and firstNotPropertyGameWorld.GetPropertyID() <= 0:
-# firstNotPropertyGameWorld.SetPropertyID(tagFamilyID)
-# firstNotPropertyGameWorld.SetFBFirstOpen(1) # 开启副本
-# resultLineID = firstNotPropertyGameWorld.GetLineID()
-# GameWorld.GetGameWorld().SetGameWorldDict("FamilyHomeLV_%s" % tagFamilyID, tagFamilyHomeLV)
-# GameWorld.DebugLog(" 创建新战盟家园: tagFamilyID=%s,tagFamilyHomeLV=%s,resultLineID=%s"
-# % (tagFamilyID, tagFamilyHomeLV, resultLineID))
-#===================================================================================================
- elif tagMapID in []:
- tagMapPropertyID = tagMapLineID + 1 # 因为PropertyID默认是0,所以使用时从1开始
- resultLineID = -1 # 结果lineID
-
- gameWorldManager = GameWorld.GetGameWorld()
- GameWorld.Log(" DoLogic() tagMapID=%s,tagMapLineID=%s" % (tagMapID, tagMapLineID))
- findGameWord = None
- findPlayerManager = None
- for index in range(gameWorldManager.GetGameWorldCount()):
- gameWorld = IPY_GameWorld.IPY_GameWorld(index)
- playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(index)
- propertyID = gameWorld.GetPropertyID()
- if gameWorld.GetCloseFBTick() > 0:
- #正在关闭 不可进
- continue
-
-# GameWorld.Log(" DoLogic() check gameworld index=%s,propertyID=%s,playerCount=%s" \
-# % (index, propertyID, playerManager.GetPlayerCount()))
- # 如果不是同一线路属性的,则跳过
- if propertyID == tagMapPropertyID:
- findGameWord = gameWorld
- findPlayerManager = playerManager
- break
- if not findGameWord and propertyID == 0:
- findGameWord = gameWorld
- findPlayerManager = playerManager
-
- if findGameWord:
- if findGameWord.GetPropertyID() == 0:
- findGameWord.SetFBFirstOpen(1) # 开启副本
- findGameWord.SetPropertyID(tagMapPropertyID)
- resultLineID = findGameWord.GetLineID()
-
- else:
- #resultLineID = tagMapLineID
- resultLineID = 0
-
- return ['%s' % packCMDList, '%d' % resultLineID, notifyMark, hpPer]
-#---------------------------------------------------------------------
-
-
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-
- #还原格式 '[]' -> []
- funResult = eval(funResult)
- if not funResult or len(funResult) < 3:
- GameWorld.Log("GY_Query_EnterFB DoResult() return []")
- return
-
- tagMapInfo = eval(funResult[0])
- backFBID = int(funResult[1]) # 返回的切图线路id(0~N)
- notifyMark = funResult[2]
- hpPer = funResult[3]
- mapID = tagMapInfo[0] # 请求的切图id
- funcLineID = tagMapInfo[1] # 请求的场次线路id(0~6)
- GameWorld.Log("GY_Query_EnterFB DoResult() mapID=%s,funcLineID=%s,backFBID=%s,hpPer=%s" % (mapID, funcLineID, backFBID, hpPer), curPlayer.GetPlayerID())
-
- if backFBID == -1: # 未找到可进入的分线,则返回,提示人数已满
- PlayerControl.NotifyCode(curPlayer, notifyMark)
- return
-
- if curPlayer.GetMapID() == mapID:
- #已在该地图就不让进了
- return
-
- # 非协助玩家进入需要判断boss剩余血量是否允许进入
- if hpPer >= 0 and not PlayerControl.GetAssistTagPlayerID(curPlayer):
- minHPPer = 15
- if hpPer < minHPPer:
- GameWorld.DebugLog("boss血量少于可进入的最低血量百分比,无法进入!hpPer=%s,minHPPer=%s" % (hpPer, minHPPer))
- PlayerControl.NotifyCode(curPlayer, "DemonJar_Text4")
- return
-
- # 请求进入FB点
- ipyEnterPosInfo = FBCommon.GetFBLineEnterPosInfo(mapID, funcLineID)
- retPos = FBLogic.OnGetFBEnterPos(curPlayer, mapID, funcLineID, ipyEnterPosInfo, tick)
-
- if not retPos:
- return
-
- PlayerControl.PlayerResetWorldPosFB(curPlayer, mapID, retPos[0], retPos[1], backFBID, funcLineID=funcLineID)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBSetFaction.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBSetFaction.py
deleted file mode 100644
index 756b9fa..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBSetFaction.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_EnterFBSetFaction
-#
-# @todo:进入副本且设置阵营
-# @author hxp
-# @date 2015-10-22
-# @version 1.0
-#
-# 详细描述: 进入副本且设置阵营
-#
-#---------------------------------------------------------------------
-#"""Version = 2015-10-22 23:00"""
-#---------------------------------------------------------------------
-
-
-#导入
-import FBLogic
-import GameWorld
-import PlayerControl
-import FBCommon
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令 [ ]
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-#---------------------------------------------------------------------
-
-
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- mapID, lineID, faction = eval(funResult)
- GameWorld.Log("GY_Query_EnterFBSetFaction %s" % str(funResult), curPlayer.GetPlayerID())
-
- curPlayer.SetFaction(faction)
-
- # 请求进入FB点
- ipyEnterPosInfo = FBCommon.GetFBLineEnterPosInfo(mapID, lineID)
- retPos = FBLogic.OnGetFBEnterPos(curPlayer, mapID, lineID, ipyEnterPosInfo, tick)
-
- if not retPos:
- return
-
- # 传送逻辑
- PlayerControl.PlayerResetWorldPosFB(curPlayer, mapID, retPos[0], retPos[1], 0)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBTeamAsk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBTeamAsk.py
deleted file mode 100644
index e246d1b..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBTeamAsk.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_EnterFBTeamAsk
-#
-# @todo:组队进入副本请求
-# @author hxp
-# @date 2017-11-09
-# @version 1.0
-#
-# 详细描述: 队长发起进入副本后,验证各个队员是否可以进入该副本
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2017-11-09 22:00"""
-#-------------------------------------------------------------------------------
-
-#导入
-import FBLogic
-import PlayerControl
-import GameWorld
-import FBCommon
-import ChConfig
-#---------------------------------------------------------------------
-
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令 [ ]
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- GameWorld.Log("GY_Query_EnterFBTeamAsk DoLogic() query_Type=%s,query_ID=%s,packCMDList=%s,tick=%s" %
- (query_Type, query_ID, packCMDList, tick))
-
- curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
- if not curFindPlayer or curFindPlayer.IsEmpty():
- return ""
-
- if not packCMDList or len(packCMDList) != 5:
- GameWorld.Log(" DoLogic() return []")
- return ""
-
- #teamID, askVer, askType, askMapID, askMapEx
- askMapID = packCMDList[3] # 目标地图id
- askMapEx = packCMDList[4] # 目标地图线路属性,从0开始
-
- #进入副本通用检查
- fbIpyData = FBCommon.GetFBIpyData(askMapID)
- fbLineIpyData = FBCommon.GetFBLineIpyData(askMapID, askMapEx)
- ret = PlayerControl.CheckMoveToFB(curFindPlayer, askMapID, askMapEx, fbIpyData, fbLineIpyData, tick, False, True)
- return packCMDList + [query_ID, ret, curFindPlayer.GetName()]
-
-
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- resultInfo = eval(funResult)
- mapID, lineID = resultInfo[:2]
- averageLV, maxLV, playerCnt = 0, 0, 0
- if len(resultInfo) == 5:
- averageLV, maxLV, playerCnt = resultInfo[2:5]
- GameWorld.Log("GY_Query_EnterFBTeamAsk mapID=%s,lineID=%s,averageLV=%s,maxLV=%s,playerCnt=%s,funResult=%s"
- % (mapID, lineID, averageLV, maxLV, playerCnt, str(funResult)), curPlayer.GetPlayerID())
-
- if maxLV > 0:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TeamFBAverageLV, averageLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TeamFBMaxLV, maxLV)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TeamFBPlayerCnt, playerCnt)
-
- # 请求进入FB点
- ipyEnterPosInfo = FBCommon.GetFBLineEnterPosInfo(mapID, lineID)
- retPos = FBLogic.OnGetFBEnterPos(curPlayer, mapID, lineID, ipyEnterPosInfo, tick)
-
- if not retPos:
- return
-
- # 传送逻辑
- PlayerControl.PlayerResetWorldPosFB(curPlayer, mapID, retPos[0], retPos[1], funcLineID=lineID)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_FamilyCTGAssist.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_FamilyCTGAssist.py
deleted file mode 100644
index a6f419a..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_FamilyCTGAssist.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_FamilyCTGAssist
-#
-# @todo:仙盟充值互助
-# @author hxp
-# @date 2024-06-21
-# @version 1.0
-#
-# 详细描述: 仙盟充值互助
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2024-06-21 19:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerActFamilyCTGAssist
-import ChConfig
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令 [ ]
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return ""
-
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_FamilyCTGAssist, 0)
- GameWorld.DebugLog("GY_Query_FamilyCTGAssist DoResult %s" % str(funResult), curPlayer.GetPlayerID())
- if funResult != "":
- PlayerActFamilyCTGAssist.GameServer_FamilyCTGAssist(curPlayer, eval(funResult), tick)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_FamilyGCZ.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_FamilyGCZ.py
deleted file mode 100644
index 645f194..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_FamilyGCZ.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_FamilyGCZ
-#
-# @todo:仙盟攻城战
-# @author hxp
-# @date 2025-04-09
-# @version 1.0
-#
-# 详细描述: 仙盟攻城战
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2025-04-09 16:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerActFamilyGCZ
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令 [ ]
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return ""
-
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- GameWorld.DebugLog("GY_Query_FamilyGCZ DoResult %s" % str(funResult), curPlayer.GetPlayerID())
- if funResult != "":
- PlayerActFamilyGCZ.GameServer_FamilyGCZ(curPlayer, eval(funResult), tick)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GetPlayerLVAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GetPlayerLVAward.py
deleted file mode 100644
index 73a24ea..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GetPlayerLVAward.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_GetPlayerLVAward
-#
-# @todo:等级奖励领奖
-# @author xdh
-# @date 2018-03-07
-# @version 1.0
-#
-# 详细描述: 等级奖励领奖
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-03-07 17:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerLVAward
-import ChConfig
-
-#---------------------------------------------------------------------
-
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令 [ ]
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return ""
-
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- GameWorld.DebugLog("GY_Query_GetPlayerLVAward funResult=%s" % funResult)
- curPlayer.SetDict(ChConfig.Def_PlayerKey_LvAwardQueryState, 0)
- awardID = eval(funResult)
- if awardID == None:
- return
- PlayerLVAward.GiveLVAward(curPlayer, awardID)
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GiveAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GiveAward.py
deleted file mode 100644
index 33ce9c4..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GiveAward.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_GiveAward
-#
-# @todo:给奖励
-# @author hxp
-# @date 2024-07-02
-# @version 1.0
-#
-# 详细描述: 给奖励
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2024-07-02 16:30"""
-#-------------------------------------------------------------------------------
-
-import PlayerControl
-import ItemControler
-import GameWorld
-
-#逻辑实现
-## 玩家请求领取奖励
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return ''
-
-#---------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- GameWorld.Log("GY_Query_GiveAward funResult=%s" % str(funResult), curPlayer.GetPlayerID())
- if funResult == "":
- return
- eventName, moneyInfo, itemList, drDict = eval(funResult)
-
- if moneyInfo:
- for moneyType, moneyValue in moneyInfo.items():
- PlayerControl.GiveMoney(curPlayer, moneyType, moneyValue, eventName, drDict)
-
- ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=[eventName, False, drDict])
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_LoginData.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_LoginData.py
deleted file mode 100644
index 8ad47a3..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_LoginData.py
+++ /dev/null
@@ -1,118 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_LoginData
-# @todo: 查询平台登陆信息
-#
-# @author: Alee
-# @date 2014-03-05 16:00
-# @version 1.6
-#
-# @note: 查询平台登陆信息
-# @change: "2014-03-13 18:40" Alee 迅雷登陆方式和记录修改
-# @change: "2014-08-14 11:00" hxp 登录信息处理
-# @change: "2015-06-08 20:30" hxp 增加channelCode
-# @change: "2015-07-13 14:00" hxp 增加黄/蓝钻支持
-# @change: "2016-07-18 19:00" hxp 增加account_type
-# @change: "2016-09-23 21:00" hxp tencent平台设置来源pf识别
-#---------------------------------------------------------------------
-#"""Version = 2016-09-23 21:00"""
-#---------------------------------------------------------------------
-import GameWorld
-import DataRecordPack
-import PlayerControl
-import ChConfig
-#---------------------------------------------------------------------
-
-## XX
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return ''
-
-
-## 登陆信息
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-def DoResult(curPlayer, callFunName, funResult, tick):
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_LoginData funResult=%s" % funResult, playerID)
- result = eval(funResult)
- if result == []:
- return
-
- if result[0] == 'xunlei':
- #[xunlei,迅雷VIP,VIP等级,金卡VIP,金卡等级, 登录客户端类型]
-# PlayerThunder.SetIsThunderPlayer(curPlayer, 1)
-# PlayerThunder.SetIsThunderVIP(curPlayer, result[1])
-# PlayerThunder.SetThunderVIPLV(curPlayer, result[2])
-# PlayerThunder.SetIsThunderGoldVIP(curPlayer, result[3])
-# PlayerThunder.SetThunderGoldVIPLV(curPlayer, result[4])
-# PlayerThunder.Sync_ThunderPlayerInfo(curPlayer)
-#
-# PlayerThunder.DoThunderPlayerLogin(curPlayer)
-# PlayerThunder.DoThunderPlayerOnDay(curPlayer)
-#
-# if curPlayer.GetDictByKey("ThunderLogin") == 1:
-# DataRecordPack.DR_ThunderFirstLogin(curPlayer, result[5])
-#
-# DataRecordPack.DR_ThunderPlayerLogin(curPlayer, result[5])
- return
-
- # 设置客户端登录类型
- clientType = int(result[0])
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginClientType, clientType)
-
- channelCode = result[1]
- GameWorld.SetPlayerChannelCode(curPlayer, channelCode)
-
- pid = result[2]
- platform = result[3]
- account_type = result[4]
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PlayerFromPID, pid)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_Account_Type, account_type)
-
- if len(result) <= 5:
- __ResetOperateInfo(curPlayer)
- return
-
- extendInfo = result[5:]
- # 当 pf 为 qzone、pengyou、qplus 时,发送黄钻信息
- if platform in ["qzone", "pengyou", "qplus"]:
- isYellowVIP, isYellowYearVIP, isYellowHighVIP, yellowVIPLV = extendInfo
- operateInfo = int("%02d%s%s%s" % (yellowVIPLV, isYellowHighVIP, isYellowYearVIP, isYellowVIP))
- curPlayer.SetOperateInfo(operateInfo)
- GameWorld.Log(" platform=%s, SetPlatVIPData=%s" % (platform, operateInfo), playerID)
-
- # 当 pf 为 qqgame、3366 时,发送蓝钻信息
- elif platform in ["qqgame", "3366"]:
- isBlueVIP, isBlueYearVIP, isBlueHighVIP, blueVIPLV = extendInfo
- platVIPData = int("%02d%s%s%s" % (blueVIPLV, isBlueHighVIP, isBlueYearVIP, isBlueVIP))
- curPlayer.SetOperateInfo(platVIPData)
- GameWorld.Log(" platform=%s, SetPlatVIPData=%s" % (platform, platVIPData), playerID)
-
- else:
- __ResetOperateInfo(curPlayer)
- GameWorld.Log(" platform=%s, SetPlatVIPData=0" % platform, playerID)
-
-
- return
-
-## 重置玩家运营平台信息
-# @param curPlayer
-# @return None
-def __ResetOperateInfo(curPlayer):
- if curPlayer.GetOperateInfo() != 0:
- curPlayer.SetOperateInfo(0)
- GameWorld.Log(" __ResetOperateInfo=0", curPlayer.GetPlayerID())
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Love.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Love.py
deleted file mode 100644
index b0fe747..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Love.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_Love
-#
-# @todo:情缘
-# @author hxp
-# @date 2021-11-09
-# @version 1.0
-#
-# 详细描述: 情缘
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-11-09 20:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerLove
-import ChConfig
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-
- curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
- if not curPlayer or curPlayer.IsEmpty():
- return
-
- GameWorld.Log("GameServer_Love_DoLogic msgData=%s" % (packCMDList), query_ID)
- PlayerLove.GameServer_Love_DoLogic(curPlayer, packCMDList)
- return
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_Love, 0)
- msgData = eval(funResult)
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GameServer_Love_DoResult msgData=%s" % (msgData), playerID)
- PlayerLove.GameServer_Love_DoResult(curPlayer, msgData)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_LuckyCloudBuy.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_LuckyCloudBuy.py
deleted file mode 100644
index c066eca..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_LuckyCloudBuy.py
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_LuckyCloudBuy
-#
-# @todo:幸运云购
-# @author hxp
-# @date 2021-10-21
-# @version 1.0
-#
-# 详细描述: 幸运云购
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-10-21 17:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerLuckyCloudBuy
-import ChConfig
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_LuckyCloudBuy, 0)
- msgData = eval(funResult)
- playerID = curPlayer.GetPlayerID()
- GameWorld.Log("GY_Query_LuckyCloudBuy msgData=%s" % (msgData), playerID)
- PlayerLuckyCloudBuy.GameServer_LuckyCloudBuy(curPlayer, msgData)
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NPCCnt.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NPCCnt.py
deleted file mode 100644
index be16897..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NPCCnt.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_NPCCnt
-#
-# @todo:查询地图NPC数量
-# @author xdh
-# @date 2018-08-20
-# @version 1.0
-#
-# 详细描述: 查询地图NPC数量
-#
-#---------------------------------------------------------------------
-"""Version = 2018-08-20 17:00"""
-
-
-#导入
-import NPCCommon
-import GameWorld
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令 [ ]
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- GameWorld.DebugLog("GY_Query_NPCCnt DoLogic() query_Type=%s,query_ID=%s,packCMDList=%s,tick=%s" % \
- (query_Type, query_ID, packCMDList, tick))
-
- if not packCMDList or len(packCMDList) < 3:
- GameWorld.DebugLog(" DoLogic() return []")
- return []
-
- tagMapID = packCMDList[0] # 目标地图id
- tagLineID = packCMDList[1] # 线路id
- queryNPCIDList = packCMDList[2] # 查询的NPCID列表
-
- npcInfoDict = NPCCommon.GetNPCCntInfo(queryNPCIDList, tick)
-
- return [tagMapID, npcInfoDict]
-#---------------------------------------------------------------------
-
-
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- GameWorld.DebugLog("GY_Query_NPCCnt DoResult() funResult=%s" % str(funResult))
- #还原格式 '[]' -> []
- funResult = eval(funResult)
- if not funResult or len(funResult) < 2:
- return
-
- tagMapID = funResult[0]
- npcInfoDict = funResult[1]
- # 发包
- NPCCommon.SyncNPCCntInfo(curPlayer, tagMapID, npcInfoDict)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NPCCntCross.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NPCCntCross.py
deleted file mode 100644
index 326eaec..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NPCCntCross.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_NPCCntCross
-#
-# @todo:查询跨服地图NPC数量信息
-# @author hxp
-# @date 2019-01-11
-# @version 1.0
-#
-# 详细描述: 查询跨服地图NPC数量信息
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2019-01-11 20:30"""
-#-------------------------------------------------------------------------------
-
-import NPCCommon
-import GameWorld
-import ShareDefine
-
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令 [ ]
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDInfo, tick):
- GameWorld.DebugLog("GY_Query_NPCCntCross %s" % (packCMDInfo))
-
- serverGroupID = packCMDInfo["ServerGroupID"]
- copyMapID = packCMDInfo["CopyMapID"]
-
- npcCntDict = NPCCommon.GetNPCCntInfo([], tick, copyMapID) # 跨服的一次查全部,都是遍历一遍,不过滤npcID
- retMsg = {"Result":npcCntDict}
- retMsg.update(packCMDInfo)
- GameWorld.SendMsgToClientServer(ShareDefine.CrossServerMsg_NPCInfoRet, retMsg, [serverGroupID])
- return
-#---------------------------------------------------------------------
-
-
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NPCInfo.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NPCInfo.py
deleted file mode 100644
index 1c3115a..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NPCInfo.py
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_NPCInfo
-#
-# @todo:查询地图NPC信息
-# @author hxp
-# @date 2014-12-17
-# @version 1.1
-#
-# @change: "2015-01-16 17:00" hxp 地图信息查询增加线路id
-#
-# 详细描述: 查询地图NPC信息
-#
-#---------------------------------------------------------------------
-"""Version = 2015-01-16 17:00"""
-
-
-#导入
-import NPCCommon
-import GameWorld
-import IPY_GameWorld
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令 [ ]
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- GameWorld.DebugLog("GY_Query_NPCInfo DoLogic() query_Type=%s,query_ID=%s,packCMDList=%s,tick=%s" % \
- (query_Type, query_ID, packCMDList, tick))
-
- if not packCMDList or len(packCMDList) < 3:
- GameWorld.DebugLog(" DoLogic() return []")
- return []
-
- tagMapID = packCMDList[0] # 目标地图id
- tagLineID = packCMDList[1] # 线路id
- queryNPCIDList = packCMDList[2] # 查询的NPCID列表
-
- npcInfoDict = NPCCommon.GetNPCInfo(queryNPCIDList, tick)
- gameWorld = IPY_GameWorld.IPY_GameWorld(tagLineID)
- playerManager = gameWorld.GetMapCopyPlayerManagerByFbIndex(tagLineID)
- playerCnt = 0
- if playerManager:
- playerCnt = playerManager.GetPlayerCount()
-
- return [tagMapID, playerCnt, npcInfoDict]
-#---------------------------------------------------------------------
-
-
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- GameWorld.DebugLog("GY_Query_NPCInfo DoResult() funResult=%s" % str(funResult))
- #还原格式 '[]' -> []
- funResult = eval(funResult)
- if not funResult or len(funResult) < 3:
- return
-
- tagMapID = funResult[0]
- playerCnt = funResult[1]
- npcInfoDict = funResult[2]
- # 发包
- NPCCommon.SyncNPCInfo(curPlayer, tagMapID, playerCnt, npcInfoDict)
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_OpenFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_OpenFB.py
deleted file mode 100644
index 3dbeb61..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_OpenFB.py
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_OpenFB
-#
-# @todo:开启副本线路
-# @author hxp
-# @date 2019-04-11
-# @version 1.0
-#
-# 详细描述: 开启副本线路
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2019-04-11 14:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import IPY_GameWorld
-import PyGameData
-
-
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param paramList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, paramList, tick):
- copyMapID, propertyID, funcLineDataCache = paramList
-
- gameWorldManager = GameWorld.GetGameWorld()
- maxCopyCount = gameWorldManager.GetGameWorldCount()
- if copyMapID >= maxCopyCount:
- GameWorld.ErrLog("GY_Query_OpenFB 虚拟分线不存在! copyMapID=%s, propertyID=%s, maxCopyCount=%s"
- % (copyMapID, propertyID, maxCopyCount))
- return
-
- tagGameWorld = IPY_GameWorld.IPY_GameWorld(copyMapID)
- if tagGameWorld.GetOpenState() != IPY_GameWorld.fbosClosed:
- GameWorld.ErrLog("GY_Query_OpenFB 虚拟分线已经是开启状态! copyMapID=%s, propertyID=%s, GetPropertyID=%s"
- % (copyMapID, propertyID, tagGameWorld.GetPropertyID()))
- return
-
- if tagGameWorld.GetFBFirstOpen():
- GameWorld.ErrLog("GY_Query_OpenFB 虚拟分线已经在开启中! copyMapID=%s, propertyID=%s, GetPropertyID=%s"
- % (copyMapID, propertyID, tagGameWorld.GetPropertyID()))
- return
-
- GameWorld.Log("GY_Query_OpenFB copyMapID=%s, propertyID=%s" % (copyMapID, propertyID))
- tagGameWorld.SetFBFirstOpen(1) # 开启副本
- tagGameWorld.SetPropertyID(propertyID)
- if funcLineDataCache:
- mapID = gameWorldManager.GetRealMapID()
- key = (mapID, copyMapID)
- PyGameData.g_crossFuncLineDataCache[key] = funcLineDataCache
- return ''
-
-
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_OpenFBEx.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_OpenFBEx.py
deleted file mode 100644
index b330dbe..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_OpenFBEx.py
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_OpenFBEx
-#
-# @todo:开启副本线路
-# @author hxp
-# @date 2022-09-21
-# @version 1.0
-#
-# 详细描述: 开启副本线路
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-09-21 21:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import IPY_GameWorld
-
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param paramList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, paramList, tick):
-
- gameWorldManager = GameWorld.GetGameWorld()
- maxCopyCount = gameWorldManager.GetGameWorldCount()
- GameWorld.Log("GY_Query_OpenFBEx! maxCopyCount=%s, paramList=%s" % (maxCopyCount, paramList))
-
- for copyMapID, propertyID in paramList:
- if copyMapID >= maxCopyCount:
- GameWorld.ErrLog("GY_Query_OpenFBEx 虚拟分线不存在! copyMapID=%s, propertyID=%s, maxCopyCount=%s"
- % (copyMapID, propertyID, maxCopyCount))
- continue
-
- tagGameWorld = IPY_GameWorld.IPY_GameWorld(copyMapID)
- if tagGameWorld.GetOpenState() != IPY_GameWorld.fbosClosed:
- GameWorld.ErrLog("GY_Query_OpenFBEx 虚拟分线已经是开启状态! copyMapID=%s, propertyID=%s, GetPropertyID=%s"
- % (copyMapID, propertyID, tagGameWorld.GetPropertyID()))
- continue
-
- if tagGameWorld.GetFBFirstOpen():
- GameWorld.ErrLog("GY_Query_OpenFBEx 虚拟分线已经在开启中! copyMapID=%s, propertyID=%s, GetPropertyID=%s"
- % (copyMapID, propertyID, tagGameWorld.GetPropertyID()))
- continue
-
- GameWorld.Log("GY_Query_OpenFBEx copyMapID=%s, propertyID=%s" % (copyMapID, propertyID))
- tagGameWorld.SetFBFirstOpen(1) # 开启副本
- tagGameWorld.SetPropertyID(propertyID)
-
- return ''
-
-
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_SetPlayerAttr.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_SetPlayerAttr.py
deleted file mode 100644
index b4781be..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_SetPlayerAttr.py
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_SetPlayerAttr
-#
-# @todo:设置玩家属性
-# @author hxp
-# @date 2018-12-21
-# @version 1.0
-#
-# 详细描述: 设置玩家属性
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-12-21 18:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerControl
-import CrossRealmPlayer
-
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- if not funResult:
- return
- setInfo = eval(funResult)
- if not isinstance(setInfo, list) or len(setInfo) < 2:
- return
-
- attrName, value = setInfo[:2]
- if hasattr(curPlayer, attrName):
- # 要在更新值之前处理
- if attrName == "SetExAttr5" and not GameWorld.IsCrossServer():
- if value:
- CrossRealmPlayer.DoEnterCrossRealm(curPlayer)
- elif PlayerControl.GetCrossMapID(curPlayer):
- CrossRealmPlayer.DoExitCrossRealm(curPlayer)
-
- callObj = getattr(curPlayer, attrName)
- callObj(value)
- GameWorld.Log("SetPlayerAttr curPlayer.%s, value=%s" % (attrName, value), curPlayer.GetPlayerID())
-
- elif hasattr(PlayerControl, attrName):
- callObj = getattr(PlayerControl, attrName)
- callObj(curPlayer, value)
- GameWorld.Log("SetPlayerAttr PlayerControl.%s, value=%s" % (attrName, value), curPlayer.GetPlayerID())
-
- return
-
-
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Xiangong.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Xiangong.py
deleted file mode 100644
index e4a2832..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Xiangong.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_Xiangong
-#
-# @todo:仙宫
-# @author hxp
-# @date 2024-09-04
-# @version 1.0
-#
-# 详细描述: 仙宫
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2024-09-04 16:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerXiangong
-
-#------------------------------------------------------------------------------
-## 跨服赛报名调用接口
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令
-# @param tick 当前时间
-# @return "True" or "False" or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-
-#------------------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
- GameWorld.DebugLog("GY_Query_Xiangong DoResult %s" % str(funResult), curPlayer.GetPlayerID())
- if funResult != "":
- PlayerXiangong.GameServer_Xiangong_DoResult(curPlayer, eval(funResult))
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
index e6513b7..baa0492 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
@@ -113,13 +113,7 @@
g_luckyCloudBuyInfo = {} # 幸运云购最新一期信息
g_crossZoneName = "" # 跨服分区名
-g_crossRegPlayerAttrDict = {} #跨服注册时登记的会影响战力的属性值 {playerID:[value, ...], ...}
-g_crossSyncTickDict = {} #需要同步跨服数据的玩家同步tick字典 {playerID:tick, ...}
-g_crossPlayerDictChangeInfo = {} #跨服玩家字典变化信息 {playerID:{(key, dType):value, ...}, ...}
-g_crossPlayerItemsChangeInfo = {} #跨服玩家物品变化信息 {playerID:{"背包类型-物品位":itemMD5, ...}, ...}
-g_crossPlayerSkillsChangeInfo = {} #跨服玩家技能变化信息 {playerID:[技能ID], ...}
-g_crossFuncLineDataCache = {} # 动态分配的跨服虚拟分线数据缓存 {(mapID, copyMapID):funcLineDataCache, ...}
g_crossPlayerServerGroupIDInfo = {} #跨服玩家服务器组ID缓存,副本线路关闭时才释放,所以支持离线跨服玩家 {copyMapID:{playerID:serverGroupID, ...}, ...}
g_elemntSkillDict = {} #{skillID:[attrID*100000+needValue,..]}
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 650e9f8..ee69cbf 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -184,56 +184,7 @@
Def_Notify_WorldKey_CrossZoneName = "CrossZoneName" # 跨服分区名
Def_Notify_WorldKey_CrossServerTime = "CrossServerTime" # 跨服时间
-Def_Notify_WorldKey_CrossPKZoneID = "CrossPKZoneID" # 本服跨服PK所属赛区
-Def_Notify_WorldKey_CrossPKSeasonID = "CrossPKSeasonID" # 本服跨服PK当前赛季
-Def_Notify_WorldKey_CrossPKSeasonState = "CrossPKSeasonState" # 本服跨服PK赛季状态 0-关闭,1-开启中
-
-Def_Notify_WorldKey_CrossChampionshipState = "CrossChampionshipState" # 跨服排位赛状态
-Def_Notify_WorldKey_CrossChampionshipStateError = "CrossChampionshipStateError" # 跨服排位赛状态是否已经异常
-
-Def_Notify_WorldKey_LuckyCloudBuyInfo = "LuckyCloudBuyInfo" # 本服幸运云购最新一期信息
-
Def_Notify_WorldKey_FuncTeamMemIDInfo = "FuncTeamMemIDInfo" # 功能队伍成员ID信息
-
-CrossChampionshipState_Guess8 = 80 #8强竞猜
-CrossChampionshipState_Group64 = 641 #64强分组
-CrossChampionshipState_Enter64 = 642 #64强进场
-CrossChampionshipState_Fight64 = 643 #64强战斗
-CrossChampionshipState_Group32 = 321 #32强分组
-CrossChampionshipState_Enter32 = 322 #32强进场
-CrossChampionshipState_Fight32 = 323 #32强战斗
-CrossChampionshipState_Group16 = 161 #16强分组
-CrossChampionshipState_Enter16 = 162 #16强进场
-CrossChampionshipState_Fight16 = 163 #16强战斗
-CrossChampionshipState_Guess4 = 40 #4强竞猜
-CrossChampionshipState_Group8 = 81 #8强分组
-CrossChampionshipState_Enter8 = 82 #8强进场
-CrossChampionshipState_Fight8 = 83 #8强战斗
-CrossChampionshipState_GroupSemi = 41 #半决赛分组
-CrossChampionshipState_EnterSemi = 42 #半决赛进场
-CrossChampionshipState_FightSemi = 43 #半决赛战斗
-CrossChampionshipState_GroupFinal = 21 #决赛分组
-CrossChampionshipState_EnterFinal = 22 #决赛进场
-CrossChampionshipState_FightFinal = 23 #决赛战斗
-#跨服排位争霸赛状态流程列表,必须按顺序,中间不可跳过步骤
-CrossChampionshipStateList = [CrossChampionshipState_Guess8,
- CrossChampionshipState_Group64, CrossChampionshipState_Enter64, CrossChampionshipState_Fight64,
- CrossChampionshipState_Group32, CrossChampionshipState_Enter32, CrossChampionshipState_Fight32,
- CrossChampionshipState_Group16, CrossChampionshipState_Enter16, CrossChampionshipState_Fight16,
- CrossChampionshipState_Guess4,
- CrossChampionshipState_Group8, CrossChampionshipState_Enter8, CrossChampionshipState_Fight8,
- CrossChampionshipState_GroupSemi, CrossChampionshipState_EnterSemi, CrossChampionshipState_FightSemi,
- CrossChampionshipState_GroupFinal, CrossChampionshipState_EnterFinal, CrossChampionshipState_FightFinal
- ]
-
-#跨服排位可进入战斗的状态信息 {状态:对应分组标识, ...}
-CrossChampionshipEnterStateInfo = {CrossChampionshipState_Enter64:64,
- CrossChampionshipState_Enter32:32,
- CrossChampionshipState_Enter16:16,
- CrossChampionshipState_Enter8:8,
- CrossChampionshipState_EnterSemi:4,
- CrossChampionshipState_EnterFinal:2,
- }
Def_Notify_WorldKey_GameWorldBossRebornCross = 'BossRebornCross_%s_%s' # 跨服世界boss重生, 参数为(zoneID, bossID)
Def_Notify_WorldKey_GameWorldBossReborn = 'BossReborn_%s' # 世界boss重生, 参数为(bossID)
@@ -256,7 +207,6 @@
#运营活动表名定义
OperationActionName_ExpRate = "ActExpRate" # 多倍经验活动
-OperationActionName_CostRebate = "ActCostRebate" # 消费返利活动
OperationActionName_SpringSale = "ActSpringSale" # 限时特惠活动
OperationActionName_FlashGiftbag = "ActFlashGiftbag" # 限时礼包活动
OperationActionName_DailyGiftbag = "ActDailyGiftbag" # 每日礼包活动
@@ -266,13 +216,9 @@
OperationActionName_FlashSale = "ActFlashSale" # 限时抢购活动
OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
OperationActionName_TotalRecharge = "ActTotalRecharge" # 累计充值活动
-OperationActionName_WeekParty = "ActWeekParty" # 周狂欢活动
OperationActionName_LoginAward = "ActLoginAward" # 登录奖励活动
-OperationActionName_FeastWeekParty = "ActFeastWeekParty" # 节日巡礼狂欢活动
OperationActionName_CollectWords = "ActCollectWords" # 集字活动
OperationActionName_LuckyTreasure = "ActLuckyTreasure" # 幸运鉴宝活动
-OperationActionName_RechargePrize = "ActRechargePrize" # 充值返利活动(节日活动)
-OperationActionName_RechargeRebateGold = "ActRechargeRebateGold" # 充值返利仙玉活动(活动结束邮件发放,节日活动)
OperationActionName_GrowupBuy = "ActGrowupBuy" # 成长必买活动
OperationActionName_FeastLogin = "ActFeastLogin" # 节日登录活动
OperationActionName_FeastWish = "ActFeastWish" # 节日祝福活动
@@ -288,19 +234,17 @@
OperationActionName_Yunshi = "ActYunshi" # 运势活动
OperationActionName_Lunhuidian = "ActLunhuidian" # 轮回殿活动
#节日活动类型列表 - 该类型无视开服天,日期到了就开启
-FeastOperationActionNameList = [OperationActionName_FeastWeekParty,
- OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
+FeastOperationActionNameList = [OperationActionName_GrowupBuy,
OperationActionName_FeastLogin,
OperationActionName_FeastWish,
- OperationActionName_RechargePrize,
]
#所有的运营活动列表,含节日活动
-OperationActionNameList = [OperationActionName_ExpRate, OperationActionName_CostRebate,
+OperationActionNameList = [OperationActionName_ExpRate,
OperationActionName_SpringSale,
OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
OperationActionName_RealmPoint, OperationActionName_FlashSale,
OperationActionName_WishingWell, OperationActionName_TotalRecharge,
- OperationActionName_WeekParty, OperationActionName_LoginAward,
+ OperationActionName_LoginAward,
OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure,
OperationActionName_DailyGiftbag, OperationActionName_SingleRecharge,
OperationActionName_CollectWords, OperationActionName_ManyDayRecharge,
@@ -316,10 +260,10 @@
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell,
OperationActionName_NewFairyCeremony, OperationActionName_FlashSale,
OperationActionName_TotalRecharge,
- OperationActionName_CostRebate, OperationActionName_FlashGiftbag,
+ OperationActionName_FlashGiftbag,
OperationActionName_SpringSale, OperationActionName_LuckyTreasure,
OperationActionName_DailyGiftbag, OperationActionName_GrowupBuy,
- OperationActionName_WeekParty, OperationActionName_Turntable,
+ OperationActionName_Turntable,
OperationActionName_CollectWords,
OperationActionName_FeastLogin,
OperationActionName_FeastWish,
@@ -329,7 +273,7 @@
#支持多活动分组编号的活动名
MultiActNumOperationActNameList = [OperationActionName_TotalRecharge, OperationActionName_CollectWords,
- OperationActionName_FlashGiftbag, OperationActionName_CostRebate,
+ OperationActionName_FlashGiftbag,
OperationActionName_SpringSale, OperationActionName_FlashSale,
OperationActionName_ManyDayRecharge, OperationActionName_SingleRecharge,
OperationActionName_Turntable,
@@ -342,17 +286,13 @@
]
#跨服运营活动表名定义
-CrossActName_CTGBillboard = "CrossActCTGBillboard" # 充值排行榜
-CrossActName_AllRecharge = "CrossActAllRecharge" # 全民充值
-CrossActName_LuckyCloudBuy = "CrossActLuckyCloudBuy" # 幸运云购
CrossActName_Lianqi = "CrossActLianqi" # 炼器 - 跨服
CrossActName_FamilyGCZ = "CrossActFamilyGCZ" # 仙盟攻城战
#跨服运营活动列表
-CrossActNameList = [CrossActName_CTGBillboard, CrossActName_AllRecharge, CrossActName_LuckyCloudBuy,
- CrossActName_Lianqi, CrossActName_FamilyGCZ]
+CrossActNameList = [CrossActName_Lianqi, CrossActName_FamilyGCZ]
#需要锁定活动分区分配直到活动结束的跨服运营活动,即使热更分区配置,也不会改变正在活动中的分区设定,直到活动结束
-CrossActLockServerGroupIDList = [CrossActName_CTGBillboard, CrossActName_AllRecharge]
+CrossActLockServerGroupIDList = []
#活动信息字典key定义
ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
@@ -924,8 +864,8 @@
Def_UniversalGameRecType_ActWorldLVLimitInfo, # 运营活动世界等级限制开启信息 18
Def_UniversalGameRecType_19,
Def_UniversalGameRecType_20,
- Def_UniversalGameRecType_LuckyCloudBuyNum, # 幸运云购购买号码记录 21
- Def_UniversalGameRecType_LuckyCloudBuyLottery, # 幸运云购开奖记录 22
+ Def_UniversalGameRecType_21,
+ Def_UniversalGameRecType_22,
Def_UniversalGameRecType_CrossBattlefieldBuy, # 玩家购买的跨服战场 23
Def_UniversalGameRecType_24,
Def_UniversalGameRecType_BossDropGoodItemInfo, # boss掉落好物品信息记录25
@@ -936,15 +876,15 @@
Def_UniversalGameRecType_CrossBossInfo, # 跨服boss信息 30
Def_UniversalGameRecType_31,
Def_UniversalGameRecType_CrossCollect, # 跨服采集记录信息 32
- Def_UniversalGameRecType_CrossChampionshipGroup, # 跨服排位争霸赛分组信息 33
- Def_UniversalGameRecType_CrossChampionshipGuess, # 跨服排位争霸赛竞猜记录信息 34
- Def_UniversalGameRecType_CrossChampionshipOfficial, # 跨服排位争霸赛最终排名官职信息 35
- Def_UniversalGameRecType_CrossChampionshipOffChallenge, # 跨服排位争霸赛官职挑战信息 36
- Def_UniversalGameRecType_CrossActAllRecharge, # 跨服全服充值活动信息 37
+ Def_UniversalGameRecType_33,
+ Def_UniversalGameRecType_34,
+ Def_UniversalGameRecType_35,
+ Def_UniversalGameRecType_36,
+ Def_UniversalGameRecType_37,
Def_UniversalGameRecType_CrossBattleChampionGroup, # 跨服战场冠军赛分组信息 38
- Def_UniversalGameRecType_CrossYaomoBossHurtInfo, # 跨服妖魔boss伤血信息 39
+ Def_UniversalGameRecType_39,
Def_UniversalGameRecType_40,
- Def_UniversalGameRecType_41, # 红包产出结果记录41
+ Def_UniversalGameRecType_41,
Def_UniversalGameRecType_42,
Def_UniversalGameRecType_43,
Def_UniversalGameRecType_44,
@@ -960,15 +900,15 @@
Def_UniversalGameRecType_54,
Def_UniversalGameRecType_55,
Def_UniversalGameRecType_56,
- Def_UniversalGameRecType_57, # 抢红包总记录57
- Def_UniversalGameRecType_58, # 抢红包可抢信息记录58
- Def_UniversalGameRecType_59, # 抢红包已抢完信息记录59
+ Def_UniversalGameRecType_57,
+ Def_UniversalGameRecType_58,
+ Def_UniversalGameRecType_59,
Def_UniversalGameRecType_60,
Def_UniversalGameRecType_61,
Def_UniversalGameRecType_62,
Def_UniversalGameRecType_63,
- Def_UniversalGameRecType_64, # 仙盟红包总记录64
- Def_UniversalGameRecType_65, # 仙盟红包已抢信息记录65
+ Def_UniversalGameRecType_64,
+ Def_UniversalGameRecType_65,
Def_UniversalGameRecType_DujieHelpAllRecord, # 渡劫副本护法总记录66
Def_UniversalGameRecType_DujieHelpRecord, # 渡劫副本护法详细记录67
Def_UniversalGameRecType_FamilyWarBattle, # 仙盟联赛对战表68
@@ -1158,8 +1098,6 @@
CrossServerMsg_CrossActInfo = "CrossActInfo" # 跨服运营活动信息
CrossServerMsg_MailPlayerIDList = "MailPlayerIDList" # 跨服邮件玩家ID通知,玩家目标服务器可能无法知道,被动推送
CrossServerMsg_MailContent = "MailContent" # 跨服邮件内容通知
-CrossServerMsg_LuckyCloudBuyNum = "LuckyCloudBuyNum" # 幸运云购购买记录通知
-CrossServerMsg_LuckyCloudBuyLottery = "LuckyCloudBuyLottery" # 幸运云购开奖记录通知
CrossServerMsg_CrossServerTime = "CrossServerTime" # 跨服时间同步
CrossServerMsg_BattlefieldBuy = "BattlefieldBuy" # 跨服战场购买信息
CrossServerMsg_BattlefieldState = "BattlefieldState" # 跨服战场状态信息
@@ -1167,14 +1105,6 @@
CrossServerMsg_DebugAnswer = "DebugAnswer" # DebugAnswer
CrossServerMsg_ActDropSpecItem = "ActDropSpecItem" # 特殊掉落验证返回
CrossServerMsg_CrossAssist = "CrossAssist" # 跨服协助
-CrossServerMsg_ChampionshipState = "ChampionshipState" # 跨服排位争霸赛状态信息
-CrossServerMsg_ChampionshipPlayer = "ChampionshipPlayer"# 跨服排位争霸赛参赛玩家信息
-CrossServerMsg_ChampionshipGroup = "ChampionshipGroup" # 跨服排位争霸赛分组信息
-CrossServerMsg_ChampionshipGuess = "ChampionshipGuess" # 跨服排位争霸赛竞猜信息
-CrossServerMsg_ChampionshipOfficial = "ChampionshipOfficial" # 跨服排位争霸赛官职信息
-CrossServerMsg_ChampionshipDailyOfficial = "ChampionshipDailyOfficial" # 跨服排位争霸赛每日官职信息
-CrossServerMsg_ActAllRechargeInfo = "ActAllRechargeInfo"# 跨服全民充值信息
-CrossServerMsg_CrossYaomoBossHurtInfo = "CrossYaomoBossHurtInfo" # 跨服妖魔boss玩家伤害信息
CrossServerMsg_FamilyFlagwarOver = "FamilyFlagwarOver" # 逐鹿万界结算信息
CrossServerMsg_Worship = "Worship" # 膜拜信息
CrossServerMsg_Xiangong = "Xiangong" # 仙宫信息
@@ -1205,23 +1135,12 @@
ClientServerMsg_CollectNPC = "CollectNPC" # 采集NPC
ClientServerMsg_EnterFB = "EnterFB" # 请求进入跨服副本
ClientServerMsg_AddBuff = "AddBuff" # 添加BUFF
-ClientServerMsg_LuckyCloudBuy = "LuckyCloudBuy" # 幸运云购
ClientServerMsg_BattlefieldBuyOpen = "BattlefieldBuyOpen" # 跨服战场购买召集
ClientServerMsg_BattlefieldCallChange = "BattlefieldCallChange" # 跨服战场召集 - 修改
ClientServerMsg_BattlefieldCallJoin = "BattlefieldCallJoin" # 跨服战场召集 - 加入
ClientServerMsg_BattlefieldCallKick = "BattlefieldCallKick" # 跨服战场召集 - 踢出
ClientServerMsg_ActDropSpecItem = "ActDropSpecItem" # 活动特殊掉落
ClientServerMsg_CrossAssist = "CrossAssist" # 跨服协助
-ClientServerMsg_ChampionshipPKOver = "ChampionshipPKOver" # 跨服排位PK结束
-ClientServerMsg_ChampionshipOfficialApply = "ChampionshipOfficialApply" # 跨服排位申请官职
-ClientServerMsg_ChampionshipOfficialApplyReply = "ChampionshipOfficialApplyReply" # 跨服排位官职申请回应
-ClientServerMsg_ChampionshipOfficialKick = "ChampionshipOfficialKick" # 跨服排位辞退下级仙官
-ClientServerMsg_ChampionshipOfficialLeave = "ChampionshipOfficialLeave" # 跨服排位主动离任仙官
-ClientServerMsg_ChampionshipOfficialChallenge = "ChampionshipOfficialChallenge" # 跨服排位挑战仙官
-ClientServerMsg_ChampionshipGuess = "ChampionshipGuess" # 跨服排位竞猜
-ClientServerMsg_ChampionshipWorship = "ChampionshipWorship" # 跨服排位膜拜
-ClientServerMsg_ActAllRechargeValue = "ActAllRechargeValue" # 跨服全民充值额度
-ClientServerMsg_CrossYaomoBossHurtAward = "CrossYaomoBossHurtAward" # 跨服妖魔boss玩家伤害领奖
ClientServerMsg_CreateFuncTeam = "CreateFuncTeam" # 创建功能队伍
ClientServerMsg_ChangeFuncTeam = "ChangeFuncTeam" # 修改功能队伍
ClientServerMsg_FuncTeamMemOP = "FuncTeamMemOP" # 功能队伍成员操作
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 9ba2bb3..ffdb313 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -23,7 +23,6 @@
import ChNetSendPack
import OperControlManager
import GameObj
-import CrossPlayerData
import AttackCommon
#---------------------------------------------------------------------
@@ -169,9 +168,6 @@
for i in range(len(plusValueList)):
plusValueList[i] = min(plusValueList[i], ChConfig.Def_UpperLimit_DWord)
- # 向跨服发送数据
- CrossPlayerData.SendMergeData_Buff(curObj, curSkillID, plusValueList)
-
# buff层级
layerMaxCnt = 0
layerCalc = 0
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_508.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_508.py
deleted file mode 100644
index f7662d1..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_508.py
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-# @todo: 给宠物增加已获得的某品质的宠物们总攻击百分比值,直接给宠物加的 并非加到人物属性中的 宠物攻击力
-#
-# @author: Alee
-# @date 2018-1-20 下午02:50:26
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-#导入
-import ChConfig
-import PlayerControl
-import GameFuncComm
-import ShareDefine
-import IpyGameDataPY
-import PetControl
-#---------------------------------------------------------------------
-
-## buff线性增加属性
-# @param defender Buff承受者
-# @param curEffect 技能效果
-# @param calcDict 技能效果累加总表
-# @return None
-def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
- minAtk, maxAtk = GetPetAtkValueByQuality(defender, curEffect.GetEffectValue(0))
-
- calcDict[ChConfig.TYPE_Calc_AttrATKMin] = calcDict.get(ChConfig.TYPE_Calc_AttrATKMin, 0) + \
- int(minAtk*curEffect.GetEffectValue(1)*1.0/ChConfig.Def_MaxRateValue)
-
- calcDict[ChConfig.TYPE_Calc_AttrATKMax] = calcDict.get(ChConfig.TYPE_Calc_AttrATKMax, 0) + \
- int(maxAtk*curEffect.GetEffectValue(1)*1.0/ChConfig.Def_MaxRateValue)
- return
-
-
-## 返回buff类型,线性与否
-# @param
-# @return None
-# @remarks 函数详细说明.
-def GetCalcType():
- return ChConfig.TYPE_Linear
-
-## 获取灵兽出战时的攻击力
-def GetPetAtkValueByQuality(curPet, quality):
- curPlayer = PetControl.GetPetOwner(curPet)
- if not curPlayer:
- return 0, 0
- if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Pet):
- #GameWorld.DebugLog(' 宠物功能未开启')
- return 0, 0
-
- classAddAtk = 0
- petPackIndex = ShareDefine.rptPet
- petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
- for i in range(petPack.GetCount()):
- packItem = petPack.GetAt(i)
- if packItem.IsEmpty():
- continue
- if quality != packItem.GetUserAttr(ShareDefine.Def_IudetPet_QualityLV):
- # 指定品质
- continue
- petItemNPCID = packItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- classlv = packItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
-
- classIpyData = IpyGameDataPY.GetIpyGameData("PetClassCost", petItemNPCID, classlv + 1)
- classAddAtk += (classIpyData.GetAtkAdd() if classIpyData else 0)
- totalMinAtk = classAddAtk
- totalMaxAtk = classAddAtk
- return totalMinAtk, totalMaxAtk
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_509.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_509.py
deleted file mode 100644
index 14886b4..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_509.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-# @todo: 已获得的某品质的宠物们总最大攻击百分比转换为给人物的生命
-#
-# @author: Alee
-# @date 2018-1-20 下午02:50:26
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-#导入
-import ChConfig
-import PlayerControl
-import GameFuncComm
-import ShareDefine
-import IpyGameDataPY
-#---------------------------------------------------------------------
-
-## buff线性增加属性
-# @param defender Buff承受者
-# @param curEffect 技能效果
-# @param calcDict 技能效果累加总表
-# @return None
-def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
- minAtk, maxAtk = GetPetAtkValueByQuality(defender, curEffect.GetEffectValue(0))
-
- calcDict[ChConfig.TYPE_Calc_AttrMaxHP] = calcDict.get(ChConfig.TYPE_Calc_AttrMaxHP, 0) + \
- int(maxAtk*curEffect.GetEffectValue(1)*1.0/ChConfig.Def_MaxRateValue)
-
- return
-
-
-## 返回buff类型,线性与否
-# @param
-# @return None
-# @remarks 函数详细说明.
-def GetCalcType():
- return ChConfig.TYPE_Linear
-
-## 获取灵兽出战时的攻击力
-def GetPetAtkValueByQuality(curPlayer, quality):
- if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Pet):
- #GameWorld.DebugLog(' 宠物功能未开启')
- return 0, 0
-
- classAddAtk = 0
- petPackIndex = ShareDefine.rptPet
- petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
- for i in range(petPack.GetCount()):
- packItem = petPack.GetAt(i)
- if packItem.IsEmpty():
- continue
- if quality != packItem.GetUserAttr(ShareDefine.Def_IudetPet_QualityLV):
- # 指定品质
- continue
- petItemNPCID = packItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
- classlv = packItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
-
- classIpyData = IpyGameDataPY.GetIpyGameData("PetClassCost", petItemNPCID, classlv + 1)
- classAddAtk += (classIpyData.GetAtkAdd() if classIpyData else 0)
- totalMinAtk = classAddAtk
- totalMaxAtk = classAddAtk
- return totalMinAtk, totalMaxAtk
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 7340f58..d5de7ba 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
@@ -25,11 +25,8 @@
import ReadChConfig
import random
import BaseAttack
-import PetControl
import SkillShell
import DataRecordPack
-import ChPyNetSendPack
-import NetPackCommon
import ShareDefine
import GameObj
import PassiveBuffEffMng
@@ -1153,7 +1150,7 @@
elif curObjType == IPY_GameWorld.gotNPC:
#宠物回血
if curObj.GetGameNPCObjType() == IPY_GameWorld.gnotPet:
- PetControl.SetPetHP(curObj, remainHP)
+ pass
#普通NPC回血
else:
GameObj.SetHP(curObj, remainHP, False) # 先不通知
@@ -1214,7 +1211,7 @@
if curObjType == IPY_GameWorld.gotNPC:
#宠物特殊处理
if curObj.GetGameNPCObjType() == IPY_GameWorld.gnotPet:
- PetControl.SetPetHP(curObj, remainHP)
+ pass
else:
timeLostHPIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCTimeLostHP", curObj.GetNPCID())
if timeLostHPIpyData:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_2102.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_2102.py
deleted file mode 100644
index 092058f..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_2102.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-# @todo: 宠物主人被攻击后触发被动技能, 血量低于XX百分比
-#
-# @author: Alee
-# @date 2018-1-9 下午09:39:37
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-
-import ChConfig
-import GameWorld
-import GameObj
-import PlayerControl
-import PetControl
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
- # 未配置不验证血量百分比
- if not effect.GetEffectValue(0):
- return False
-
- petOwner = PetControl.GetPetOwner(attacker)
-
- if petOwner == None:
- return False
-
- #血量条件判定
- if GameObj.GetHP(petOwner)*ChConfig.Def_MaxRateValue/GameObj.GetMaxHP(petOwner) >= effect.GetEffectValue(0):
- return False
-
- return True
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_2104.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_2104.py
deleted file mode 100644
index 779f0a1..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_2104.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-# @todo: 宠物主人被攻击后触发被动技能, 血量低于XX百分比,有锁血功能
-#
-# @author: Alee
-# @date 2018-1-9 下午09:39:37
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-
-import ChConfig
-import GameWorld
-import GameObj
-import PlayerControl
-import PetControl
-
-def CheckCanHappen(attacker, defender, effect, curSkill):
- # 未配置不验证血量百分比
- if not effect.GetEffectValue(0):
- return False
-
- petOwner = PetControl.GetPetOwner(attacker)
-
- if petOwner == None:
- return False
-
- #血量条件判定
- if GameObj.GetHP(petOwner)*ChConfig.Def_MaxRateValue/GameObj.GetMaxHP(petOwner) >= effect.GetEffectValue(0):
- return False
-
- 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 aaca356..18ed910 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -35,7 +35,6 @@
import PyGameData
import BaseAttack
import NPCCommon
-import PetControl
import ItemCommon
import FBCommon
@@ -792,11 +791,6 @@
# buff # 筛选buffType 否则NPC没有此接口会报错
for buffType in [IPY_GameWorld.bfBuff, IPY_GameWorld.bfDeBuff, IPY_GameWorld.bfProcessBuff
, IPY_GameWorld.btPassiveBuf, IPY_GameWorld.bfActionBuff, IPY_GameWorld.bfProcessDeBuff]:
-
- if buffType == IPY_GameWorld.btPassiveBuf and gameObj.GetGameObjType() == IPY_GameWorld.gotNPC:
- # NPC只有宠物有被动BUFF
- if not PetControl.IsPet(gameObj):
- continue
buffTuple = SkillCommon.GetBuffManagerByBuffType(gameObj, buffType)
#通过类型获取目标的buff管理器为空,则跳出
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
index 7e2e8f4..1d388c0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -27,7 +27,6 @@
import FBLogic
import ItemCommon
import OperControlManager
-import PetControl
import DataRecordPack
#import ChItem
import ShareDefine
@@ -617,16 +616,6 @@
# @return 返回值真, 检查通过
def IsToPetOwnerSkill(curNPC, skillTag):
if skillTag != ChConfig.Def_UseSkillTag_PetMaster:
- return False
-
- if not PetControl.IsPet(curNPC):
- GameWorld.ErrLog("NPCID %s AI %s 非宠物,无法获得主人释放技能"%(curNPC.GetNPCID(), curNPC.GetAIType()))
- return False
-
- petOwner = PetControl.GetPetOwner(curNPC)
-
- if petOwner == None:
- GameWorld.ErrLog("宠物(%s)对主人释放技能,找不到主人"%curNPC.GetRolePet().PetID)
return False
return True
@@ -1708,22 +1697,8 @@
# 对自身释放或者无目标技能
if skillAffectTag in ChConfig.Def_ST_CanNPCUseSkill or skillAim == ChConfig.Def_UseSkillAim_None:
#释放自身类技能
- return NPCUseSkill(attacker, curSkill, tick)
-
- # 宠物对主人释放技能
- elif skillAffectTag == ChConfig.Def_UseSkillTag_PetMaster:
- if not PetControl.IsPet(attacker):
- GameWorld.ErrLog("该NPC非宠物,无法获得主人释放技能")
- return False
-
- petOwner = PetControl.GetPetOwner(attacker)
-
- if petOwner == None:
- GameWorld.ErrLog("宠物(%s)对主人释放技能,找不到主人"%attacker.GetRolePet().PetID)
- return False
+ return NPCUseSkill(attacker, curSkill, tick)
- curTag = petOwner
-
# 召唤兽对主人释放技能
elif skillAffectTag == ChConfig.Def_UseSkillTag_SummonMaster:
if not NPCCommon.IsSummonNPC(attacker):
@@ -3657,18 +3632,6 @@
result = DoLogic_UseSkill(attacker, target, curSkill, tick, posX, posY, isEnhanceSkill=isEnhanceSkill)
else:
- if affectTag == ChConfig.Def_UseSkillTag_PetMaster:
- if not PetControl.IsPet(attacker):
- return False
-
- petOwner = PetControl.GetPetOwner(attacker)
- if petOwner == None:
- return False
-
- target = petOwner
- if GameObj.GetHP(target) <= 0:
- return False
-
if affectTag not in [ChConfig.Def_UseSkillTag_None, ChConfig.Def_UseSkillTag_Self]:
if not target:
# 配置了可攻击目标,但没目标就不让触发
--
Gitblit v1.8.0