| | |
| | | import UseItem
|
| | | import ItemCommon
|
| | | import ChConfig
|
| | | import EventShell
|
| | | import PlayerControl
|
| | | import FBLogic
|
| | | import ReadChConfig
|
| | |
| | | return
|
| | | dropItemNPCID = GetMapItemUserDataValue(mapItem, ShareDefine.Def_MapItemInfo_NPCID)
|
| | |
|
| | | #镖车中,无法拾取
|
| | | if not isGuard and curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck:
|
| | | PlayerControl.NotifyCode(curPlayer, "Old_hgg_21675")
|
| | | GameWorld.Log("使用交通工具时,无法拾取物品!mapItemID=%s,dropItemNPCID=%s" % (mapItemID, dropItemNPCID), playerID)
|
| | | return
|
| | | |
| | | if GameObj.GetHP(curPlayer) == 0:
|
| | | #玩家已经死亡
|
| | | GameWorld.Log("玩家已死亡,无法拾取物品!mapItemID=%s,dropItemNPCID=%s" % (mapItemID, dropItemNPCID), playerID)
|
| | |
| | | # PickupItemSysNotify(curPlayer, isTeamNotify, itemMsgList, isEquip)
|
| | | #=======================================================================
|
| | |
|
| | | #响应事件
|
| | | EventShell.EventRespons_OnGet(curPlayer, mapItemTypeID)
|
| | | #成就
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PickUpItem, curItemCount, [curItemID])
|
| | |
|
| | |
| | | ChConfig.Def_Effect_Face:"Item_Face",
|
| | | ChConfig.Def_Effect_FacePic:"Item_Face",
|
| | | ChConfig.Def_Effect_ItemAddLV:"Item_AddLV", #升级道具
|
| | | ChConfig.Def_Effect_TJGAddTime:"Item_TJGAddTime", #增加脱机挂时间
|
| | | ChConfig.Def_Effect_GuajiAward:"Item_GuajiAward", #直接给挂机收益
|
| | | ChConfig.Def_Effect_CleanGuilt:"Item_CleanGuilt", # 洗红名
|
| | | ChConfig.Def_Effect_PrizeCoin:"Item_PrizeCoin", # 奖励充值点券
|
| | |
| | | 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_FamilyImpeach:"Item_FamilyImpeach", # 弹劾符
|
| | | #ChConfig.Def_Effect_ClothesCoatSkin:"Item_ClothesCoatSkin", #激活时装皮肤
|
| | | #ChConfig.Def_Effect_AddOfficialExp:"Item_AddOfficialExp", # 增加爵位经验
|
| | |
| | | ):
|
| | | return False
|
| | |
|
| | | #在镖车中, 不可使用物品
|
| | | if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck :
|
| | | PlayerControl.NotifyCode(curPlayer, "Old_hgg_0")
|
| | | return False
|
| | | |
| | | #交易状态, 不可使用物品
|
| | | if curPlayer.GetPlayerAction() == IPY_GameWorld.paTrade:
|
| | | PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_372238")
|
| | |
| | |
|
| | | if ItemControler.IsEventItem(curItem):
|
| | | PlayerControl.NotifyCode(curPlayer, "itemuse_chenxin_31379")
|
| | | return
|
| | | |
| | | #玩家在镖车中,不能使用物品
|
| | | if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck:
|
| | | PlayerControl.NotifyCode(curPlayer, "Old_hgg_0")
|
| | | return
|
| | |
|
| | | # #玩家事件中, 不能使用物品
|
| | |
| | | def GetBackItemInFabao(index , tick):
|
| | | return
|
| | |
|
| | | ##===============================================================================
|
| | | ##07 24 tagCDingDianTransport
|
| | | #
|
| | | ### 定点(城市)传送 和 洞穴传送 (收包参数)
|
| | | ## @param index 玩家索引
|
| | | ## @param tick 当前时间
|
| | | ## @return None
|
| | | ## @remarks 函数详细说明.
|
| | | #def PointTransport(index, tick):
|
| | | # return
|
| | | # packUseItem = IPY_GameWorld.IPY_CDingDianTransport()
|
| | | # useItemIndex = packUseItem.GetItemIndex()
|
| | | # transportIndex = packUseItem.GetTransportIndex()
|
| | | # |
| | | # #获得玩家使用的物品
|
| | | # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | # backPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | # curItem = backPack.GetAt(useItemIndex)
|
| | | # |
| | | # #检查玩家状态和物品
|
| | | # if not CheckUseTransformItem(curPlayer, curItem, tick):
|
| | | # return
|
| | | # |
| | | # #判断属于哪种传送
|
| | | # effIndex = curItem.GetEffectByIndex(0)
|
| | | # curEffID = effIndex.GetEffectID()
|
| | | # |
| | | # #CD验证
|
| | | # if (tick - curPlayer.GetItemCDStartTime(curEffID)) < curItem.GetCDTime():
|
| | | # #CD冷却时间未到
|
| | | # PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_749572")
|
| | | # return
|
| | | # |
| | | # #判断并执行传送
|
| | | # if not __DoTransport(curPlayer, curItem, curEffID, transportIndex, useItemIndex, tick):
|
| | | # return
|
| | | #
|
| | | ### 执行传送
|
| | | ## @param curPlayer 当前玩家
|
| | | ## @param curItem 使用物品
|
| | | ## @param curEffID 当前效果
|
| | | ## @param transportIndex 传送点索引
|
| | | ## @param useItemIndex 使用的物品索引
|
| | | ## @param tick 当前时间
|
| | | ## @return None
|
| | | ## @remarks 函数详细说明.
|
| | | #def __DoTransport(curPlayer, curItem, curEffID, transportIndex, useItemIndex, tick):
|
| | | # #定点列表
|
| | | # cityPosList = ReadChConfig.GetEvalChConfig('Def_List_City_Pos')
|
| | | # #山洞列表
|
| | | # cavePosList = ReadChConfig.GetEvalChConfig('Def_List_Cave_Pos')
|
| | | # |
| | | # #定点
|
| | | # if curEffID == ChConfig.Def_Item_150_Effect:
|
| | | # posList = cityPosList
|
| | | # #山洞
|
| | | # elif curEffID == ChConfig.Def_Item_152_Effect:
|
| | | # posList = cavePosList
|
| | | # else:
|
| | | # GameWorld.Log('###非法使用物品,效果值%s'%(curEffID,), curPlayer.GetPlayerID())
|
| | | # return
|
| | | # |
| | | # #检查越界
|
| | | # if transportIndex < 0 or transportIndex >= len(posList):
|
| | | # GameWorld.Log('###定点传送越界--%s'%(transportIndex))
|
| | | # return
|
| | | # |
| | | # #目标地图判断
|
| | | # if not PlayerControl.CheckTagCountry(curPlayer, posList[transportIndex][0]):
|
| | | # return
|
| | | # |
| | | # itemID = curItem.GetItemTypeID()
|
| | | # |
| | | # |
| | | # #使用xx一个
|
| | | # PlayerControl.NotifyCode(curPlayer, "LostRes", [itemID, 1])
|
| | | # #通知客户端
|
| | | # curPlayer.Sync_UseItem(itemID, useItemIndex)
|
| | | # curPlayer.SetItemCD(curItem.GetCDType(), tick)
|
| | | # |
| | | # #扣除物品(先记录再删除,避免底层已经删除此物品)
|
| | | # curItem.SetCount(curItem.GetCount() - 1)
|
| | | # |
| | | # #判断成功,进行传送
|
| | | # PlayerControl.PlayerResetWorldPos(curPlayer, posList[transportIndex][0], posList[transportIndex][1], posList[transportIndex][2], False)
|
| | | # |
| | | # #传送XX地点提示
|
| | | # PlayerControl.NotifyCode(curPlayer, "Map_Deliver_Succeed", [posList[transportIndex][0]])
|
| | | |
| | | #---------------------------------------------------------------------
|
| | | #===============================================================================
|
| | | # //07 26 有对象的使用物品#tagCUseItemTag
|
| | | # tagCUseItemTag * GettagCUseItemTag();
|
| | |
| | | return
|
| | | return
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | #===============================================================================
|
| | | # //07 33 使用五行卷#tagCUseWuXingJuan
|
| | | # tagCUseWuXingJuan * GettagCUseWuXingJuan();
|
| | | # |
| | | # class IPY_CUseWuXingJuan
|
| | | # {
|
| | | # public:
|
| | | # //物品Index
|
| | | # int GetItemIndex();
|
| | | # //新的五行
|
| | | # int GetNewWuXing();
|
| | | # };
|
| | | #===============================================================================
|
| | | ## 使用五行卷轴(封包参数)
|
| | | # @param index 玩家索引
|
| | | # @param tick 当前时间
|
| | | # @return None or False
|
| | | # @remarks 函数详细说明.
|
| | | def UseWuXingJuan(index , tick):
|
| | | return
|
| | |
|
| | | ## 检测物品是否是五行卷轴
|
| | | # @param curItem 等待检测的物品
|
| | | # @return 布尔值
|
| | | # @remarks 函数详细说明.
|
| | | #===============================================================================
|
| | | # def CheckWuXingJuan(curItem):
|
| | | # if not ItemCommon.CheckItemCanUse(curItem):
|
| | | # return False
|
| | | # |
| | | # #这个物品不是五行转换卷轴
|
| | | # if curItem.GetEffectByIndex(0).GetEffectID() != ChConfig.Def_Effect_ItemWuXingJuan:
|
| | | # return False
|
| | | # |
| | | # return True
|
| | | #===============================================================================
|
| | |
|
| | |
|
| | | ## 使用回城
|
| | | # @param curPlayer 当前玩家 |
| | | # @return None or True
|
| | | # @remarks 函数详细说明.
|
| | | def UseTownPortal(curPlayer):
|
| | | #检查是否是回城卷
|
| | | itemIndex = curPlayer.GetDictByKey(ChConfig.Def_Use_Item_303_Index)
|
| | | curItem = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem).GetAt(itemIndex)
|
| | | |
| | | #物品不存在,不是回城卷不处理
|
| | | if not ItemCommon.CheckItemCanUse(curItem) or curItem.GetItemTypeID() != 303:
|
| | | #不能获得物品ID只能写死,否则玩家移动将找不到物品,或ID不匹配
|
| | | PlayerControl.NotifyCode(curPlayer, "B66BA2D6-0B3C-4177-B3FE66153B638DD0", [303, 303])
|
| | | return
|
| | | |
| | | useCount = 1
|
| | | itemID = curItem.GetItemTypeID()
|
| | | guID = curItem.GetGUID()
|
| | | |
| | | dataDict = {"ItemID":itemID, "ItemCount":useCount, "IsBind":curItem.GetIsBind(),"ItemGUID":guID}
|
| | | DataRecordPack.DR_DeleteItem(curPlayer, 'UseTownPortal', dataDict)
|
| | |
|
| | | #物品使用减少
|
| | | if curItem.GetCount() > useCount:
|
| | | ItemControler.SetItemCount(curItem, curItem.GetCount() - useCount, |
| | | curPlayer.GetID(), curPlayer.GetAccID(), curPlayer.GetPlayerName())
|
| | | else: |
| | | curItem.Clear()
|
| | | |
| | | #PlayerControl.NotifyCode(curPlayer, "LostRes", [itemID, useCount])
|
| | | playerControl = PlayerControl.PlayerControl(curPlayer)
|
| | | #把人物设置回重生点
|
| | | playerControl.SetToBornPlace()
|
| | |
|
| | | return True
|
| | | |
| | | #===============================================================================
|
| | | # 07 39 使用指定数量的物品 tagCUseItemCount
|
| | | # struct tagCUseItemCount
|
| | | # {
|
| | | # tagHead Head;
|
| | | # BYTE Type; //物品类型
|
| | | # DWORD Count; //物品数量
|
| | | # }
|
| | | #===============================================================================
|
| | |
|
| | | ## 07 39封包 使用指定数量的物品
|
| | | # @param index 玩家索引
|
| | | # @param tick 当前时间
|
| | | # @return 无
|
| | | # @remarks 和客户端约定的类型来取得指定物品,目前用于离线挂机,扣乾坤珠
|
| | | def UseOfflineTime(index, tick):
|
| | | return
|
| | |
|
| | | |
| | | #===============================================================================
|
| | | # struct tagCPetUseItemByIndex
|
| | | # {
|