| | |
| | | curPlayer.SetFamilyActiveValue(0)
|
| | | curPlayer.SetLastWeekFamilyActiveValue(0)
|
| | | curPlayer.SetFamilyLV(0)
|
| | | PlayerControl.SetLeaveFamilyTimeEx(curPlayer, int(time.time()))
|
| | |
|
| | | #触发玩家离开家族的任务
|
| | | EventShell.EventResponse_OnLeaveFamily(curPlayer)
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyMoneyDonateCount, 0)
|
| | | Sync_FamilyDayRewardState(curPlayer)
|
| | | __FamilyAffair_Refresh(curPlayer, True)
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeCut, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy, 0)
|
| | | Sync_ZhenbaogeInfo(curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | Sync_FamilyDayRewardState(curPlayer)
|
| | | __FamilyAffair_CheckReset(curPlayer)
|
| | | PlayerFamilyZhenfa.OnPlayerLogin(curPlayer)
|
| | | Sync_ZhenbaogeInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def FamilyPlayerOnLoginCross(curPlayer):
|
| | |
| | | return
|
| | |
|
| | | ##--------------------------------------------------------------------------------------------------
|
| | | ##----------------------------------------- 珍宝阁 --------------------------------------------------
|
| | | #// A6 16 珍宝阁操作 #tagCMZhenbaogeOP
|
| | | #
|
| | | #struct tagCMZhenbaogeOP
|
| | | #{
|
| | | # tagHead Head;
|
| | | # BYTE OpType; // 操作:0-砍价;1-购买
|
| | | #};
|
| | | def OnZhenbaogeOP(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | opType = clientData.OpType
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | if not curPlayer.GetFamilyID():
|
| | | GameWorld.DebugLog("没有仙盟无法操作珍宝阁!", playerID)
|
| | | return
|
| | | |
| | | # 砍价
|
| | | if opType == 0:
|
| | | leaveTimeEx = PlayerControl.GetLeaveFamilyTimeEx(curPlayer)
|
| | | cutState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeCut)
|
| | | if cutState and leaveTimeEx:
|
| | | cutCDTimes = IpyGameDataPY.GetFuncCfg("Zhenbaoge", 3) * 60
|
| | | passTimes = int(time.time()) - leaveTimeEx
|
| | | if passTimes < cutCDTimes:
|
| | | GameWorld.DebugLog("今日已砍价变更仙盟砍价CD中! passTimes=%s < %s" % (passTimes, cutCDTimes), playerID)
|
| | | return
|
| | | SendGameServer_FamilyZhenbaoge(curPlayer, "Cut", [])
|
| | | |
| | | # 购买
|
| | | elif opType == 1:
|
| | | buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy)
|
| | | if buyState:
|
| | | GameWorld.DebugLog("珍宝阁今日已购买!", playerID)
|
| | | return
|
| | | moneyType = IpyGameDataPY.GetFuncCfg("Zhenbaoge", 1)
|
| | | playerMoneyValue = PlayerControl.GetMoney(curPlayer, moneyType)
|
| | | SendGameServer_FamilyZhenbaoge(curPlayer, "Buy", [playerMoneyValue])
|
| | | |
| | | return
|
| | |
|
| | | def SendGameServer_FamilyZhenbaoge(curPlayer, msgType, msgData):
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | tick = GameWorld.GetGameWorld().GetTick()
|
| | | if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_FamilyZhenbaoge, tick):
|
| | | GameWorld.DebugLog("请求CD中...", playerID)
|
| | | return
|
| | | GameWorld.DebugLog("珍宝阁同步GameServer: msgType=%s,%s" % (msgType, msgData), playerID)
|
| | | msgInfo = str([msgType, msgData])
|
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(playerID, 0, 0, "FamilyZhenbaoge", msgInfo, len(msgInfo))
|
| | | return
|
| | |
|
| | | def GameServer_FamilyZhenbaogeRet(curPlayer, resultList):
|
| | | curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_FamilyZhenbaoge, 0)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | msgType, _ = resultList[:2]
|
| | | retData = resultList[2:]
|
| | | GameWorld.Log("仙盟珍宝阁GameServer返回: %s" % str(resultList), playerID)
|
| | | if msgType == "Cut":
|
| | | cutPrice = retData[0]
|
| | | if not cutPrice:
|
| | | # 砍价失败不处理后续
|
| | | return
|
| | | PlayerControl.NotifyCode(curPlayer, "ZhenbaogeCut", [cutPrice])
|
| | | if not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeCut):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeCut, 1)
|
| | | Sync_ZhenbaogeInfo(curPlayer)
|
| | | |
| | | elif msgType == "Buy":
|
| | | isOK = retData[0]
|
| | | if not isOK:
|
| | | return
|
| | | buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy)
|
| | | if buyState:
|
| | | #一天只能买一次,防止变更仙盟刷
|
| | | return
|
| | | nowPrice, giveItemList = retData[1:]
|
| | | |
| | | moneyType = IpyGameDataPY.GetFuncCfg("Zhenbaoge", 1)
|
| | | if nowPrice > 0:
|
| | | if not PlayerControl.PayMoney(curPlayer, moneyType, nowPrice, "Zhenbaoge"):
|
| | | GameWorld.ErrLog("珍宝阁购买货币不足! nowPrice=%s" % nowPrice, playerID)
|
| | | return
|
| | | elif nowPrice < 0:
|
| | | PlayerControl.GiveMoney(curPlayer, moneyType, -nowPrice, "Zhenbaoge")
|
| | | else: # 0不处理
|
| | | pass
|
| | | |
| | | if giveItemList:
|
| | | ItemControler.GivePlayerItemOrMail(curPlayer, giveItemList, event=["Zhenbaoge", False, {}])
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy, 1)
|
| | | Sync_ZhenbaogeInfo(curPlayer)
|
| | | |
| | | return
|
| | |
|
| | | def Sync_ZhenbaogeInfo(curPlayer):
|
| | | clientPack = ChPyNetSendPack.tagMCFamilyZhenbaogeInfo()
|
| | | clientPack.CutState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeCut)
|
| | | clientPack.BuyState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | | ##--------------------------------------------------------------------------------------------------
|