From 2e1b0969fb141b9677230a56f9c29020362a5eab Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 03 九月 2018 15:08:01 +0800
Subject: [PATCH] Fix: 1819 玩家切地图,家族等级数据同步会异常(修复仙盟心法切图后无法升级的bug);
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 94 +++++++++++++++++++++++++++++++++++++----------
1 files changed, 74 insertions(+), 20 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 9d231c9..713d30a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -94,6 +94,7 @@
("WORD", "SuccessRateMax", 0),
("BYTE", "AddonsCountMax", 0),
("char", "SysMark", 0),
+ ("BYTE", "SysMarkParamType", 0),
),
"ItemPlus":(
@@ -495,6 +496,7 @@
("DWORD", "SkillAtkRateC", 0),
("DWORD", "SpeedPerC", 0),
("DWORD", "AtkSpeedC", 0),
+ ("DWORD", "SkillAtkRateReduceC", 0),
),
"Success":(
@@ -697,6 +699,9 @@
("DWORD", "NPCID", 1),
("DWORD", "MapID", 0),
("BYTE", "RefreshMark", 0),
+ ("BYTE", "IsNeedShunt", 0),
+ ("BYTE", "RelatedType", 0),
+ ("WORD", "RelatedID", 0),
("DWORD", "StoneNPCID", 0),
),
@@ -879,6 +884,8 @@
("dict", "GridItemInfo", 0),
("list", "JobItemList", 0),
("list", "GridItemRateListFree", 0),
+ ("list", "FreeGridItemRateList2", 0),
+ ("dict", "FreeGridItemRateList3", 0),
("list", "GridItemRateList1", 0),
("list", "GridItemRateList2", 0),
("dict", "GridItemRateList3", 0),
@@ -949,6 +956,14 @@
("DWORD", "Index", 1),
("DWORD", "NeedPoint", 0),
("dict", "Award", 0),
+ ),
+
+ "MapEventPoint":(
+ ("DWORD", "MapID", 1),
+ ("DWORD", "NPCID", 1),
+ ("WORD", "LowLV", 0),
+ ("WORD", "HighestLV", 0),
+ ("DWORD", "Defense", 0),
),
}
@@ -1072,7 +1087,8 @@
self.SuccessRate = 0
self.SuccessRateMax = 0
self.AddonsCountMax = 0
- self.SysMark = ""
+ self.SysMark = ""
+ self.SysMarkParamType = 0
return
def GetID(self): return self.ID # 合成配置编号ID
@@ -1085,7 +1101,8 @@
def GetSuccessRate(self): return self.SuccessRate # 成功率万分率
def GetSuccessRateMax(self): return self.SuccessRateMax # 最大成功率万分率
def GetAddonsCountMax(self): return self.AddonsCountMax # 最大可附加材料数, 增加概率用, 非必须, 0代表不可附加材料
- def GetSysMark(self): return self.SysMark # 提示mark
+ def GetSysMark(self): return self.SysMark # 提示mark
+ def GetSysMarkParamType(self): return self.SysMarkParamType # 系统提示参数组合类型
# 物品强化效果表
class IPY_ItemPlus():
@@ -1892,7 +1909,8 @@
self.SuperHitReduceC = 0
self.SkillAtkRateC = 0
self.SpeedPerC = 0
- self.AtkSpeedC = 0
+ self.AtkSpeedC = 0
+ self.SkillAtkRateReduceC = 0
return
def GetClassLV(self): return self.ClassLV # 装备阶级
@@ -1919,7 +1937,8 @@
def GetSuperHitReduceC(self): return self.SuperHitReduceC # 暴击抗性百分比系数
def GetSkillAtkRateC(self): return self.SkillAtkRateC # 技能伤害百分比系数
def GetSpeedPerC(self): return self.SpeedPerC # 移动速度百分比系数
- def GetAtkSpeedC(self): return self.AtkSpeedC # 攻击速度系数
+ def GetAtkSpeedC(self): return self.AtkSpeedC # 攻击速度系数
+ def GetSkillAtkRateReduceC(self): return self.SkillAtkRateReduceC # 技能减伤百分比系数
# 成就表
class IPY_Success():
@@ -2338,12 +2357,18 @@
self.NPCID = 0
self.MapID = 0
self.RefreshMark = 0
+ self.IsNeedShunt = 0
+ self.RelatedType = 0
+ self.RelatedID = 0
self.StoneNPCID = 0
return
def GetNPCID(self): return self.NPCID # ID
def GetMapID(self): return self.MapID # 地图ID
def GetRefreshMark(self): return self.RefreshMark # 刷新标识点
+ def GetIsNeedShunt(self): return self.IsNeedShunt # 是否需要分流
+ def GetRelatedType(self): return self.RelatedType # 刷怪关联类型
+ def GetRelatedID(self): return self.RelatedID # 关联ID
def GetStoneNPCID(self): return self.StoneNPCID # 墓碑NPCID
# 古神禁地表
@@ -2723,6 +2748,8 @@
self.GridItemInfo = {}
self.JobItemList = []
self.GridItemRateListFree = []
+ self.FreeGridItemRateList2 = []
+ self.FreeGridItemRateList3 = {}
self.GridItemRateList1 = []
self.GridItemRateList2 = []
self.GridItemRateList3 = {}
@@ -2734,6 +2761,8 @@
def GetGridItemInfo(self): return self.GridItemInfo # 格子编号对应物品信息 {"编号":[物品ID, 个数], ...}
def GetJobItemList(self): return self.JobItemList # 职业物品组列表 [[职业1物品, 职业2物品, ...], ...]
def GetGridItemRateListFree(self): return self.GridItemRateListFree # 免费产出格子编号饼图 [[概率, 格子编号], ...]
+ def GetFreeGridItemRateList2(self): return self.FreeGridItemRateList2 # 免费每满x次保底产出格子编号饼图 [[概率, 格子编号], ...]
+ def GetFreeGridItemRateList3(self): return self.FreeGridItemRateList3 # 免费第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...}
def GetGridItemRateList1(self): return self.GridItemRateList1 # 常规产出格子编号饼图 [[概率, 格子编号], ...]
def GetGridItemRateList2(self): return self.GridItemRateList2 # 每满x次保底产出格子编号饼图 [[概率, 格子编号], ...]
def GetGridItemRateList3(self): return self.GridItemRateList3 # 第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...}
@@ -2878,6 +2907,23 @@
def GetIndex(self): return self.Index # 索引
def GetNeedPoint(self): return self.NeedPoint # 需要点数
def GetAward(self): return self.Award # 奖励 {"职业":[[物品ID,个数,是否绑定],...], ...}
+
+# 地图NPC配置表-挂机点
+class IPY_MapEventPoint():
+
+ def __init__(self):
+ self.MapID = 0
+ self.NPCID = 0
+ self.LowLV = 0
+ self.HighestLV = 0
+ self.Defense = 0
+ return
+
+ def GetMapID(self): return self.MapID
+ def GetNPCID(self): return self.NPCID
+ def GetLowLV(self): return self.LowLV # 推荐最低等级
+ def GetHighestLV(self): return self.HighestLV # 推荐最高等级
+ def GetDefense(self): return self.Defense # 推荐防御
def Log(msg, playerID=0, par=0):
@@ -3079,6 +3125,8 @@
self.ipyAllPeoplePartyLen = len(self.ipyAllPeoplePartyCache)
self.ipyAllPeoplePartyAwardCache = self.__LoadFileData("AllPeoplePartyAward", IPY_AllPeoplePartyAward)
self.ipyAllPeoplePartyAwardLen = len(self.ipyAllPeoplePartyAwardCache)
+ self.ipyMapEventPointCache = self.__LoadFileData("MapEventPoint", IPY_MapEventPoint)
+ self.ipyMapEventPointLen = len(self.ipyMapEventPointCache)
Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
Log("IPY_DataMgr InitOK!")
return
@@ -3170,22 +3218,26 @@
for i, strValue in enumerate(rowList):
if i == 0:
continue
- fieldName = fieldList[i][1]
- strValue = strValue.lstrip().rstrip()
- if strValue.isdigit():
- configValue = int(strValue)
- elif (strValue.startswith("{") and strValue.endswith("}")) \
- or (strValue.startswith("[") and strValue.endswith("]")) \
- or (strValue.startswith("(") and strValue.endswith(")")):
- configValue = eval(strValue)
- elif "_" in strValue and type(self.__StrToDict(strValue)) == dict:
- configValue = self.__StrToDict(strValue)
- elif ChConfig.Def_Str_Montant in strValue:
- configValue = eval("(%s,)" % strValue.replace(ChConfig.Def_Str_Montant, ","))
- elif strValue in ["-", ""]:
- configValue = ""
- else:
- configValue = self.__ToFloat(strValue)
+ try:
+ fieldName = fieldList[i][1]
+ strValue = strValue.lstrip().rstrip()
+ if strValue.isdigit():
+ configValue = int(strValue)
+ elif (strValue.startswith("{") and strValue.endswith("}")) \
+ or (strValue.startswith("[") and strValue.endswith("]")) \
+ or (strValue.startswith("(") and strValue.endswith(")")):
+ configValue = eval(strValue)
+ elif "_" in strValue and type(self.__StrToDict(strValue)) == dict:
+ configValue = self.__StrToDict(strValue)
+ elif ChConfig.Def_Str_Montant in strValue:
+ configValue = eval("(%s,)" % strValue.replace(ChConfig.Def_Str_Montant, ","))
+ elif strValue in ["-", ""]:
+ configValue = ""
+ else:
+ configValue = self.__ToFloat(strValue)
+ except BaseException:
+ ErrLog("SetIpyDataError: tableName=%s,key=%s,i=%s,value=%s" % ("FuncConfig", key, i, strValue))
+ raise
setattr(funcConfigObj, fieldName, configValue)
self.ipyFuncConfigDict[key] = funcConfigObj
return
@@ -3417,6 +3469,8 @@
def GetAllPeoplePartyByIndex(self, index): return self.ipyAllPeoplePartyCache[index]
def GetAllPeoplePartyAwardCount(self): return self.ipyAllPeoplePartyAwardLen
def GetAllPeoplePartyAwardByIndex(self, index): return self.ipyAllPeoplePartyAwardCache[index]
+ def GetMapEventPointCount(self): return self.ipyMapEventPointLen
+ def GetMapEventPointByIndex(self, index): return self.ipyMapEventPointCache[index]
IPYData = IPY_DataMgr()
def IPY_Data(): return IPYData
--
Gitblit v1.8.0