From 13fb4e5ff1721817d3eb0dd18b2cb6287d4be3bc Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 09 七月 2024 15:33:27 +0800 Subject: [PATCH] 10205 【越南】【主干】【港台】【砍树】自选礼包 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 76 +++++++++++++++++++++++++++++++++++++- 1 files changed, 74 insertions(+), 2 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py index ba3e704..d6097d3 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py @@ -138,6 +138,7 @@ for i in xrange(ipyDataMgr.GetCTGCount()): ipyData = ipyDataMgr.GetCTGByIndex(i) recordID = ipyData.GetRecordID() + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGSelectItemValue % recordID, 0) if not ipyData.GetCanResetBuyCount(): continue totalBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % recordID) @@ -165,6 +166,7 @@ return playerID = curPlayer.GetPlayerID() for recordID in resetCTGIDList: + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGSelectItemValue % recordID, 0) totalBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % recordID) todayBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TodayCTGCount % recordID) weekBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekCTGCount % recordID) @@ -200,9 +202,11 @@ #if not ipyData.GetDailyBuyCount(): # continue recordID = ipyData.GetRecordID() - if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TodayCTGCount % recordID): + selectItemValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGSelectItemValue % recordID) + if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TodayCTGCount % recordID) and not selectItemValue: continue PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCount % recordID, 0) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGSelectItemValue % recordID, 0) syncRecordIDList.append(recordID) if syncRecordIDList: Sync_CoinToGoldCountInfo(curPlayer, syncRecordIDList) @@ -252,6 +256,35 @@ curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) recordID = clientData.RecordID Sync_CoinToGoldCountInfo(curPlayer, [recordID] if recordID else []) + return + +#// A1 26 充值自选物品选择 #tagCMSelectCTGItem +# +#struct tagCMSelectCTGItem +#{ +# tagHead Head; +# WORD RecordID; //充值ID +# DWORD SelectItemValue; // 自选物品索引值,每两位存储每个自选索引对应选择的物品索引+1,存储位值为0代表未选择,最多支持选择4种物品 +#}; +def OnSelectCTGItem(index, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) + playerID = curPlayer.GetPlayerID() + recordID = clientData.RecordID + selectItemValue = clientData.SelectItemValue + if selectItemValue > ChConfig.Def_UpperLimit_DWord: + GameWorld.ErrLog("充值自选物品选择值溢出! recordID=%s,selectItemValue=%s" % (recordID, selectItemValue), playerID) + return + ipyData = IpyGameDataPY.GetIpyGameData("CTG", recordID) + if not ipyData: + return + selectItemInfo = ipyData.GetSelectItemInfo() + selectItemList, errorInfo = GetSelectItemListInfo(selectItemInfo, selectItemValue) + if errorInfo: + GameWorld.ErrLog("充值自选物品选择错误! recordID=%s,errorInfo=%s" % (recordID, errorInfo), playerID) + return + GameWorld.DebugLog("充值自选物品: recordID=%s,selectItemValue=%s,selectItemList=%s" % (recordID, selectItemValue, selectItemList), playerID) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGSelectItemValue % recordID, selectItemValue) + Sync_CoinToGoldCountInfo(curPlayer, [recordID]) return #// A1 25 代币购买充值商品编号商品 #tagCMCoinBuyOrderInfo @@ -520,6 +553,17 @@ ExchangePayCoin(curPlayer, "Pay count limit month!monthBuyCount=%s" % monthBuyCount, addDRDict) return + selectItemList = [] + selectItemInfo = ipyData.GetSelectItemInfo() + if selectItemInfo: + selectItemValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGSelectItemValue % recordID) + addDRDict.update({"selectItemValue":selectItemValue}) + selectItemList, errorInfo = GetSelectItemListInfo(selectItemInfo, selectItemValue) + if errorInfo: + ExchangePayCoin(curPlayer, errorInfo, addDRDict) + return + addDRDict.update({"selectItemList":selectItemList}) + totalBuyCountUpd = min(totalBuyCount + 1, ChConfig.Def_UpperLimit_DWord) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGGoodsBuyCount % recordID, totalBuyCountUpd) addDRDict.update({"totalBuyCountUpd":totalBuyCountUpd}) @@ -536,7 +580,10 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MonthCTGCount % recordID, monthBuyCountUpd) addDRDict.update({"monthBuyCountUpd":monthBuyCountUpd}) - giveItemList = GetCTGGiveItemList(ipyData) + giveItemList = [] + giveItemList += GetCTGGiveItemList(ipyData) + giveItemList += selectItemList + moneyType = ipyData.GetMoneyType() # 获得货币类型 addGold = ipyData.GetGainGold() # 获得货币数 gainGoldPrize = ipyData.GetGainGoldPrize() # 赠送货币数,首次充值赠送仙玉时,此仙玉不给 @@ -550,6 +597,30 @@ Sync_CoinToGoldCountInfo(curPlayer, [recordID]) return moneyType, addGold, prizeGold, giveItemList, ipyData + +def GetSelectItemListInfo(selectItemInfo, selectItemValue): + errorInfo = "" + selectItemList = [] + selectValue = selectItemValue + GameWorld.DebugLog("selectItemValue=%s,selectItemInfo=%s" % (selectItemValue, selectItemInfo)) + for selectNum, selectIDList in enumerate(selectItemInfo, 1): + selectIndex = selectValue % 100 - 1 # 记录的时候+1 + if selectIndex < 0: + errorInfo = "Select item is not complete!selectItemValue=%s,selectNum=%s,selectIndex=%s" % (selectItemValue, selectNum, selectIndex) + return selectItemList, errorInfo + if selectIndex >= len(selectIDList): + errorInfo = "Select item index out of range!selectItemValue=%s,selectNum=%s,selectIndex=%s" % (selectItemValue, selectNum, selectIndex) + return selectItemList, errorInfo + selectID = selectIDList[selectIndex] + selectIpyData = IpyGameDataPY.GetIpyGameData("CTGSelectItem", selectID) + if not selectIpyData: + errorInfo = "SelectID is not exist!selectItemValue=%s,selectNum=%s,selectIndex=%s,selectID=%s" % (selectItemValue, selectNum, selectIndex, selectID) + return selectItemList, errorInfo + selectItemList.append([selectIpyData.GetItemID(), selectIpyData.GetItemCount(), selectIpyData.GetIsAuctionItem()]) + selectValue = selectValue / 100 + GameWorld.DebugLog(" selectNum=%s,selectIndex=%s,selectID=%s,selectItemList=%s,selectItemValue=%s" + % (selectNum, selectIndex, selectID, selectItemList, selectItemValue)) + return selectItemList, errorInfo def GetCTGGiveItemList(ipyData): ## 获取充值ID对应给物品列表 @@ -798,6 +869,7 @@ countInfo.TotalPayCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % recordID) countInfo.WeekPayCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekCTGCount % recordID) countInfo.MonthPayCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MonthCTGCount % recordID) + countInfo.SelectItemValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGSelectItemValue % recordID) countInfoPack.CTGCountInfoList.append(countInfo) countInfoPack.RecordCount = len(countInfoPack.CTGCountInfoList) NetPackCommon.SendFakePack(curPlayer, countInfoPack) -- Gitblit v1.8.0