| | |
| | | #切地图要清除的buff
|
| | | __CheckClearBuffOnMapChange(curPlayer, tick)
|
| | |
|
| | | #上线和切地图加有限无敌Buff
|
| | | if curPlayer.GetLV() > 50:
|
| | | SkillCommon.AddBuffBySkillType_NoRefurbish(curPlayer, ChConfig.Def_SkillID_LimitSuperBuff, tick)
|
| | | |
| | | #刷新玩家的视野
|
| | | if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or PlayerControl.GetCustomMapID(curPlayer)):
|
| | | GameWorld.DebugLog("===登录本服地图时,处于跨服或自定义场景状态,不刷新视野!", curPlayer.GetPlayerID())
|
| | |
| | | #检查GM帐号是否有权限登陆
|
| | | #if not __CheckGMCanLoadMapOK(curPlayer):
|
| | | # return
|
| | | |
| | | #上线和切地图加有限无敌Buff, 移到切换地图成功,太早发包客户端不显示
|
| | | if curPlayer.GetLV() > 50:
|
| | | SkillCommon.AddBuffBySkillType_NoRefurbish(curPlayer, ChConfig.Def_SkillID_LimitSuperBuff, tick)
|
| | |
|
| | |
|
| | | #检测账号是否锁定
|
| | |
| | | return
|
| | | isFree = curPlayer.GetLV() < IpyGameDataPY.GetFuncCfg('LVUPAddPoint', 4)
|
| | | if not isFree:
|
| | | needItemID = IpyGameDataPY.GetFuncCfg('LVUPAddPoint', 5)
|
| | | #优先使用剩余时间最短的时效物品
|
| | | needItemIDList = IpyGameDataPY.GetFuncEvalCfg('LVUPAddPoint', 5)
|
| | | itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | hasEnough, itemList = ItemCommon.GetItem_FromPack_ByID(needItemID, itemPack, 1)
|
| | | if not hasEnough:
|
| | | GameWorld.DebugLog("重置加点 item(%s) isn't enough" % (needItemID))
|
| | | delIndex = -1
|
| | | expireTime = 0
|
| | | for itemID in needItemIDList:
|
| | | hasEnough, itemIndexList = ItemCommon.GetItem_FromPack_ByID(itemID, itemPack, 10)
|
| | | if not itemIndexList:
|
| | | #GameWorld.DebugLog("重置加点 item(%s) isn't enough" % (needItemID))
|
| | | continue
|
| | | |
| | | for itemIndex in itemIndexList:
|
| | | curItem = itemPack.GetAt(itemIndex)
|
| | | if not ItemCommon.CheckItemCanUse(curItem):
|
| | | continue
|
| | | isExpireItem, remainingTime = ItemCommon.GetItemRemainingTime(curItem)
|
| | | if isExpireItem:
|
| | | if remainingTime <= 0:
|
| | | #过期
|
| | | continue
|
| | | if not expireTime or remainingTime < expireTime:
|
| | | expireTime = remainingTime
|
| | | delIndex = itemIndex
|
| | | else:
|
| | | delIndex = itemIndex
|
| | | break
|
| | | if delIndex != -1:
|
| | | break
|
| | | if delIndex is -1:
|
| | | return
|
| | | ItemCommon.ReduceItem(curPlayer, itemPack, itemList, 1, False, ChConfig.ItemDel_ResetAttrPoint)
|
| | | ItemCommon.ReduceItem(curPlayer, itemPack, [delIndex], 1, False, ChConfig.ItemDel_ResetAttrPoint)
|
| | |
|
| | | Item_ResetAttrPoint.DoResetAttrPoint(curPlayer, 0, 0, 0)
|
| | |
|
| | |
| | | NetPackCommon.SendFakePack(curPlayer, sendPack)
|
| | | return
|
| | |
|
| | | #// B4 0E 设置玩家自身血量 #tagCMSetRoleHP
|
| | | #// B4 0E 玩家掉血 #tagCMRoleLostHP
|
| | | #
|
| | | #struct tagCMSetRoleHP
|
| | | #struct tagCMRoleLostHP
|
| | | #{
|
| | | # tagHead Head;
|
| | | # DWORD HP;
|
| | | # DWORD LostHP;
|
| | | #};
|
| | | def OnSetRoleHP(index, clientData, tick):
|
| | | def OnRoleLostHP(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | if not curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
|
| | | GameWorld.DebugLog("玩家当前不是在自定义场景中,不允许设置自身血量!")
|
| | | return
|
| | | setHP = max(1, min(clientData.HP, curPlayer.GetMaxHP()))
|
| | | curPlayer.SetHP(setHP)
|
| | | lostHP = clientData.LostHP
|
| | | curHP = curPlayer.GetHP()
|
| | | updHP = curHP - lostHP
|
| | | if updHP <= 0:
|
| | | #玩家已经死亡
|
| | | playerControl = PlayerControl.PlayerControl(curPlayer)
|
| | | playerControl.SetDead()
|
| | | else:
|
| | | curPlayer.SetHP(updHP)
|
| | | |
| | | return
|