#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package Player.PlayerCharm # # @todo:÷ÈÁ¦ # @author hxp # @date 2021-12-03 # @version 1.0 # # ÏêϸÃèÊö: ÷ÈÁ¦ # #------------------------------------------------------------------------------- #"""Version = 2021-12-03 19:00""" #------------------------------------------------------------------------------- import ChConfig import PlayerControl import IpyGameDataPY import ItemControler import GameWorld def OnPlayerLogin(curPlayer): # ÖØÐÂÉèÖ㬴¥·¢ÉÏÏß֪ͨ if PlayerControl.GetCharmLV(curPlayer): PlayerControl.SetCharmLV(curPlayer, PlayerControl.GetCharmLV(curPlayer)) return def GameServer_DoLogic_Charm(curPlayer, msgData): msgType = msgData[0] ## ÷ÈÁ¦µÈ¼¶ÌáÉý if msgType == "CharmLVUp": totalCharm = msgData[1] __DoCharmLVUp(curPlayer, totalCharm) return def __DoCharmLVUp(curPlayer, totalCharm): playerID = curPlayer.GetPlayerID() charmLV = PlayerControl.GetCharmLV(curPlayer) ipyData = IpyGameDataPY.GetIpyGameData("LoveCharm", charmLV) if not ipyData: return if not ipyData.GetUpNeedCharm(): GameWorld.DebugLog("÷ÈÁ¦µÈ¼¶ÒÑÂú¼¶£¬ÎÞ·¨Éý¼¶! charmLV=%s" % charmLV, playerID) return if totalCharm < ipyData.GetUpNeedCharm(): GameWorld.DebugLog("÷ÈÁ¦Öµ²»×㣬ÎÞ·¨Éý¼¶! totalCharm=%s < %s, charmLV=%s" % (totalCharm, ipyData.GetUpNeedCharm(), charmLV), playerID) return charmLV += 1 nextLVIpyData = IpyGameDataPY.GetIpyGameData("LoveCharm", charmLV) if not nextLVIpyData: return awardItemList = nextLVIpyData.GetLVAwardItemInfo() GameWorld.DebugLog("÷ÈÁ¦µÈ¼¶Éý¼¶! charmLV=%s" % charmLV, playerID) PlayerControl.SetCharmLV(curPlayer, charmLV) ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList) RefreshCharmAttr(curPlayer) return def RefreshCharmAttr(curPlayer): CalcCharmAttr(curPlayer) PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState() return def CalcCharmAttr(curPlayer): allAttrList = [{} for _ in range(4)] charmLV = PlayerControl.GetCharmLV(curPlayer) ipyData = IpyGameDataPY.GetIpyGameData("LoveCharm", charmLV) if ipyData: lvAttrTypeList = ipyData.GetLVAttrType() lvAttrValueList = ipyData.GetLVAttrValue() for i, attrID in enumerate(lvAttrTypeList): attrValue = lvAttrValueList[i] PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList) # ±£´æ¼ÆËãÖµ PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Charm, allAttrList) return