From c1c791372b63ff14d0ddd0ef85386e374603d1ff Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 15 七月 2024 19:47:37 +0800
Subject: [PATCH] 10202 【越南】【香港】【主干】【砍树】聚魂(寻宝修改:寻宝设定单独开表;去除免费寻宝x次必出逻辑,免费次数也算常规次数;免费次数去除时间恢复,改为过天重置;每x次必出改为每种类型独立配置;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 72 ++++-----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 63 ++++++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py | 165 +++++++++----------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetXunbao.py | 48 ++---
PySysDB/PySysDBPY.h | 25 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 4
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 72 ++++-----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 9
8 files changed, 245 insertions(+), 213 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 49d68ff..768a184 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1612,6 +1612,28 @@
list Money; //金钱
};
+//寻宝设定表
+
+struct tagTreasureSet
+{
+ BYTE _TreasureType; //寻宝类型
+ BYTE PackType; //放入背包
+ BYTE DailyFreeCount; //每日免费次数
+ list TreasureCountList; //抽奖次数列表
+ DWORD CostItemID; //消耗道具ID
+ list CostItemCountList; //消耗个数列表
+ BYTE CostMoneyType; //消耗货币类型
+ list CostMoneyList; //消耗货币列表
+ WORD EnsureCount; //每x次必出
+ BYTE OnceLucky; //单次幸运值
+ WORD FullLucky; //满幸运值
+ char LuckyRateFormat; //幸运格子概率公式
+ BYTE LuckyGridNum; //幸运格子编号
+ list NotifyGridNumList; //需要额外广播的格子
+ BYTE AwardMoneyType; //额外奖励货币类型
+ WORD AwardMoneyValue; //单次奖励货币数
+};
+
//寻宝产出库表
struct tagTreasureHouse
@@ -1622,12 +1644,9 @@
dict GridLibInfo; //格子编号对应库ID {"编号":物品库ID, ...}
list JobItemList; //职业物品组列表 [[职业1物品, 职业2物品, ...], ...]
list GridItemRateListFree; //免费产出格子编号饼图 [[概率, 格子编号], ...]
- list FreeGridItemRateList2; //免费每满x次保底产出格子编号饼图 [[概率, 格子编号], ...]
- dict FreeGridItemRateList3; //免费第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...}
list GridItemRateList1; //常规产出格子编号饼图 [[概率, 格子编号], ...]
list GridItemRateList2; //每满x次保底产出格子编号饼图 [[概率, 格子编号], ...]
dict GridItemRateList3; //第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...}
- BYTE LuckyGridNum; //幸运加成格子编号
};
//寻宝物品库
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 1e534a0..5a731a2 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -27153,63 +27153,48 @@
# A3 51 寻宝功能信息 #tagMCTreasureInfo
class tagMCTreasureTypeInfo(Structure):
- TreasureType = 0 #(BYTE TreasureType)//寻宝类型
- LuckValue = 0 #(WORD LuckValue)//当前幸运值
- IndexCount = 0 #(BYTE IndexCount)//索引个数
- FreeCountTime = list() #(vector<DWORD> FreeCountTime)// 模式对应开始计算免费次数时间time值
- data = None
+ _pack_ = 1
+ _fields_ = [
+ ("TreasureType", c_ubyte), #寻宝类型
+ ("LuckValue", c_ushort), #当前幸运值
+ ("TreasureCount", c_int), #已寻宝总次数
+ ("FreeCountToday", c_ushort), #今日已免费寻宝次数
+ ]
def __init__(self):
self.Clear()
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.IndexCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.FreeCountTime.append(value)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
self.TreasureType = 0
self.LuckValue = 0
- self.IndexCount = 0
- self.FreeCountTime = list()
+ self.TreasureCount = 0
+ self.FreeCountToday = 0
return
def GetLength(self):
- length = 0
- length += 1
- length += 2
- length += 1
- length += 4 * self.IndexCount
-
- return length
+ return sizeof(tagMCTreasureTypeInfo)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.TreasureType)
- data = CommFunc.WriteWORD(data, self.LuckValue)
- data = CommFunc.WriteBYTE(data, self.IndexCount)
- for i in range(self.IndexCount):
- data = CommFunc.WriteDWORD(data, self.FreeCountTime[i])
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
+ DumpString = '''// A3 51 寻宝功能信息 //tagMCTreasureInfo:
TreasureType:%d,
LuckValue:%d,
- IndexCount:%d,
- FreeCountTime:%s
+ TreasureCount:%d,
+ FreeCountToday:%d
'''\
%(
self.TreasureType,
self.LuckValue,
- self.IndexCount,
- "..."
+ self.TreasureCount,
+ self.FreeCountToday
)
return DumpString
@@ -27285,7 +27270,8 @@
class tagMCTreasureResult(Structure):
Head = tagHead()
- AddTreasureScore = 0 #(WORD AddTreasureScore)// 本次寻宝增加的寻宝积分
+ AddMoneyType = 0 #(BYTE AddMoneyType)// 本次寻宝增加的积分货币类型,可能为0
+ AddMoneyValue = 0 #(WORD AddMoneyValue)// 本次寻宝增加的积分货币值,可能为0
AddTreasureLuck = 0 #(WORD AddTreasureLuck)// 本次寻宝增加的幸运值
TreasureResultLen = 0 #(WORD TreasureResultLen)
TreasureResult = "" #(String TreasureResult)// 获得物品结果[[格子编号, 物品ID,个数,是否绑定], ...]
@@ -27300,7 +27286,8 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.AddTreasureScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AddMoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.AddTreasureLuck,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResult,_pos = CommFunc.ReadString(_lpData, _pos,self.TreasureResultLen)
@@ -27311,7 +27298,8 @@
self.Head.Clear()
self.Head.Cmd = 0xA3
self.Head.SubCmd = 0x50
- self.AddTreasureScore = 0
+ self.AddMoneyType = 0
+ self.AddMoneyValue = 0
self.AddTreasureLuck = 0
self.TreasureResultLen = 0
self.TreasureResult = ""
@@ -27320,6 +27308,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 2
length += 2
length += 2
@@ -27330,7 +27319,8 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.AddTreasureScore)
+ data = CommFunc.WriteBYTE(data, self.AddMoneyType)
+ data = CommFunc.WriteWORD(data, self.AddMoneyValue)
data = CommFunc.WriteWORD(data, self.AddTreasureLuck)
data = CommFunc.WriteWORD(data, self.TreasureResultLen)
data = CommFunc.WriteString(data, self.TreasureResultLen, self.TreasureResult)
@@ -27339,14 +27329,16 @@
def OutputString(self):
DumpString = '''
Head:%s,
- AddTreasureScore:%d,
+ AddMoneyType:%d,
+ AddMoneyValue:%d,
AddTreasureLuck:%d,
TreasureResultLen:%d,
TreasureResult:%s
'''\
%(
self.Head.OutputString(),
- self.AddTreasureScore,
+ self.AddMoneyType,
+ self.AddMoneyValue,
self.AddTreasureLuck,
self.TreasureResultLen,
self.TreasureResult
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 1c4247d..3b5608b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3632,13 +3632,8 @@
Def_Player_Dict_RefineGiftCnt = "RefineGiftCnt_%s" #当日已炼制次数, 参数为炼制类型
Def_Player_Dict_RefineStartTime = "RefineStartTime_%s" #炼制活动开始时间, 参数为炼制类型
-Def_PDict_TreasureState = "TreasureState_%s" # 寻宝相关状态,按二进制位存储, 参数(寻宝编号)
-Def_PDict_TreasureFreeCnt = "TreasureFreeCnt_%s" # 寻宝 - 当前可用免费次数, 参数(寻宝编号)
-Def_PDict_TreasureTodayTotalFreeCnt = "TreasureTTFreeCnt_%s" # 寻宝 - 今日已累计免费次数, 参数(寻宝编号)
-Def_PDict_TreasureStartCalcFreeCntTime = "TreasureFreeCntTime_%s" # 寻宝 - 开始计算免费次数CD时间, 参数(寻宝编号)
-
-Def_PDict_TreasureFreeTime = "TreasureFreeTime_%s_%s" # 寻宝开始免费计时time值, 参数(寻宝类型, 寻宝索引)
-Def_PDict_TreasureCount = "TreasureCount_%s_%s" # 寻宝次数, 参数(寻宝类型,是否免费)
+Def_PDict_TreasureFreeCount = "TreasureFreeCount_%s" # 寻宝今日已使用免费次数, 参数(寻宝类型)
+Def_PDict_TreasureCount = "TreasureCount_%s" # 寻宝次数, 参数(寻宝类型)
Def_PDict_TreasureLuck = "TreasureLuck_%s" # 寻宝当前幸运值, 参数(寻宝类型)
Def_Player_Dict_LastAutoOpenPackTick = "LastAutoOpenPackTick219_%s" #上一次自动购买的tick<背包类型>
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 1e534a0..5a731a2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -27153,63 +27153,48 @@
# A3 51 寻宝功能信息 #tagMCTreasureInfo
class tagMCTreasureTypeInfo(Structure):
- TreasureType = 0 #(BYTE TreasureType)//寻宝类型
- LuckValue = 0 #(WORD LuckValue)//当前幸运值
- IndexCount = 0 #(BYTE IndexCount)//索引个数
- FreeCountTime = list() #(vector<DWORD> FreeCountTime)// 模式对应开始计算免费次数时间time值
- data = None
+ _pack_ = 1
+ _fields_ = [
+ ("TreasureType", c_ubyte), #寻宝类型
+ ("LuckValue", c_ushort), #当前幸运值
+ ("TreasureCount", c_int), #已寻宝总次数
+ ("FreeCountToday", c_ushort), #今日已免费寻宝次数
+ ]
def __init__(self):
self.Clear()
return
- def ReadData(self, _lpData, _pos=0, _Len=0):
+ def ReadData(self, stringData, _pos=0, _len=0):
self.Clear()
- self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.IndexCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.FreeCountTime.append(value)
- return _pos
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
def Clear(self):
self.TreasureType = 0
self.LuckValue = 0
- self.IndexCount = 0
- self.FreeCountTime = list()
+ self.TreasureCount = 0
+ self.FreeCountToday = 0
return
def GetLength(self):
- length = 0
- length += 1
- length += 2
- length += 1
- length += 4 * self.IndexCount
-
- return length
+ return sizeof(tagMCTreasureTypeInfo)
def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.TreasureType)
- data = CommFunc.WriteWORD(data, self.LuckValue)
- data = CommFunc.WriteBYTE(data, self.IndexCount)
- for i in range(self.IndexCount):
- data = CommFunc.WriteDWORD(data, self.FreeCountTime[i])
- return data
+ return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''
+ DumpString = '''// A3 51 寻宝功能信息 //tagMCTreasureInfo:
TreasureType:%d,
LuckValue:%d,
- IndexCount:%d,
- FreeCountTime:%s
+ TreasureCount:%d,
+ FreeCountToday:%d
'''\
%(
self.TreasureType,
self.LuckValue,
- self.IndexCount,
- "..."
+ self.TreasureCount,
+ self.FreeCountToday
)
return DumpString
@@ -27285,7 +27270,8 @@
class tagMCTreasureResult(Structure):
Head = tagHead()
- AddTreasureScore = 0 #(WORD AddTreasureScore)// 本次寻宝增加的寻宝积分
+ AddMoneyType = 0 #(BYTE AddMoneyType)// 本次寻宝增加的积分货币类型,可能为0
+ AddMoneyValue = 0 #(WORD AddMoneyValue)// 本次寻宝增加的积分货币值,可能为0
AddTreasureLuck = 0 #(WORD AddTreasureLuck)// 本次寻宝增加的幸运值
TreasureResultLen = 0 #(WORD TreasureResultLen)
TreasureResult = "" #(String TreasureResult)// 获得物品结果[[格子编号, 物品ID,个数,是否绑定], ...]
@@ -27300,7 +27286,8 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.AddTreasureScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AddMoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.AddTreasureLuck,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResult,_pos = CommFunc.ReadString(_lpData, _pos,self.TreasureResultLen)
@@ -27311,7 +27298,8 @@
self.Head.Clear()
self.Head.Cmd = 0xA3
self.Head.SubCmd = 0x50
- self.AddTreasureScore = 0
+ self.AddMoneyType = 0
+ self.AddMoneyValue = 0
self.AddTreasureLuck = 0
self.TreasureResultLen = 0
self.TreasureResult = ""
@@ -27320,6 +27308,7 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 2
length += 2
length += 2
@@ -27330,7 +27319,8 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.AddTreasureScore)
+ data = CommFunc.WriteBYTE(data, self.AddMoneyType)
+ data = CommFunc.WriteWORD(data, self.AddMoneyValue)
data = CommFunc.WriteWORD(data, self.AddTreasureLuck)
data = CommFunc.WriteWORD(data, self.TreasureResultLen)
data = CommFunc.WriteString(data, self.TreasureResultLen, self.TreasureResult)
@@ -27339,14 +27329,16 @@
def OutputString(self):
DumpString = '''
Head:%s,
- AddTreasureScore:%d,
+ AddMoneyType:%d,
+ AddMoneyValue:%d,
AddTreasureLuck:%d,
TreasureResultLen:%d,
TreasureResult:%s
'''\
%(
self.Head.OutputString(),
- self.AddTreasureScore,
+ self.AddMoneyType,
+ self.AddMoneyValue,
self.AddTreasureLuck,
self.TreasureResultLen,
self.TreasureResult
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetXunbao.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetXunbao.py
index 5b1bfe6..8d8cf68 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetXunbao.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetXunbao.py
@@ -19,11 +19,9 @@
import ShareDefine
import PlayerControl
import PlayerTreasure
-import IpyGameDataPY
import ClearPack
import ChConfig
-
-import time
+import IpyGameDataPY
## GM命令执行入口
# @param curPlayer 当前玩家
@@ -32,37 +30,33 @@
# @remarks 函数详细说明.
def OnExec(curPlayer, paramList):
if not paramList:
- GameWorld.DebugAnswer(curPlayer, "重置寻宝:SetXunbao 0 选填(是否免费 清空背包)")
- GameWorld.DebugAnswer(curPlayer, "设置幸运:SetXunbao 寻宝类型 幸运值")
+ GameWorld.DebugAnswer(curPlayer, "重置寻宝:SetXunbao 0")
+ GameWorld.DebugAnswer(curPlayer, "设置幸运:SetXunbao 寻宝类型 幸运值 已寻宝次数")
return
if not paramList[0]:
- isFree = paramList[1] if len(paramList) > 1 else 1
- isClearPack = paramList[2] if len(paramList) > 2 else 1
+ ClearPack.OnExec(curPlayer, [ShareDefine.rptTreasure])
+ ClearPack.OnExec(curPlayer, [ShareDefine.rptRune])
- if isClearPack:
- ClearPack.OnExec(curPlayer, [ShareDefine.rptTreasure])
- ClearPack.OnExec(curPlayer, [ShareDefine.rptRune])
-
- treasureTypeList = PlayerTreasure.GetTreasureTypeList()
- for treasureType in treasureTypeList:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType, 0), 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType, 1), 0)
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for i in xrange(ipyDataMgr.GetTreasureSetCount()):
+ ipyData = ipyDataMgr.GetTreasureSetByIndex(i)
+ treasureType = ipyData.GetTreasureType()
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureFreeCount % (treasureType), 0)
- if not isFree:
- continue
-
- freeTimeCDList = IpyGameDataPY.GetFuncEvalCfg("TreasureSet1%s" % treasureType, 4)
- for i, minute in enumerate(freeTimeCDList):
- if not minute:
- continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureFreeTime % (treasureType, i), int(time.time()) - minute * 60)
GameWorld.DebugAnswer(curPlayer, "重置寻宝OK!")
- elif len(paramList) == 2:
- treasureType, luck = paramList
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), luck)
- GameWorld.DebugAnswer(curPlayer, "设置寻宝类型=%s,幸运=%s" % (treasureType, luck))
+ else:
+ treasureType = paramList[0]
+ luck = paramList[1] if len(paramList) > 1 else None
+ treasureCount = paramList[2] if len(paramList) > 2 else None
+ if luck != None:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), luck)
+ GameWorld.DebugAnswer(curPlayer, "设置寻宝类型=%s,幸运=%s" % (treasureType, luck))
+ if treasureCount != None:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), treasureCount)
+ GameWorld.DebugAnswer(curPlayer, "设置寻宝类型=%s,次数=%s" % (treasureType, treasureCount))
PlayerTreasure.Sync_TreasureInfo(curPlayer)
return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 5fe1aa7..dcd9de4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1286,6 +1286,25 @@
("list", "Money", 0),
),
+ "TreasureSet":(
+ ("BYTE", "TreasureType", 1),
+ ("BYTE", "PackType", 0),
+ ("BYTE", "DailyFreeCount", 0),
+ ("list", "TreasureCountList", 0),
+ ("DWORD", "CostItemID", 0),
+ ("list", "CostItemCountList", 0),
+ ("BYTE", "CostMoneyType", 0),
+ ("list", "CostMoneyList", 0),
+ ("WORD", "EnsureCount", 0),
+ ("BYTE", "OnceLucky", 0),
+ ("WORD", "FullLucky", 0),
+ ("char", "LuckyRateFormat", 0),
+ ("BYTE", "LuckyGridNum", 0),
+ ("list", "NotifyGridNumList", 0),
+ ("BYTE", "AwardMoneyType", 0),
+ ("WORD", "AwardMoneyValue", 0),
+ ),
+
"TreasureHouse":(
("BYTE", "TreasureType", 1),
("WORD", "MinLV", 0),
@@ -1293,12 +1312,9 @@
("dict", "GridLibInfo", 0),
("list", "JobItemList", 0),
("list", "GridItemRateListFree", 0),
- ("list", "FreeGridItemRateList2", 0),
- ("dict", "FreeGridItemRateList3", 0),
("list", "GridItemRateList1", 0),
("list", "GridItemRateList2", 0),
("dict", "GridItemRateList3", 0),
- ("BYTE", "LuckyGridNum", 0),
),
"TreasureItemLib":(
@@ -4178,6 +4194,30 @@
def GetAwardItem(self): return self.attrTuple[5] # 奖励物品列表 list
def GetMoney(self): return self.attrTuple[6] # 金钱 list
+# 寻宝设定表
+class IPY_TreasureSet():
+
+ def __init__(self):
+ self.attrTuple = None
+ return
+
+ def GetTreasureType(self): return self.attrTuple[0] # 寻宝类型 BYTE
+ def GetPackType(self): return self.attrTuple[1] # 放入背包 BYTE
+ def GetDailyFreeCount(self): return self.attrTuple[2] # 每日免费次数 BYTE
+ def GetTreasureCountList(self): return self.attrTuple[3] # 抽奖次数列表 list
+ def GetCostItemID(self): return self.attrTuple[4] # 消耗道具ID DWORD
+ def GetCostItemCountList(self): return self.attrTuple[5] # 消耗个数列表 list
+ def GetCostMoneyType(self): return self.attrTuple[6] # 消耗货币类型 BYTE
+ def GetCostMoneyList(self): return self.attrTuple[7] # 消耗货币列表 list
+ def GetEnsureCount(self): return self.attrTuple[8] # 每x次必出 WORD
+ def GetOnceLucky(self): return self.attrTuple[9] # 单次幸运值 BYTE
+ def GetFullLucky(self): return self.attrTuple[10] # 满幸运值 WORD
+ def GetLuckyRateFormat(self): return self.attrTuple[11] # 幸运格子概率公式 char
+ def GetLuckyGridNum(self): return self.attrTuple[12] # 幸运格子编号 BYTE
+ def GetNotifyGridNumList(self): return self.attrTuple[13] # 需要额外广播的格子 list
+ def GetAwardMoneyType(self): return self.attrTuple[14] # 额外奖励货币类型 BYTE
+ def GetAwardMoneyValue(self): return self.attrTuple[15] # 单次奖励货币数 WORD
+
# 寻宝产出库表
class IPY_TreasureHouse():
@@ -4191,12 +4231,9 @@
def GetGridLibInfo(self): return self.attrTuple[3] # 格子编号对应库ID {"编号":物品库ID, ...} dict
def GetJobItemList(self): return self.attrTuple[4] # 职业物品组列表 [[职业1物品, 职业2物品, ...], ...] list
def GetGridItemRateListFree(self): return self.attrTuple[5] # 免费产出格子编号饼图 [[概率, 格子编号], ...] list
- def GetFreeGridItemRateList2(self): return self.attrTuple[6] # 免费每满x次保底产出格子编号饼图 [[概率, 格子编号], ...] list
- def GetFreeGridItemRateList3(self): return self.attrTuple[7] # 免费第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...} dict
- def GetGridItemRateList1(self): return self.attrTuple[8] # 常规产出格子编号饼图 [[概率, 格子编号], ...] list
- def GetGridItemRateList2(self): return self.attrTuple[9] # 每满x次保底产出格子编号饼图 [[概率, 格子编号], ...] list
- def GetGridItemRateList3(self): return self.attrTuple[10] # 第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...} dict
- def GetLuckyGridNum(self): return self.attrTuple[11] # 幸运加成格子编号 BYTE
+ def GetGridItemRateList1(self): return self.attrTuple[6] # 常规产出格子编号饼图 [[概率, 格子编号], ...] list
+ def GetGridItemRateList2(self): return self.attrTuple[7] # 每满x次保底产出格子编号饼图 [[概率, 格子编号], ...] list
+ def GetGridItemRateList3(self): return self.attrTuple[8] # 第x次必出产出格子编号饼图 {次数:[[概率, 格子编号], ...], ...} dict
# 寻宝物品库
class IPY_TreasureItemLib():
@@ -6026,6 +6063,7 @@
self.__LoadFileData("LVAward", onlyCheck)
self.__LoadFileData("Invest", onlyCheck)
self.__LoadFileData("XBXZ", onlyCheck)
+ self.__LoadFileData("TreasureSet", onlyCheck)
self.__LoadFileData("TreasureHouse", onlyCheck)
self.__LoadFileData("TreasureItemLib", onlyCheck)
self.__LoadFileData("FreeGoods", onlyCheck)
@@ -7167,6 +7205,13 @@
self.CheckLoadData("XBXZ")
return self.ipyXBXZCache[index]
+ def GetTreasureSetCount(self):
+ self.CheckLoadData("TreasureSet")
+ return self.ipyTreasureSetLen
+ def GetTreasureSetByIndex(self, index):
+ self.CheckLoadData("TreasureSet")
+ return self.ipyTreasureSetCache[index]
+
def GetTreasureHouseCount(self):
self.CheckLoadData("TreasureHouse")
return self.ipyTreasureHouseLen
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 68372d8..fb77fcb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -119,6 +119,7 @@
import PlayerWishingWell
import PlayerFairyDomain
import CrossPlayerData
+import PlayerTreasure
import PlayerVip
import PlayerLove
import PlayerDiceEx
@@ -543,7 +544,8 @@
#投资
PlayerGoldInvest.OnDay(curPlayer)
-
+ #寻宝
+ PlayerTreasure.OnDay(curPlayer)
#法宝
PlayerMagicWeapon.OnDay(curPlayer)
PlayerGoldGift.OnDay(curPlayer)
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 2ba1cad..9f0472a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -45,15 +45,6 @@
def DoTreasureOpen(curPlayer):
## 寻宝开启
-
- # 设置免费寻宝
- treasureTypeList = GetTreasureTypeList()
- for treasureType in treasureTypeList:
- freeTimeCDList = IpyGameDataPY.GetFuncEvalCfg("TreasureSet1%s" % treasureType, 4)
- for i, minute in enumerate(freeTimeCDList):
- if not minute:
- continue
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureFreeTime % (treasureType, i), int(time.time()) - minute * 60)
Sync_TreasureInfo(curPlayer)
return
@@ -61,6 +52,20 @@
if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Treasure):
return
Sync_TreasureInfo(curPlayer)
+ return
+
+def OnDay(curPlayer):
+ syncTypeList = []
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for i in xrange(ipyDataMgr.GetTreasureSetCount()):
+ ipyData = ipyDataMgr.GetTreasureSetByIndex(i)
+ treasureType = ipyData.GetTreasureType()
+ if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureFreeCount % (treasureType)):
+ continue
+ syncTypeList.append(treasureType)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureFreeCount % (treasureType), 0)
+ if syncTypeList:
+ Sync_TreasureInfo(curPlayer, syncTypeList)
return
#// A5 68 请求寻宝 #tagCMRequestTreasure
@@ -79,13 +84,14 @@
treasureType = clientData.TreasureType
treasureIndex = clientData.TreasureIndex
costType = clientData.CostType
- isFreeType = 1 if costType == 1 else 0
+
GameWorld.DebugLog("玩家寻宝: treasureType=%s,treasureIndex=%s,costType=%s,playerLV=%s"
% (treasureType, treasureIndex, costType, playerLV), playerID)
- TreasureSet1 = "TreasureSet1%s" % treasureType
- TreasureSet2 = "TreasureSet2%s" % treasureType
- treasureCountList = IpyGameDataPY.GetFuncEvalCfg(TreasureSet1, 1) # 寻宝获得个数列表
+ setIpyData = IpyGameDataPY.GetIpyGameData("TreasureSet", treasureType)
+ if not setIpyData:
+ return
+ treasureCountList = setIpyData.GetTreasureCountList() # 寻宝获得个数列表
if not treasureCountList:
GameWorld.DebugLog("没有寻宝次数列表配置!", playerID)
return
@@ -97,37 +103,31 @@
GameWorld.DebugLog("没有寻宝次数配置!", playerID)
return
- packType = ShareDefine.rptTreasure
- #if treasureType == 2:
- # packType = ShareDefine.rptRune
- if treasureType in [TreasureType_GatherTheSoul]:
- packType = IPY_GameWorld.rptItem
-
+ packType = setIpyData.GetPackType()
if not ItemCommon.CheckPackHasSpace(curPlayer, packType, True):
GameWorld.DebugLog("对应寻宝背包没有空格子!packType=%s" % packType, playerID)
return
# 免费次数
if costType == 1:
- freeCountCDList = IpyGameDataPY.GetFuncEvalCfg(TreasureSet1, 4) # 免费次数CD时间列表, 分
- freeCountCD = freeCountCDList[treasureIndex] * 60
- if not freeCountCD:
+ dailyFreeCount = setIpyData.GetDailyFreeCount()
+ if not dailyFreeCount:
GameWorld.ErrLog("该寻宝类型索引不支持免费次数寻宝!treasureType=%s,treasureIndex=%s" % (treasureType, treasureIndex), playerID)
return
- curTime = int(time.time())
- freeTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureFreeTime % (treasureType, treasureIndex))
- if curTime - freeTime < freeCountCD:
- GameWorld.DebugLog("免费寻宝CD时间未到,无法使用免费寻宝!curTime=%s,freeTime=%s, %s < freeCountCD(%s)"
- % (curTime, freeTime, curTime - freeTime, freeCountCD), playerID)
+ freeCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureFreeCount % (treasureType))
+ updFreeCountToday = freeCountToday + treasureCount
+ if updFreeCountToday > dailyFreeCount:
+ GameWorld.DebugLog("今日免费次数不足,无法使用免费寻宝! freeCountToday=%s + %s > %s" % (freeCountToday, treasureCount, dailyFreeCount), playerID)
return
# 寻宝道具, 目前默认消耗1个
elif costType == 2:
- costItemList = IpyGameDataPY.GetFuncEvalCfg(TreasureSet1, 3) # 消耗道具物品ID列表
- if not costItemList:
+ costItemID = setIpyData.GetCostItemID()
+ costItemList = setIpyData.GetCostItemCountList() # 消耗道具物品ID列表
+ if not costItemID or not costItemList or treasureIndex >= len(costItemList):
GameWorld.ErrLog("该寻宝类型索引不支持消耗道具寻宝!treasureType=%s,treasureIndex=%s" % (treasureType, treasureIndex), playerID)
return
- costItemID, costItemNeedCount = costItemList[treasureIndex]
+ costItemNeedCount = costItemList[treasureIndex]
if not costItemID or not costItemNeedCount:
return
costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, costItemID)
@@ -148,11 +148,13 @@
# 仙玉寻宝
else:
- costGoldList = IpyGameDataPY.GetFuncEvalCfg(TreasureSet1, 2) # 消耗货币列表
- costGoldType = IpyGameDataPY.GetFuncCfg(TreasureSet2, 4) # 消耗货币类型
+ costGoldList = setIpyData.GetCostMoneyList() # 消耗货币列表
+ costGoldType = setIpyData.GetCostMoneyType() # 消耗货币类型
+ if not costGoldType or not costGoldList or treasureIndex >= len(costGoldList):
+ GameWorld.ErrLog("该寻宝类型索引不支持消耗货币寻宝!treasureType=%s,treasureIndex=%s" % (treasureType, treasureIndex), playerID)
+ return
costGold = costGoldList[treasureIndex]
if not costGold:
- GameWorld.ErrLog("该寻宝类型索引不支持消耗仙玉寻宝!treasureType=%s,treasureIndex=%s" % (treasureType, treasureIndex), playerID)
return
if not PlayerControl.HaveMoney(curPlayer, costGoldType, costGold):
@@ -163,39 +165,40 @@
GameWorld.ErrLog("找不到该等级对应寻宝库配置!treasureType=%s,curLV=%s" % (treasureType, curPlayer.GetLV()), playerID)
return
- luckFormula = IpyGameDataPY.GetFuncCfg(TreasureSet2, 1) # 幸运物品概率公式
- addLuck = IpyGameDataPY.GetFuncEvalCfg(TreasureSet2, 2)[treasureIndex] # 增加幸运值
- maxLuck = IpyGameDataPY.GetFuncCfg(TreasureSet2, 3) # 满幸运值
+ luckyGridNum = setIpyData.GetLuckyGridNum() # 幸运物品概率公式
+ luckFormula = setIpyData.GetLuckyRateFormat() # 幸运物品概率公式
+ addLuck = setIpyData.GetOnceLucky() * treasureCount # 增加幸运值
+ maxLuck = setIpyData.GetFullLucky() # 满幸运值
curLuck = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureLuck % (treasureType)) # 当前幸运值
updLuck = curLuck + addLuck
- commItemRateList = GetUpdLuckyItemRateList(ipyData, curLuck, luckFormula, costType) # 常规产出物品格子饼图,幸运物品概率已变更
+ commItemRateList = GetUpdLuckyItemRateList(ipyData, luckyGridNum, curLuck, luckFormula, costType) # 常规产出物品格子饼图,幸运物品概率已变更
- curTreasureCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCount % (treasureType, isFreeType)) # 当前已寻宝次数
+ curTreasureCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCount % (treasureType)) # 当前已寻宝次数
updTreasureCount = curTreasureCount + treasureCount
- beSureCountDict = ipyData.GetFreeGridItemRateList3() if isFreeType else ipyData.GetGridItemRateList3() # 第x次必出产出格子编号饼图
GameWorld.DebugLog("已经寻宝次数=%s,当前幸运=%s,commItemRateList=%s" % (curTreasureCount, curLuck, commItemRateList), playerID)
- addScore = 0 if isFreeType else IpyGameDataPY.GetFuncEvalCfg(TreasureSet1, 5)[treasureIndex] # 增加积分
- ensureCount = IpyGameDataPY.GetFuncEvalCfg("TreasureSet", 1, {})[isFreeType] # 每多少次触发保底产出库
- ensureRateList = ipyData.GetFreeGridItemRateList2() if isFreeType else ipyData.GetGridItemRateList2()
- goodGridNumList = [ipyData.GetLuckyGridNum()] # 好物品格子编号 (幸运物品 + 必出 + 保底)
+
+ goodGridNumList = [luckyGridNum] # 好物品格子编号 (幸运物品 + 必出 + 保底)
+ beSureCountDict = ipyData.GetGridItemRateList3() # 第x次必出产出格子编号饼图
for gridRateList in beSureCountDict.values():
for gridRateInfo in gridRateList:
goodGridNumList.append(gridRateInfo[1])
+ ensureCount = setIpyData.GetEnsureCount() # 每多少次触发保底产出库
+ ensureRateList = ipyData.GetGridItemRateList2()
for gridRateInfo in ensureRateList:
goodGridNumList.append(gridRateInfo[1])
- notifyGridNumList = IpyGameDataPY.GetFuncEvalCfg(TreasureSet2, 5) # 额外需要广播的格子,幸运必出、次数必出可不配置
+ notifyGridNumList = setIpyData.GetNotifyGridNumList() # 额外需要广播的格子,幸运必出、次数必出可不配置
goodGridNumList += notifyGridNumList
GameWorld.DebugLog("goodGridNumList=%s" % goodGridNumList, playerID)
-
+
# 单抽产出优先级: 幸运物品 > 必出 > 保底 > 普通
# 连抽没有优先级限制,只要满足条件即可产出
getGridResult = []
# 1.满幸运必出
if updLuck >= maxLuck:
- getGridResult.append(ipyData.GetLuckyGridNum())
- GameWorld.DebugLog("满幸运必出幸运物品: gridNum=%s" % ipyData.GetLuckyGridNum(), playerID)
+ getGridResult.append(luckyGridNum)
+ GameWorld.DebugLog("满幸运必出幸运物品: luckyGridNum=%s" % luckyGridNum, playerID)
# 单抽
if treasureCount == 1:
@@ -242,7 +245,7 @@
doCount -= 1
gridNum = GameWorld.GetResultByRandomList(commItemRateList)
- if gridNum == ipyData.GetLuckyGridNum() and gridNum in getGridResult:
+ if gridNum == luckyGridNum and gridNum in getGridResult:
GameWorld.DebugLog("幸运物品已经出过,不再重复产出!")
continue
@@ -283,7 +286,7 @@
isBind = 0 # 暂时默认不绑定
job = curPlayer.GetJob()
gridItemInfoDict = ipyData.GetGridItemInfo() # 格子对应物品信息 {"格子编号":[物品ID, 数量], ...}
- gridLibInfoDict = ipyData.GetGridLibInfo() # 格子对应物品信息 {"格子编号":[物品ID, 数量], ...}
+ gridLibInfoDict = ipyData.GetGridLibInfo() # 格子编号对应库ID {"编号":物品库ID, ...}
jobItemList = ipyData.GetJobItemList()
treasureResult = []
randItemIDDict = IpyGameDataPY.GetFuncEvalCfg("TreasureSet", 2)
@@ -338,8 +341,8 @@
# 扣消耗
if costType == 1:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureFreeTime % (treasureType, treasureIndex), curTime)
- GameWorld.DebugLog("消耗免费次数,更新免费CD计算时间: %s" % curTime, playerID)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureFreeCount % (treasureType), updFreeCountToday)
+ GameWorld.DebugLog("消耗免费次数,更新今日已使用免费次数: %s" % updFreeCountToday, playerID)
elif costType == 2:
ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, delCostItemCount, ChConfig.ItemDel_Treasure)
GameWorld.DebugLog("扣除寻宝道具,costItemID=%s,delCostItemCount=%s" % (costItemID, delCostItemCount), playerID)
@@ -352,12 +355,16 @@
GameWorld.DebugLog("扣除货币,costGoldType=%s,costGold=%s" % (costGoldType, costGold), playerID)
# 加数据
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType, isFreeType), updTreasureCount)
- if ipyData.GetLuckyGridNum() in getGridResult:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), updTreasureCount)
+ if luckyGridNum in getGridResult:
updLuck = 0
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), updLuck)
- PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_TreasureScore, addScore)
+ addScoreType = setIpyData.GetAwardMoneyType() # 额外奖励货币类型
+ addScore = setIpyData.GetAwardMoneyValue() # 单次奖励货币数
+ if addScoreType and addScore:
+ PlayerControl.GiveMoney(curPlayer, addScoreType, addScore)
+
if treasureType == TreasureType_Rune:
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount)
PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_RuneTreasure, treasureCount)
@@ -390,28 +397,30 @@
if mailItemList:
PlayerControl.SendMailByKey("HappyXBUnEnough", [playerID], mailItemList)
- GameWorld.DebugLog("寻宝成功: treasureType=%s,updTreasureCount=%s,updLuck=%s,addLuck=%s,addScore=%s"
- % (treasureType, updTreasureCount, updLuck, addLuck, addScore), playerID)
+ GameWorld.DebugLog("寻宝成功: treasureType=%s,updTreasureCount=%s,updLuck=%s,addLuck=%s,addScoreType=%s,addScore=%s"
+ % (treasureType, updTreasureCount, updLuck, addLuck, addScoreType, addScore), playerID)
GameWorld.DebugLog(" treasureResult=%s" % (treasureResult), playerID)
GameWorld.DebugLog(" mailItemList=%s" % (mailItemList), playerID)
# 通知前端
sendPack = ChPyNetSendPack.tagMCTreasureResult()
sendPack.Clear()
- sendPack.AddTreasureScore = addScore
+ sendPack.AddMoneyType = addScoreType
+ sendPack.AddMoneyValue = addScore
sendPack.AddTreasureLuck = addLuck
sendPack.TreasureResult = str(treasureResult)
sendPack.TreasureResultLen = len(sendPack.TreasureResult)
NetPackCommon.SendFakePack(curPlayer, sendPack)
- Sync_TreasureInfo(curPlayer, treasureType)
+ Sync_TreasureInfo(curPlayer, [treasureType])
return
-def GetUpdLuckyItemRateList(ipyData, curLuck, luckFormula, costType):
+def GetUpdLuckyItemRateList(ipyData, luckyGridNum, curLuck, luckFormula, costType):
# 获取幸运物品提升概率后的饼图
srcPieList = ipyData.GetGridItemRateListFree() if costType == 1 else ipyData.GetGridItemRateList1()
- luckyGridNum = ipyData.GetLuckyGridNum()
-
+ if not srcPieList:
+ srcPieList = ipyData.GetGridItemRateList1()
+
updRateList = []
for i, rateInfo in enumerate(srcPieList):
rate, gridNum = rateInfo
@@ -440,42 +449,26 @@
return jobItemIDList[job - 1]
return itemID
-def GetTreasureTypeList():
- ## 寻宝类型列表
- TreasureTypeList = IpyGameDataPY.GetConfigEx("TreasureType")
- if not TreasureTypeList:
- TreasureTypeList = []
+def Sync_TreasureInfo(curPlayer, syncTypeList=None):
+ if syncTypeList == None:
+ syncTypeList = []
ipyDataMgr = IpyGameDataPY.IPY_Data()
- for i in xrange(ipyDataMgr.GetTreasureHouseCount()):
- ipyData = ipyDataMgr.GetTreasureHouseByIndex(i)
- treasureType = ipyData.GetTreasureType()
- if treasureType not in TreasureTypeList:
- TreasureTypeList.append(treasureType)
- IpyGameDataPY.SetConfigEx("TreasureType", TreasureTypeList)
- return TreasureTypeList
-
-def Sync_TreasureInfo(curPlayer, treasureType=None):
- if treasureType == None:
- syncTypeList = GetTreasureTypeList()
- else:
- syncTypeList = [treasureType]
-
+ for i in xrange(ipyDataMgr.GetTreasureSetCount()):
+ ipyData = ipyDataMgr.GetTreasureSetByIndex(i)
+ syncTypeList.append(ipyData.GetTreasureType())
+
treasureInfoPack = ChPyNetSendPack.tagMCTreasureInfo()
treasureInfoPack.Clear()
treasureInfoPack.TreasuerInfoList = []
for tType in syncTypeList:
- treasureCountList = IpyGameDataPY.GetFuncEvalCfg("TreasureSet1%s" % tType, 1)
tTypeInfo = ChPyNetSendPack.tagMCTreasureTypeInfo()
tTypeInfo.Clear()
tTypeInfo.TreasureType = tType
tTypeInfo.LuckValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureLuck % (tType))
- tTypeInfo.FreeCountTime = []
- for i in xrange(len(treasureCountList)):
- tTypeInfo.FreeCountTime.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureFreeTime % (tType, i)))
- tTypeInfo.IndexCount = len(tTypeInfo.FreeCountTime)
+ tTypeInfo.TreasureCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCount % (tType))
+ tTypeInfo.FreeCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureFreeCount % (tType))
treasureInfoPack.TreasuerInfoList.append(tTypeInfo)
treasureInfoPack.InfoCount = len(treasureInfoPack.TreasuerInfoList)
NetPackCommon.SendFakePack(curPlayer, treasureInfoPack)
return
-
--
Gitblit v1.8.0