From 0b314dd1d9f0c39e8d86de7e996c62836aa19aca Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 03 十一月 2025 15:01:04 +0800
Subject: [PATCH] 16 卡牌服务端(删除翅膀;)
---
/dev/null | 50 --
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py | 15
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 12
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py | 530 ----------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 67 --
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 411 -----------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 55 --
PySysDB/PySysDBPY.h | 175 -------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 18
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 84 ---
11 files changed, 3 insertions(+), 1,421 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 26a1480..4200710 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -431,14 +431,6 @@
list AttrPerStarAddList; //每星加成值列表
};
-//技能搭配表
-
-struct tagSkillMatch
-{
- BYTE _IDIndex;
- list Skills; //主动技能(职业1id|职业2id)
-};
-
//灵根表 #tagRolePoint
struct tagRolePoint
@@ -1064,112 +1056,6 @@
dict AttrExDict; //特殊属性值字典 {attrKey:value, ...}
};
-//成长型境界怪物表
-
-struct tagNPCRealmStrengthen
-{
- DWORD _NPCID; //NPCID
- BYTE _RealmDifficulty; //境界难度
- DWORD MapID;
- DWORD LV; //NPC等级
- DWORD Exp;//基础经验
- WORD MaxDrapLV;//玩家最大可掉落等级
- BYTE EquipClassLV; //掉落装备阶
- DWORD DropMoneyMin;//最小金币
- DWORD DropMoneyMax;//最大金币
- WORD LowLV; // 推荐最低等级
- WORD HighestLV; // 推荐最高等级
- DWORD Defense; // 推荐防御
- DWORD MDef; // 标准击杀时间/毫秒
- DWORD FireDef; // 脱机挂经验计算战力
- DWORD SP; // SP
-};
-
-//NPC时间掉血表
-
-struct tagNPCTimeLostHP
-{
- DWORD _NPCID; //NPCID
- DWORD LostHPPerSecond; //单人每秒掉血量
- BYTE MaxPlayerCount; //最大人数
- DWORD LostHPPerSecondEx; //每增加一人附加掉血量
- BYTE FightPowerMinByLV; //标准战力是否取等级表
- DWORD FightPowerMin; //标准战力
- DWORD FightPowerMax; //上限战力
- DWORD EveryFightPower; //每x点战力
- DWORD EveryFightPowerLostHPEx; //每x点战力附加伤害
-};
-
-//装备套装属性表
-
-struct tagEquipSuitAttr
-{
- WORD _SuiteID; //套装ID
- BYTE SuiteCnt; //套装件数
- BYTE Star; //星数
- dict AttrInfo; //属性
- DWORD SkillID; //技能ID
- BYTE IsNotify; //是否广播
- WORD ActivateIndex; //激活索引
-};
-
-
-//羽翼精炼属性表
-
-struct tagWingRefineAttr
-{
- BYTE _WingClassLV; //翅膀阶级
- dict AttrInfo; //精炼属性信息
- dict ItemColorInfo; //精炼经验对应颜色信息
- DWORD MaxRefineExp; //本阶最大精炼值
-};
-
-//羽翼精炼经验表
-
-struct tagWingRefineExp
-{
- DWORD _ItemID; //精炼物品ID
- DWORD RandExpMin; //最小随机精炼值
- DWORD RandExpMax; //最大随机精炼值
- dict ExpMaterial; //翅膀代数对应精炼值
-};
-
-//NPC掉落表
-
-struct tagNPCDropItem
-{
- DWORD _NPCID; //NPCID
- WORD MaxWorldLV; //最大世界等级,0为不限制,不受最大掉落等级影响
- WORD MaxDropLV; //最大可掉落的玩家等级, 不影响世界等级
- BYTE CanDropRatePlus; //额外提升掉率的是否有效
- BYTE IsDropJobSelf; //是否只掉落本职业
- list PieRateDrop; //饼图概率掉落信息 [(概率,0),(概率,(阶,颜色)),...]
- BYTE PieRateDoCnt; //饼图概率执行次数
- dict IndepRateDrop; //独立概率掉落信息 {(阶,颜色):概率,...}
- BYTE IndepRateDoCnt; //独立概率执行次数
- dict EquipColorMaxDropCount; //装备颜色最大掉落物品数 {颜色:上限数量,...}
- list TianxuanEquipRateList; //天玄丹装备掉落饼图 [[概率,(阶,品质)], ...]
- dict EquipColorSuitInfo; //装备颜色对应套装概率 {颜色:套装概率, ...}
- dict EquipPartKeyRateInfo; //装备部位集合信息 {(颜色,是否套装):部位集合key, ...}
- BYTE ColorSuitPartOptimization; //部位颜色套评分优选掉落,十位代表颜色,个位代表套装
- dict KillCountDropEquipPub; //第x次击杀附加必掉装备 {次数:[阶,颜色,是否套装,部位集合key], ...}
- dict ItemIDDropRate; //指定物品ID掉率信息 {物品ID:概率, ...}
- dict TianxuanItemIDRate; //天玄丹指定ID概率 {物品ID:概率, ...}
- dict ItemIDMaxDropCount; //指定物品ID最大掉落个数,没配默认1次 {物品ID:随机次数,...}
- dict ItemKeyDropRate; //物品ID集合Key概率, 随机一个, 优先级低 {物品ID集合key:概率, ...}
- dict ItemKeyDropRateJob; //物品ID集合Key概率, 自身职业, 优先级高 {物品ID集合key:概率, ...}
- dict TianxuanItemKeyRate; //天玄丹指定ID集合Key概率{物品ID集合key:概率, ...}
- dict ItemKeyMaxDropCount; //物品ID集合Key随机次数,没配默认1次 {物品ID集合key:随机次数,...}
- BYTE DropMoneyDoCnt; //掉落金币执行次数
- WORD DropMoneyRate; //掉落金币概率
- WORD DropMoneyMin; //掉落金币最小值
- WORD DropMoneyMax; //掉落金币最大值
- dict KillCountDropPub; //击杀次数必掉(公共){击杀次数:[[物品ID, ...], [随机物品ID, ...]], ...}
- list KillCountDropPri; //击杀次数必掉(私有)[击杀次数,[物品ID,...],是否直接放入背包]
- list PriItemIDDrop; //所有归属者私有掉落物品ID列表,每人一份,默认绑定,没有职业区分[物品ID, ...]
- BYTE AucionItemCanSell; //掉落拍品可否上架集市
-};
-
//符印塔表
struct tagRuneTower
@@ -1242,58 +1128,6 @@
BYTE ADCntMax; //每日次数
list ADAwardItemList; //广告奖励物品列表
DWORD ADMapID; //对应副本ID,默认给该副本1次次数
-};
-
-//装备评分属性系数表
-
-struct tagEquipGSParam
-{
- BYTE _ClassLV; // 装备阶级
- BYTE _EquipColor; // 装备颜色
- BYTE _IsSuit; // 是否套装
- BYTE _ItemQuality; //物品星级
- DWORD BaseEquipMaxHPAddPerC; // 基础防具生命百分比系数
- DWORD BaseEquipAtkAddPerC; // 基础武器攻击百分比系数
- DWORD SuperHitC; // 暴击值系数
- DWORD SuperHitPerC; // 暴击值百分比系数
- DWORD LuckyHitRateC; // 会心一击率系数
- DWORD LuckyHitRateReduceC; // 会心一击抗性系数
- DWORD LuckPerC; // 气运百分比系数
- DWORD PerLVAtkC; // 每级增加攻击力系数
- DWORD PerLVMaxHPC; // 每级增加生命值系数
- DWORD DropMoneyPerC; // 增加掉落金币量百分比系数
- DWORD SuperHitReduceC; // 暴击减伤百分比系数
- DWORD SuperHitRateReduceC; // 暴击抗性系数
- DWORD HitC; // 命中系数
- DWORD MissC; // 闪避系数
- DWORD PetDamPerC; // 灵宠增伤百分比系数
- DWORD MaxHPPerC; // 生命加成系数
- DWORD AtkPerC; // 攻击加成系数
- DWORD SkillAtkRateC; // 技能加成系数
- DWORD SkillAtkRateReduceC; // 技能减免系数
- DWORD SkillAddPer1C; // 技能伤害增强1系数
- DWORD SkillAddPer2C; // 技能伤害增强2系数
- DWORD SkillAddPer3C; // 技能伤害增强3系数
- DWORD SkillAddPer4C; // 技能伤害增强4系数
- DWORD SkillAddPer5C; // 技能伤害增强5系数
- DWORD SkillAddPer6C; // 技能伤害增强6系数
- DWORD SkillAddPer7C; // 技能伤害增强7系数
- DWORD SkillReducePer1C; // 受到技能伤害减少1系数
- DWORD SkillReducePer2C; // 受到技能伤害减少2系数
- DWORD SkillReducePer3C; // 受到技能伤害减少3系数
- DWORD SkillReducePer4C; // 受到技能伤害减少4系数
- DWORD SkillReducePer5C; // 受到技能伤害减少5系数
- DWORD SkillReducePer6C; // 受到技能伤害减少6系数
- DWORD SkillReducePer7C; // 受到技能伤害减少7系数
- DWORD ReduceSkillCDPerC; // 减少所有技能CD系数
- DWORD LuckyHitPerC; // 会心伤害加成系数
- DWORD FaintDefRateC; // 控制抵抗系数
- DWORD SuperHitRateC; // 暴击率加成系数
- DWORD IgnoreDefRateC; // 无视防御系数
- DWORD IgnoreDefRateReduceC; // 无视防御减免系数
- DWORD ProDefPerC; // 防护百分比系数
- DWORD FinalHurtPerC; // 最终伤害加成系数
- DWORD FinalHurtReducePerC; // 最终伤害减免系数
};
//成就表
@@ -2062,15 +1896,6 @@
WORD LowLV; // 推荐最低等级
WORD HighestLV; // 推荐最高等级
DWORD Defense; // 推荐防御
-};
-
-//天赋技能表
-
-struct tagTalentSkill
-{
- DWORD _SkillID; //技能ID
- BYTE TalentType; //天赋类型
- BYTE Series; //天赋系别
};
//限时抢购表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index fa4e673..a774ee1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -816,18 +816,6 @@
PacketSubCMD_2=0x20
PacketCallFunc_2=OnCoatDecompose
-;羽翼精炼
-[PlayerWing]
-ScriptName = Player\PlayerWing.py
-Writer = sgj
-Releaser = sgj
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xA3
-PacketSubCMD_1=0x2E
-PacketCallFunc_1=OnWingJingLian
-
;新定义攻击
[NewAttack]
ScriptName = Skill\SkillShell.py
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 38e0459..c941776 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -720,11 +720,9 @@
#Def_ItemEff_WeaponType = 2808 # 武器类型分类(非物品类型)
#Def_ItemEff_Flower = 2816 # 鲜花
#Def_Effect_AddMagicJifen = 1916 #使用道具给予幸运宝藏积分
-#Def_Effect_WingSkin = 1918 #翅膀皮肤
#Def_Effect_AddSkyGodExp = 2854 #增加天神经验 A值天神经验
#Def_Effect_SummonNPC = 2855 #召唤NPC A值NPCID B值持续时间 C值是否不删除物品,默认0删除
#Def_Effect_AddOfficialExp = 2859 #增加爵位经验
-#Def_Effect_AddWingClassLV = 2862 #增加翅膀阶级 A值: N阶及N阶以下使用时翅膀直接升一阶; B值:是否保留祝福值
#---------------------------------------------------------------------
Def_Max_Update_Talent_Time = 3 #最大使用造化丹次数
@@ -2465,21 +2463,6 @@
## 装备位 - 灵器
EquipPlace_LingQi = []
-#装备物品位置,不需要重刷属性
-EquipItemNoRefreshState = [
- ShareDefine.retHorse, #19 坐骑
- ShareDefine.retWeaponSkin, #20 时装武器
- ShareDefine.retClothesSkin, #21 时装衣服
- ShareDefine.retWeapon2Skin, #22 时装副手
- ]
-
-# 需要广播外观的装备部位(除了境界装备3部位)
-Def_SyncEquipStateByIndex = [
- ShareDefine.retWing, #13 翅膀
- ShareDefine.retGuard1, #14 守护1
- ShareDefine.retHorse, #19 坐骑
- ]
-
#---------------------------------------------------------------------
#特殊物品光环,永久存在
Def_SuperBuffList = []
@@ -4199,8 +4182,6 @@
) = range(1001, 1091)
-#不可以佩戴翅膀的地图
-CanNotWearWingMapIDList = []
#不可以佩戴武器时装的地图
CanNotWearWeaponCoatMapIDList = []
#不可以使用恢复物品或技能的地图
@@ -4550,7 +4531,7 @@
ItemDel_EquipDecompose, # 装备分解
ItemDel_20, # 捐献装备 20
ItemDel_Treasure, # 寻宝
-ItemDel_WingExp, # 翅膀精炼经验
+ItemDel_22, # 翅膀精炼经验
ItemDel_StoneUpgrade, # 宝石升级
ItemDel_ItemCompound, # 合成
ItemDel_Horse, # 坐骑 25
@@ -4599,7 +4580,6 @@
ItemDel_AddBourseItem:"AddBourseItem",
ItemDel_EquipDecompose:"EquipDecompose",
ItemDel_Treasure:"Treasure",
- ItemDel_WingExp:"WingExp",
ItemDel_StoneUpgrade:"StoneUpgrade",
ItemDel_ItemCompound:"ItemCompound",
ItemDel_Horse:"Horse",
@@ -4635,53 +4615,6 @@
FB_JoinType_Multi, # 多人
FB_JoinType_Help, # 助战
) = range(4)
-
-# 自定义任务事件记录 custom_mission_event
-CME_Log_Type_List = (
-CME_Log_Start, # 开始
-CME_Log_End, # 结束
-CME_Log_Acceptable, # 可接, 仅在OnDay及功能开启的时候发送
-) = range(3)
-
-CME_Type_List = (
-CME_Known, # 未知 0
-CME_FB_XXX1, # 1
-CME_FB_XXX2, # 2
-CME_FB_3,
-CME_FB_XXX4, # 4
-CME_FB_XXX5, # 5
-CME_FB_XXX6, # 6
-CME_FB_XXX7, # 7
-CME_FB_XXX8, # 8
-CME_FB_XXX9, # 9
-CME_FB_XXX10, # 10
-CME_FB_XXX11, # 11
-CME_Class_Horse, # 坐骑阶级
-CME_Class_Wing, # 翅膀阶级
-CME_Class_Official, # 爵位阶级
-CME_Class_XXX15, # 废弃 15
-CME_Class_XXX16, # 废弃
-CME_FB_XXX17, #17
-CME_FB_XXX18, #18
-CME_FB_XXX19, #19
-CME_FB_XXX20, #20
-CME_FB_XXX21, #21
-CME_FB_XXX22, #22
-CME_FB_RunDaily, #日常跑环,只记录可接
-CME_FB_RunFamily, #战盟跑环,只记录可接
-) = range(3,28) # 后台只收集ID改成从3开始,不然会和任务1冲突
-
-CME_Type_Dict = {
-CME_Known:"未知",
-CME_Class_Horse:"坐骑",
-CME_Class_Wing:"翅膀",
-CME_Class_Official:"爵位",
-CME_FB_RunDaily:"日常跑环",
-CME_FB_RunFamily:"战盟跑环",
-}
-
-# 需要发送到任务事件扩展记录的类型 ShareDefine.Def_UserAction_ExMissionLog
-CME_Ex_Log_List = [CME_Class_Horse, CME_Class_Wing, CME_Class_Official]
# 竖杠
Def_Str_Montant = "|"
@@ -4855,21 +4788,6 @@
InvestType_Boss, # Boss 11
InvestType_Life, # 终身卡 12
) = range(7, 7 + 6)
-
-# 法宝特权
-MWPrivilegeList = (
-MWPrivilege_FixedAttr, # 本源之魂(固定属性)
-MWPrivilege_SealDemonAddAttr, # 封魔坛每进入1次增加攻击
-MWPrivilege_EquipPlus, # 强化之魂
-MWPrivilege_RuneDecompose, # 符印分解经验加成
-MWPrivilege_Horse, # 坐骑每提升5级攻击提升点数
-MWPrivilege_Pet, # 每激活1只宠物,生命上限提升
-MWPrivilege_MWSkillUp, # 每提升5级技能潜力,真实伤害+200(最高18000)
-MWPrivilege_WingHP, # 翅膀生命属性+30%
-MWPrivilege_EquipSuit, # 套装基础属性+20%
-MWPrivilege_EquipWash, # 每日免费领取50个洗练石
-MWPrivilege_SignDayAddAttr, # 每日签到加属性 11
-) = range(1,11+1)
(
tttLeaveMap, # 退出倒计时 0
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 4d3eaf0..102acde 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -3961,73 +3961,6 @@
#------------------------------------------------------
-#A3 2E 羽翼精炼 #tagCMWingUp
-
-class tagCMWingUp(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//索引个数
- WingIndexList = list() #(vector<BYTE> WingIndexList)//材料翅膀在背包中的索引列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x2E
- 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):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.WingIndexList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x2E
- self.Count = 0
- self.WingIndexList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1 * self.Count
-
- 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.WriteBYTE(data, self.WingIndexList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- WingIndexList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagCMWingUp=tagCMWingUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMWingUp.Head.Cmd,m_NAtagCMWingUp.Head.SubCmd))] = m_NAtagCMWingUp
-
-
-#------------------------------------------------------
#A4 06 变更家族成员加入审核方式#tagCGChangeFamilyAcceptJoinType
class tagCGChangeFamilyAcceptJoinType(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py
index e1a0e41..0ef37e8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py
@@ -707,95 +707,6 @@
PlayerControl.GetMoneyReal(curPlayer, type_name), json.dumps(extraDict, ensure_ascii=False)), curPlayer)
return
-## 写任务事件记录
-# @param startType: 0 任务开始 1 任务结束
-# @param isFinish: 当任务结束,任务结果 0:失败 1:成功
-# @param failReason: 当任务结束且任务失败时的原因
-def WriteEvent_mission_log(curPlayer, missionData, startType, isFinish=0, failReason=""):
- if startType not in [0, 1] or isFinish not in [0, 1]:
- return
-
- if not missionData:
- return
-
- #missionName = "0%s%s" % (missionData.ID, missionData.Name)
- missionName = missionData.ID
- __WriteEvent_mission_log(curPlayer, startType, missionName, isFinish, failReason)
- return
-
-def WriteEvent_MWSuccess(curPlayer, mwID, succID, logType, isFinish=0):
- '''写自定义任务 - 法宝成就事件, 事件ID格式: 91+法宝ID+至少4位的成就ID
- '''
- cmeType = "91%d%04d" % (mwID, succID)
- WriteEvent_custom_mission_log(curPlayer, cmeType, logType, isFinish)
- return
-
-def WriteEvent_FB(curPlayer, mapID, funcLineID, logType, joinType=0, isFinish=0, failReason=""):
- '''写自定义任务 - 副本事件, 事件ID格式: 90+mapID+joinType+funcLineID
- @param joinType: 0-默认无; 1-单人; 2-多人; 3-助战; 注意单人队伍算单人
- '''
- cmeType = "90%d%d%02d" % (mapID, joinType, funcLineID)
- WriteEvent_custom_mission_log(curPlayer, cmeType, logType, isFinish, failReason=failReason)
- return
-
-## 写自定义任务事件记录
-# @param cmeType: 自定义类型, 对应 ChConfig.CME_Type_List
-# @param logType: 记录类型, 对应 ChConfig.CME_Log_Type_List
-# @param cmeInfoEx: 扩展自定义信息, 一般用于需要分子项记录的类型
-# @param isFinish: 当事件结束时结果 0:失败 1:成功
-# @param failReason: 当事件结束时失败的原因
-def WriteEvent_custom_mission_log(curPlayer, cmeType, logType, isFinish=0, failReason="", cmeInfoEx=None):
- #if cmeType not in ChConfig.CME_Type_List:
- # return
-
- if logType not in ChConfig.CME_Log_Type_List:
- return
-
- startType = 1 if logType == ChConfig.CME_Log_End else 0
- #===========================================================================
- # missionName = ChConfig.CME_Type_Dict.get(cmeType, "未知")
- # if cmeInfoEx != None:
- # missionName = "%s:%s" % (missionName, cmeInfoEx)
- # if logType == ChConfig.CME_Log_Acceptable:
- # missionName = "%s_可挑战" % missionName
- #===========================================================================
-
- missionName = cmeType
- __WriteEvent_mission_log(curPlayer, startType, missionName, isFinish, failReason, cmeType in ChConfig.CME_Ex_Log_List)
- return
-
-## 写任务事件记录
-# @param startType: 0 任务开始 1 任务结束
-# @param missionName: 任务名
-# @param isFinish: 当任务结束,任务结果 0:失败 1:成功
-# @param failReason: 当任务结束且任务失败时的原因
-def __WriteEvent_mission_log(curPlayer, startType, missionName, isFinish, failReason, isExLog=False):
- isFinish = 1 if isFinish else 0
- exDict = {"Fail":failReason}
- resultMsg = json.dumps(exDict, ensure_ascii=False)
- EventReport(ShareDefine.Def_UserAction_MissionLog,
- "MissionStep=%s&MissionID=%s&MissionResult=%s&MissionExtra=%s"%(startType, missionName, isFinish, resultMsg), curPlayer)
- #===========================================================================
- # missionlogEvent = missionlog()
- # missionlogEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
- # missionlogEvent.scribeEventName = ShareDefine.Def_UserAction_ExMissionLog if isExLog else \
- # ShareDefine.Def_UserAction_MissionLog
- # missionlogEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
- # missionlogEvent.chr_level = GetScribeEvent_chr_level(curPlayer)
- # missionlogEvent.type = startType
- # missionlogEvent.mission_name = missionName
- # missionlogEvent.session_id = GameWorld.GetSessionID(curPlayer)
- #
- # missionlogEvent.ip = curPlayer.GetIP()
- # missionlogEvent.account_name = missionlogEvent.account_id
- # missionlogEvent.account_type = GameWorld.GetAccountType(curPlayer)
- # missionlogEvent.chr_name = curPlayer.GetPlayerName()
- # missionlogEvent.mission_result = isFinish
- # missionlogEvent.mission_reason = failReason
- # WriteEvent(missionlogEvent)
- #===========================================================================
- return
-
def WriteEvent_level_up(curPlayer):
EventReport(ShareDefine.Def_UserAction_LVUP, "", curPlayer)
#===========================================================================
@@ -812,180 +723,11 @@
#===========================================================================
return
-def WriteEvent_chat_log(curPlayer, content, cmc_name, tagName="", addinfo=""):
- return
- #===========================================================================
- # '''
- # @todo: 写聊天监控记录
- # @param content: 聊天内容
- # @param cmc_name: 聊天频道标识
- # @param tagName: 私聊对象
- # @param addinfo: 额外信息
- # '''
- # chatlogEvent = chat_log()
- # chatlogEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
- # chatlogEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
- # chatlogEvent.chr_name = curPlayer.GetName()
- # chatlogEvent.content = __GetEventChatContent(content)
- # chatlogEvent.cmc_name = cmc_name
- # chatlogEvent.ip = curPlayer.GetIP()
- # chatlogEvent.account_name = chatlogEvent.account_id
- # chatlogEvent.account_type = GameWorld.GetAccountType(curPlayer)
- # chatlogEvent.chr_level = GetScribeEvent_chr_level(curPlayer)
- # chatlogEvent.object = tagName
- # chatlogEvent.addinfo = addinfo
- # WriteEvent(chatlogEvent)
- #===========================================================================
- return
-
-def __GetEventChatContent(content):
- '''
- <a color="255,255,0" href="GOTO 10000,74,60">[地图:暮光之城(74,60)]</a>
- <A color="205,0,0" onmouseover="ShowInfo ITEM,55986" DATA="07 04 01 00 B2 DA 00 00 00 01 00 01
- 28 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 3C 00 00 00 7B 27 32 38 27 3A 5B
- 27 31 30 32 33 34 27 5D 2C 27 31 39 27 3A 5B 27 33 35 34 27 2C 27 38 35 36 27 2C 27 33 35
- 34 27 2C 27 37 35 38 27 2C 27 39 35 31 27 2C 27 31 30 35 32 27 5D 7D 04 00 00 00 00 00 00
- 00 00 00 00 00 00 00 00 00 00 ">[神圣的傲世之弓 +40]</a>
- '''
- tempMatch = re.search("<a color=.*?>.*?</a>", content)
- if tempMatch:
- tempStr = tempMatch.group()
- markIndex = tempStr.index(">") + 1
- repStr = tempStr[markIndex:tempStr.index("<", markIndex)]
- content = content.replace(tempStr, repStr)
-
- tempMatch = re.search("<A color=.*?>.*?</a>", content)
- if tempMatch:
- tempStr = tempMatch.group()
- markIndex = tempStr.index(">") + 1
- repStr = tempStr[markIndex:tempStr.index("<", markIndex)]
- content = content.replace(tempStr, repStr)
-
- # 替换换行
- content = content.replace("\r", "")
- content = content.replace("\n", "")
- return content
-
-## 写自定义事件记录
-# @param event_name: 事件名称
-# @param comments: 备注或附加信息
-def WriteEvent_custom_events(curPlayer, event_name, comments):
- #===========================================================================
- # customEvent = custom_events()
- # customEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
- # customEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
- # customEvent.event_name = event_name
- # customEvent.session_id = GameWorld.GetSessionID(curPlayer)
- #
- # customEvent.ip = curPlayer.GetIP()
- # customEvent.account_name = customEvent.account_id
- # customEvent.account_type = GameWorld.GetAccountType(curPlayer)
- # customEvent.chr_name = curPlayer.GetPlayerName()
- # customEvent.chr_level = GetScribeEvent_chr_level(curPlayer)
- # customEvent.comments = CommFunc.GetStrCutoff(comments, 255)
- # WriteEvent(customEvent)
- #===========================================================================
- return
-
def GetScribeEvent_chr_level(curPlayer):
transCnt, showLV = GameWorld.GetClientLV(curPlayer)
return transCnt * 1000 + showLV
-
## -------------------------------------- 扩展自定义 ---------------------------------------
-
-class horse_class(ScribeEvent):
- # 坐骑进阶记录
- def __init__(self):
- #必须字段
- super(horse_class, self).__init__()
- self.account_id = "" # 账号 ID,平台下唯一,且终生不变
- self.chr_name = "" # 玩家角色名
-
- self.bef_class_lv = 0 # 此次进阶操作前的坐骑等阶, 0代表1阶
- self.bef_exp = 0 # 此次进阶操作前的坐骑等阶星数的经验值
- self.cost_item_cnt = 0 # 此次进阶消耗的进阶道具数量
- self.aft_class_lv = 0 # 此次进阶操作后的坐骑等阶, 0代表1阶
- self.aft_exp = 0 # 此次进阶操作后的坐骑等阶星数的经验值
-
- #非必须字段
-
- #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
- return
-
- def GetCurEventStr(self):
- if not self.time:
- self.time = GameWorld.GetCurrentDataTimeStr()
- tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,
- str(self.bef_class_lv), str(self.bef_exp), str(self.cost_item_cnt),
- str(self.aft_class_lv), str(self.aft_exp), self.time]
-
- return super(horse_class, self).GetEventStr(tmpList)
-
- def GetScribeEventName(self): return ShareDefine.Def_UserAction_HorseClass
-
-def WriteEvent_horse_class(curPlayer, befClassLV, befExp, costCnt, aftClassLV, aftExp):
- ## 写坐骑进阶记录
- #===========================================================================
- # horseClass = horse_class()
- # horseClass.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
- # horseClass.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
- # horseClass.chr_name = curPlayer.GetPlayerName()
- # horseClass.bef_class_lv = befClassLV
- # horseClass.bef_exp = befExp
- # horseClass.cost_item_cnt = costCnt
- # horseClass.aft_class_lv = aftClassLV
- # horseClass.aft_exp = aftExp
- # WriteEvent(horseClass)
- #===========================================================================
- return
-
-class wing_class(ScribeEvent):
- # 翅膀进阶记录
- def __init__(self):
- #必须字段
- super(wing_class, self).__init__()
- self.account_id = "" # 账号 ID,平台下唯一,且终生不变
- self.chr_name = "" # 玩家角色名
-
- self.bef_class_lv = 0 # 当前翅膀等阶, 0代表1阶
- self.bef_exp = 0 # 进阶操作前的祝福值
- self.cost_item_cnt = 0 # 此次进阶消耗的进阶道具数量
- self.aft_class_lv = 0 # 此次进阶操作后翅膀的等阶, 0代表1阶
- self.aft_exp = 0 # 进阶操作后的祝福值
-
- #非必须字段
-
- #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
- return
-
- def GetCurEventStr(self):
- if not self.time:
- self.time = GameWorld.GetCurrentDataTimeStr()
- tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,
- str(self.bef_class_lv), str(self.bef_exp), str(self.cost_item_cnt),
- str(self.aft_class_lv), str(self.aft_exp), self.time]
-
- return super(wing_class, self).GetEventStr(tmpList)
-
- def GetScribeEventName(self): return ShareDefine.Def_UserAction_WingClass
-
-def WriteEvent_wing_class(curPlayer, befClassLV, befExp, costCnt, aftClassLV, aftExp):
- ## 写翅膀进阶记录
- #===========================================================================
- # wingClass = wing_class()
- # wingClass.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
- # wingClass.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
- # wingClass.chr_name = curPlayer.GetPlayerName()
- # wingClass.bef_class_lv = befClassLV
- # wingClass.bef_exp = befExp
- # wingClass.cost_item_cnt = costCnt
- # wingClass.aft_class_lv = aftClassLV
- # wingClass.aft_exp = aftExp
- # WriteEvent(wingClass)
- #===========================================================================
- return
class pet_lv(ScribeEvent):
# 宠物升级记录
@@ -1301,278 +1043,6 @@
# WriteEvent(coinToGold)
#===========================================================================
return
-
-class rune_lv(ScribeEvent):
- # 符印升级记录
- def __init__(self):
- #必须字段
- super(rune_lv, self).__init__()
- self.account_id = "" # 账号 ID,平台下唯一,且终生不变
- self.chr_name = "" # 玩家角色名
-
- self.rune_name = "" # 符印名称
- self.cost_rune_money = 0 # 此次消耗的符印精华
- self.aft_lv = 0 # 此次操作后的等级, 0代表1级
- self.aft_rune_money = 0 # 此次操作后的符印精华
-
- #非必须字段
-
- #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
- return
-
- def GetCurEventStr(self):
- if not self.time:
- self.time = GameWorld.GetCurrentDataTimeStr()
- tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,
- self.rune_name, str(self.cost_rune_money), str(self.aft_lv), str(self.aft_rune_money), self.time]
-
- return super(rune_lv, self).GetEventStr(tmpList)
-
- def GetScribeEventName(self): return ShareDefine.Def_UserAction_RuneLV
-
-def WriteEvent_rune_lv(curPlayer, runeName, costruneMoney, aftLV, aftruneMoney):
- ## 写符印升级记录
- #===========================================================================
- # runeLV = rune_lv()
- # runeLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
- # runeLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
- # runeLV.chr_name = curPlayer.GetPlayerName()
- # runeLV.rune_name = runeName
- # runeLV.cost_rune_money = costruneMoney
- # runeLV.aft_lv = aftLV
- # runeLV.aft_rune_money = aftruneMoney
- # WriteEvent(runeLV)
- #===========================================================================
- return
-
-class change_name(ScribeEvent):
- # 改名记录
- def __init__(self):
- #必须字段
- super(change_name, self).__init__()
- self.account_id = "" # 账号 ID,平台下唯一,且终生不变
- self.chr_name = "" # 玩家角色名
-
- self.old_name = "" # 原来的名字
- self.new_name = "" # 新的名字
- #非必须字段
-
- #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
- return
-
- def GetCurEventStr(self):
- if not self.time:
- self.time = GameWorld.GetCurrentDataTimeStr()
- tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,
- self.old_name, self.new_name, self.time]
-
- return super(change_name, self).GetEventStr(tmpList)
-
- def GetScribeEventName(self): return ShareDefine.Def_UserAction_ChangeName
-
-def WriteEvent_change_name(curPlayer, oldName, newName):
- ## 改名记录
- #===========================================================================
- # changeName = change_name()
- # changeName.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
- # changeName.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
- # changeName.chr_name = curPlayer.GetPlayerName()
- # changeName.old_name = oldName
- # changeName.new_name = newName
- # WriteEvent(changeName)
- #===========================================================================
- return
-
-class add_zhenqi(ScribeEvent):
- # 真气产出记录
- def __init__(self):
- #必须字段
- super(add_zhenqi, self).__init__()
- self.account_id = "" # 账号 ID,平台下唯一,且终生不变
- self.chr_name = "" # 玩家角色名
-
- self.eventName = "" # 来源
- self.eventData = "" # 来源附加信息
- self.addValue = 0 # 产出数量
- self.totalValue = 0 # 剩余总量
-
- #非必须字段
-
- #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
- return
-
- def GetCurEventStr(self):
- if not self.time:
- self.time = GameWorld.GetCurrentDataTimeStr()
- tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,
- self.eventName, str(self.eventData), str(self.addValue), str(self.totalValue), self.time]
-
- return super(add_zhenqi, self).GetEventStr(tmpList)
-
- def GetScribeEventName(self): return ShareDefine.Def_UserAction_AddZhenqi
-
-def WriteEvent_add_zhenqi(curPlayer, eventName, eventData, addValue, totalValue):
- ## 真气产出记录
- #===========================================================================
- # if eventData:
- # eventData = str(eventData)
- # eventData = eventData.replace("\"", "'")
- # eventData = eventData.replace(",", "|")
- #
- # addZhenQi = add_zhenqi()
- # addZhenQi.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
- # addZhenQi.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
- # addZhenQi.chr_name = curPlayer.GetPlayerName()
- # addZhenQi.eventName = eventName
- # addZhenQi.eventData = eventData
- # addZhenQi.addValue = addValue
- # addZhenQi.totalValue = totalValue
- # WriteEvent(addZhenQi)
- #===========================================================================
- return
-
-class lost_zhenqi(ScribeEvent):
- # 真气消耗记录
- def __init__(self):
- #必须字段
- super(lost_zhenqi, self).__init__()
- self.account_id = "" # 账号 ID,平台下唯一,且终生不变
- self.chr_name = "" # 玩家角色名
-
- self.eventName = "" # 消耗点
- self.eventData = "" # 消耗点附加信息
- self.lostValue = 0 # 消耗数量
- self.totalValue = 0 # 剩余总量
-
- #非必须字段
-
- #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
- return
-
- def GetCurEventStr(self):
- if not self.time:
- self.time = GameWorld.GetCurrentDataTimeStr()
- tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,
- self.eventName, str(self.eventData), str(self.lostValue), str(self.totalValue), self.time]
-
- return super(lost_zhenqi, self).GetEventStr(tmpList)
-
- def GetScribeEventName(self): return ShareDefine.Def_UserAction_LostZhenqi
-
-def WriteEvent_lost_zhenqi(curPlayer, eventName, eventData, lostValue, totalValue):
- ## 真气消耗记录
- #===========================================================================
- # if eventData:
- # eventData = str(eventData)
- # eventData = eventData.replace("\"", "'")
- # eventData = eventData.replace(",", "|")
- #
- # lostZhenQi = lost_zhenqi()
- # lostZhenQi.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
- # lostZhenQi.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
- # lostZhenQi.chr_name = curPlayer.GetPlayerName()
- # lostZhenQi.eventName = eventName
- # lostZhenQi.eventData = eventData
- # lostZhenQi.lostValue = lostValue
- # lostZhenQi.totalValue = totalValue
- # WriteEvent(lostZhenQi)
- #===========================================================================
- return
-
-class coat_lv(ScribeEvent):
- # 时装升级记录
- def __init__(self):
- #必须字段
- super(coat_lv, self).__init__()
- self.account_id = "" # 账号 ID,平台下唯一,且终生不变
- self.chr_name = "" # 玩家角色名
-
- self.coat_name = "" # 时装名称
- self.bef_lv = 0 # 此次进阶操作前的等级
- self.bef_exp = 0 # 此次进阶操作前的经验值
- self.cost_item_cnt = 0 # 此次消耗的道具数量
- self.aft_lv = 0 # 此次操作后的等级, 0代表0级, 1代表+1级
- self.aft_exp = 0 #此次进阶操作后的经验值
- #非必须字段
-
- #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
- return
-
- def GetCurEventStr(self):
- if not self.time:
- self.time = GameWorld.GetCurrentDataTimeStr()
- tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,
- self.coat_name, str(self.bef_lv), str(self.bef_exp), str(self.cost_item_cnt), str(self.aft_lv), str(self.aft_exp), self.time]
-
- return super(coat_lv, self).GetEventStr(tmpList)
-
- def GetScribeEventName(self): return ShareDefine.Def_UserAction_CoatLV
-
-def WriteEvent_coat_lv(curPlayer, coatName, befLV, befExp, costItemCnt, aftLV, aftExp):
- return
- ## 写时装升级记录
- #===========================================================================
- # coatLV = coat_lv()
- # coatLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
- # coatLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
- # coatLV.chr_name = curPlayer.GetPlayerName()
- # coatLV.coat_name = coatName
- # coatLV.bef_lv = befLV
- # coatLV.bef_exp = befExp
- # coatLV.cost_item_cnt = costItemCnt
- # coatLV.aft_lv = aftLV
- # coatLV.aft_exp = aftExp
- # WriteEvent(coatLV)
- #===========================================================================
-
-
-
-class wingskin_lv(ScribeEvent):
- # 时装升级记录
- def __init__(self):
- #必须字段
- super(wingskin_lv, self).__init__()
- self.account_id = "" # 账号 ID,平台下唯一,且终生不变
- self.chr_name = "" # 玩家角色名
-
- self.skin_name = "" # 幻化翅膀名称
- self.bef_lv = 0 # 此次进阶操作前的等级
- self.bef_exp = 0 # 此次进阶操作前的经验值
- self.cost_item_cnt = 0 # 此次消耗的道具数量
- self.aft_lv = 0 # 此次操作后的等级, 0代表0级, 1代表+1级
- self.aft_exp = 0 #此次进阶操作后的经验值
- #非必须字段
-
- #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
- return
-
- def GetCurEventStr(self):
- if not self.time:
- self.time = GameWorld.GetCurrentDataTimeStr()
- tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,
- self.skin_name, str(self.bef_lv), str(self.bef_exp), str(self.cost_item_cnt), str(self.aft_lv), str(self.aft_exp), self.time]
-
- return super(wingskin_lv, self).GetEventStr(tmpList)
-
- def GetScribeEventName(self): return ShareDefine.Def_UserAction_WingSkinLV
-
-def WriteEvent_wingskin_lv(curPlayer, skinName, befLV, befExp, costItemCnt, aftLV, aftExp):
- ## 写幻化翅膀升级记录
- #===========================================================================
- # wingskinLV = wingskin_lv()
- # wingskinLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
- # wingskinLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
- # wingskinLV.chr_name = curPlayer.GetPlayerName()
- # wingskinLV.skin_name = skinName
- # wingskinLV.bef_lv = befLV
- # wingskinLV.bef_exp = befExp
- # wingskinLV.cost_item_cnt = costItemCnt
- # wingskinLV.aft_lv = aftLV
- # wingskinLV.aft_exp = aftExp
- # WriteEvent(wingskinLV)
- #===========================================================================
- return
-
class horseskin_lv(ScribeEvent):
# 时装升级记录
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCHP.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCHP.py
deleted file mode 100644
index 3b2d47b..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCHP.py
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.SetNPCHP
-#
-# @todo:设置屏幕周围NPC血量
-# @author hxp
-# @date 2015-3-22
-# @version 1.0
-#
-# 详细描述: 设置屏幕周围NPC血量
-#
-#---------------------------------------------------------------------
-#"""Version = 2015-03-22 23:00"""
-#---------------------------------------------------------------------
-
-import IpyGameDataPY
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import GameObj
-
-#---------------------------------------------------------------------
-#逻辑实现
-
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param msgList 参数列表
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
- if len(msgList) != 2:
- GameWorld.DebugAnswer(curPlayer, "SetNPCHP NPCID HP")
- return
-
- npcID, setHP = msgList
- setHP = max(1, setHP)
-
- curNPC = GameWorld.GetObj(npcID, IPY_GameWorld.gotNPC)
- if curNPC:
- __GMSetNPCHP(curPlayer, curNPC, setHP)
- return
-
- gameMap = GameWorld.GetMap()
-
- for i in range(curPlayer.GetPosX() - ChConfig.Def_Screen_Area, curPlayer.GetPosX() + ChConfig.Def_Screen_Area):
- for j in range(curPlayer.GetPosY() - ChConfig.Def_Screen_Area, curPlayer.GetPosY() + ChConfig.Def_Screen_Area):
- tempObj = gameMap.GetPosObj(i, j)
- if not tempObj:
- continue
- for k in range(0, tempObj.GetObjCount()):
- curObj = tempObj.GetObjByIndex(k)
- if curObj == None:
- continue
-
- if curObj.GetGameObjType() != IPY_GameWorld.gotNPC:
- continue
-
- curNPC = GameWorld.GetObj(curObj.GetID(), IPY_GameWorld.gotNPC)
- if curNPC.GetCurAction() == IPY_GameWorld.laNPCDie:
- continue
-
- #不杀功能NPC
- if curNPC.GetType() == IPY_GameWorld.ntFunctionNPC:
- continue
-
- if curNPC.GetNPCID() != npcID:
- continue
-
- __GMSetNPCHP(curPlayer, curNPC, setHP)
-
- return
-
-def __GMSetNPCHP(curPlayer, curNPC, setHP):
- npcID = curNPC.GetNPCID()
- isByTime = True if IpyGameDataPY.GetIpyGameDataNotLog("NPCTimeLostHP", npcID) else False
- GameObj.SetHP(curNPC, setHP, isByTime=isByTime)
- curNPC.Notify_HP()
- GameWorld.DebugAnswer(curPlayer, "SetNPCHP ID=%s(%s),HP=%s" % (curNPC.GetID(), curNPC.GetNPCID(), setHP))
- return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCKillDrop.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCKillDrop.py
deleted file mode 100644
index 31dbf78..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCKillDrop.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.SetNPCKillDrop
-#
-# @todo:设置NPC击杀掉落记录信息
-# @author hxp
-# @date 2018-02-10
-# @version 1.0
-#
-# 详细描述: 设置NPC击杀掉落记录信息
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-02-10 10:00"""
-#-------------------------------------------------------------------------------
-
-import PlayerControl
-import IpyGameDataPY
-import GameWorld
-import ChConfig
-import ShareDefine
-
-#---------------------------------------------------------------------
-#逻辑实现
-
-## GM命令执行入口
-# @param curPlayer 当前玩家
-# @param msgList 参数列表
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
- if not msgList:
- GameWorld.DebugAnswer(curPlayer, "设置次数: SetNPCKillDrop npcID 击杀次数")
- GameWorld.DebugAnswer(curPlayer, "重置所有: SetNPCKillDrop 0")
- return
-
- if len(msgList) == 1 and not msgList[0]:
- resetNPCIDList = []
- ipyDataMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyDataMgr.GetNPCDropItemCount()):
- ipyData = ipyDataMgr.GetNPCDropItemByIndex(i)
- npcID = ipyData.GetNPCID()
- if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NPCKillCount % npcID):
- continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NPCKillCount % npcID, 0)
- resetNPCIDList.append(npcID)
-
- gw = GameWorld.GetGameWorld()
- globalKillDropDict = IpyGameDataPY.GetFuncEvalCfg("GlobalDropCD", 2)
- for npcID in globalKillDropDict.keys():
- killedCount = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_NPCKilledCount % npcID)
- if not killedCount:
- continue
- msgInfo = str([npcID, 0])
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "GlobalKillCount", msgInfo, len(msgInfo))
- resetNPCIDList.append(npcID)
-
- GameWorld.DebugAnswer(curPlayer, "重置OK: %s" % resetNPCIDList)
- return
-
- npcID = msgList[0]
- ipyData = IpyGameDataPY.GetIpyGameData("NPCDropItem", npcID)
- if not ipyData:
- GameWorld.DebugAnswer(curPlayer, "没有配置掉落:%s" % npcID)
- return
-
- if not ipyData.GetKillCountDropPri() and not ipyData.GetKillCountDropEquipPub() and not ipyData.GetKillCountDropPub():
- GameWorld.DebugAnswer(curPlayer, "不需要设置击杀掉落次数信息!%s" % npcID)
- else:
- killCount = msgList[1] if len(msgList) > 1 else 0
- setValue = killCount * 10000 + killCount * 100 + killCount
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NPCKillCount % npcID, setValue)
- GameWorld.DebugAnswer(curPlayer, "击杀掉落值(%s)=%s" % (npcID, killCount))
-
- return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetWingJL.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetWingJL.py
deleted file mode 100644
index c856c9b..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetWingJL.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.SetWingJL
-#
-# @todo:设置翅膀精炼
-# @author hxp
-# @date 2018-04-03
-# @version 1.0
-#
-# 详细描述: 设置翅膀精炼
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-04-03 20:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import ShareDefine
-import IPY_GameWorld
-import ItemCommon
-import IpyGameDataPY
-import PlayerWing
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 设置技能等级
-# @param curPlayer 当前玩家
-# @param dataList 参数列表
-# @return None
-# @remarks 函数详细说明.
-def OnExec(curPlayer, dataList):
- if not dataList:
- GameWorld.DebugAnswer(curPlayer, "SetWingJL 精炼值 可选[特殊材料ID 个数 特殊材料ID 个数]")
- return
-
- equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
- curWing = equipPack.GetAt(ShareDefine.retWing)
- if not ItemCommon.CheckItemCanUse(curWing):
- GameWorld.DebugAnswer(curPlayer, "没有穿戴翅膀!无法设置!")
- return
-
- wingClassLV = curWing.GetLV()
- exp = dataList[0]
- materialDict = {}
- paramLen = len(dataList)
- if paramLen > 1:
- curWing.ClearUserAttr(ShareDefine.Def_IudetWingMaterialItemID)
- curWing.ClearUserAttr(ShareDefine.Def_IudetWingMaterialItemCount)
- for i in range(1, paramLen, 2):
- if i + 1 >= paramLen:
- break
-
- materialItemID = dataList[i]
- materialCount = dataList[i + 1]
- materialDict[materialItemID] = materialCount
- materialExp = GetWingMaterialItemExp(materialItemID, wingClassLV) * materialCount
- exp += materialExp
-
- curWing.AddUserAttr(ShareDefine.Def_IudetWingMaterialItemID, materialItemID)
- curWing.AddUserAttr(ShareDefine.Def_IudetWingMaterialItemCount, materialCount)
-
- curWing.SetUserAttr(ShareDefine.Def_IudetWingProgressValue, exp)
- PlayerWing.UpdWingColor(curPlayer, curWing, 0, exp)
- GameWorld.DebugAnswer(curPlayer, "精炼:%s,%s" % (exp, materialDict))
- return
-
-def GetWingMaterialItemExp(materialItemID, wingClassLV):
- wingAttrIpyData = IpyGameDataPY.GetIpyGameData("WingRefineExp", materialItemID)
- if wingAttrIpyData == None:
- return 0
- expDict = wingAttrIpyData.GetExpMaterial()
- if not expDict:
- return 0
- if wingClassLV not in expDict:
- return 0
- return expDict[wingClassLV]
-
-
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 fb10f06..abb555a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -1474,21 +1474,6 @@
return callFunc()
-
-## 获得特殊副本npc掉落金钱
-# @param curPlayer
-# @return None
-def OnGetNPCExp(curPlayer, curNPC):
- do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-
- callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnGetNPCExp"))
-
- if not callFunc:
- return 0
-
-
- return callFunc(curPlayer, curNPC)
-
## 获得外层经验倍率
def OnGetOuterExpRate(curPlayer):
do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 8a1d35c..ab12435 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -404,11 +404,6 @@
("list", "AttrPerStarAddList", 0),
),
- "SkillMatch":(
- ("BYTE", "IDIndex", 1),
- ("list", "Skills", 0),
- ),
-
"RolePoint":(
("BYTE", "AttrID", 1),
("dict", "AddAttrInfoPerPoint", 0),
@@ -877,93 +872,6 @@
("dict", "AttrExDict", 0),
),
- "NPCRealmStrengthen":(
- ("DWORD", "NPCID", 1),
- ("BYTE", "RealmDifficulty", 1),
- ("DWORD", "MapID", 0),
- ("DWORD", "LV", 0),
- ("DWORD", "Exp", 0),
- ("WORD", "MaxDrapLV", 0),
- ("BYTE", "EquipClassLV", 0),
- ("DWORD", "DropMoneyMin", 0),
- ("DWORD", "DropMoneyMax", 0),
- ("WORD", "LowLV", 0),
- ("WORD", "HighestLV", 0),
- ("DWORD", "Defense", 0),
- ("DWORD", "MDef", 0),
- ("DWORD", "FireDef", 0),
- ("DWORD", "SP", 0),
- ),
-
- "NPCTimeLostHP":(
- ("DWORD", "NPCID", 1),
- ("DWORD", "LostHPPerSecond", 0),
- ("BYTE", "MaxPlayerCount", 0),
- ("DWORD", "LostHPPerSecondEx", 0),
- ("BYTE", "FightPowerMinByLV", 0),
- ("DWORD", "FightPowerMin", 0),
- ("DWORD", "FightPowerMax", 0),
- ("DWORD", "EveryFightPower", 0),
- ("DWORD", "EveryFightPowerLostHPEx", 0),
- ),
-
- "EquipSuitAttr":(
- ("WORD", "SuiteID", 1),
- ("BYTE", "SuiteCnt", 0),
- ("BYTE", "Star", 0),
- ("dict", "AttrInfo", 0),
- ("DWORD", "SkillID", 0),
- ("BYTE", "IsNotify", 0),
- ("WORD", "ActivateIndex", 0),
- ),
-
- "WingRefineAttr":(
- ("BYTE", "WingClassLV", 1),
- ("dict", "AttrInfo", 0),
- ("dict", "ItemColorInfo", 0),
- ("DWORD", "MaxRefineExp", 0),
- ),
-
- "WingRefineExp":(
- ("DWORD", "ItemID", 1),
- ("DWORD", "RandExpMin", 0),
- ("DWORD", "RandExpMax", 0),
- ("dict", "ExpMaterial", 0),
- ),
-
- "NPCDropItem":(
- ("DWORD", "NPCID", 1),
- ("WORD", "MaxWorldLV", 0),
- ("WORD", "MaxDropLV", 0),
- ("BYTE", "CanDropRatePlus", 0),
- ("BYTE", "IsDropJobSelf", 0),
- ("list", "PieRateDrop", 0),
- ("BYTE", "PieRateDoCnt", 0),
- ("dict", "IndepRateDrop", 0),
- ("BYTE", "IndepRateDoCnt", 0),
- ("dict", "EquipColorMaxDropCount", 0),
- ("list", "TianxuanEquipRateList", 0),
- ("dict", "EquipColorSuitInfo", 0),
- ("dict", "EquipPartKeyRateInfo", 0),
- ("BYTE", "ColorSuitPartOptimization", 0),
- ("dict", "KillCountDropEquipPub", 0),
- ("dict", "ItemIDDropRate", 0),
- ("dict", "TianxuanItemIDRate", 0),
- ("dict", "ItemIDMaxDropCount", 0),
- ("dict", "ItemKeyDropRate", 0),
- ("dict", "ItemKeyDropRateJob", 0),
- ("dict", "TianxuanItemKeyRate", 0),
- ("dict", "ItemKeyMaxDropCount", 0),
- ("BYTE", "DropMoneyDoCnt", 0),
- ("WORD", "DropMoneyRate", 0),
- ("WORD", "DropMoneyMin", 0),
- ("WORD", "DropMoneyMax", 0),
- ("dict", "KillCountDropPub", 0),
- ("list", "KillCountDropPri", 0),
- ("list", "PriItemIDDrop", 0),
- ("BYTE", "AucionItemCanSell", 0),
- ),
-
"RuneTower":(
("DWORD", "ID", 1),
("DWORD", "RunePoint", 0),
@@ -1017,55 +925,6 @@
("BYTE", "ADCntMax", 0),
("list", "ADAwardItemList", 0),
("DWORD", "ADMapID", 0),
- ),
-
- "EquipGSParam":(
- ("BYTE", "ClassLV", 1),
- ("BYTE", "EquipColor", 1),
- ("BYTE", "IsSuit", 1),
- ("BYTE", "ItemQuality", 1),
- ("DWORD", "BaseEquipMaxHPAddPerC", 0),
- ("DWORD", "BaseEquipAtkAddPerC", 0),
- ("DWORD", "SuperHitC", 0),
- ("DWORD", "SuperHitPerC", 0),
- ("DWORD", "LuckyHitRateC", 0),
- ("DWORD", "LuckyHitRateReduceC", 0),
- ("DWORD", "LuckPerC", 0),
- ("DWORD", "PerLVAtkC", 0),
- ("DWORD", "PerLVMaxHPC", 0),
- ("DWORD", "DropMoneyPerC", 0),
- ("DWORD", "SuperHitReduceC", 0),
- ("DWORD", "SuperHitRateReduceC", 0),
- ("DWORD", "HitC", 0),
- ("DWORD", "MissC", 0),
- ("DWORD", "PetDamPerC", 0),
- ("DWORD", "MaxHPPerC", 0),
- ("DWORD", "AtkPerC", 0),
- ("DWORD", "SkillAtkRateC", 0),
- ("DWORD", "SkillAtkRateReduceC", 0),
- ("DWORD", "SkillAddPer1C", 0),
- ("DWORD", "SkillAddPer2C", 0),
- ("DWORD", "SkillAddPer3C", 0),
- ("DWORD", "SkillAddPer4C", 0),
- ("DWORD", "SkillAddPer5C", 0),
- ("DWORD", "SkillAddPer6C", 0),
- ("DWORD", "SkillAddPer7C", 0),
- ("DWORD", "SkillReducePer1C", 0),
- ("DWORD", "SkillReducePer2C", 0),
- ("DWORD", "SkillReducePer3C", 0),
- ("DWORD", "SkillReducePer4C", 0),
- ("DWORD", "SkillReducePer5C", 0),
- ("DWORD", "SkillReducePer6C", 0),
- ("DWORD", "SkillReducePer7C", 0),
- ("DWORD", "ReduceSkillCDPerC", 0),
- ("DWORD", "LuckyHitPerC", 0),
- ("DWORD", "FaintDefRateC", 0),
- ("DWORD", "SuperHitRateC", 0),
- ("DWORD", "IgnoreDefRateC", 0),
- ("DWORD", "IgnoreDefRateReduceC", 0),
- ("DWORD", "ProDefPerC", 0),
- ("DWORD", "FinalHurtPerC", 0),
- ("DWORD", "FinalHurtReducePerC", 0),
),
"Success":(
@@ -1654,12 +1513,6 @@
("WORD", "LowLV", 0),
("WORD", "HighestLV", 0),
("DWORD", "Defense", 0),
- ),
-
- "TalentSkill":(
- ("DWORD", "SkillID", 1),
- ("BYTE", "TalentType", 0),
- ("BYTE", "Series", 0),
),
"ActFlashSale":(
@@ -2913,16 +2766,6 @@
def GetInitAttrValueList(self): return self.attrTuple[8] # 初始属性值列表 list
def GetAttrPerStarAddList(self): return self.attrTuple[9] # 每星加成值列表 list
-# 技能搭配表
-class IPY_SkillMatch():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetIDIndex(self): return self.attrTuple[0] # BYTE
- def GetSkills(self): return self.attrTuple[1] # 主动技能(职业1id|职业2id) list
-
# 灵根表
class IPY_RolePoint():
@@ -3641,123 +3484,6 @@
def GetAttrSpecDict(self): return self.attrTuple[6] # 特殊属性值字典 {attrKey:value, ...} dict
def GetAttrExDict(self): return self.attrTuple[7] # 特殊属性值字典 {attrKey:value, ...} dict
-# 成长型境界怪物表
-class IPY_NPCRealmStrengthen():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetNPCID(self): return self.attrTuple[0] # NPCID DWORD
- def GetRealmDifficulty(self): return self.attrTuple[1] # 境界难度 BYTE
- def GetMapID(self): return self.attrTuple[2] # DWORD
- def GetLV(self): return self.attrTuple[3] # NPC等级 DWORD
- def GetExp(self): return self.attrTuple[4] # 基础经验 DWORD
- def GetMaxDrapLV(self): return self.attrTuple[5] # 玩家最大可掉落等级 WORD
- def GetEquipClassLV(self): return self.attrTuple[6] # 掉落装备阶 BYTE
- def GetDropMoneyMin(self): return self.attrTuple[7] # 最小金币 DWORD
- def GetDropMoneyMax(self): return self.attrTuple[8] # 最大金币 DWORD
- def GetLowLV(self): return self.attrTuple[9] # 推荐最低等级 WORD
- def GetHighestLV(self): return self.attrTuple[10] # 推荐最高等级 WORD
- def GetDefense(self): return self.attrTuple[11] # 推荐防御 DWORD
- def GetMDef(self): return self.attrTuple[12] # 标准击杀时间/毫秒 DWORD
- def GetFireDef(self): return self.attrTuple[13] # 脱机挂经验计算战力 DWORD
- def GetSP(self): return self.attrTuple[14] # SP DWORD
-
-# NPC时间掉血表
-class IPY_NPCTimeLostHP():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetNPCID(self): return self.attrTuple[0] # NPCID DWORD
- def GetLostHPPerSecond(self): return self.attrTuple[1] # 单人每秒掉血量 DWORD
- def GetMaxPlayerCount(self): return self.attrTuple[2] # 最大人数 BYTE
- def GetLostHPPerSecondEx(self): return self.attrTuple[3] # 每增加一人附加掉血量 DWORD
- def GetFightPowerMinByLV(self): return self.attrTuple[4] # 标准战力是否取等级表 BYTE
- def GetFightPowerMin(self): return self.attrTuple[5] # 标准战力 DWORD
- def GetFightPowerMax(self): return self.attrTuple[6] # 上限战力 DWORD
- def GetEveryFightPower(self): return self.attrTuple[7] # 每x点战力 DWORD
- def GetEveryFightPowerLostHPEx(self): return self.attrTuple[8] # 每x点战力附加伤害 DWORD
-
-# 装备套装属性表
-class IPY_EquipSuitAttr():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetSuiteID(self): return self.attrTuple[0] # 套装ID WORD
- def GetSuiteCnt(self): return self.attrTuple[1] # 套装件数 BYTE
- def GetStar(self): return self.attrTuple[2] # 星数 BYTE
- def GetAttrInfo(self): return self.attrTuple[3] # 属性 dict
- def GetSkillID(self): return self.attrTuple[4] # 技能ID DWORD
- def GetIsNotify(self): return self.attrTuple[5] # 是否广播 BYTE
- def GetActivateIndex(self): return self.attrTuple[6] # 激活索引 WORD
-
-# 羽翼精炼属性表
-class IPY_WingRefineAttr():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetWingClassLV(self): return self.attrTuple[0] # 翅膀阶级 BYTE
- def GetAttrInfo(self): return self.attrTuple[1] # 精炼属性信息 dict
- def GetItemColorInfo(self): return self.attrTuple[2] # 精炼经验对应颜色信息 dict
- def GetMaxRefineExp(self): return self.attrTuple[3] # 本阶最大精炼值 DWORD
-
-# 羽翼精炼经验表
-class IPY_WingRefineExp():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetItemID(self): return self.attrTuple[0] # 精炼物品ID DWORD
- def GetRandExpMin(self): return self.attrTuple[1] # 最小随机精炼值 DWORD
- def GetRandExpMax(self): return self.attrTuple[2] # 最大随机精炼值 DWORD
- def GetExpMaterial(self): return self.attrTuple[3] # 翅膀代数对应精炼值 dict
-
-# NPC掉落表
-class IPY_NPCDropItem():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetNPCID(self): return self.attrTuple[0] # NPCID DWORD
- def GetMaxWorldLV(self): return self.attrTuple[1] # 最大世界等级,0为不限制,不受最大掉落等级影响 WORD
- def GetMaxDropLV(self): return self.attrTuple[2] # 最大可掉落的玩家等级, 不影响世界等级 WORD
- def GetCanDropRatePlus(self): return self.attrTuple[3] # 额外提升掉率的是否有效 BYTE
- def GetIsDropJobSelf(self): return self.attrTuple[4] # 是否只掉落本职业 BYTE
- def GetPieRateDrop(self): return self.attrTuple[5] # 饼图概率掉落信息 [(概率,0),(概率,(阶,颜色)),...] list
- def GetPieRateDoCnt(self): return self.attrTuple[6] # 饼图概率执行次数 BYTE
- def GetIndepRateDrop(self): return self.attrTuple[7] # 独立概率掉落信息 {(阶,颜色):概率,...} dict
- def GetIndepRateDoCnt(self): return self.attrTuple[8] # 独立概率执行次数 BYTE
- def GetEquipColorMaxDropCount(self): return self.attrTuple[9] # 装备颜色最大掉落物品数 {颜色:上限数量,...} dict
- def GetTianxuanEquipRateList(self): return self.attrTuple[10] # 天玄丹装备掉落饼图 [[概率,(阶,品质)], ...] list
- def GetEquipColorSuitInfo(self): return self.attrTuple[11] # 装备颜色对应套装概率 {颜色:套装概率, ...} dict
- def GetEquipPartKeyRateInfo(self): return self.attrTuple[12] # 装备部位集合信息 {(颜色,是否套装):部位集合key, ...} dict
- def GetColorSuitPartOptimization(self): return self.attrTuple[13] # 部位颜色套评分优选掉落,十位代表颜色,个位代表套装 BYTE
- def GetKillCountDropEquipPub(self): return self.attrTuple[14] # 第x次击杀附加必掉装备 {次数:[阶,颜色,是否套装,部位集合key], ...} dict
- def GetItemIDDropRate(self): return self.attrTuple[15] # 指定物品ID掉率信息 {物品ID:概率, ...} dict
- def GetTianxuanItemIDRate(self): return self.attrTuple[16] # 天玄丹指定ID概率 {物品ID:概率, ...} dict
- def GetItemIDMaxDropCount(self): return self.attrTuple[17] # 指定物品ID最大掉落个数,没配默认1次 {物品ID:随机次数,...} dict
- def GetItemKeyDropRate(self): return self.attrTuple[18] # 物品ID集合Key概率, 随机一个, 优先级低 {物品ID集合key:概率, ...} dict
- def GetItemKeyDropRateJob(self): return self.attrTuple[19] # 物品ID集合Key概率, 自身职业, 优先级高 {物品ID集合key:概率, ...} dict
- def GetTianxuanItemKeyRate(self): return self.attrTuple[20] # 天玄丹指定ID集合Key概率{物品ID集合key:概率, ...} dict
- def GetItemKeyMaxDropCount(self): return self.attrTuple[21] # 物品ID集合Key随机次数,没配默认1次 {物品ID集合key:随机次数,...} dict
- def GetDropMoneyDoCnt(self): return self.attrTuple[22] # 掉落金币执行次数 BYTE
- def GetDropMoneyRate(self): return self.attrTuple[23] # 掉落金币概率 WORD
- def GetDropMoneyMin(self): return self.attrTuple[24] # 掉落金币最小值 WORD
- def GetDropMoneyMax(self): return self.attrTuple[25] # 掉落金币最大值 WORD
- def GetKillCountDropPub(self): return self.attrTuple[26] # 击杀次数必掉(公共){击杀次数:[[物品ID, ...], [随机物品ID, ...]], ...} dict
- def GetKillCountDropPri(self): return self.attrTuple[27] # 击杀次数必掉(私有)[击杀次数,[物品ID,...],是否直接放入背包] list
- def GetPriItemIDDrop(self): return self.attrTuple[28] # 所有归属者私有掉落物品ID列表,每人一份,默认绑定,没有职业区分[物品ID, ...] list
- def GetAucionItemCanSell(self): return self.attrTuple[29] # 掉落拍品可否上架集市 BYTE
-
# 符印塔表
class IPY_RuneTower():
@@ -3842,60 +3568,6 @@
def GetADCntMax(self): return self.attrTuple[1] # 每日次数 BYTE
def GetADAwardItemList(self): return self.attrTuple[2] # 广告奖励物品列表 list
def GetADMapID(self): return self.attrTuple[3] # 对应副本ID,默认给该副本1次次数 DWORD
-
-# 装备评分属性系数表
-class IPY_EquipGSParam():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetClassLV(self): return self.attrTuple[0] # 装备阶级 BYTE
- def GetEquipColor(self): return self.attrTuple[1] # 装备颜色 BYTE
- def GetIsSuit(self): return self.attrTuple[2] # 是否套装 BYTE
- def GetItemQuality(self): return self.attrTuple[3] # 物品星级 BYTE
- def GetBaseEquipMaxHPAddPerC(self): return self.attrTuple[4] # 基础防具生命百分比系数 DWORD
- def GetBaseEquipAtkAddPerC(self): return self.attrTuple[5] # 基础武器攻击百分比系数 DWORD
- def GetSuperHitC(self): return self.attrTuple[6] # 暴击值系数 DWORD
- def GetSuperHitPerC(self): return self.attrTuple[7] # 暴击值百分比系数 DWORD
- def GetLuckyHitRateC(self): return self.attrTuple[8] # 会心一击率系数 DWORD
- def GetLuckyHitRateReduceC(self): return self.attrTuple[9] # 会心一击抗性系数 DWORD
- def GetLuckPerC(self): return self.attrTuple[10] # 气运百分比系数 DWORD
- def GetPerLVAtkC(self): return self.attrTuple[11] # 每级增加攻击力系数 DWORD
- def GetPerLVMaxHPC(self): return self.attrTuple[12] # 每级增加生命值系数 DWORD
- def GetDropMoneyPerC(self): return self.attrTuple[13] # 增加掉落金币量百分比系数 DWORD
- def GetSuperHitReduceC(self): return self.attrTuple[14] # 暴击减伤百分比系数 DWORD
- def GetSuperHitRateReduceC(self): return self.attrTuple[15] # 暴击抗性系数 DWORD
- def GetHitC(self): return self.attrTuple[16] # 命中系数 DWORD
- def GetMissC(self): return self.attrTuple[17] # 闪避系数 DWORD
- def GetPetDamPerC(self): return self.attrTuple[18] # 灵宠增伤百分比系数 DWORD
- def GetMaxHPPerC(self): return self.attrTuple[19] # 生命加成系数 DWORD
- def GetAtkPerC(self): return self.attrTuple[20] # 攻击加成系数 DWORD
- def GetSkillAtkRateC(self): return self.attrTuple[21] # 技能加成系数 DWORD
- def GetSkillAtkRateReduceC(self): return self.attrTuple[22] # 技能减免系数 DWORD
- def GetSkillAddPer1C(self): return self.attrTuple[23] # 技能伤害增强1系数 DWORD
- def GetSkillAddPer2C(self): return self.attrTuple[24] # 技能伤害增强2系数 DWORD
- def GetSkillAddPer3C(self): return self.attrTuple[25] # 技能伤害增强3系数 DWORD
- def GetSkillAddPer4C(self): return self.attrTuple[26] # 技能伤害增强4系数 DWORD
- def GetSkillAddPer5C(self): return self.attrTuple[27] # 技能伤害增强5系数 DWORD
- def GetSkillAddPer6C(self): return self.attrTuple[28] # 技能伤害增强6系数 DWORD
- def GetSkillAddPer7C(self): return self.attrTuple[29] # 技能伤害增强7系数 DWORD
- def GetSkillReducePer1C(self): return self.attrTuple[30] # 受到技能伤害减少1系数 DWORD
- def GetSkillReducePer2C(self): return self.attrTuple[31] # 受到技能伤害减少2系数 DWORD
- def GetSkillReducePer3C(self): return self.attrTuple[32] # 受到技能伤害减少3系数 DWORD
- def GetSkillReducePer4C(self): return self.attrTuple[33] # 受到技能伤害减少4系数 DWORD
- def GetSkillReducePer5C(self): return self.attrTuple[34] # 受到技能伤害减少5系数 DWORD
- def GetSkillReducePer6C(self): return self.attrTuple[35] # 受到技能伤害减少6系数 DWORD
- def GetSkillReducePer7C(self): return self.attrTuple[36] # 受到技能伤害减少7系数 DWORD
- def GetReduceSkillCDPerC(self): return self.attrTuple[37] # 减少所有技能CD系数 DWORD
- def GetLuckyHitPerC(self): return self.attrTuple[38] # 会心伤害加成系数 DWORD
- def GetFaintDefRateC(self): return self.attrTuple[39] # 控制抵抗系数 DWORD
- def GetSuperHitRateC(self): return self.attrTuple[40] # 暴击率加成系数 DWORD
- def GetIgnoreDefRateC(self): return self.attrTuple[41] # 无视防御系数 DWORD
- def GetIgnoreDefRateReduceC(self): return self.attrTuple[42] # 无视防御减免系数 DWORD
- def GetProDefPerC(self): return self.attrTuple[43] # 防护百分比系数 DWORD
- def GetFinalHurtPerC(self): return self.attrTuple[44] # 最终伤害加成系数 DWORD
- def GetFinalHurtReducePerC(self): return self.attrTuple[45] # 最终伤害减免系数 DWORD
# 成就表
class IPY_Success():
@@ -4784,17 +4456,6 @@
def GetLowLV(self): return self.attrTuple[2] # 推荐最低等级 WORD
def GetHighestLV(self): return self.attrTuple[3] # 推荐最高等级 WORD
def GetDefense(self): return self.attrTuple[4] # 推荐防御 DWORD
-
-# 天赋技能表
-class IPY_TalentSkill():
-
- def __init__(self):
- self.attrTuple = None
- return
-
- def GetSkillID(self): return self.attrTuple[0] # 技能ID DWORD
- def GetTalentType(self): return self.attrTuple[1] # 天赋类型 BYTE
- def GetSeries(self): return self.attrTuple[2] # 天赋系别 BYTE
# 限时抢购表
class IPY_ActFlashSale():
@@ -6059,7 +5720,6 @@
self.__LoadFileData("PlayerFace", onlyCheck)
self.__LoadFileData("PlayerFacePic", onlyCheck)
self.__LoadFileData("ChatBox", onlyCheck)
- self.__LoadFileData("SkillMatch", onlyCheck)
self.__LoadFileData("RolePoint", onlyCheck)
self.__LoadFileData("LingQiAttr", onlyCheck)
self.__LoadFileData("LingQiTrain", onlyCheck)
@@ -6110,19 +5770,12 @@
self.__LoadFileData("PlayerLV", onlyCheck)
self.__LoadFileData("SpecMapPlayerAttrFormat", onlyCheck)
self.__LoadFileData("GMAttr", onlyCheck)
- self.__LoadFileData("NPCRealmStrengthen", onlyCheck)
- self.__LoadFileData("NPCTimeLostHP", onlyCheck)
- self.__LoadFileData("EquipSuitAttr", onlyCheck)
- self.__LoadFileData("WingRefineAttr", onlyCheck)
- self.__LoadFileData("WingRefineExp", onlyCheck)
- self.__LoadFileData("NPCDropItem", onlyCheck)
self.__LoadFileData("RuneTower", onlyCheck)
self.__LoadFileData("ChinMap", onlyCheck)
self.__LoadFileData("FBFunc", onlyCheck)
self.__LoadFileData("FBLine", onlyCheck)
self.__LoadFileData("Tianzi", onlyCheck)
self.__LoadFileData("ADAward", onlyCheck)
- self.__LoadFileData("EquipGSParam", onlyCheck)
self.__LoadFileData("Success", onlyCheck)
self.__LoadFileData("TongTianLV", onlyCheck)
self.__LoadFileData("TongTianTask", onlyCheck)
@@ -6183,7 +5836,6 @@
self.__LoadFileData("AllPeopleParty", onlyCheck)
self.__LoadFileData("AllPeoplePartyAward", onlyCheck)
self.__LoadFileData("MapEventPoint", onlyCheck)
- self.__LoadFileData("TalentSkill", onlyCheck)
self.__LoadFileData("ActFlashSale", onlyCheck)
self.__LoadFileData("ActWishingWell", onlyCheck)
self.__LoadFileData("WishingWell", onlyCheck)
@@ -6686,13 +6338,6 @@
self.CheckLoadData("ChatBox")
return self.ipyChatBoxCache[index]
- def GetSkillMatchCount(self):
- self.CheckLoadData("SkillMatch")
- return self.ipySkillMatchLen
- def GetSkillMatchByIndex(self, index):
- self.CheckLoadData("SkillMatch")
- return self.ipySkillMatchCache[index]
-
def GetRolePointCount(self):
self.CheckLoadData("RolePoint")
return self.ipyRolePointLen
@@ -7043,48 +6688,6 @@
self.CheckLoadData("GMAttr")
return self.ipyGMAttrCache[index]
- def GetNPCRealmStrengthenCount(self):
- self.CheckLoadData("NPCRealmStrengthen")
- return self.ipyNPCRealmStrengthenLen
- def GetNPCRealmStrengthenByIndex(self, index):
- self.CheckLoadData("NPCRealmStrengthen")
- return self.ipyNPCRealmStrengthenCache[index]
-
- def GetNPCTimeLostHPCount(self):
- self.CheckLoadData("NPCTimeLostHP")
- return self.ipyNPCTimeLostHPLen
- def GetNPCTimeLostHPByIndex(self, index):
- self.CheckLoadData("NPCTimeLostHP")
- return self.ipyNPCTimeLostHPCache[index]
-
- def GetEquipSuitAttrCount(self):
- self.CheckLoadData("EquipSuitAttr")
- return self.ipyEquipSuitAttrLen
- def GetEquipSuitAttrByIndex(self, index):
- self.CheckLoadData("EquipSuitAttr")
- return self.ipyEquipSuitAttrCache[index]
-
- def GetWingRefineAttrCount(self):
- self.CheckLoadData("WingRefineAttr")
- return self.ipyWingRefineAttrLen
- def GetWingRefineAttrByIndex(self, index):
- self.CheckLoadData("WingRefineAttr")
- return self.ipyWingRefineAttrCache[index]
-
- def GetWingRefineExpCount(self):
- self.CheckLoadData("WingRefineExp")
- return self.ipyWingRefineExpLen
- def GetWingRefineExpByIndex(self, index):
- self.CheckLoadData("WingRefineExp")
- return self.ipyWingRefineExpCache[index]
-
- def GetNPCDropItemCount(self):
- self.CheckLoadData("NPCDropItem")
- return self.ipyNPCDropItemLen
- def GetNPCDropItemByIndex(self, index):
- self.CheckLoadData("NPCDropItem")
- return self.ipyNPCDropItemCache[index]
-
def GetRuneTowerCount(self):
self.CheckLoadData("RuneTower")
return self.ipyRuneTowerLen
@@ -7126,13 +6729,6 @@
def GetADAwardByIndex(self, index):
self.CheckLoadData("ADAward")
return self.ipyADAwardCache[index]
-
- def GetEquipGSParamCount(self):
- self.CheckLoadData("EquipGSParam")
- return self.ipyEquipGSParamLen
- def GetEquipGSParamByIndex(self, index):
- self.CheckLoadData("EquipGSParam")
- return self.ipyEquipGSParamCache[index]
def GetSuccessCount(self):
self.CheckLoadData("Success")
@@ -7553,13 +7149,6 @@
def GetMapEventPointByIndex(self, index):
self.CheckLoadData("MapEventPoint")
return self.ipyMapEventPointCache[index]
-
- def GetTalentSkillCount(self):
- self.CheckLoadData("TalentSkill")
- return self.ipyTalentSkillLen
- def GetTalentSkillByIndex(self, index):
- self.CheckLoadData("TalentSkill")
- return self.ipyTalentSkillCache[index]
def GetActFlashSaleCount(self):
self.CheckLoadData("ActFlashSale")
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 197ee30..e77f12f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -105,12 +105,6 @@
# NPC等级
if hasattr(curNPC, "GetCurLV"):
return max(curNPC.GetCurLV(), curNPC.GetLV())
- if curPlayer and PlayerControl.GetRealmDifficulty(curPlayer):
- npcID = curNPC.GetNPCID()
- needRealmLV = PlayerControl.GetDifficultyRealmLV(PlayerControl.GetRealmDifficulty(curPlayer))
- realmNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCRealmStrengthen", npcID, needRealmLV)
- if realmNPCIpyData:
- return realmNPCIpyData.GetLV()
return curNPC.GetLV()
def GetNPCDataPy(npcID):
@@ -3199,47 +3193,7 @@
# @return 返回值, 获得经验
# @remarks 获得经验, 可能是小数
def __GetExp(self, playerLV, isTeam=False, player=None):
- curNPC = self.__Instance
- baseExp = 0
- #玩家不在副本中
- if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
- baseExp = FBLogic.OnGetNPCExp(player, curNPC)
- if baseExp > 0:
- return baseExp
-
- npcID = curNPC.GetNPCID()
- realmLV = PlayerControl.GetDifficultyRealmLV(curNPC.GetSightLevel())
- realmNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCRealmStrengthen", npcID, realmLV)
- if realmNPCIpyData:
- baseExp = realmNPCIpyData.GetExp()
- npcLV = realmNPCIpyData.GetLV()
- else:
- baseExp = curNPC.GetExp()
- npcLV = curNPC.GetLV()
-
- if baseExp == 0:
- #GameWorld.Log("杀怪经验异常,该NPC = %s,无经验"%(curNPC.GetID()))
- return 0
-
- playerID = 0 if not player else player.GetPlayerID()
- # 如果是队伍,则按伤害贡献度计算所获得经验比例
- if isTeam:
- if not player:
- return 0
- hurtPer = AttackCommon.GetTeamPlayerHurtPer(player, curNPC)
- if not hurtPer:
- return 0
- #GameWorld.DebugLog("队员击杀基础经验: npcID=%s,baseExp=%s,hurtPer=%s" % (curNPC.GetNPCID(), baseExp, hurtPer), playerID)
- baseExp *= hurtPer
- #else:
- # GameWorld.DebugLog("个人击杀基础经验: npcID=%s,baseExp=%s" % (curNPC.GetNPCID(), baseExp), playerID)
-
- #经验衰减公式 = max(杀怪经验 * max(1-max(玩家等级-怪物等级-10,0)*0.02),0),1)
- exp = eval(FormulaControl.GetCompileFormula("ExpAttenuation", IpyGameDataPY.GetFuncCfg("ExpAttenuation", 1)))
- #exp = CalcNPCExp(baseExp, playerLV, npcLV)
- #GameWorld.DebugLog("击杀NPC最终基础经验: npcID=%s,npcLV=%s,playerLV=%s,baseExp=%s,exp=%s"
- # % (curNPC.GetNPCID(), npcLV, playerLV, baseExp, exp), playerID)
- return exp
+ return 0
#---------------------------------------------------------------------
@@ -3656,12 +3610,7 @@
npcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
if not npcData:
return 0
- needRealmLV = PlayerControl.GetDifficultyRealmLV(PlayerControl.GetRealmDifficulty(curPlayer))
- realmNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCRealmStrengthen", npcID, needRealmLV)
- if realmNPCIpyData:
- baseExp = realmNPCIpyData.GetExp()
- else:
- baseExp = npcData.GetExp()
+ baseExp = npcData.GetExp()
if not baseExp:
return 0
npcLV = npcData.GetLV()
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 398b274..3ec707b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -416,24 +416,6 @@
return True
-
-##地图特殊限制检查, 装备检查
-# @param curPlayer
-# @return bool
-def CheckEquipCanTrans(curPlayer, destMapID):
- if destMapID != 10060:
- return True
-
- #有翅膀可以上天空
- playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
- curEquip = playerEquip.GetAt(IPY_GameWorld.retWing)
- if curEquip and not curEquip.IsEmpty():
- return True
-
- #GeRen_lhs_861048
- NotifyCode(curPlayer, "GeRen_lhs_861048", [destMapID])
- return False
-
#---------------------------------------------------------------------
##通知客户端, 玩家Loading开始
# @param curPlayer 玩家实例
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py
deleted file mode 100644
index 14d0e48..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py
+++ /dev/null
@@ -1,300 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerWing
-#
-# @todo:翅膀系统
-# @author sgj
-# @date 2017-8-19
-# @version 1.0
-#
-# 详细描述: 翅膀系统
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2017-8-19 下午06:02:33"""
-#-------------------------------------------------------------------------------
-import IPY_GameWorld
-import GameWorld
-import PlayerControl
-import IpyGameDataPY
-import ChConfig
-import ShareDefine
-import ItemCommon
-import GameFuncComm
-import ChEquip
-
-import random
-
-
-#A3 2E 羽翼精炼 #tagCMWingup
-# struct tagCMWingUp
-#{
-# tagHead Head;
-# BYTE Count; //索引个数
-# BYTE WingIndexList[Count]; //材料翅膀在背包中的索引列表
-# };
-
-
-#===============================================================================
-
-# @param index: 玩家索引
-# @param clientData: 封包结构体
-# @param tick: 时间戳
-# @return: None
-def OnWingJingLian(index, clientData, tick):
-
- # 根据策划需要,可以选择是否跨服服务器功能限制
-# if GameWorld.IsCrossServer():
-# return
-
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- #获取封包信息
- materialMessageList = clientData.WingIndexList
- #count = clientData.Count
- GameWorld.DebugLog("羽翼精炼:WingIndexList=%s" % materialMessageList, curPlayer.GetPlayerID())
-
- #判断等级是否满足
- if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Wing):
- GameWorld.DebugLog("等级不足,不能精炼翅膀")
- return
-
- ##判断是否装备翅膀 retWing
- equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
- curWing = equipPack.GetAt(ShareDefine.retWing)
-
- if not ItemCommon.CheckItemCanUse(curWing):
- GameWorld.Log("翅膀不合法,或者没有带翅膀")
- return
-
- #判断当前翅膀是否可以精炼
- if not __WingCanJingLian(curWing):
- #提示当前翅膀精炼已经达到上限
- #PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
- GameWorld.DebugLog("该翅膀不需要精炼")
- return
-
- materialInfo = __ReduceMaterial(curPlayer, curWing, materialMessageList)
- if not materialInfo:
- return
- totalPoint, materialItemDict = materialInfo
- if not totalPoint:
- GameWorld.DebugLog("没有精炼值")
- return
- WingProgressUP(curWing, totalPoint, materialItemDict, curPlayer)
- ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
- return
-
-def __WingCanJingLian(curWing):
- #判断翅膀是否可以精炼
- wingAttrIpyData = GetWingRefineAttrData(curWing.GetItemTypeID())
- if wingAttrIpyData == None:
- return False
- maxWingProgress = wingAttrIpyData.GetMaxRefineExp()
- curProgress = curWing.GetUserAttr(ShareDefine.Def_IudetWingProgressValue)
- return curProgress < maxWingProgress
-
-
-#扣除精炼材料
-def __ReduceMaterial(curPlayer, curWing, materialMessageList):
- totalPoint = 0
- materialItemDict = {} # 特殊精炼材料个数信息 {itemID:个数, ...}
- itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- needCount = 1
- wingClassLV = ItemCommon.GetItemClassLV(curWing)
- for index in materialMessageList:
- curItem = itemPack.GetAt(index)
- if not ItemCommon.CheckItemCanUse(curItem):
- GameWorld.DebugLog("这个格子没有合法材料,index=%s" % index)
- continue
- curItemID = curItem.GetItemTypeID()
- wingAttrIpyData = IpyGameDataPY.GetIpyGameData("WingRefineExp", curItemID)
- if wingAttrIpyData == None:
- GameWorld.DebugLog("该物品不能作为羽翼精炼的材料,index=%s,itemID=%s" % (index, curItemID))
- continue
- curItemCount = curItem.GetCount()
- if curItemCount < needCount:
- GameWorld.DebugLog("材料不足")
- continue
-
- point = 0
- # 根据代数成长的精炼材料
- expDict = wingAttrIpyData.GetExpMaterial()
- if expDict:
- if wingClassLV not in expDict:
- GameWorld.ErrLog("精炼材料没有配置对应翅膀代数精炼值,无法精炼!index=%s,curItemID=%s,wingClassLV=%s"
- % (index, curItemID, wingClassLV), curPlayer.GetPlayerID())
- continue
- point += expDict[wingClassLV] * needCount
- materialItemDict[curItemID] = materialItemDict.get(curItemID, 0) + needCount
- else:
- point += random.randint(wingAttrIpyData.GetRandExpMin(), wingAttrIpyData.GetRandExpMax()) * needCount
- GameWorld.DebugLog(" index=%s,itemID=%s,baseExp=%s" % (index, curItemID, point))
-
- if curItem.GetType() == ChConfig.Def_ItemType_retWing:
- wingItemExpInfo = GetWingItemChangeExp(curItem, wingClassLV)
- if not wingItemExpInfo:
- GameWorld.ErrLog("翅膀物品转化为精炼值异常,index=%s!" % index, curPlayer.GetPlayerID())
- continue
- changeTagWingExp, materialItemDictEx = wingItemExpInfo
- for materialItemID, count in materialItemDictEx.items():
- materialItemDict[materialItemID] = materialItemDict.get(materialItemID, 0) + count
- point += changeTagWingExp
-
- totalPoint += point
- GameWorld.DebugLog(" 精炼信息: index=%s,curItemID=%s,point=%s,totalPoint=%s,materialItemDict=%s"
- % (index, curItemID, point, totalPoint, materialItemDict))
- ItemCommon.DelItem(curPlayer, curItem, needCount, True, ChConfig.ItemDel_WingExp)
-
- return totalPoint, materialItemDict
-
-def GetWingItemChangeExp(curItem, tagWingClassLV):
- '''获取翅膀物品转化为目标代数翅膀精炼值
- @return: None-异常,之后的功能不能做处理
- 转化的精炼值, 特殊精炼材料及个数{itemID:个数, ...}
- '''
- curExp = curItem.GetUserAttr(ShareDefine.Def_IudetWingProgressValue)
- materialItemIDList = [curItem.GetUserAttrByIndex(ShareDefine.Def_IudetWingMaterialItemID, i) \
- for i in range(curItem.GetUserAttrCount(ShareDefine.Def_IudetWingMaterialItemID))]
- if not materialItemIDList:
- return curExp, {}
-
- materialItemCountList = [curItem.GetUserAttrByIndex(ShareDefine.Def_IudetWingMaterialItemCount, i) \
- for i in range(curItem.GetUserAttrCount(ShareDefine.Def_IudetWingMaterialItemCount))]
- if len(materialItemIDList) != len(materialItemCountList):
- GameWorld.ErrLog("羽翼精炼材料记录异常!wingItemID=%s,UserData=%s" % (curItem.GetItemTypeID(), curItem.GetUserData()))
- return
-
- curLVMaterialExp = 0
- tagLVMaterialExp = 0
- materialItemDict = {}
- curWingClassLV = ItemCommon.GetItemClassLV(curItem)
- for i, materialItemID in enumerate(materialItemIDList):
- wingAttrIpyData = IpyGameDataPY.GetIpyGameData("WingRefineExp", materialItemID)
- if wingAttrIpyData == None:
- GameWorld.ErrLog("该物品ID非羽翼精炼材料!materialItemID=%s" % materialItemID)
- return
-
- # 根据代数成长的精炼材料
- expDict = wingAttrIpyData.GetExpMaterial()
- if not expDict:
- GameWorld.ErrLog("精炼材料没有配置代数对应精炼值!materialItemID=%s" % materialItemID)
- return
-
- if curWingClassLV not in expDict or tagWingClassLV not in expDict:
- GameWorld.ErrLog("精炼材料没有配置代数对应精炼值!materialItemID=%s,curWingClassLV=%s,tagWingClassLV=%s,expDict=%s"
- % (materialItemID, curWingClassLV, tagWingClassLV, expDict))
- return
- materialItemCount = materialItemCountList[i]
- curLVMaterialExp += (expDict[curWingClassLV] * materialItemCount)
- tagLVMaterialExp += (expDict[tagWingClassLV] * materialItemCount)
- materialItemDict[materialItemID] = materialItemCount
-
- curWingBaseExp = max(0, curExp - curLVMaterialExp)
- changeTagWingExp = curWingBaseExp + tagLVMaterialExp # 转化目标代数翅膀精炼值
- GameWorld.DebugLog(" 翅膀转化为精炼值:curExp=%s,curWingClassLV-EXP=(%s-%s),tagWingClassLV-EXP=(%s-%s),changeTagWingExp=%s,materialItemDict=%s"
- % (curExp, curWingClassLV, curLVMaterialExp, tagWingClassLV, tagLVMaterialExp, changeTagWingExp, materialItemDict))
- return changeTagWingExp, materialItemDict
-
-def WingProgressUP(curWing, addExp, materialItemDict={}, curPlayer=None):
- #增加精炼值
- if not addExp:
- return
-
- wingProgress = curWing.GetUserAttr(ShareDefine.Def_IudetWingProgressValue)
- updWingProgress = wingProgress + addExp
- curWing.SetUserAttr(ShareDefine.Def_IudetWingProgressValue, updWingProgress)
-
- GameWorld.DebugLog("增加翅膀精炼值: curExp=%s,addExp=%s,updExp=%s,materialItemDict=%s"
- % (wingProgress, addExp, updWingProgress, materialItemDict))
- # 更新特殊材料个数
- if materialItemDict:
- materialItemIDList = [curWing.GetUserAttrByIndex(ShareDefine.Def_IudetWingMaterialItemID, i) \
- for i in range(curWing.GetUserAttrCount(ShareDefine.Def_IudetWingMaterialItemID))]
- for materialItemID, materialItemCount in materialItemDict.items():
- if materialItemID in materialItemIDList:
- index = materialItemIDList.index(materialItemID)
- updCount = curWing.GetUserAttrByIndex(ShareDefine.Def_IudetWingMaterialItemCount, index) + materialItemCount
- curWing.UpdataUserAttrByIndex(ShareDefine.Def_IudetWingMaterialItemCount, index, updCount)
- GameWorld.DebugLog(" 更新翅膀特殊精炼材料个数: materialItemID=%s,updCount=%s" % (materialItemID, updCount))
- else:
- curWing.AddUserAttr(ShareDefine.Def_IudetWingMaterialItemID, materialItemID)
- curWing.AddUserAttr(ShareDefine.Def_IudetWingMaterialItemCount, materialItemCount)
- GameWorld.DebugLog(" 新增翅膀特殊精炼材料个数: materialItemID=%s,materialItemCount=%s" % (materialItemID, materialItemCount))
-
- UpdWingColor(curPlayer, curWing, wingProgress, updWingProgress)
- return
-
-def UpdWingColor(curPlayer, curWing, wingProgress, updWingProgress):
- curItemID = curWing.GetItemTypeID()
- wingAttrIpyData = GetWingRefineAttrData(curItemID)
- if not wingAttrIpyData:
- return
-
- # 更新翅膀精炼颜色
- wingColorDict = wingAttrIpyData.GetItemColorInfo()
- curColor = curWing.GetUserAttr(ShareDefine.Def_IudetItemColor)
- #isColorChange = False
- for color in wingColorDict:
- if updWingProgress >= wingColorDict[color] and color > curColor:
- curColor = color
- curWing.SetUserAttr(ShareDefine.Def_IudetItemColor, curColor)
- GameWorld.DebugLog(" 更新翅膀颜色: updWingProgress=%s,curColor=%s" % (updWingProgress, curColor))
- #isColorChange = True
- maxRefineExp = wingAttrIpyData.GetMaxRefineExp()
- if curPlayer and wingProgress < maxRefineExp <= updWingProgress:
- PlayerControl.WorldNotify(0, "WingsRefinePerfect", [curPlayer.GetPlayerName(), curItemID, curWing.GetUserData()])
- return
-
-def GetWingRefineAttrData(itemID):
- wingData = GameWorld.GetGameData().GetItemByTypeID(itemID)
- if not wingData:
- return
- wingClassLV = ItemCommon.GetItemClassLV(wingData)
- return IpyGameDataPY.GetIpyGameDataNotLog("WingRefineAttr", wingClassLV)
-
-def GetWingProgressPerValueByID(itemID, per):
- ## 获取翅膀精炼百分比对应的精炼值
- if per <= 0:
- return 0
- wingAttrIpyData = GetWingRefineAttrData(itemID)
- if not wingAttrIpyData:
- return 0
- return int(wingAttrIpyData.GetMaxRefineExp() * per / 100.0)
-
-## 翅膀功能开启
-def DoWingOpen(curPlayer):
- GameWorld.DebugLog("翅膀精炼开启")
- return True
-
-
-## 计算属性
-# @param curPlayer 玩家
-# @param allAttrList 属性列表
-# @return None
-def CalcWingAttrEx(curPlayer, curWing, allAttrList):
-
- # 精炼属性
- wingAttrIpyData = GetWingRefineAttrData(curWing.GetItemTypeID())
- if wingAttrIpyData:
- curProgress = curWing.GetUserAttr(ShareDefine.Def_IudetWingProgressValue)
- maxWingProgress = wingAttrIpyData.GetMaxRefineExp()
- fujiaValueDict = wingAttrIpyData.GetAttrInfo()
-
- rate = round(float(curProgress) / float(maxWingProgress), 3) if curProgress <= maxWingProgress else 1
-
- for effID, value in fujiaValueDict.items():
- PlayerControl.CalcAttrDict_Type(effID, int(value * rate), allAttrList)
- #GameWorld.DebugLog(" 精炼属性: %s" % allAttrList)
- return
-
-
-
-
-
-
-
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 2091058..427185f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -811,7 +811,6 @@
GameFuncID_Arena = 27 # 竞技场
# 以下为暂时无用的
-GameFuncID_Wing = -1 # 翅膀 3
GameFuncID_Pet = -1 # 宠物,灵宠 6
GameFuncID_Horse = -1 # 坐骑 8
GameFuncID_OSSail = -1 # 开服特惠 132
@@ -1202,8 +1201,6 @@
Def_IudetBaseAttrID = 21 # 物品基础属性ID列表,适用于随机范围基础属性(非物品表配置的固定属性)
Def_IudetBaseAttrValue = 23 # 物品基础属性值列表
Def_IudetPartSuiteLV = 25 # 部位套装等级 [套装类型1等级, 套装类型2等级, ...]
-Def_IudetWingMaterialItemID = 27 # 翅膀精炼材料ID列表
-Def_IudetWingMaterialItemCount = 29 # 翅膀精炼材料个数列表
Def_IudetDogzEquipPlus = 31 # 神兽装备强化信息列表 [强化等级, 累计总熟练度]
Def_IudetItemDecompound = 33 # 拆解返还物品列表 [装备ID,材料1ID,个数,是否绑定,材料2ID,个数,是否绑定,...]
Def_IudetLiantaiItemID = 35 # 合成该莲台的所有莲台ID [itemID, itemID, ...]
@@ -1232,7 +1229,6 @@
Def_IudetLastOpenItemLoginDay = 36 # 上一次开启物品时的登录天数
Def_IudetRuneLV = 38 # 符印等级
Def_IudetRuneSource = 40 # 符印来源 老号0,默认1,合成2(主要用来区分是否合成获得)
-Def_IudetWingProgressValue = 42 #羽翼精炼值
Def_IudetCreateTime = 44 # 时效物品的创建时间
Def_IudetGatherSoulLV = 46 # 聚魂等级
Def_IudetExpireTime = 48 # 时效物品指定有效时间,时间单位由时效类型决定
@@ -1377,7 +1373,6 @@
Def_UserAction_ExMissionLog = "DwzCw4q8cWTB_ex-mission-log" # 扩展任务记录
Def_UserAction_HorseClass = "DwzCw4q8cWTB_ex-horse-class" # 坐骑进阶记录
-Def_UserAction_WingClass = "DwzCw4q8cWTB_ex-wing-class" # 翅膀进阶记录
Def_UserAction_PetLV = "DwzCw4q8cWTB_ex-pet-lv" # 宠物升级记录
Def_UserAction_PetClass = "DwzCw4q8cWTB_ex-pet-class" # 宠物进阶记录
Def_UserAction_GiveMoney = "DwzCw4q8cWTB_ex-give-money" # 货币产出记录
@@ -1385,12 +1380,10 @@
Def_UserAction_EquipItem = "DwzCw4q8cWTB_ex-equip-item" # 玩家装备统计
Def_UserAction_ItemRecord = 1404 # 物品流水记录
Def_UserAction_CoinToGold = "DwzCw4q8cWTB_ex-coin-to-gold" # 兑换点券
-Def_UserAction_RuneLV = "DwzCw4q8cWTB_ex-wing-soul-lv" # 符印升级记录
Def_UserAction_ChangeName = "DwzCw4q8cWTB_ex-change-name" # 改名记录
Def_UserAction_AddZhenqi = "DwzCw4q8cWTB_ex-add-zhenqi" # 增加真气记录
Def_UserAction_LostZhenqi = "DwzCw4q8cWTB_ex-lost-zhenqi" # 扣除真气记录
Def_UserAction_CoatLV = "DwzCw4q8cWTB_ex-coat-lv" # 时装升级记录
-Def_UserAction_WingSkinLV = "DwzCw4q8cWTB_ex-wingskin-lv" # 幻化翅膀升级记录
Def_UserAction_HorseSkinLV = "DwzCw4q8cWTB_ex-horseskin-lv" # 幻化坐骑升级记录
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_513.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_513.py
deleted file mode 100644
index 2b33fe6..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_513.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-# @todo: 佩戴X代以上翅膀,额外添加属性百分比
-#
-# @author: Alee
-# @date 2018-1-20 下午02:50:26
-# @version 1.0
-#
-# @note:
-#
-#---------------------------------------------------------------------
-#导入
-import ChConfig
-import ItemCommon
-import ShareDefine
-import IPY_GameWorld
-import GameWorld
-import PlayerControl
-#---------------------------------------------------------------------
-
-
-def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
- equipPack = defender.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
- curWing = equipPack.GetAt(ShareDefine.retWing)
-
- if not ItemCommon.CheckItemCanUse(curWing):
- #GameWorld.Log("翅膀不合法,或者没有带翅膀")
- return
-
- if curWing.GetItemColor() < curEffect.GetEffectValue(2):
- return
-
- attrType = curEffect.GetEffectValue(1)
- attrTypeList = [attrType]
- # 攻击力有最大最小 特殊处理
- if attrType in [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]:
- attrTypeList = [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]
- for tmpType in attrTypeList:
- calcDict[tmpType] = calcDict.get(tmpType, 0) + curEffect.GetEffectValue(0)
- return
-
-
-## 返回buff类型,线性与否
-# @param
-# @return None
-# @remarks 函数详细说明.
-def GetCalcType():
- return ChConfig.TYPE_NoLinear
-
--
Gitblit v1.8.0