From d7f44d8d871a90c818bdb3ffe9a60af875b7100a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 30 九月 2025 10:12:23 +0800 Subject: [PATCH] 135 【挑战】战锤秘境-服务端(白骨盈野;副本基础;副本扫荡;广告奖励支持;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 381 +++++++++++++++++++++++------------------------------ 1 files changed, 165 insertions(+), 216 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py index 11ada8d..4cb1330 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py @@ -26,20 +26,16 @@ import ChItem import ItemCommon import ItemControler -import ChEquip import FunctionNPCCommon import PlayerGMOper import ReadChConfig import PetControl import OperControlManager import ShareDefine -import PlayerAutoCheckOnline -import PlayerGameWallow import NetPackCommon import ChPyNetSendPack import DataRecordPack import PlayerBillboard -import UpdatePlayerName import PlayerOnlinePrize import PlayerLVAward import PlayerGoldGift @@ -56,8 +52,6 @@ import PlayerSuccess import PlayerDienstgrad import PlayerFreeGoods -import PlayerRecover -import PlayerEquipDecompose import PlayerCrossRealmPK import PlayerCrossChampionship import GameFuncComm @@ -84,18 +78,12 @@ import PlayerActCollectWords import PlayerActTotalRecharge import PlayerActRechargePrize -import PlayerActGarbageSorting -import PlayerActXianXiaMJ -import PlayerActGubao -import PlayerActHorsePetTrain import PlayerActLianqi import PlayerActGodGift import PlayerActFamilyCTGAssist import PlayerActRechargeRebateGold import PlayerActManyDayRecharge import PlayerActSingleRecharge -import PlayerActHorsePetFeast -import PlayerActBossTrial import PlayerSpringSale import GY_Query_BossFirstKill import PlayerCrossYaomoBoss @@ -130,11 +118,10 @@ import PlayerLove import GameObj import PlayerChangeJob -import PlayerGuaji import PlayerFace import PlayerChatBox import PlayerXiangong -import PlayerMineArea +import PlayerGoldRush import PlayerActLoginNew import PlayerActBuyCountGift import PlayerActLunhuidian @@ -152,6 +139,7 @@ import PlayerHero import PlayerOnline import TurnAttack +import ObjPool import datetime import time @@ -269,9 +257,6 @@ if PlayerControl.GetCrossMapID(curPlayer): CrossRealmPlayer.DoExitCrossRealm(curPlayer) - - if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene): - PlayerFB.DoExitCustomScene(curPlayer) PetControl.DoLogic_PetLoadMapOK(curPlayer) @@ -461,7 +446,7 @@ InitPlayerPack(curPlayer) if GameWorld.IsCrossServer(): - SkillCommon.PlayerLoginMergeServerSkillLogic(curPlayer, tick) + #SkillCommon.PlayerLoginMergeServerSkillLogic(curPlayer, tick) # 重置所有技能CD DoPlayerLoginInMap(curPlayer, tick) @@ -469,7 +454,7 @@ DataRecordPack.DR_PlayerLogin(curPlayer) EventReport.WriteEvent_login(curPlayer) #---玩家上线, 宠物逻辑处理--- - PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick) + #PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick) return leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer) @@ -494,18 +479,18 @@ PlayerControl.UpdPlayerServerGroupID(curPlayer) #上线学习技能 - SkillCommon.PlayerLoginCheckLearnSkill(curPlayer) + #SkillCommon.PlayerLoginCheckLearnSkill(curPlayer) #刷新技能CD - SkillCommon.PlayerLoginUpdateSkillCD(curPlayer, tick) + #SkillCommon.PlayerLoginUpdateSkillCD(curPlayer, tick) #通知玩家技能信息 - __Sync_ClientSkill(curPlayer) + #__Sync_ClientSkill(curPlayer) #清除VIPbuff #BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_VIPExp_SkillTypeID, tick) #通知玩家的buff - __Sync_ClientBuff(curPlayer) + #__Sync_ClientBuff(curPlayer) #---刷新了玩家属性, 登陆只刷新一次,其他地方不用刷 DoPlayerLoginInMap(curPlayer, tick) @@ -522,9 +507,6 @@ __DoMixServerFirstLogin(curPlayer) PlayerBillboard.BillboardOnLogin(curPlayer) - #上线时通知脱机挂时被击杀的离线时间 - __Sync_PlayerOffline(curPlayer, tick) - #玩家扩展信息 __SyncPlayerInfoEx(curPlayer) @@ -532,16 +514,11 @@ GiveDownloadPatchAward(curPlayer) #PK模式 - SyncPKModel(curPlayer) + #SyncPKModel(curPlayer) #---玩家上线, 宠物逻辑处理--- - PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick) - PlayerPet.OnPlayerPetLogin(curPlayer) - - #PlayerLoginNotify(curPlayer, tick) - - #防沉迷计算下线累积时间 - PlayerGameWallow.Calc_Wallow_OfflineTime(curPlayer, tick) + #PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick) + #PlayerPet.OnPlayerPetLogin(curPlayer) # 通知等级奖励领取记录 PlayerLVAward.Sync_LVAwardGetRecordInfo(curPlayer) @@ -550,17 +527,14 @@ # 首充/天天首充/充值豪礼 PlayerGoldGift.OnLogin(curPlayer) -# #通知功能首次触发情况 + #通知功能首次触发情况 GameFuncComm.Sync_FuncOpenState(curPlayer) -# -# #通知客户端签到信息 + + #通知客户端签到信息 PlayerSignDay.SignDayOnLogin(curPlayer) #通知玩家死亡时间 - PlayerControl.PlayerControl(curPlayer).NotifyPlayerDeadTime(curPlayer) - - #角色改名次数 - UpdatePlayerName.Sync_UpdatePlayerNameCount(curPlayer) + #PlayerControl.PlayerControl(curPlayer).NotifyPlayerDeadTime(curPlayer) # 坐骑相关通知 PlayerHorse.PlayerHorseLogin(curPlayer) @@ -580,7 +554,7 @@ OpenServerCampaign.OnOpenServerCampaignLogin(curPlayer) # 采集NPC次数通知 - NPCCommon.SyncCollNPCTime(curPlayer) + #NPCCommon.SyncCollNPCTime(curPlayer) # 每日活跃度 PlayerActivity.OnLogin(curPlayer) @@ -608,8 +582,6 @@ #PlayerDienstgrad.RefreshBillBoardDienstgrad(curPlayer) # 称号 PlayerDienstgrad.Sync_AllDienstgradOnLogin(curPlayer) - # 资源找回OnLogin - PlayerRecover.RecoverOnLogin(curPlayer) # 时装 PlayerCoat.OnLogin_Coat(curPlayer) @@ -628,7 +600,7 @@ PlayerControl.NotifyPlayerAllCurrency(curPlayer) PlayerControl.NotifyUseMoneyTotal(curPlayer) #通知基础属性 - NotifyPlayerBasePoint(curPlayer) + #NotifyPlayerBasePoint(curPlayer) #跨服充值排行 CrossActCTGBillboard.OnPlayerLogin(curPlayer) @@ -669,18 +641,10 @@ # 通知设置的被动功法 #PassiveBuffEffMng.OnLoginGFPassive(curPlayer) PlayerOnlinePrize.OnPlayerLogin(curPlayer) - #装备分解 - PlayerEquipDecompose.PlayerLogin(curPlayer) - #防沉迷 - PlayerGameWallow.DoLogic_CheckWallow(curPlayer, tick) # 极品白拿 PlayerFreeGoods.OnLogin(curPlayer) # BOSS复活活动 PlayerBossReborn.OnLogin(curPlayer) - # boss历练 - PlayerActBossTrial.OnPlayerLogin(curPlayer) - # 骑宠盛宴活动 - PlayerActHorsePetFeast.OnLogin(curPlayer) # 周狂欢活动 PlayerWeekParty.OnLogin(curPlayer) # 购买次数礼包活动 @@ -703,14 +667,6 @@ PlayerFeastTravel.OnPlayerLogin(curPlayer) # 登录奖励活动 PlayerActLogin.OnLogin(curPlayer) - # 垃圾分类活动 - PlayerActGarbageSorting.OnPlayerLogin(curPlayer) - # 仙匣秘境活动 - PlayerActXianXiaMJ.OnPlayerLogin(curPlayer) - # 古宝养成活动 - PlayerActGubao.OnPlayerLogin(curPlayer) - # 骑宠养成活动 - PlayerActHorsePetTrain.OnPlayerLogin(curPlayer) # 炼器活动 PlayerActLianqi.OnPlayerLogin(curPlayer) # 天帝礼包活动 @@ -735,7 +691,7 @@ SyncLittleHelper(curPlayer) PlayerFB.OnLogin(curPlayer) #技能专精信息 - SkillShell.NotifyElementSkillInfo(curPlayer) + #SkillShell.NotifyElementSkillInfo(curPlayer) #Boss首杀 GY_Query_BossFirstKill.OnPlayerLogin(curPlayer) #通天令 @@ -800,10 +756,10 @@ PlayerZhanling.OnPlayerLogin(curPlayer) PlayerTask.OnPlayerLogin(curPlayer) PlayerTree.OnPlayerLogin(curPlayer) - PlayerMineArea.OnPlayerLogin(curPlayer) - PlayerGuaji.OnPlayerLogin(curPlayer) + PlayerGoldRush.OnPlayerLogin(curPlayer) PlayerActFamilyGCZ.OnPlayerLogin(curPlayer) PlayerTalk.OnPlayerLogin(curPlayer) + SyncADCntInfo(curPlayer) # 上线查询一次充值订单 curPlayer.SendDBQueryRecharge() @@ -838,6 +794,8 @@ # 那么在DoPlayerLogin 中设置的数据将不会被保存, 如会导致第一个任务重复触发问题,记录多次发送 EventReport.WriteEvent_Entry(curPlayer, 4) #EventReport.EventReport(ShareDefine.Def_UserAction_FirstLogin, "", curPlayer) + + curPlayer.SetFightPoint(1) # 初始化为1倍消耗 #---补满血满魔--- GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer)) @@ -865,6 +823,9 @@ PlayerControl.SendMailByKey(mailTypeKey, [curPlayer.GetPlayerID()], mailItemList) PlayerHero.OnPlayerFirstLogin(curPlayer) + + #淘金初始化 + PlayerGoldRush.InitGoldEnergy(curPlayer) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FirstLogin, 1) return @@ -929,17 +890,6 @@ # 同步排行榜 PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer, isAll=True) - - # boss凭证 - PlayerActBossTrial.OnMixFirstLogin(curPlayer) - # 仙匣秘境 - PlayerActXianXiaMJ.OnMixFirstLogin(curPlayer) - # 古宝养成 - PlayerActGubao.OnMixFirstLogin(curPlayer) - # 骑宠养成 - PlayerActHorsePetTrain.OnMixFirstLogin(curPlayer) - # 重置玩家改名次数 - #UpdatePlayerName.ResetChangeNameCnt(curPlayer) return #--------------------------------------------------------------------- @@ -951,51 +901,6 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PlayerDeadCnt, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_DeadTime, 0) return - -##玩家登陆, 相关活动通知 -#@param curPlayer 玩家实例 -#@param tick 时间戳 -#@return 返回值无意义 -#@remarks 玩家登陆, 相关活动通知 -def PlayerLoginNotify(curPlayer, tick): - curTime = GameWorld.GetCurrentTime() - - #读取上线提示表 - notifyByTimeSect = ReadChConfig.GetEvalChConfig('PlayerLoginNotify_TimeSect') #某时间段内上线提示 - notifyByDict = ReadChConfig.GetEvalChConfig('PlayerLoginNotify_Dict') #根据字典值给提示 - - #在规定时间段内上线给提示 - DoNotifyByTimeSect(curPlayer, curTime, notifyByTimeSect) - #指定字典值内提示 - DoNotifyByDict(curPlayer, notifyByDict) - return -#--------------------------------------------------------------------- -##在活动规定时间段内上线给提示 -#@param curPlayer 玩家索引 -#@param curTime 传入时间 -#@param notifyInfo 提示信息 -#@return 返回值无意义 -#@remarks 在活动规定时间段内上线给提示 -def DoNotifyByTimeSect(curPlayer, curTime, notifyInfo): - for curNotify in notifyInfo: - #有时间段限制,验证时间段 - if not GameWorld.IsAtActTime(curTime, curNotify[0]): - continue - - PlayerControl.NotifyCode(curPlayer, curNotify[1], curNotify[2]) - -#--------------------------------------------------------------------- -##指定字典值内提示 -#@param curPlayer 玩家实例 -#@param notifyInfo 提示信息 -#@return 返回值无意义 -#@remarks 指定字典值内提示 -def DoNotifyByDict(curPlayer, notifyInfo): - gameWorld = GameWorld.GetGameWorld() - for curNotify in notifyInfo: - if gameWorld.GetGameWorldDictByKey(curNotify[0]) in curNotify[1]: - PlayerControl.NotifyCode(curPlayer, curNotify[2], curNotify[3]) - #--------------------------------------------------------------------- ##通知背包详细信息 @@ -1090,54 +995,6 @@ return #--------------------------------------------------------------------- -##上线时通知离线时间(离线挂机功能) -# @param curPlayer 玩家实例 -# @param tick 时间戳 -# @return 返回值无意义 -# @remarks 上线时通知离线时间(离线挂机功能) -def __Sync_PlayerOffline(curPlayer, tick): - #---等级限制--- - if GameWorld.IsCrossServer(): - return - -#=============================================================================== -# #---等级限制--- -# lvLimit = ReadChConfig.GetEvalChConfig('OfflineSys_LVLimit') -# if curPlayer.GetLV() < lvLimit: -# return -# -# if GameWorld.IsCrossServer(): -# return -# -# #当前离线时间(分) -# curOfflineMinutes = min(PlayerControl.GetPlayerLeaveServerMinute(curPlayer), -# ChConfig.Def_UpperLimit_DWord) -# -# #防止服务器时间修改到过去得到负值 -# if curOfflineMinutes < 0: -# GameWorld.ErrLog("Login Time Error, outTime: %s - loginTime :%s" % -# (curPlayer.GetLogoffTime(), GameWorld.GetCurrentDataTimeStr()), -# curPlayer.GetPlayerID()) -# curOfflineMinutes = 0 -# -# #时间为分钟 -# minTimeLimit, maxTimeLimit = ReadChConfig.GetEvalChConfig("OfflineSys_AllTimeUpperLimit") -# if curOfflineMinutes >= minTimeLimit: -# #总离线时间(分) -# allOfflineMinutes = min(curPlayer.GetOfflineMinutes() + curOfflineMinutes, maxTimeLimit) -# #记录离线总时间 -# curPlayer.SetOfflineMinutes(int(allOfflineMinutes)) -# GameWorld.DebugLog("设置离线奖励时间 %s,curOfflineMinutes=%s" % (allOfflineMinutes, curOfflineMinutes), curPlayer.GetPlayerID()) -# else: -# GameWorld.DebugLog("离线时间过短,不计入离线奖励!curOfflineMinutes=%s" % curOfflineMinutes, curPlayer.GetPlayerID()) -# -# #通知客户端离线时间 -# # curPlayer.Syn_OfflineTimeRefresh(int(curOfflineMinutes)) -# curPlayer.Syn_OfflineTimeQueryResult() -#=============================================================================== - return - -#--------------------------------------------------------------------- ##玩家在地图服务器中登录ok,初始化自己 #@param curPlayer 玩家实例 #@param tick 时间戳 @@ -1166,16 +1023,7 @@ PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID()) if curPlayer.GetSight() != 0: PlayerControl.SetSight(curPlayer, 0) - #刷新玩家的视野 - #if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or PlayerControl.GetCustomMapID(curPlayer)): - # GameWorld.DebugLog("===登录本服地图时,处于跨服或自定义场景状态,不刷新视野!", curPlayer.GetPlayerID()) - # PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID()) - #elif not GameWorld.IsCrossServer(): - # realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer) - # if realmDifficulty: - # GameWorld.DebugLog("===登录本服地图时,处于境界难度地图,自动设置难度! realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID()) - # PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty) - + PlayerState.ChangePlayerSigh(curPlayer, tick) if GameWorld.IsCrossServer(): @@ -1518,16 +1366,7 @@ PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID()) if curPlayer.GetSight() != 0: PlayerControl.SetSight(curPlayer, 0) - #刷新自己的视野 - #if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene)): - # GameWorld.DebugLog("===本服LoadMapOK时玩家处于跨服或自定义场景状态,不设置可见!", curPlayer.GetPlayerID()) - # PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID()) - #elif not GameWorld.IsCrossServer(): - # realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer) - # if realmDifficulty: - # GameWorld.DebugLog("===本服LoadMapOK时玩家处于境界难度地图,自动设置难度!realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID()) - # PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty) - + curPlayer.RefreshView() curPlayer.SetVisible(True) @@ -2297,8 +2136,6 @@ #在线时间 PlayerOnlinePrize.CalcOnlineTime(curPlayer) - #首充提示时间 - PlayerGoldGift.UpdateFirstGoldTime(curPlayer) #玩家未回图形验证码下线将会记录错误次数 #=========================================================================== # if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_Captcha_WaitSign) \ @@ -3391,24 +3228,28 @@ NetPackCommon.SendFakePack(curPlayer, awardReceiveState) return -## 领取奖励表奖励 -# @param None None -# @return None -def ClientPlayerGetReward(index, clientData, tick): - playerManager = GameWorld.GetPlayerManager() - curPlayer = playerManager.GetPlayerByIndex(index) - - # 背包空间不足 - if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem): - PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [IPY_GameWorld.rptItem]) - return - - rewardType = clientData.RewardType - - #通知GameServer领取奖励 - resultName = str(rewardType) - GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'PlayerGetReward', - resultName, len(resultName)) +def PlayerOnDay(curPlayer): + #玩法前瞻奖励 + gameNoticeAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GameNoticeAwardState) + if gameNoticeAwardState: + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GameNoticeAwardState, 0) + Sync_RewardGetRecordInfo(curPlayer, ChConfig.Def_RewardType_GameNotice, 0) + #每日分享奖励重置 + shareGameAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ShareGameAwardState) + if shareGameAwardState: + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ShareGameAwardState, 0) + Sync_RewardGetRecordInfo(curPlayer, ChConfig.Def_RewardType_ShareGame, 0) + #开服每日奖励 + awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OpenSererDailyAward) + if awardState: + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OpenSererDailyAward, 0) + Sync_RewardGetRecordInfo(curPlayer, ChConfig.Def_RewardType_OpenServerDailyAward, 0) + #开服每日奖励 + awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeDayAward) + if awardState: + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeDayAward, 0) + Sync_RewardGetRecordInfo(curPlayer, ChConfig.Def_RewardType_RechargeDayAward, 0) + ADCntOnDay(curPlayer) return #//A5 04 玩家领取奖励 #tagCMPlayerGetReward @@ -3438,12 +3279,12 @@ # 活跃放置奖励 elif rewardType == ChConfig.Def_RewardType_ActivityPlace: PlayerActivity.GetActivityPlaceReward(curPlayer) - # 挂机奖励 - elif rewardType == ChConfig.Def_RewardType_Guaji: - PlayerGuaji.OnGetGuajiAward(curPlayer, dataEx) # 仙树免费减时 elif rewardType == ChConfig.Def_RewardType_TreeFreeTime: PlayerTree.FreeReduceTreeLVTime(curPlayer) + # 广告奖励 + elif rewardType == ChConfig.Def_RewardType_ADAward: + OnGetADAward(curPlayer, dataEx) # 每日免费直购礼包 elif rewardType == ChConfig.Def_RewardType_DayFreeGoldGift: PlayerDailyGiftbag.OnGetDailyFreeGiftbag(curPlayer) @@ -3454,8 +3295,8 @@ elif rewardType == ChConfig.Def_RewardType_LVAward: PlayerLVAward.GetPlayerLVAward(curPlayer, dataEx) # 首充礼包奖励 - elif rewardType == ChConfig.Def_RewardType_GoldGiftFirst: - PlayerGoldGift.GetPlayerGoldGiftFirst(curPlayer, dataEx) + elif rewardType == ChConfig.Def_RewardType_FirstCharge: + PlayerGoldGift.GetPlayerFirstCharge(curPlayer, dataEx, dataExStr) # 领取极品白拿 elif rewardType == ChConfig.Def_RewardType_FreeGoods: PlayerFreeGoods.OnGetFreeGoods(curPlayer, dataEx) @@ -3570,9 +3411,6 @@ #战令奖励 elif rewardType == ChConfig.Def_RewardType_Zhanling: PlayerZhanling.GetZhanlingReward(curPlayer, dataEx, dataExStr) - #福地聚宝盆奖励 - elif rewardType == ChConfig.Def_RewardType_MineTreasure: - PlayerMineArea.GetMineTreasureAward(curPlayer, dataEx) #玩法前瞻奖励 elif rewardType == ChConfig.Def_RewardType_GameNotice: OnGiveAwardByClient(curPlayer, rewardType, ChConfig.Def_PDict_GameNoticeAwardState, IpyGameDataPY.GetFuncEvalCfg("GameNoticeReward", 1)) @@ -3595,7 +3433,71 @@ elif rewardType == ChConfig.Def_RewardType_RechargeDayAward: OnGetRechargeDayAward(curPlayer, rewardType) return + +def OnGetADAward(curPlayer, adID): + ipyData = IpyGameDataPY.GetIpyGameData("ADAward", adID) + if not ipyData: + return + adCntMax = ipyData.GetADCntMax() + adCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ADCnt % adID) + if adCnt >= adCntMax: + GameWorld.DebugLog("今日该广告奖励已达上限! adID=%s,adCnt=%s > %s" % (adID, adCnt, adCntMax)) + return + adCnt += 1 + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ADCnt % adID, adCnt) + awardItemList = ipyData.GetADAwardItemList() + adMapID = ipyData.GetADMapID() + GameWorld.DebugLog("领取广告奖励! adID=%s,adCnt=%s,adMapID=%s,awardItemList=%s" % (adID, adCnt, adMapID, awardItemList)) + SyncADCntInfo(curPlayer, [adID]) + if adMapID: + FBCommon.AddFBADCnt(curPlayer, adMapID) + + if awardItemList: + ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["ADAward", False, {}]) + + return + +def ADCntOnDay(curPlayer): + syncADIDList = [] + ipyDataMgr = IpyGameDataPY.IPY_Data() + for index in xrange(ipyDataMgr.GetADAwardCount()): + ipyData = ipyDataMgr.GetADAwardByIndex(index) + adID = ipyData.GetADID() + if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ADCnt % adID): + continue + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ADCnt % adID, 0) + syncADIDList.append(adID) + if syncADIDList: + SyncADCntInfo(curPlayer, syncADIDList) + return + +def SyncADCntInfo(curPlayer, syncADIDList=None): + if not syncADIDList: + ipyDataMgr = IpyGameDataPY.IPY_Data() + adIDList = [ipyDataMgr.GetADAwardByIndex(i).GetADID() for i in xrange(ipyDataMgr.GetADAwardCount())] + else: + adIDList = syncADIDList + + adInfoList = [] + for adID in adIDList: + adCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ADCnt % adID) + if not adCnt and syncADIDList == None: + continue + adInfo = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCADInfo) + adInfo.ADID = adID + adInfo.ADCnt = adCnt + adInfoList.append(adInfo) + + if not adInfoList: + return + + clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCADInfoList) + clientPack.ADInfoList = adInfoList[:255] + clientPack.Count = len(clientPack.ADInfoList) + NetPackCommon.SendFakePack(curPlayer, clientPack) + return + def OnGetRechargeDayAward(curPlayer, rewardType): ## 领取累充每日奖励,取最高档 realTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGRealTotal) @@ -4211,3 +4113,50 @@ #PlayerControl.SetRealmDifficulty(curPlayer, clientData.RealmDifficulty) return +#// A0 08 查看通用记录 #tagCSViewGameRec +# +#struct tagCSViewGameRec +#{ +# tagHead Head; +# WORD RecType; //记录类型 +# DWORD RecID; //自定义记录ID +#}; +def OnViewGameRec(index, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) + recType = clientData.RecType + recID = clientData.RecID + if recType not in ShareDefine.Def_GameRecTypeList: + return + if recType in ShareDefine.Def_ViewGameRecSelfList: + recID = curPlayer.GetPlayerID() + recTypeIDMgr = DBDataMgr.GetGameRecMgr().GetRecTypeIDMgr(recType, recID) + SyncGameRecInfo(curPlayer, recType, recID, recTypeIDMgr.GetDataList()) + return + +def SyncGameRecInfo(curPlayer, recType, recID, recDataList): + recList = [] + for recData in recDataList: + if not recData: + continue + rec = ChPyNetSendPack.tagSCGameRec() + rec.Time = recData.GetTime() + rec.Value1 = recData.GetValue1() + rec.Value2 = recData.GetValue2() + rec.Value3 = recData.GetValue3() + rec.Value4 = recData.GetValue4() + rec.Value5 = recData.GetValue5() + rec.Value6 = recData.GetValue6() + rec.Value7 = recData.GetValue7() + rec.Value8 = recData.GetValue8() + rec.UserData = recData.GetUserData() + rec.UserDataLen = len(rec.UserData) + recList.append(rec) + + clientPack = ChPyNetSendPack.tagSCGameRecInfo() + clientPack.Clear() + clientPack.RecType = recType + clientPack.RecID = recID + clientPack.RecList = recList + clientPack.Count = len(clientPack.RecList) + NetPackCommon.SendFakePack(curPlayer, clientPack) + return -- Gitblit v1.8.0