8728 【主干】【bt】【bt2】【btzf】【GM工具】增加删除物品、扣除货币功能
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package GM.Commands.GMT_DelPlayerItem
|
| | | #
|
| | | # @todo:GM工具扣除玩家物品
|
| | | # @author hxp
|
| | | # @date 2021-03-18
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: GM工具扣除玩家物品
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2021-03-18 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GMCommon
|
| | | import ChConfig
|
| | | import GameWorld
|
| | |
|
| | |
|
| | | #逻辑实现(这里curPlayer = None)
|
| | | ## 执行逻辑
|
| | | # @param curPlayer 当前玩家 None
|
| | | # @param gmList [cmdIndex,gmAccID,forbidAccIP]
|
| | | # @return None
|
| | | # @remarks 函数详细说明.
|
| | | def OnExec(orderId, gmCmdDict): |
| | | GameWorld.Log("GMT_DelPlayerItem: %s" % gmCmdDict)
|
| | | |
| | | playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
|
| | | queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
|
| | | |
| | | if queryType == 'accID': |
| | | #玩家账户 []
|
| | | GMCommon.GMTool_MapServer_Query(ChConfig.queryType_sqtPlayerByAccID, orderId,
|
| | | playerFind, gmCmdDict, 'GMTDelPlayerItem', [orderId, gmCmdDict], False)
|
| | | return
|
| | | |
| | | #玩家名字 []
|
| | | GMCommon.GMTool_MapServer_Query(ChConfig.queryType_sqtPlayerByName, orderId,
|
| | | playerFind, gmCmdDict, 'GMTDelPlayerItem', [orderId, gmCmdDict], False)
|
| | | return
|
| | |
|
| | |
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package GM.Commands.GMT_DelPlayerMoney
|
| | | #
|
| | | # @todo:GM工具扣除玩家货币
|
| | | # @author hxp
|
| | | # @date 2021-03-18
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: GM工具扣除玩家货币
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2021-03-18 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | | import GMCommon
|
| | | import ChConfig
|
| | |
|
| | |
|
| | | #逻辑实现(这里curPlayer = None)
|
| | | ## 执行逻辑
|
| | | # @param curPlayer 当前玩家 None
|
| | | # @param gmList [cmdIndex,gmAccID,forbidAccIP]
|
| | | # @return None
|
| | | # @remarks 函数详细说明.
|
| | | def OnExec(orderId, gmCmdDict): |
| | | playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '')
|
| | | queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '')
|
| | | |
| | | if queryType == 'accID': |
| | | #玩家账户 []
|
| | | GMCommon.GMTool_MapServer_Query(ChConfig.queryType_sqtPlayerByAccID, orderId, |
| | | playerFind, gmCmdDict, 'GMTDelPlayerMoney', [orderId, gmCmdDict], False)
|
| | | return
|
| | | |
| | | #玩家名字 []
|
| | | GMCommon.GMTool_MapServer_Query(ChConfig.queryType_sqtPlayerByName, orderId, |
| | | playerFind, gmCmdDict, 'GMTDelPlayerMoney', [orderId, gmCmdDict], False)
|
| | | return
|
| | |
|
| | |
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Player.RemoteQuery.GY_Query_GMTDelPlayerItem
|
| | | #
|
| | | # @todo:GM工具扣除玩家物品
|
| | | # @author hxp
|
| | | # @date 2021-03-18
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: GM工具扣除玩家物品
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2021-03-18 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GMCommon
|
| | | import ItemCommon
|
| | | import ShareDefine
|
| | | import GameWorld
|
| | | import ChConfig
|
| | |
|
| | | ## 请求逻辑
|
| | | # @param query_Type 请求类型
|
| | | # @param query_ID 请求的玩家ID
|
| | | # @param packCMDList 发包命令 [ ]
|
| | | # @param tick 当前时间
|
| | | # @return resultDisc
|
| | | # @remarks 函数详细说明.
|
| | | def DoLogic(query_Type, query_ID, packCMDList, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
|
| | | |
| | | if not curPlayer or curPlayer.IsEmpty():
|
| | | return ''
|
| | | orderId, gmCmdDict = packCMDList
|
| | | GameWorld.Log("GY_Query_GMTDelPlayerItem: %s" % gmCmdDict, query_ID)
|
| | | itemID = GameWorld.ToIntDef(gmCmdDict.get("itemID", 0))
|
| | | delItemCount = GameWorld.ToIntDef(gmCmdDict.get("delItemCount", 0))
|
| | | |
| | | Result = GMCommon.Def_Success
|
| | | retMsg = {"itemID":itemID, "delItemCount":delItemCount, "accID":curPlayer.GetAccID()}
|
| | | |
| | | # 删除物品
|
| | | _DoGMDelItem(curPlayer, gmCmdDict, itemID, delItemCount, retMsg)
|
| | | |
| | | # 查询剩余物品明细
|
| | | findItemDict = {}
|
| | | for packIndex in xrange(ShareDefine.rptMax):
|
| | | itemPack = curPlayer.GetItemManager().GetPack(packIndex)
|
| | | if not itemPack:
|
| | | continue
|
| | | itemList = []
|
| | | for index in xrange(itemPack.GetCount()):
|
| | | curItem = itemPack.GetAt(index)
|
| | | if not curItem or curItem.IsEmpty():
|
| | | continue
|
| | | if curItem.GetItemTypeID() != itemID:
|
| | | continue
|
| | | itemList.append(_GetItemInfo(curItem))
|
| | | if itemList:
|
| | | findItemDict[str(packIndex)] = itemList
|
| | | retMsg["findItemDict"] = findItemDict
|
| | | |
| | | resultMsg = str([orderId, retMsg, 'GMT_DelPlayerItem', Result])
|
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'GMToolResult', resultMsg, len(resultMsg))
|
| | | return ''
|
| | | |
| | | def _DoGMDelItem(curPlayer, gmCmdDict, itemID, delItemCount, retMsg):
|
| | | |
| | | delRemark = gmCmdDict.get("delRemark", "")
|
| | | delGUIDInfo = gmCmdDict.get("delGUIDInfo", "")
|
| | | delGUIDInfo = eval(delGUIDInfo) if (delGUIDInfo.startswith("{") and delGUIDInfo.endswith("}")) else {}
|
| | | if not delGUIDInfo:
|
| | | return
|
| | | GameWorld.DebugLog("delGUIDInfo: %s" % delGUIDInfo)
|
| | | succDelItemDict = {}
|
| | | succDelCount = 0
|
| | | for delGUID, delItemInfo in delGUIDInfo.items():
|
| | | packIndex, delIndex = delItemInfo
|
| | | GameWorld.DebugLog("delGUID=%s,packIndex=%s,delIndex=%s" % (delGUID, packIndex, delIndex))
|
| | | itemPack = curPlayer.GetItemManager().GetPack(int(packIndex))
|
| | | if not itemPack:
|
| | | continue
|
| | | if delIndex >= itemPack.GetCount():
|
| | | continue
|
| | | curItem = itemPack.GetAt(delIndex)
|
| | | if not curItem or curItem.IsEmpty():
|
| | | continue
|
| | | if curItem.GetItemTypeID() != itemID:
|
| | | continue
|
| | | if curItem.GetGUID() != delGUID:
|
| | | continue
|
| | | |
| | | remainDelCount = delItemCount - succDelCount # 还需要删除的个数
|
| | | if remainDelCount <= 0:
|
| | | break
|
| | | curCount = curItem.GetCount()
|
| | | delCnt = min(remainDelCount, curCount)
|
| | | itemInfo = _GetItemInfo(curItem)
|
| | | GameWorld.DebugLog(" delCnt=%s" % delCnt)
|
| | | |
| | | infoDict = {ChConfig.Def_Cost_Reason_SonKey:delRemark}
|
| | | ItemCommon.DelItem(curPlayer, curItem, delCnt, False, "GM", infoDict, isForceDR=True)
|
| | | |
| | | itemInfo["Count"] = "-%s" % delCnt
|
| | | succDelCount += delCnt
|
| | | |
| | | if str(packIndex) not in succDelItemDict:
|
| | | succDelItemDict[str(packIndex)] = []
|
| | | itemList = succDelItemDict[str(packIndex)]
|
| | | itemList.append(itemInfo)
|
| | | |
| | | retMsg["succDelItemDict"] = succDelItemDict
|
| | | retMsg["succDelCount"] = succDelCount
|
| | | return
|
| | |
|
| | | def _GetItemInfo(curItem):
|
| | | curItemInfo = {"ItemGUID":curItem.GetGUID(),
|
| | | "ItemTypeID":curItem.GetItemTypeID(),
|
| | | "ItemName":curItem.GetName().decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding()),
|
| | | "Count":curItem.GetCount(),
|
| | | "UserData":curItem.GetUserData(),
|
| | | "IsBind":curItem.GetIsBind(),
|
| | | "IsSuite":1 if curItem.GetSuiteID() else 0,
|
| | | "RemainHour":curItem.GetRemainHour(),
|
| | | "GearScore":curItem.GetGearScore(),
|
| | | "CreateTime":curItem.GetCreateTime(),
|
| | | "ItemPlaceIndex":curItem.GetItemPlaceIndex()
|
| | | }
|
| | | return curItemInfo
|
| | |
|
| | | |
| | | |
| | | |
| | | |
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Player.RemoteQuery.GY_Query_GMTDelPlayerMoney
|
| | | #
|
| | | # @todo:GM工具扣除玩家货币
|
| | | # @author hxp
|
| | | # @date 2021-03-18
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: GM工具扣除玩家货币
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2021-03-18 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GMCommon
|
| | | import ShareDefine
|
| | | import PlayerControl
|
| | | import GameWorld
|
| | | import ChConfig
|
| | |
|
| | | ## 请求逻辑
|
| | | # @param query_Type 请求类型
|
| | | # @param query_ID 请求的玩家ID
|
| | | # @param packCMDList 发包命令 [ ]
|
| | | # @param tick 当前时间
|
| | | # @return resultDisc
|
| | | # @remarks 函数详细说明.
|
| | | def DoLogic(query_Type, query_ID, packCMDList, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
|
| | | |
| | | if not curPlayer or curPlayer.IsEmpty():
|
| | | return ''
|
| | | |
| | | orderId, gmCmdDict = packCMDList
|
| | | moneyType = GameWorld.ToIntDef(gmCmdDict.get("moneyType"))
|
| | | moneyValue = GameWorld.ToIntDef(gmCmdDict.get("moneyValue"))
|
| | | delRemark = gmCmdDict.get("delRemark", "")
|
| | | |
| | | retMsg = ""
|
| | | Result = GMCommon.Def_Success
|
| | | if moneyType not in [1, 2, 3, 4] and moneyType not in ShareDefine.TYPE_Price_CurrencyDict:
|
| | | Result = GMCommon.Def_MoneyTypeErr
|
| | | elif not moneyValue:
|
| | | Result = GMCommon.Def_ParamErr
|
| | | retMsg = "money value error."
|
| | | elif not PlayerControl.HaveMoney(curPlayer, moneyType, moneyValue, False):
|
| | | Result = GMCommon.Def_ParamErr
|
| | | retMsg = "money is not enough. only %s" % PlayerControl.GetMoney(curPlayer, moneyType)
|
| | | |
| | | if Result == GMCommon.Def_Success:
|
| | | infoDict = {ChConfig.Def_Cost_Reason_SonKey:delRemark}
|
| | | if not PlayerControl.PayMoney(curPlayer, moneyType, moneyValue, ChConfig.Def_Cost_GM, infoDict, isNotify=False):
|
| | | Result = GMCommon.Def_Unknow
|
| | | retMsg = "pay money error."
|
| | | else:
|
| | | retMsg = "remaining money %s" % PlayerControl.GetMoney(curPlayer, moneyType)
|
| | | |
| | | resultMsg = str([orderId, retMsg, 'GMT_DelPlayerMoney', Result])
|
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'GMToolResult', resultMsg, len(resultMsg))
|
| | | return ''
|
| | | |
| | | |
| | | |
| | | |
| | | |