From 0b4e44a6764b14b51c4b72b9c47c5a162352850d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 22 十月 2025 11:48:31 +0800
Subject: [PATCH] 16 卡牌服务端(删除 PlayerBattle)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py | 253 +++++---------------------------------------------
1 files changed, 27 insertions(+), 226 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
index e4e12c9..0347383 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -42,12 +42,10 @@
import ReadChConfig
import OperControlManager
import ShareDefine
-import PlayerAttrFruit
import DataRecordPack
import ChPyNetSendPack
import NetPackCommon
import IpyGameDataPY
-import PlayerSuccess
import PyGameData
import NPCCommon
import FBCommon
@@ -110,7 +108,7 @@
#===============================================================================
def __Func_InitItem(tick):
#初始化物品掉落保护
- MapItemProtectTime = IpyGameDataPY.GetFuncCfg("MapItemProtectTime")
+ MapItemProtectTime = 120000 #IpyGameDataPY.GetFuncCfg("MapItemProtectTime")
GameWorld.GetMapItemManager().SetProtectTime(MapItemProtectTime)
#===============================================================================================
@@ -148,7 +146,7 @@
# @param tick 当前时间
# @return None or True
# @remarks 函数详细说明.
-def __DoPickup(curPlayer, mapItemID, tick, isGuard):
+def __DoPickup(curPlayer, mapItemID, tick):
playerID = curPlayer.GetPlayerID()
mapItemManager = GameWorld.GetMapItemManager()
@@ -166,7 +164,7 @@
posX, posY, itemPosX, itemPosY = curPlayer.GetPosX(), curPlayer.GetPosY(), mapItem.GetPosX(), mapItem.GetPosY()
pickDist = GameWorld.GetDist(posX, posY, itemPosX, itemPosY)
# 守护拾取不验证拾取范围
- if not isGuard and pickDist > curPlayer.GetPickupDist():
+ if pickDist > curPlayer.GetPickupDist():
#距离过远, 不能捡起
PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_805889")
GameWorld.Log("当前距离过远, mapItemID=%s,dropItemNPCID=%s,玩家(%d,%d)-物品(%d,%d),pickDist=%s > playerPickupDist=%s"
@@ -190,8 +188,6 @@
mapItemCount = singItem.GetCount()
singItemGUID = singItem.GetGUID()
curEffID = singItem.GetEffectByIndex(0).GetEffectID()
- playerTeam = curPlayer.GetTeam()
- #isTeamNotify = (ownerType == ChConfig.Def_NPCHurtTypeTeam and playerTeam != None)
isTeamNotify = False
# 拾取金钱
if mapItemType == ChConfig.Def_ItemType_Money:
@@ -199,10 +195,6 @@
ChConfig.Def_GiveMoney_Pickup, {}, not isTeamNotify):
return
- # 提示获得金钱数量
- if isTeamNotify:
- PlayerControl.TeamNotify(playerTeam.GetTeamID(), "GeRen_lhs_295695", [curPlayer.GetName(),
- mapItemCount])
# 副本拾取金钱
FBLogic.OnFBPickUpItem(curPlayer, singItem, tick)
singItem.Clear()
@@ -264,8 +256,8 @@
mapID = GameWorld.GetGameWorld().GetMapID()
lineID = 0 if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull else PlayerControl.GetFBFuncLineID(curPlayer)
#合并地图的,使用前端lineID,即 FBID
- if mapID in [ChConfig.Def_FBMapID_BossHome]:
- lineID = curPlayer.GetClientLineID()
+ #if mapID in [ChConfig.Def_FBMapID_BossHome]:
+ # lineID = curPlayer.GetClientLineID()
NPCCommon.SendGameServerGoodItemRecord(curPlayer, mapID, lineID, dropItemNPCID, curItemID, equipInfo)
# 不需要队伍提示
@@ -277,9 +269,6 @@
# PickupItemSysNotify(curPlayer, isTeamNotify, itemMsgList, isEquip)
#=======================================================================
- #成就
- PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PickUpItem, curItemCount, [curItemID])
-
#物品已经被捡起, 把物品指针置为空
mapItem.SetDropItem(None)
#通知客户端, 人物捡起该物品, 以及回收物品的逻辑
@@ -306,20 +295,6 @@
return
#---------------------------------------------------------------------
-#// A3 12 守护拾取物品 #tagCMGuardPickupItem
-#
-#struct tagCMGuardPickupItem
-#{
-# tagHead Head;
-# WORD ItemCount;
-# WORD MapItemID[ItemCount]; //size = ItemCount
-#};
-def OnGuardPickupItem(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- mapItemIDList = clientData.MapItemID
- __DoPickupItem(curPlayer, mapItemIDList, tick, True)
- return
-
## 玩家拾取物品(封包参数)
# @param index 当前玩家索引
# @param tick 当前时间
@@ -330,103 +305,23 @@
#玩家捡起物品
pickPack = IPY_GameWorld.IPY_PickUpItem()
mapItemID = pickPack.GetMapItemID()
- __DoPickupItem(curPlayer, [mapItemID], tick, False)
+ __DoPickupItem(curPlayer, [mapItemID], tick)
return
-def __DoPickupItem(curPlayer, mapItemIDList, tick, isGuard):
- # @param isGuard: 是否守护拾取
-
- if isGuard and GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
- mapID = curPlayer.GetMapID()
- fbIpyData = FBCommon.GetFBIpyData(mapID)
- if fbIpyData and not fbIpyData.GetGuardPick():
- GameWorld.Log("该地图守护无法拾取物品! mapID=%s" % mapID, curPlayer.GetPlayerID())
- return
-
-# #单人副本一键拾取
-# if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtSingle:
-# SingleFBTPickUP(curPlayer, mapItemID, tick)
-# return
-
+def __DoPickupItem(curPlayer, mapItemIDList, tick):
if not mapItemIDList:
GameWorld.ErrLog("没有指定要拾取的地图物品ID!", curPlayer.GetPlayerID())
return
succMapItemIDList = [] # 成功拾取的地图物品
for mapItemID in mapItemIDList:
- if __DoPickup(curPlayer, mapItemID, tick, isGuard):
+ if __DoPickup(curPlayer, mapItemID, tick):
succMapItemIDList.append(mapItemID)
if succMapItemIDList:
GameWorld.Log("成功拾取地图物品, succMapItemIDList=%s" % (succMapItemIDList), curPlayer.GetPlayerID())
-
- # 守护拾取的,附加同步守护拾取结果
- if isGuard and succMapItemIDList:
- guradPickupSucc = ChPyNetSendPack.tagMCGuradPickupItemSucc()
- guradPickupSucc.MapItemID = succMapItemIDList
- guradPickupSucc.ItemCount = len(guradPickupSucc.MapItemID)
- NetPackCommon.SendFakePack(curPlayer, guradPickupSucc)
-
-# 玩家拾取结果目前客户端暂时无用,不通知
-# if not __DoPickup(curPlayer, mapItemID, tick):
-# curPlayer.Notify_PickupItemResult(mapItemID, 0)
-# else:
-# curPlayer.Notify_PickupItemResult(mapItemID, 1)
return
-
-###单人副本一键拾取
-## @param curPlayer mapItemID
-## @return None
-#def SingleFBTPickUP(curPlayer, mapItemID, tick):
-# mapItemManager = GameWorld.GetMapItemManager()
-# curMapItem = mapItemManager.GetItemByID(mapItemID)
-# if curMapItem == None or curMapItem.IsEmpty():
-# return
-#
-# posX = curPlayer.GetPosX()
-# posY = curPlayer.GetPosY()
-# itemPosX = curMapItem.GetPosX()
-# itemPosY = curMapItem.GetPosY()
-#
-# pickDist = GameWorld.GetDist(posX, posY, itemPosX, itemPosY)
-#
-# if pickDist > curPlayer.GetPickupDist():
-# #距离过远, 不能捡起
-# PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_805889")
-# return
-#
-# mapItemIDList = [curMapItem.GetID()]
-# #拾取当前格子周围的物品
-# mapItemManager = GameWorld.GetMapItemManager()
-# for index in range(mapItemManager.GetMapItemCount()):
-# mapItem = mapItemManager.GetMapItemByIndex(index)
-# if not mapItem or mapItem.IsEmpty():
-# continue
-#
-# mapItemObjID = mapItem.GetID()
-# if mapItemObjID in mapItemIDList:
-# continue
-#
-# curItem = mapItem.GetItem()
-# # 只一键拾取金钱
-# if curItem.GetType() != ChConfig.Def_ItemType_Money:
-# continue
-#
-# pickDist = GameWorld.GetDist(posX, posY, mapItem.GetPosX(), mapItem.GetPosY())
-#
-# if pickDist > curPlayer.GetPickupDist():
-# continue
-#
-# mapItemIDList.append(mapItemObjID)
-#
-# for mapItemID in mapItemIDList:
-# if not __DoPickup(curPlayer, mapItemID, tick):
-# curPlayer.Notify_PickupItemResult(mapItemID, 0)
-# else:
-# curPlayer.Notify_PickupItemResult(mapItemID, 1)
-#
-# return
#---------------------------------------------------------------------
## 玩家使用物品 ->自身效果(封包参数)
# @param index 当前玩家索引
@@ -462,12 +357,12 @@
def __DoLogic_PlayerUseItemSelf(curPlayer, useItemIndex, tick, useCnt=1, exData=0):
#使用物品行为状态, 判断客户端限制
- if not OperControlManager.IsObjCanDoAction(
- curPlayer,
- ChConfig.Def_Obj_ActState_ClientAct,
- IPY_GameWorld.oalUseItem
- ):
- return False
+ #if not OperControlManager.IsObjCanDoAction(
+ # curPlayer,
+ # ChConfig.Def_Obj_ActState_ClientAct,
+ # IPY_GameWorld.oalUseItem
+ # ):
+ # return False
#------------------封包参数 获得 玩家物品
backPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
@@ -497,9 +392,6 @@
% (curItemTypeID, useResult, isOK, successCnt))
if not isOK:
return False
-
- #------------使用物品成功, 执行相关操作
- PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_UseItem, successCnt, [curItemTypeID])
curPlayer.Sync_UseItem(curItemTypeID, useItemIndex)
curPlayer.SetItemCD(curItemCDType, tick)
@@ -648,15 +540,6 @@
#这个物品不是一般物品, 直接返回结果
return useSpecialItemResult
- #---特殊装备不验证装备属性, 普通物品要验证装备属性---
- itemControler = ItemControler.PlayerItemControler(curPlayer)
-
- #装备无法使用
- if itemControler.PlayerCanEquipItem(curItem, False):
- #这个物品是装备
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_774045")
- return
-
#物品类型ID
itemTypeID = curItem.GetItemTypeID()
@@ -683,10 +566,6 @@
# @return None or True
# @remarks 函数详细说明.
def __DealWith_SpecialItem(curPlayer, curItem, tick, useCnt, exData):
- #果实物品
- useFruitResult = PlayerAttrFruit.DoPlayerEatFruitItem(curPlayer, curItem, useCnt)
- if useFruitResult != -1:
- return useFruitResult
#------------------------获得物品相关属性
itemTypeID = curItem.GetItemTypeID() #物品类型id
@@ -710,9 +589,6 @@
#根据物品效果使用{物品效果ID:call的py名}
itemEffIdCallFuncDic = {
ChConfig.Def_Effect_UseItemGiveZhenQi:"Item_UseItemGiveZhenQi", # 使用道具给予真气
- ChConfig.Def_Effect_AddDienstgrad:"Item_AddDienstgrad", #道具获得称号
- ChConfig.Def_Effect_Face:"Item_Face",
- ChConfig.Def_Effect_FacePic:"Item_Face",
ChConfig.Def_Effect_ItemAddLV:"Item_AddLV", #升级道具
ChConfig.Def_Effect_GuajiAward:"Item_GuajiAward", #直接给挂机收益
ChConfig.Def_Effect_CleanGuilt:"Item_CleanGuilt", # 洗红名
@@ -720,20 +596,19 @@
ChConfig.Def_Effect_AddVIPExp:"Item_AddVIPExp", # 增加VIP经验
ChConfig.Def_Effect_VIPLVCard:"Item_VIPLVCard", # VIP等级直升卡
ChConfig.Def_Effect_TiandaoQiyun:"Item_TiandaoQiyun", # 天道树气运
- ChConfig.Def_Effect_GubaoPiece:"Item_GubaoPiece", # 古宝碎片效果ID
ChConfig.Def_Effect_TrainRealmLV:"Item_TrainRealmLV", # 境界培养卡
ChConfig.Def_Effect_ResetBossKillCnt:"Item_ResetBossKillCnt", # 重置boss击杀疲劳
ChConfig.Def_Effect_AddFBCnt:"Item_AddFBCnt", # 增加副本可进入次数
- ChConfig.Def_Effect_AddArenaBattleCount:"Item_AddArenaBattleCount", # 增加竞技场挑战次数
ChConfig.Def_Effect_AddKillBossCnt:"Item_AddKillBossCnt", # 增加BOSS可击杀次数
ChConfig.Def_Effect_AddMagicWeaponUpExp:"Item_AddMagicWeaponUpExp", # 增加法宝升星经验
- ChConfig.Def_Effect_ChatBubbleBox:"Item_ChatBubbleBox", # 激活聊天气泡框
ChConfig.Def_Effect_EmojiPack:"Item_EmojiPack",
ChConfig.Def_Effect_FamilyEmblem:"Item_FamilyEmblem",
ChConfig.Def_Effect_ItemGiveWeekPartyPoint:"Item_WeekPartyPoint", # 增加活动巡礼积分
ChConfig.Def_Effect_ItemGiveWeekPartyPoint1:"Item_WeekPartyPoint", # 增加活动巡礼积分
ChConfig.Def_Effect_AddRealmExpRate:"Item_AddRealmExpRate", # 增加聚灵效率
ChConfig.Def_Effect_TouchMission:"Item_TouchMission", # 触发任务接口
+ ChConfig.Def_Effect_HeroSkin:"Item_HeroSkin", # 武将皮肤
+ #ChConfig.Def_Effect_AddArenaBattleCount:"Item_AddArenaBattleCount", # 增加竞技场挑战次数
#ChConfig.Def_Effect_FamilyImpeach:"Item_FamilyImpeach", # 弹劾符
#ChConfig.Def_Effect_ClothesCoatSkin:"Item_ClothesCoatSkin", #激活时装皮肤
#ChConfig.Def_Effect_AddOfficialExp:"Item_AddOfficialExp", # 增加爵位经验
@@ -895,25 +770,25 @@
# @return 布尔值
# @remarks 检查使用物品的玩家属性.
def CheckUseItemSelf_Player(curPlayer):
- if GameObj.GetHP(curPlayer) <= 0 :
- return False
+ #if GameObj.GetHP(curPlayer) <= 0 :
+ # return False
# #眩晕时, 不可使用物品
# if curPlayer.GetAbnormalState() == IPY_GameWorld.sctFaint:
# return False
#使用物品行为状态, 判断服务端限制
- if not OperControlManager.IsObjCanDoAction(
- curPlayer,
- ChConfig.Def_Obj_ActState_ServerAct,
- IPY_GameWorld.oalUseItem
- ):
- return False
+ #if not OperControlManager.IsObjCanDoAction(
+ # curPlayer,
+ # ChConfig.Def_Obj_ActState_ServerAct,
+ # IPY_GameWorld.oalUseItem
+ # ):
+ # return False
#交易状态, 不可使用物品
- if curPlayer.GetPlayerAction() == IPY_GameWorld.paTrade:
- PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_372238")
- return False
+ #if curPlayer.GetPlayerAction() == IPY_GameWorld.paTrade:
+ # PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_372238")
+ # return False
# #GM禁止使用
# if GameWorld.IsGM(curPlayer):
@@ -1742,80 +1617,6 @@
infoDict[ShareDefine.Def_MapItemInfo_IsSuite] = 1
return infoDict
-
-# 特别设定:卓越物品必带武器技能增强效果,使用者请特别注意
-## 装备动态属性,只用于未设置属性的singleItem,roleItem使用多次发背包刷新包
-# @param curItem 玩家实例
-# @param equipData
-# @return
-def EquipAddAdditionEx(curItem, equipData):
- # 绑定
- #if equipData.isBind:
- # ItemControler.SetItemIsBind(curItem, equipData.isBind)
-
- if not ItemCommon.CheckItemIsEquip(curItem):
- return
-
- #===========================================================================
- # # 强化等级
- # if equipData.starLV:
- # curItem.SetItemStarLV(equipData.starLV)
- # # 打孔
- # if 0 < equipData.holeCnt <= curItem.GetMaxHoleCount():
- # curItem.SetCanPlaceStoneCount(equipData.holeCnt)
- #
- # # 给镶嵌宝石
- # for i, stoneID in enumerate(equipData.stoneData):
- # if i > equipData.holeCnt - 1:
- # break
- #
- # if stoneID <= 0:
- # continue
- #
- # curItem.SetStone(i, stoneID)
- #===========================================================================
-
- # 套装
- #if equipData.isSuite:
- # curItem.SetIsSuite(equipData.isSuite)
- #if equipData.suiteLV:
- # curItem.SetUserAttr(ShareDefine.Def_IudetSuiteLV, equipData.suiteLV)
- # 物品来源
- if equipData.source:
- curItem.SetUserAttr(ShareDefine.Def_IudetSource, equipData.source)
-
- # 传奇属性
- if equipData.legendAttrIDList and equipData.legendAttrValueList:
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrID)
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValue)
- for i in xrange(len(equipData.legendAttrIDList)):
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrID, equipData.legendAttrIDList[i])
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValue, equipData.legendAttrValueList[i])
- # 传奇属性 - 神
- if equipData.legendAttrIDListShen and equipData.legendAttrValueListShen:
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDShen)
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueShen)
- for i in xrange(len(equipData.legendAttrIDListShen)):
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDShen, equipData.legendAttrIDListShen[i])
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueShen, equipData.legendAttrValueListShen[i])
- # 传奇属性 - 仙
- if equipData.legendAttrIDListXian and equipData.legendAttrValueListXian:
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDXian)
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueXian)
- for i in xrange(len(equipData.legendAttrIDListXian)):
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDXian, equipData.legendAttrIDListXian[i])
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueXian, equipData.legendAttrValueListXian[i])
- # 传奇属性 - 极
- if equipData.legendAttrIDListJi and equipData.legendAttrValueListJi:
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDJi)
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueJi)
- for i in xrange(len(equipData.legendAttrIDListJi)):
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDJi, equipData.legendAttrIDListJi[i])
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueJi, equipData.legendAttrValueListJi[i])
-
- ItemCommon.MakeEquipGS(curItem)
- return
-
## 判断装备是否是可加强装备
# @param curItem 物品实例
--
Gitblit v1.8.0