10371 【越南】【英文】【BT】【砍树】所有寻宝类型都加上每日寻宝次数上限
7个文件已修改
112 ■■■■ 已修改文件
PySysDB/PySysDBPY.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetXunbao.py 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PySysDB/PySysDBPY.h
@@ -1706,6 +1706,7 @@
    BYTE        PackType;    //放入背包
    BYTE        CheckPack;    //是否检查背包
    BYTE        IsActType;    //是否活动寻宝
    DWORD        DailyMaxCount;    //每日最大次数
    BYTE        DailyFreeCount;    //每日免费次数
    list        TreasureCountList;    //抽奖次数列表
    char        RecycleItemMail;    //重置回收道具邮件,如果有配置回收邮件key,则重置时会回收多余的寻宝道具
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -28993,6 +28993,7 @@
    TreasureType = 0    #(BYTE TreasureType)//寻宝类型
    LuckValue = 0    #(WORD LuckValue)//当前幸运值
    TreasureCount = 0    #(DWORD TreasureCount)//已寻宝总次数
    TreasureCountToday = 0    #(DWORD TreasureCountToday)//今日已寻宝总次数
    FreeCountToday = 0    #(WORD FreeCountToday)//今日已免费寻宝次数
    TreasureCntAward = 0    #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
    GridLimitCnt = 0    #(BYTE GridLimitCnt)
@@ -29008,6 +29009,7 @@
        self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TreasureCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TreasureCountToday,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FreeCountToday,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TreasureCntAward,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.GridLimitCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -29021,6 +29023,7 @@
        self.TreasureType = 0
        self.LuckValue = 0
        self.TreasureCount = 0
        self.TreasureCountToday = 0
        self.FreeCountToday = 0
        self.TreasureCntAward = 0
        self.GridLimitCnt = 0
@@ -29031,6 +29034,7 @@
        length = 0
        length += 1
        length += 2
        length += 4
        length += 4
        length += 2
        length += 4
@@ -29045,6 +29049,7 @@
        data = CommFunc.WriteBYTE(data, self.TreasureType)
        data = CommFunc.WriteWORD(data, self.LuckValue)
        data = CommFunc.WriteDWORD(data, self.TreasureCount)
        data = CommFunc.WriteDWORD(data, self.TreasureCountToday)
        data = CommFunc.WriteWORD(data, self.FreeCountToday)
        data = CommFunc.WriteDWORD(data, self.TreasureCntAward)
        data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
@@ -29057,6 +29062,7 @@
                                TreasureType:%d,
                                LuckValue:%d,
                                TreasureCount:%d,
                                TreasureCountToday:%d,
                                FreeCountToday:%d,
                                TreasureCntAward:%d,
                                GridLimitCnt:%d,
@@ -29066,6 +29072,7 @@
                                self.TreasureType,
                                self.LuckValue,
                                self.TreasureCount,
                                self.TreasureCountToday,
                                self.FreeCountToday,
                                self.TreasureCntAward,
                                self.GridLimitCnt,
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3667,6 +3667,7 @@
Def_PDict_TreasureFreeCount = "TreasureFreeCount_%s"  # 寻宝今日已使用免费次数, 参数(寻宝类型)
Def_PDict_TreasureCount = "TreasureCount_%s"  # 寻宝次数, 参数(寻宝类型)
Def_PDict_TreasureCountToday = "TreasureCountToday_%s"  # 今日寻宝次数, 参数(寻宝类型)
Def_PDict_TreasureLuck = "TreasureLuck_%s"  # 寻宝当前幸运值, 参数(寻宝类型)
Def_PDict_TreasureCntAward = "TreasureCntAward_%s"  # 累计寻宝次数对应物品奖励领奖状态, 参数(寻宝类型)
Def_PDict_TreasureGridCnt = "TreasureGridCnt_%s_%s"  # 格子对应累计产出次数, 参数(寻宝类型, 格子编号)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -28993,6 +28993,7 @@
    TreasureType = 0    #(BYTE TreasureType)//寻宝类型
    LuckValue = 0    #(WORD LuckValue)//当前幸运值
    TreasureCount = 0    #(DWORD TreasureCount)//已寻宝总次数
    TreasureCountToday = 0    #(DWORD TreasureCountToday)//今日已寻宝总次数
    FreeCountToday = 0    #(WORD FreeCountToday)//今日已免费寻宝次数
    TreasureCntAward = 0    #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
    GridLimitCnt = 0    #(BYTE GridLimitCnt)
@@ -29008,6 +29009,7 @@
        self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TreasureCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TreasureCountToday,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FreeCountToday,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TreasureCntAward,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.GridLimitCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -29021,6 +29023,7 @@
        self.TreasureType = 0
        self.LuckValue = 0
        self.TreasureCount = 0
        self.TreasureCountToday = 0
        self.FreeCountToday = 0
        self.TreasureCntAward = 0
        self.GridLimitCnt = 0
@@ -29031,6 +29034,7 @@
        length = 0
        length += 1
        length += 2
        length += 4
        length += 4
        length += 2
        length += 4
@@ -29045,6 +29049,7 @@
        data = CommFunc.WriteBYTE(data, self.TreasureType)
        data = CommFunc.WriteWORD(data, self.LuckValue)
        data = CommFunc.WriteDWORD(data, self.TreasureCount)
        data = CommFunc.WriteDWORD(data, self.TreasureCountToday)
        data = CommFunc.WriteWORD(data, self.FreeCountToday)
        data = CommFunc.WriteDWORD(data, self.TreasureCntAward)
        data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
@@ -29057,6 +29062,7 @@
                                TreasureType:%d,
                                LuckValue:%d,
                                TreasureCount:%d,
                                TreasureCountToday:%d,
                                FreeCountToday:%d,
                                TreasureCntAward:%d,
                                GridLimitCnt:%d,
@@ -29066,6 +29072,7 @@
                                self.TreasureType,
                                self.LuckValue,
                                self.TreasureCount,
                                self.TreasureCountToday,
                                self.FreeCountToday,
                                self.TreasureCntAward,
                                self.GridLimitCnt,
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetXunbao.py
@@ -31,10 +31,13 @@
def OnExec(curPlayer, paramList):
    if not paramList:
        GameWorld.DebugAnswer(curPlayer, "重置寻宝:SetXunbao 0 [指定类型]")
        GameWorld.DebugAnswer(curPlayer, "设置幸运:SetXunbao 寻宝类型 幸运值 已寻宝次数")
        GameWorld.DebugAnswer(curPlayer, "设置幸运:SetXunbao l 类型 幸运")
        GameWorld.DebugAnswer(curPlayer, "设置次数:SetXunbao c 类型 今日次数 [累计次数]")
        return
    
    if not paramList[0]:
    value = paramList[0]
    syncTypeList = []
    if not value:
        ClearPack.OnExec(curPlayer, [ShareDefine.rptTreasure])
        ClearPack.OnExec(curPlayer, [ShareDefine.rptRune])
        
@@ -48,16 +51,31 @@
        GameWorld.DebugAnswer(curPlayer, "重置寻宝OK!%s" % treasureTypeList)
        return
    
    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))
    elif value == "l":
        treasureType = paramList[1] if len(paramList) > 1 else None
        luck = paramList[2] if len(paramList) > 2 else 0
        if not IpyGameDataPY.GetIpyGameData("TreasureSet", treasureType):
            GameWorld.DebugAnswer(curPlayer, "寻宝类型不存在!%s" % treasureType)
            return
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), luck)
        GameWorld.DebugAnswer(curPlayer, "设置寻宝类型=%s,幸运=%s" % (treasureType, luck))
        syncTypeList = [treasureType]
    elif value == "c":
        treasureType = paramList[1] if len(paramList) > 1 else None
        treasureCountToday = paramList[2] if len(paramList) > 2 else None
        treasureCount = paramList[3] if len(paramList) > 3 else None
        if not IpyGameDataPY.GetIpyGameData("TreasureSet", treasureType):
            GameWorld.DebugAnswer(curPlayer, "寻宝类型不存在!%s" % treasureType)
            return
        if treasureCountToday != None:
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCountToday % (treasureType), treasureCountToday)
            GameWorld.DebugAnswer(curPlayer, "设置寻宝类型=%s,今日次数=%s" % (treasureType, treasureCountToday))
        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
            GameWorld.DebugAnswer(curPlayer, "设置寻宝类型=%s,累计次数=%s" % (treasureType, treasureCount))
        syncTypeList = [treasureType]
    PlayerTreasure.Sync_TreasureInfo(curPlayer, syncTypeList)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1353,6 +1353,7 @@
                        ("BYTE", "PackType", 0),
                        ("BYTE", "CheckPack", 0),
                        ("BYTE", "IsActType", 0),
                        ("DWORD", "DailyMaxCount", 0),
                        ("BYTE", "DailyFreeCount", 0),
                        ("list", "TreasureCountList", 0),
                        ("char", "RecycleItemMail", 0),
@@ -4518,23 +4519,24 @@
    def GetPackType(self): return self.attrTuple[1] # 放入背包 BYTE
    def GetCheckPack(self): return self.attrTuple[2] # 是否检查背包 BYTE
    def GetIsActType(self): return self.attrTuple[3] # 是否活动寻宝 BYTE
    def GetDailyFreeCount(self): return self.attrTuple[4] # 每日免费次数 BYTE
    def GetTreasureCountList(self): return self.attrTuple[5] # 抽奖次数列表 list
    def GetRecycleItemMail(self): return self.attrTuple[6] # 重置回收道具邮件,如果有配置回收邮件key,则重置时会回收多余的寻宝道具 char
    def GetCostItemID(self): return self.attrTuple[7] # 消耗道具ID DWORD
    def GetCostItemCountList(self): return self.attrTuple[8] # 消耗个数列表 list
    def GetCostMoneyType(self): return self.attrTuple[9] # 消耗货币类型 BYTE
    def GetCostMoneyList(self): return self.attrTuple[10] # 消耗货币列表 list
    def GetEnsureCount(self): return self.attrTuple[11] # 每x次必出 WORD
    def GetOnceLucky(self): return self.attrTuple[12] # 单次幸运值 BYTE
    def GetFullLucky(self): return self.attrTuple[13] # 满幸运值 WORD
    def GetLuckyRateFormat(self): return self.attrTuple[14] # 幸运格子概率公式 char
    def GetLuckyGridNum(self): return self.attrTuple[15] # 幸运格子编号 BYTE
    def GetGridNumMaxLimitInfo(self): return self.attrTuple[16] # 格子最大产出次数限制,{"格子":最大可产出次数, ...} dict
    def GetNotifyGridNumList(self): return self.attrTuple[17] # 需要额外广播的格子 list
    def GetNotifyKey(self): return self.attrTuple[18] # 广播key char
    def GetAwardMoneyType(self): return self.attrTuple[19] # 额外奖励货币类型 BYTE
    def GetAwardMoneyValue(self): return self.attrTuple[20] # 单次奖励货币数 WORD
    def GetDailyMaxCount(self): return self.attrTuple[4] # 每日最大次数 DWORD
    def GetDailyFreeCount(self): return self.attrTuple[5] # 每日免费次数 BYTE
    def GetTreasureCountList(self): return self.attrTuple[6] # 抽奖次数列表 list
    def GetRecycleItemMail(self): return self.attrTuple[7] # 重置回收道具邮件,如果有配置回收邮件key,则重置时会回收多余的寻宝道具 char
    def GetCostItemID(self): return self.attrTuple[8] # 消耗道具ID DWORD
    def GetCostItemCountList(self): return self.attrTuple[9] # 消耗个数列表 list
    def GetCostMoneyType(self): return self.attrTuple[10] # 消耗货币类型 BYTE
    def GetCostMoneyList(self): return self.attrTuple[11] # 消耗货币列表 list
    def GetEnsureCount(self): return self.attrTuple[12] # 每x次必出 WORD
    def GetOnceLucky(self): return self.attrTuple[13] # 单次幸运值 BYTE
    def GetFullLucky(self): return self.attrTuple[14] # 满幸运值 WORD
    def GetLuckyRateFormat(self): return self.attrTuple[15] # 幸运格子概率公式 char
    def GetLuckyGridNum(self): return self.attrTuple[16] # 幸运格子编号 BYTE
    def GetGridNumMaxLimitInfo(self): return self.attrTuple[17] # 格子最大产出次数限制,{"格子":最大可产出次数, ...} dict
    def GetNotifyGridNumList(self): return self.attrTuple[18] # 需要额外广播的格子 list
    def GetNotifyKey(self): return self.attrTuple[19] # 广播key char
    def GetAwardMoneyType(self): return self.attrTuple[20] # 额外奖励货币类型 BYTE
    def GetAwardMoneyValue(self): return self.attrTuple[21] # 单次奖励货币数 WORD
# 寻宝产出库表
class IPY_TreasureHouse():
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -65,9 +65,11 @@
    for i in xrange(ipyDataMgr.GetTreasureSetCount()):
        ipyData = ipyDataMgr.GetTreasureSetByIndex(i)
        treasureType = ipyData.GetTreasureType()
        if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureFreeCount % (treasureType)):
        if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCountToday % (treasureType)) and \
            not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureFreeCount % (treasureType)):
            continue
        syncTypeList.append(treasureType)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCountToday % (treasureType), 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureFreeCount % (treasureType), 0)
    if syncTypeList:
        Sync_TreasureInfo(curPlayer, syncTypeList)
@@ -85,6 +87,7 @@
            ItemControler.RecycleItem(curPlayer, costItemID, recycleItemMail)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureFreeCount % (treasureType), 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCountToday % (treasureType), 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCntAward % (treasureType), 0)
        
@@ -138,6 +141,13 @@
    treasureCount = treasureCountList[treasureIndex]
    if not treasureCount:
        GameWorld.DebugLog("没有寻宝次数配置!", playerID)
        return
    dailyMaxCount = setIpyData.GetDailyMaxCount()
    curTreasureCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCountToday % (treasureType)) # 今日已寻宝次数
    updTreasureCountToday = curTreasureCountToday + treasureCount
    if dailyMaxCount and updTreasureCountToday > dailyMaxCount:
        GameWorld.DebugLog("寻宝后将超过每日最大次数,无法寻宝! treasureCount(%s) + curTreasureCountToday(%s) = %s > %s"
                           % (treasureCount, curTreasureCountToday, updTreasureCountToday, dailyMaxCount), playerID)
        return
    
    packType = setIpyData.GetPackType()
@@ -380,6 +390,7 @@
        GameWorld.DebugLog("扣除货币,costGoldType=%s,costGold=%s" % (costGoldType, costGold), playerID)
        
    # 加数据
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCountToday % (treasureType), updTreasureCountToday)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureCount % (treasureType), updTreasureCount)
    for luckyGridNum in luckyGridNumList:
        if luckyGridNum in getGridResult:
@@ -433,8 +444,8 @@
    if mailItemList:
        PlayerControl.SendMailByKey("HappyXBUnEnough", [playerID], mailItemList)
        
    GameWorld.DebugLog("寻宝成功: treasureType=%s,updTreasureCount=%s,updLuck=%s,addScoreType=%s,addScore=%s,gridNumCountInfo=%s"
                       % (treasureType, updTreasureCount, updLuck, addScoreType, addScore, gridNumCountInfo), playerID)
    GameWorld.DebugLog("寻宝成功: treasureType=%s,updTreasureCount=%s(%s),updLuck=%s,addScoreType=%s,addScore=%s,gridNumCountInfo=%s"
                       % (treasureType, updTreasureCount, updTreasureCountToday, updLuck, addScoreType, addScore, gridNumCountInfo), playerID)
    GameWorld.DebugLog("    treasureResult=%s" % (treasureResult), playerID)
    GameWorld.DebugLog("    mailItemList=%s" % (mailItemList), playerID)
    
@@ -561,6 +572,7 @@
        tTypeInfo.TreasureType = tType
        tTypeInfo.LuckValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureLuck % (tType))
        tTypeInfo.TreasureCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCount % (tType))
        tTypeInfo.TreasureCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCountToday % (tType))
        tTypeInfo.FreeCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureFreeCount % (tType))
        tTypeInfo.TreasureCntAward = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCntAward % (tType))
        for gridNumStr in gridNumMaxLimitInfo.keys():