hxp
6 天以前 0b314dd1d9f0c39e8d86de7e996c62836aa19aca
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -40,7 +40,6 @@
import DataRecordPack
import NetPackCommon
import FBCommon
import PlayerSuccess
import PlayerPrestigeSys
import GY_Query_BossFirstKill
import FormulaControl
@@ -106,12 +105,6 @@
    # NPC等级
    if hasattr(curNPC, "GetCurLV"):
        return max(curNPC.GetCurLV(), curNPC.GetLV())
    if curPlayer and PlayerControl.GetRealmDifficulty(curPlayer):
        npcID = curNPC.GetNPCID()
        needRealmLV = PlayerControl.GetDifficultyRealmLV(PlayerControl.GetRealmDifficulty(curPlayer))
        realmNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCRealmStrengthen", npcID, needRealmLV)
        if realmNPCIpyData:
            return realmNPCIpyData.GetLV()
    return curNPC.GetLV()
def GetNPCDataPy(npcID):
@@ -3158,10 +3151,6 @@
        #不是普通NPC    
        elif npcObjType != IPY_GameWorld.gnotNormal:
            return
        npcID = curNPC.GetNPCID()
        #GameWorld.DebugLog("__MissionOnKillNPC isFeel=%s" % (isFeel), curPlayer.GetPlayerID())
        #击杀特定NPC成就
        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillSpecificNPC, 1, [npcID])
        return
        
    def __GetIsLog(self):
@@ -3204,47 +3193,7 @@
    #  @return 返回值, 获得经验
    #  @remarks 获得经验, 可能是小数
    def __GetExp(self, playerLV, isTeam=False, player=None):
        curNPC = self.__Instance
        baseExp = 0
        #玩家不在副本中
        if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
            baseExp = FBLogic.OnGetNPCExp(player, curNPC)
        if baseExp > 0:
            return baseExp
        npcID = curNPC.GetNPCID()
        realmLV = PlayerControl.GetDifficultyRealmLV(curNPC.GetSightLevel())
        realmNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCRealmStrengthen", npcID, realmLV)
        if realmNPCIpyData:
            baseExp = realmNPCIpyData.GetExp()
            npcLV = realmNPCIpyData.GetLV()
        else:
            baseExp = curNPC.GetExp()
            npcLV = curNPC.GetLV()
        if baseExp == 0:
            #GameWorld.Log("杀怪经验异常,该NPC = %s,无经验"%(curNPC.GetID()))
            return 0
        playerID = 0 if not player else player.GetPlayerID()
        # 如果是队伍,则按伤害贡献度计算所获得经验比例
        if isTeam:
            if not player:
                return 0
            hurtPer = AttackCommon.GetTeamPlayerHurtPer(player, curNPC)
            if not hurtPer:
                return 0
            #GameWorld.DebugLog("队员击杀基础经验: npcID=%s,baseExp=%s,hurtPer=%s" % (curNPC.GetNPCID(), baseExp, hurtPer), playerID)
            baseExp *= hurtPer
        #else:
        #    GameWorld.DebugLog("个人击杀基础经验: npcID=%s,baseExp=%s" % (curNPC.GetNPCID(), baseExp), playerID)
        #经验衰减公式 = max(杀怪经验 * max(1-max(玩家等级-怪物等级-10,0)*0.02),0),1)
        exp = eval(FormulaControl.GetCompileFormula("ExpAttenuation", IpyGameDataPY.GetFuncCfg("ExpAttenuation", 1)))
        #exp = CalcNPCExp(baseExp, playerLV, npcLV)
        #GameWorld.DebugLog("击杀NPC最终基础经验: npcID=%s,npcLV=%s,playerLV=%s,baseExp=%s,exp=%s"
        #                   % (curNPC.GetNPCID(), npcLV, playerLV, baseExp, exp), playerID)
        return exp
        return 0
    
    #---------------------------------------------------------------------
    
@@ -3661,12 +3610,7 @@
    npcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
    if not npcData:
        return 0
    needRealmLV = PlayerControl.GetDifficultyRealmLV(PlayerControl.GetRealmDifficulty(curPlayer))
    realmNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCRealmStrengthen", npcID, needRealmLV)
    if realmNPCIpyData:
        baseExp = realmNPCIpyData.GetExp()
    else:
        baseExp = npcData.GetExp()
    baseExp = npcData.GetExp()
    if not baseExp:
        return 0
    npcLV = npcData.GetLV()