From 6343277477b190efbc389bab2706cf94eb09be8d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 07 二月 2026 20:59:32 +0800
Subject: [PATCH] 358 【内政】红颜系统-服务端(红颜时装默认解锁的状态也通知;红颜时装物品解锁改为直接取背包中的物品;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 160 +----------------------------------------------------
1 files changed, 4 insertions(+), 156 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index defb857..b5fde3d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -23,14 +23,12 @@
import SkillShell
import BuffSkill
import BaseAttack
-import ChNetSendPack
import SkillCommon
import AttackCommon
import ItemControler
import ItemCommon
import FBLogic
import ReadChConfig
-import PetControl
import NPCAI
import OperControlManager
import ShareDefine
@@ -40,27 +38,11 @@
import DataRecordPack
import NetPackCommon
import FBCommon
-import PlayerActivity
-import PlayerSuccess
-import PlayerPrestigeSys
-import GY_Query_BossFirstKill
import FormulaControl
-import PlayerBossReborn
-import PlayerCrossYaomoBoss
-import PlayerActCollectWords
-import PlayerTongTianLing
-import CrossPlayerData
-import PlayerFeastWish
-import PlayerFeastTravel
-import PlayerGoldInvest
-import PlayerWeekParty
import NPCRealmRefresh
-import PlayerActLogin
import PlayerActTask
-#import PlayerZhanling
import IpyGameDataPY
import PlayerState
-import TurnAttack
import PyGameData
import GameObj
import ChNPC
@@ -107,12 +89,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):
@@ -198,7 +174,7 @@
#存一个满足要求的所有的物品的列表 然后从当中随机选一个
#注: 阶、颜色、套装ID、职业、部位,这5个条件可确认唯一一件装备
- if not PyGameData.InitPyItem:
+ if not PyGameData.g_initPyItem:
GameWorld.ErrLog("地图还未启动好载物品!")
return []
@@ -343,8 +319,7 @@
ownerDetail = GetSummonOwnerDetel(npcObj)
elif npcObjType == IPY_GameWorld.gnotPet:
- #查找宠物主人
- ownerDetail = PetControl.GetPetOwner(npcObj)
+ pass
return ownerDetail
#---------------------------------------------------------------------
@@ -833,9 +808,6 @@
ChNPC.OnNPCSetDead(curNPC)
- if npcid == IpyGameDataPY.GetFuncCfg("CrossYaomoBoss", 1):
- PlayerCrossYaomoBoss.OnCrossYaomoBossDead(curNPC)
-
# 清除队伍成员伤血列表
AttackCommon.ClearTeamPlayerHurtValue(curNPC)
if curNPC.GetType() == ChConfig.ntRobot:
@@ -905,73 +877,6 @@
return
def OnPlayerKillBoss(curPlayer, npcID, mapID, isCrossServer):
- npcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
- if not npcData:
- return
- killBossCntLimitDict = IpyGameDataPY.GetFuncCfg('KillBossCntLimit', 1)
- limitIndex = GameWorld.GetDictValueByKey(killBossCntLimitDict, npcID)
- if limitIndex != None:
- totalKey = ChConfig.Def_PDict_Boss_KillCntTotal % limitIndex
- totalCnt = min(curPlayer.NomalDictGetProperty(totalKey, 0) + 1, ChConfig.Def_UpperLimit_DWord)
- PlayerControl.NomalDictSetProperty(curPlayer, totalKey, totalCnt)
- #今日杀怪次数+1
- key = ChConfig.Def_PDict_Boss_KillCnt % limitIndex
- newCnt = curPlayer.NomalDictGetProperty(key, 0) + 1
- PlayerControl.NomalDictSetProperty(curPlayer, key, newCnt)
- GameWorld.DebugLog("更新击杀Boss次数: index=%s, todayCnt=%s, totalCnt=%s" % (limitIndex, newCnt, totalCnt), curPlayer.GetPlayerID())
-
- dataDict = {"objID":npcID, "bossID":npcID, "touchCnt":newCnt, "totalCnt":totalCnt,
- "AccID":curPlayer.GetAccID(), "PlayerID":curPlayer.GetPlayerID()}
- DataRecordPack.SendEventPack("AddKillBossCnt", dataDict, curPlayer)
- PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillBoss, 1, [limitIndex])
- PlayerState.SetBossStateExit(curPlayer)
-
- if isCrossServer:
- return
-
- if limitIndex == ShareDefine.Def_Boss_Func_World:
- # 世界BOSS击杀成就
- PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillWorldBoss, 1)
- # 每日活动
- PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_WorldBOSS)
- PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_WorldBOSS, 1)
- PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_WorldBOSS, 1)
- PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_WorldBoss, 1)
- PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_WorldBOSS, 1)
- PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_WorldBoss, 1)
- #PlayerZhanling.AddZhanlingValue(curPlayer, PlayerZhanling.ZhanlingType_Huanjingge, 1)
- PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_WorldBoss, 1)
-
- elif limitIndex == ShareDefine.Def_Boss_Func_Home:
- #BOSS之家
- # BOSS之家BOSS击杀成就
- PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillBossHomeBoss, 1)
- # 每日活动
- PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_BOSSHome)
- PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_BOSSHome, 1)
- PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_BOSSHome, 1)
- PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_BossHome, 1)
- PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_BossHome, 1)
-
-# if mapID == ChConfig.Def_FBMapID_CrossPenglai:
-# #跨服蓬莱仙境
-# PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossPenglai)
-# PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillCrossPenglaiBoss, 1)
-# PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_CrossPenglaiBoss, 1)
-# elif mapID == ChConfig.Def_FBMapID_CrossDemonLand:
-# #跨服魔化之地
-# PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossDemonLand)
-# PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillCrossDemonLandBoss, 1)
-# PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_CrossDemonLandBoss, 1)
-# if mapID in [ChConfig.Def_FBMapID_CrossPenglai, ChConfig.Def_FBMapID_CrossDemonLand]:
-# PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_CrossBoss, 1)
-
- # 个人首杀记录
- ipyData = IpyGameDataPY.GetIpyGameDataNotLog("BOSSFirstKill", npcID)
- if ipyData:
- GY_Query_BossFirstKill.SetPlayerFirstKillBoss(curPlayer, npcID)
- #Boss投资
- PlayerGoldInvest.OnKillBoss(curPlayer, npcID)
return
#################################################
@@ -2345,7 +2250,6 @@
#宠物特殊处理
if curNPC.GetGameNPCObjType() == IPY_GameWorld.gnotPet:
- PetControl.RefurbishPetAttr(curNPC, canSyncClient)
return
DoNPCAttrStrengthen(curNPC, isReborn)
@@ -2583,7 +2487,6 @@
#宠物死亡调用独立接口
if curNPC_GameNPCObjType == IPY_GameWorld.gnotPet:
- PetControl.SetPetDead(curNPC)
return
#---通用死亡逻辑---
@@ -3200,10 +3103,7 @@
FBLogic.DoFB_DropOwner(curPlayer , curNPC)
else:
if GetNPCLV(curNPC) >= curPlayer.GetLV() - IpyGameDataPY.GetFuncCfg('DailyQuestKillMonster'):
- PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_KillNPC)
PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_KillNPC)
- PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillSpecificNPC, 1, [npcID])
- #PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1)
if ChConfig.IsGameBoss(curNPC):
OnPlayerKillBoss(curPlayer, npcID, mapID, False)
@@ -3228,10 +3128,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):
@@ -3274,47 +3170,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
#---------------------------------------------------------------------
@@ -3731,12 +3587,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()
@@ -4193,7 +4044,6 @@
if not buyTimesVIPPriID:
return
canBuyCnt = 0
- canBuyCnt += PlayerGoldInvest.GetAddBossBuyCnt(curPlayer, killBossMark)
hasBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Boss_KillCntBuyCnt%killBossMark, 0)
playerID = curPlayer.GetPlayerID()
if hasBuyCnt >= canBuyCnt:
@@ -4223,8 +4073,6 @@
return
# 增加购买次数
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Boss_KillCntBuyCnt%killBossMark, hasBuyCnt + 1)
-
- CrossPlayerData.SendMergePlayerDataNow(curPlayer)
return
#// A2 23 NPC秀结束 #tagCMNPCShowEnd
--
Gitblit v1.8.0