From 7090e3f4e6d9d386fd1fdd681889db6c921c9941 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 28 三月 2019 17:54:01 +0800
Subject: [PATCH] 6373 【后端】【2.0】删除无用功能代码、封包、配置(摆摊系统)
---
/dev/null | 580 ------------------------------------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini | 24 --
ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py | 84 -------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 9
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 16 -
6 files changed, 3 insertions(+), 712 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py b/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
index c83e7ad..a4e117b 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
@@ -807,7 +807,7 @@
Def_GiveMoney_SellPackItem, # 出售背包物品
Def_GiveMoney_CollectNPC, # 采集NPC
Def_GiveMoney_20,
-Def_GiveMoney_StallItem, # 摆摊
+Def_GiveMoney_21,
Def_GiveMoney_Trade, # 交易
Def_GiveMoney_Truck, # 运镖
Def_GiveMoney_FreeGoods, # 极品白拿
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
index 0dedbe8..c6ee2ce 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
@@ -1114,30 +1114,6 @@
PacketSubCMD_2=0x1
PacketCallFunc_2=OnPlayerSetTruckMode
-;摆摊
-[PlayerShopItem]
-ScriptName = Player\PlayerShopItem.py
-Writer = eggxp
-Releaser = eggxp
-RegType = 0
-RegisterPackCount = 4
-
-PacketCMD_1=0x14
-PacketSubCMD_1=0x1
-PacketCallFunc_1=BeginShopItem
-
-PacketCMD_2=0x14
-PacketSubCMD_2=0x2
-PacketCallFunc_2=EndShop
-
-PacketCMD_3=0x14
-PacketSubCMD_3=0x3
-PacketCallFunc_3=WatchShop
-
-PacketCMD_4=0x14
-PacketSubCMD_4=0x4
-PacketCallFunc_4=BuyItem
-
;精力系统
[PlayerEnergySys]
ScriptName = Player\PlayerEnergySys.py
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 2e57bf2..7ba1625 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -532,8 +532,6 @@
Def_Item_Effect_MissionMove = 2001
#鱼竿
Def_Item_Effect_FishTool = 2000
-#摆摊证
-Def_Item_Effect_ShopItem = 1900
#坐骑进阶
Def_Item_Eff_HorseUpdate = 2819
#官爵进阶
@@ -688,7 +686,6 @@
Def_SkillID_Red = 20021 # 红名
Def_SkillID_ReviveTired = 20030 # 复活疲劳 SkillID
Def_SkillID_SkillReBorn = -1 # 技能复活ID
-Def_SkillID_ShopItem = -1 # 摆摊技能ID
Def_SkillID_LimitSuperBuff = 10000 # 有限无敌BUFF SkillID
Def_SkillID_TJGSuperBuff = 20039 # 脱机挂死亡复活保护
Def_SkillID_Somersault = 190 # 翻滚快速闪避
@@ -1410,12 +1407,6 @@
Def_GameEventExpLVDiff = 5
#组队经验加成
Def_TeamMemberExp=[1,1,1.1,1.15,1.2,1.25,1.3]
-
-#摆摊--------------------------------------------
-#可以摆摊的状态
-Def_ShopItem_PlayerState = [IPY_GameWorld.paNull, IPY_GameWorld.paAttack]
-#摆摊距离
-Def_ShopItem_Dist = 10
#物品--------------------------------------------
#人物背包最大个数
@@ -4537,13 +4528,12 @@
Def_Cost_FinishTruck, # 完成镖车
Def_Cost_RefreshTimeShop, # 刷新神秘商店
Def_Cost_OpenNoble, # 开通贵族
-Def_Cost_BuyStallItem, # 购买摆摊物品
Def_Cost_Warehouse, # 仓库
Def_Cost_BuyItemBack, # 回购
Def_Cost_Trade, # 交易
Def_Cost_Rename, # 改名
Def_Cost_SkillLvUp, # 技能升级
-) = range(2000, 2000 + 57)
+) = range(2000, 2000 + 56)
Def_Cost_Reason_SonKey = "reason_name_son" # 消费点原因子类说明key
@@ -4603,7 +4593,6 @@
Def_Cost_Transport:"Transport",
Def_Cost_OffLineExp:"OffLineExp",
Def_Cost_GameServer:"GameServer",
-Def_Cost_BuyStallItem:"BuyStallItem",
Def_Cost_Trade:"Trade",
Def_Cost_Rename:"Rename",
Def_Cost_SkillLvUp:"SkillLvUp",
@@ -4648,7 +4637,7 @@
Def_GiveMoney_SellPackItem, # 出售背包物品
Def_GiveMoney_CollectNPC, # 采集NPC
Def_GiveMoney_20,
-Def_GiveMoney_StallItem, # 摆摊
+Def_GiveMoney_21,
Def_GiveMoney_Trade, # 交易
Def_GiveMoney_Truck, # 运镖
Def_GiveMoney_FreeGoods, # 极品白拿
@@ -4682,7 +4671,6 @@
Def_GiveMoney_Warehouse:"Warehouse",
Def_GiveMoney_SellPackItem:"SellPackItem",
Def_GiveMoney_CollectNPC:"CollectNPC",
-Def_GiveMoney_StallItem:"StallItem",
Def_GiveMoney_Trade:"Trade",
Def_GiveMoney_Truck:"Truck",
Def_GiveMoney_FreeGoods:"FreeGoods",
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
index fbfbc0c..1638a78 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
@@ -28,8 +28,6 @@
# @change: "2013-09-18 17:00" Alee 退出锁定退出交易
# @change: "2013-09-23 19:30" Alee 红名提示修改
# @change: "2013-11-15 20:20" hxp 关闭07 3A购买背包封包功能,增加背包成功系统提示
-# @change: "2013-11-27 20:30" hxp 修改结束摆摊状态事件单独处理,不在结束事件中处理
-# @change: "2013-12-10 14:00" hxp 修改查看摆摊状态事件单独处理,不在结束事件中处理
# @change: "2013-12-12 14:30" hxp 增加钻石购买背包计费点事件同步
# @change: "2013-12-13 12:20" hxp 修改首登物品绑定设置
# @change: "2013-12-27 16:00" Alee 删除多余代码
@@ -80,7 +78,6 @@
import PlayerControl
import FunctionNPCCommon
import FBLogic
-import PlayerShopItem
import ItemControler
import ItemCommon
import QuestCommon
@@ -3729,8 +3726,6 @@
ExitCreateFamily(curPlayer)
ExitBillboard(curPlayer)
#ExitEventLock(curPlayer)
- #ExitShopItem(curPlayer) # 奇迹只在切地图及下线时关闭摆摊
- #ExitWatchShopItem(curPlayer)
#npc商店退出
ExitNPCShop(curPlayer)
@@ -3770,85 +3765,6 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PyPlayerAction, 0)
return
-
-##结束摆摊事件
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束摆摊事件
-def ExitShopItem(curPlayer):
- GameWorld.DebugLog("ExitShopItem", curPlayer.GetPlayerID())
- playerShop = curPlayer.GetPlayerShop()
- #在摆摊状态
- if playerShop.GetIsStartShop():
- PlayerShopItem.DoExitShop(curPlayer , curPlayer.GetPlayerShop())
-
- return
-#---------------------------------------------------------------------
-##结束查看摆摊事件
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束查看摆摊事件
-def ExitWatchShopItem(curPlayer):
- curPlayerShop = curPlayer.GetPlayerShop()
-
- if not curPlayerShop.GetIsWatchingShop():
- return
-
- openShopPlayer = curPlayer.GetActionPlayer()
- __DoExitWatchShopItem(curPlayer , openShopPlayer)
-
- curPlayerShop.SetIsWatchingShop(0)
- return
-#---------------------------------------------------------------------
-##结束查看摆摊事件
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束查看摆摊事件
-def __DoExitWatchShopItem(curPlayer , openShopPlayer):
-
- if openShopPlayer == None:
- return
-
- shop = openShopPlayer.GetPlayerShop()
- #没有开店
- if not shop.GetIsStartShop():
- return
-
- #商店删除这个玩家
- shop.DeleteWatchPlayer(curPlayer.GetPlayerID())
- return
-
-#---------------------------------------------------------------------
-##结束事件锁
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束事件锁
-#===============================================================================
-# def ExitEventLock(curPlayer):
-# if not curPlayer.GetHaveSetEventLock() :
-# return
-#
-# #在摆摊状态不解锁,奇迹摆摊物品解锁只在切地图/下线/玩家主动结束摆摊情况下解锁
-# playerShop = curPlayer.GetPlayerShop()
-# if playerShop.GetIsStartShop():
-# return
-#
-# #获得玩家物品管理器
-# ItemManager = curPlayer.GetItemManager()
-# #获得背包
-# curPack = ItemManager.GetPack(IPY_GameWorld.rptItem)
-# for i in range(curPack.GetCount()):
-# item = curPack.GetAt(i)
-# if item == None or item.IsEmpty():
-# continue
-#
-# if not item.GetIsEventLocked():
-# continue
-#
-# #离开事件锁
-# item.SetIsEventLocked(False)
-#===============================================================================
-
#---------------------------------------------------------------------
##结束查看排行榜
#@param curPlayer 玩家实例
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index dcdb8fb..e043a34 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -1178,10 +1178,6 @@
NPCCommon.ClearCollectNPC(curPlayer)
#结束事件
EventShell.DoExitEvent(curPlayer)
-
- # 结束摆摊/查看摆摊
- EventShell.ExitShopItem(curPlayer)
- EventShell.ExitWatchShopItem(curPlayer)
#设置玩家的地图位置, 如果是副本, 离开副本
# 副本规则:
@@ -1446,11 +1442,6 @@
PlayerTruck.PlayerTruckDown(curPlayer, curTruck)
curPlayer.SetChangeMapTakeTruck(takeTruck)
-
- # 如果在摆摊中,提示摆摊关闭
- playerShop = curPlayer.GetPlayerShop()
- if playerShop.GetIsStartShop():
- NotifyCode(curPlayer, "GeRen_admin_70569")
#离开地图服务器
__PlayerLeaveServerLogic(curPlayer, tick, False)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerShopItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerShopItem.py
deleted file mode 100644
index 5e5e200..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerShopItem.py
+++ /dev/null
@@ -1,580 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package PlayerShopItem
-# @todo: 玩家摆摊逻辑处理
-#
-# @author: panwei
-# @date 2010-04-28
-# @version 1.9
-#
-# @note: 玩家摆摊逻辑处理
-#---------------------------------------------------------------------
-# @change: "2010-05-12 18:30" zhengyang 添加注释
-# @change: "2010-06-21 15:54" panwei 恢复摆摊功能
-# @change: "2010-07-16 09:45" panwei 摆摊新增验证, 移动中不能摆摊
-# @change: "2011-09-15 16:00" chenxuewei 删除物品流向记录增加物品是否绑定
-# @change: "2012-06-27 15:30" whx 增加setCount错误oss记录
-# @change: "2012-08-10 15:00" zhangxi 修改OSS记录
-# @change: "2013-11-27 20:30" hxp 修改奇迹摆摊
-# @change: "2013-12-10 14:00" hxp 增加退出查看摆摊逻辑
-# @change: "2015-07-03 16:00" zqx 去除GM限制
-#---------------------------------------------------------------------
-"""Version = 2015-07-03 16:00"""
-#------------------------------------------------------------------------------
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import PlayerControl
-import ItemControler
-import PlayerTrade
-import ItemCommon
-import ReadChConfig
-import EventShell
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-## 14 01 开始摆摊#tagCBeginShop
-## 封包触发 开始摆摊
-# @param index 玩家索引
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def BeginShopItem(index, tick):
-#===============================================================================
-# curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#
-# #检测玩家状态
-# if not __CheckBeginShopItemPlayerState(curPlayer):
-# #PlayerShop_Lost 对不起,当前状态无法摆摊,操作无效
-# PlayerControl.NotifyCode(curPlayer , "PlayerShop_Lost")
-# return
-#
-# #GM无法摆摊
-# # if GameWorld.IsGM(curPlayer):
-# # PlayerControl.NotifyCode(curPlayer, "GeRen_admin_59724")
-# # return
-#
-# playerShop = curPlayer.GetPlayerShop()
-#
-# if playerShop.GetIsStartShop():
-# #GameWorld.Log("已经在摆摊状态中,请结束后在开始")
-# return
-#
-# # if not curPlayer.GetMapBuff().FindBuff(ChConfig.Def_SkillID_ShopItem):
-# # PlayerControl.NotifyCode(curPlayer, "PlayerShop_Lost_AreaError")
-# # #GameWorld.Log("无摆摊Buff,摆摊开始失败")
-# # return
-#
-# # 摆摊地图判断
-# mapID = GameWorld.GetGameWorld().GetMapID()
-# if mapID not in [10000]:
-# PlayerControl.NotifyCode(curPlayer, "GeRen_admin_840854")
-# return
-#
-# # 判断摆摊等级
-# if not __CheckShopPlayerLV(curPlayer):
-# return
-#
-# sendPack = IPY_GameWorld.IPY_CBeginShop()
-# shopLV = sendPack.GetShopLV()
-# shopName = sendPack.GetShopName()
-#
-# if shopName == '':
-# GameWorld.ErrLog("摆摊名字为空" , curPlayer.GetPlayerID())
-# return
-#
-# # 奇迹不需要摆摊石
-# # #获得玩家装备的
-# itemManager = curPlayer.GetItemManager()
-# # equipPack = itemManager.GetPack(IPY_GameWorld.rptEquip)
-# # shopItem = equipPack.GetAt(IPY_GameWorld.retShopping)
-# # #如果摆摊等级不为1,需要判断是否有摆摊增值物品
-# # if not __CheckShopItem(curPlayer, shopItem, shopLV):
-# # return
-#
-# # 奇迹不需要摆摊等级限制摆摊个数
-# # #当前摊位可以摆摊的最大数量
-# # canShopItemMaxCount = 0
-# # #检查摆摊等级
-# # if ChConfig.Def_ShopItem_Count.has_key(shopLV):
-# # #可以摆摊的数量
-# # canShopItemMaxCount = ChConfig.Def_ShopItem_Count.get(shopLV)
-# # else:
-# # GameWorld.ErrLog("摆摊等级错误,shopLV = %s" % (shopLV) , curPlayer.GetPlayerID())
-# # return
-#
-# canShopItemMaxCount = 12 # 暂定12格,先写死
-# #获得摆摊物品的销售数量
-# shopItemCount = sendPack.GetSellCount()
-#
-# if shopItemCount <= 0 or shopItemCount > canShopItemMaxCount:
-# GameWorld.ErrLog("摆摊数量,封包异常 = %s,maxCount = %s" % (shopItemCount, canShopItemMaxCount) , curPlayer.GetPlayerID())
-# return
-#
-# #玩家背包最大数量
-# itemPack = itemManager.GetPack(IPY_GameWorld.rptItem)
-# itemIndexList = []
-#
-# curItemDict = {}
-# for i in range(shopItemCount):
-# sendPackItem = sendPack.GetSellItemIndex(i)
-#
-# if sendPackItem == None:
-# GameWorld.ErrLog("摆摊封包物品为空,itemIndex = %s" % (i) , curPlayer.GetPlayerID())
-# return
-#
-# itemIndex = sendPackItem.GetItemIndex()
-# item = itemPack.GetAt(itemIndex)
-#
-# if not PlayerTrade.CheckTradeItem(curPlayer, item):
-# GameWorld.ErrLog("摆摊物品错误,itemIndex = %s" % (itemIndex) , curPlayer.GetPlayerID())
-# return
-#
-# silver = sendPackItem.GetSilver()
-#
-# if silver < 1:
-# GameWorld.ErrLog("摆摊物品售价, index = %s, silver = %s" % (itemIndex, silver) , curPlayer.GetPlayerID())
-# return
-#
-# if curItemDict.has_key(itemIndex):
-# GameWorld.ErrLog("摆摊物品错误, 有重复物品, itemIndex = %s" % (itemIndex) , curPlayer.GetPlayerID())
-# return
-#
-# curItemDict[itemIndex] = silver
-# itemIndexList.append([itemIndex, silver])
-#
-# for i in range(len(itemIndexList)):
-# # int itemIndex, DWORD Gold,DWORD GoldPaper, DWORD Silver,DWORD SilverPaper
-# playerShop.AddSellItem(itemIndexList[i][0], 0, 0, itemIndexList[i][1], 0)
-# #将背包中,对应的物品锁定
-# #GameWorld.Log('将背包中,对应的物品锁定 %d'%itemIndexList[i][0])
-# item = itemPack.GetAt(itemIndexList[i][0])
-# item.SetIsEventLocked(True)
-#
-# #扣摆摊石耐久(改为结束时候扣耐久)
-# #__ReduceShopItem(curPlayer, shopItem, shopLV)
-#
-# playerShop.SetShopName(shopName)
-# playerShop.SetShopLV(shopLV)
-# playerShop.SetIsStartShop(True)
-# #锁住玩家
-# #curPlayer.BeginEvent()
-# #开始摆摊
-# curPlayer.View_StartShop()
-# #买家店铺刷新
-# curPlayer.Sync_ShopItem()
-# PlayerControl.NotifyCode(curPlayer, "GeRen_admin_293296")
-# GameWorld.Log("开始摆摊成功" , curPlayer.GetPlayerID())
-#===============================================================================
- return
-
-#---------------------------------------------------------------------
-##检测玩家当前状态是否可以摆摊
-# @param curPlayer 玩家实例
-# @return 布尔值
-# @remarks 检测玩家当前状态是否可以摆摊
-def __CheckBeginShopItemPlayerState(curPlayer):
-
- if curPlayer.GetPlayerAction() not in ChConfig.Def_ShopItem_PlayerState:
- return False
-
-# 奇迹跑动中或骑坐骑亦可摆摊
-# if curPlayer.GetPlayerVehicle() != IPY_GameWorld.pvNull:
-# return False
-#
-# if curPlayer.IsMoving():
-# return False
-
- return True
-#---------------------------------------------------------------------
-## 结束摆摊
-# @param index 玩家索引
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def EndShop(index, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- #sendPack = IPY_GameWorld.IPY_CEndShop()
- playerShop = curPlayer.GetPlayerShop()
-
- if not playerShop.GetIsStartShop():
- GameWorld.ErrLog("EndShop -> 不在摆摊状态" , curPlayer.GetPlayerID())
- return
-
- DoExitShop(curPlayer , playerShop)
- #主动结束事件
- curPlayer.ExitEvent()
- #清空移动次数
- GameWorld.ClearPlayerPosCount(curPlayer)
- return
-
-#---------------------------------------------------------------------
-## 14 03 查看摊位#tagCWatchShop
-## 查看摊位
-# @param index 玩家索引
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def WatchShop(index, tick):
- watchPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- watchPlayerShop = watchPlayer.GetPlayerShop()
-
-# 奇迹任何时候都能查看摊位
-# if watchPlayer.GetPlayerAction() not in ChConfig.Def_ShopItem_PlayerState:
-# #GameWorld.Log("只有空闲状态才能查看")
-# return
-
- #GM无法购买物品
-# if GameWorld.IsGM(watchPlayer):
-# PlayerControl.NotifyCode(watchPlayer, "GeRen_admin_59724")
-# return
-
- sendPack = IPY_GameWorld.IPY_CWatchShop()
- playerID = sendPack.GetPlayerID()
-
- # 退出查看摆摊
- if playerID <= 0:
- EventShell.ExitWatchShopItem(watchPlayer)
- return
-
- openShopPlayer = GameWorld.GetObj(playerID, IPY_GameWorld.gotPlayer)
-
- if openShopPlayer == None:
- return
-
- # 判断玩家间距离
- if not __CheckShopItemDist(watchPlayer, openShopPlayer):
- GameWorld.DebugLog("WatchShop dist error: shopPlayID=%s" % playerID, watchPlayer.GetPlayerID())
- return
-
- playerShop = openShopPlayer.GetPlayerShop()
-
- if not __CheckopenShopPlayer(watchPlayer, openShopPlayer, playerShop):
- return
-
- #添加查看这个摊位的玩家
- playerShop.AddWatchPlayer(watchPlayer)
- #添加查看对象
- watchPlayer.SetActionObj(openShopPlayer)
- #锁住玩家
- watchPlayer.BeginEvent()
- #设置玩家当前状态为查看摊位状态
- watchPlayerShop.SetIsWatchingShop(1)
- #告诉摊位信息
- watchPlayer.Sync_WatchShop(openShopPlayer)
- return
-
-#---------------------------------------------------------------------
-## 14 04 购买物品#tagCBuyItem
-## 购买物品
-# @param index 玩家索引
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def BuyItem(index, tick):
- watchPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
- # 判断购买等级
- if not __CheckShopPlayerLV(watchPlayer):
- PlayerControl.NotifyCode(watchPlayer, "GeRen_chenxin_93493")
- return
-
- watchPlayerShop = watchPlayer.GetPlayerShop()
- #不在查看状态
- if not watchPlayerShop.GetIsWatchingShop():
- GameWorld.Log("BuyItem error: watchPlayer is not in watch state!", watchPlayer.GetPlayerID())
- return
-
- if ItemControler.GetItemPackSpace(watchPlayer, IPY_GameWorld.rptItem) < 1:
- #Task_WinLost_RoomLack02 您的背包空间不足,请整理背包后再来
- PlayerControl.NotifyCode(watchPlayer, "Task_WinLost_RoomLack02")
- return
-
- sendPack = IPY_GameWorld.IPY_CBuyItem()
- shopItemIndex = sendPack.GetItemIndex()
- openShopPlayer = watchPlayer.GetActionPlayer()
-
- if openShopPlayer == None :
- GameWorld.Log("BuyItem -> 无对象" , watchPlayer.GetPlayerID())
- return
-
- # 判断买卖双方距离
- if not __CheckShopItemDist(watchPlayer, openShopPlayer):
- GameWorld.Log("BuyItem dist error: shopPlayID=%s" % openShopPlayer.GetPlayerID(), watchPlayer.GetPlayerID())
- return
-
- playerShop = openShopPlayer.GetPlayerShop()
-
- if not playerShop.GetIsStartShop():
- GameWorld.Log("BuyItem ->目标不在摆摊状态" , watchPlayer.GetPlayerID())
- return
-
- openShopPlayerPack = openShopPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-
- shopItem = playerShop.GetSellItemAt(shopItemIndex)
-
- if shopItem == None:
- GameWorld.Log("BuyItem ->无此摆摊物品 = %s" % (shopItemIndex) , watchPlayer.GetPlayerID())
- return
-
- buyItem = openShopPlayerPack.GetAt(shopItem.GetItemIndex())
-
- buyCount = sendPack.GetItemCount()
-
- buyItemMaxCount = buyItem.GetCount()
-
- # 检查购买物品数量
- if not __CheckBuyItem(watchPlayer, buyItem, buyCount, buyItemMaxCount):
- return
-
- costMoney = shopItem.GetSilver() * buyCount
- payType = IPY_GameWorld.TYPE_Price_Silver_Money
-
- # 判断对方金钱上限
- if PlayerControl.GetSilver(openShopPlayer) + costMoney > ChConfig.Def_PlayerTotalMoney_Silver:
- # 对不起,您携带的金钱已经达上限,操作无效
- # PlayerControl.NotifyCode(openShopPlayer, "GeRen_chenxin_609765")
- #GeRen_admin_917284 对不起,目标身上携带的金钱已经达上限,操作无效
- PlayerControl.NotifyCode(watchPlayer, "GeRen_admin_917284")
- return
-
- #付钱
- infoDict = {ChConfig.Def_Cost_Reason_SonKey:buyItem.GetItemTypeID()}
- if not PlayerControl.PayMoney(watchPlayer, payType, costMoney, ChConfig.Def_Cost_BuyStallItem, infoDict):
- GameWorld.ErrLog("BuyItem money not enough!!" , watchPlayer.GetPlayerID())
- return
-
- #收钱
- addDataDict = {ChConfig.Def_Give_Reason_SonKey:buyItem.GetItemTypeID()}
- PlayerControl.GiveMoney(openShopPlayer, payType, costMoney, ChConfig.Def_GiveMoney_StallItem, addDataDict)
-
- watchPlayerID = watchPlayer.GetPlayerID()
- openShopPlayerID = openShopPlayer.GetPlayerID()
-
- #-------------------------------检查完毕, 逻辑开始, 已经付钱
- #广播查看这个摊位的玩家信息
- openShopPlayer.View_BuyShopItemToAllShopBuyer(watchPlayer.GetPlayerID(),
- shopItemIndex, buyCount)
-
- watchPlayerIC = ItemControler.PlayerItemControler(watchPlayer)
- buyItemTypeID = buyItem.GetItemTypeID()
-
- #全部买走
- if buyCount == buyItemMaxCount:
- #将主角物品,转换为单独物品
- singItem = buyItem.GetItem()
- singItemID = singItem.GetItemTypeID()
- singItemGUID = singItem.GetGUID()
- singItemCount = singItem.GetCount()
-
- #详细记录装备信息
- equipNote = ItemCommon.GetItemNoteDict(singItem)
-
- #店铺删除这个物品
- playerShop.DeleteShopItem(shopItemIndex)
- #删除玩家这个格子的东西
- buyItem.Wipe()
-
- #输出系统提示
- #LostRes 您失去了<Info Type="Item" Name="Name" ID="{%S1%}"/>{%S2%}个
- PlayerControl.NotifyCode(openShopPlayer, "LostRes", [singItemID, buyCount])
- #ObtainRes01 您获得了<Info Type="Item" Name="Name" ID="{%S1%}"/>{%S2%}个
- PlayerControl.NotifyCode(watchPlayer, "ObtainRes01", [singItemID, buyCount])
-
- if not watchPlayerIC.PutInItem(IPY_GameWorld.rptItem, singItem):
- GameWorld.Log("###异常信息,放入玩家背包失败 playerID = %s" % (watchPlayerID) , openShopPlayerID , watchPlayerID)
- return False
-
- #买部分
- else:
- #创建一个物品放入
- newItem = ItemCommon.CreateSingleItem(buyItemTypeID)
-
- if newItem == None:
- GameWorld.Log("###异常信息,玩家 = %s商店 创建物品失败 = %s" % (openShopPlayerID , buyItemTypeID), openShopPlayerID , watchPlayerID)
- return
-
- ItemControler.SetItemCount(buyItem, buyItemMaxCount - buyCount,
- openShopPlayer.GetPlayerID(), openShopPlayer.GetAccID(),
- openShopPlayer.GetPlayerName())
- singItem = buyItem.GetItem()
- #详细装备信息
- newEquipNote = ItemCommon.GetItemNoteDict(newItem)
-
- #输出系统提示
- #LostRes 您失去了<Info Type="Item" Name="Name" ID="{%S1%}"/>{%S2%}个
- PlayerControl.NotifyCode(openShopPlayer, "LostRes", [buyItemTypeID, buyCount])
- #ObtainRes01 您获得了<Info Type="Item" Name="Name" ID="{%S1%}"/>{%S2%}个
- PlayerControl.NotifyCode(watchPlayer, "ObtainRes01", [buyItemTypeID, buyCount])
-
- ItemControler.SetItemCount(newItem, buyCount,
- watchPlayer.GetPlayerID(), watchPlayer.GetAccID(),
- watchPlayer.GetPlayerName())
- watchPlayerIC.PutInItem(IPY_GameWorld.rptItem, newItem)
-
- PlayerControl.NotifyCode(openShopPlayer, "GeRen_admin_367906", [buyItemTypeID])
- #买家店铺刷新
- openShopPlayer.Sync_ShopItem()
- return
-#---------------------------------------------------------------------
-## 检查是否可以购买,数量是否异常
-# @param curPlayer 当前玩家
-# @param sellItem 出售的物品
-# @param buyCount 购买数量
-# @param buyItemMaxCount 能购买最大数量
-# @return None or True
-# @remarks 函数详细说明.
-def __CheckBuyItem(curPlayer, sellItem, buyCount, buyItemMaxCount):
- if sellItem == None or sellItem.IsEmpty():
- #GameWorld.Log("无此购买物品")
- return
-
- if buyCount <= 0 or buyCount > buyItemMaxCount:
- #GeRen_admin_774664 <n color="255,255,0">对不起,您需要购买物数量不足,操作无效!</n> 25 - -
- PlayerControl.NotifyCode(curPlayer, "GeRen_admin_774664")
- #GameWorld.Log("购买数量异常 count = %s"%buyCount)
- return
-
- return True
-#---------------------------------------------------------------------
-## 检测是否有这个卖家
-# @param watchPlayer 观察者(没用到)
-# @param openShopPlayer 出售者
-# @param playerShop
-# @return None or True
-# @remarks 函数详细说明.
-def __CheckopenShopPlayer(watchPlayer, openShopPlayer , playerShop):
- if openShopPlayer == None:
- GameWorld.DebugLog("查无此摆摊玩家:shopPlayerID=%s" % openShopPlayer.GetPlayerID(), watchPlayer.GetPlayerID())
- return
-
- if not playerShop.GetIsStartShop():
- GameWorld.DebugLog("摆摊玩家未摆摊:shopPlayerID=%s" % openShopPlayer.GetPlayerID(), watchPlayer.GetPlayerID())
- return
-
- return True
-
-#---------------------------------------------------------------------
-## 检测摆摊石还能不能用
-# @param curPlayer 当前玩家
-# @param shopItem 摆摊石
-# @param shopLV 商店等级
-# @return None or True
-# @remarks 函数详细说明.
-def __CheckShopItem(curPlayer, shopItem, shopLV):
- if shopLV == 1:
- return True
-
- if shopItem.IsEmpty():
- #GameWorld.Log("无摆摊石")
- return
-
- #===========================================================================
- # if shopItem.GetCurDurg() <= 0:
- # #GameWorld.Log("摆摊石,无耐久")
- # return
- #===========================================================================
-
- effIndex = shopItem.GetEffectByIndex(0)
-
- if effIndex.GetEffectID() != ChConfig.Def_Item_Effect_ShopItem or effIndex.GetEffectValue(0) != shopLV:
- #GameWorld.Log("摆摊石不符合要求,等级错误")
- return
-
- return True
-#---------------------------------------------------------------------
-## 人物到商店的距离 是否在规定距离内
-# @param curPlayer
-# @param curTagPlayer
-# @return True or False
-# @remarks 函数详细说明.
-def __CheckShopItemDist(curPlayer, curTagPlayer):
- dist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(),
- curTagPlayer.GetPosX(), curTagPlayer.GetPosY())
-
- return ChConfig.Def_ShopItem_Dist > dist
-#---------------------------------------------------------------------
-## 摆摊者关闭摆摊
-# @param curPlayer 摆摊者
-# @param playerShop 玩家的摊位
-# @return None
-# @remarks 函数详细说明.
-def DoExitShop(curPlayer , playerShop):
-#===============================================================================
-# GameWorld.Log("DoExitShop -> 结束摆摊" , curPlayer.GetPlayerID())
-# itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-#
-# #将还在销售栏中背包对应的物品接锁
-# for i in range(playerShop.GetSellCount()):
-# sellItem = playerShop.GetSellItemAt(i)
-#
-# if sellItem == None:
-# GameWorld.ErrLog("结束摆摊异常,无此摆摊物品 , index = %s" % i , curPlayer.GetPlayerID())
-# continue
-#
-# roleItemIndex = sellItem.GetItemIndex()
-# roleItem = itemPack.GetAt(roleItemIndex)
-# #一定有物品
-# if roleItem == None or roleItem.IsEmpty():
-# GameWorld.ErrLog("结束摆摊异常,玩家解锁物品背包index = %s" % (roleItemIndex) , curPlayer.GetPlayerID())
-# continue
-#
-# roleItem.SetIsEventLocked(False)
-#
-# #解开查看当前摊位的玩家
-# for i in range(playerShop.GetWatchPlayersCount()):
-# watchPlayer = playerShop.GetWatchPlayersAt(i)
-#
-# if watchPlayer == None:
-# GameWorld.ErrLog("结束摆摊异常,查看摆摊玩家,无此玩家,index = %s" % i , curPlayer.GetPlayerID())
-# continue
-#
-# watchPlayer.ExitEvent()
-#
-# # 奇迹不需要摆摊石
-# # shopItem = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip).GetAt(IPY_GameWorld.retShopping)
-# # #摆摊石扣耐久
-# # __ReduceShopItem(curPlayer, shopItem , playerShop.GetShopLV())
-#
-# #玩家广播结束摆摊
-# curPlayer.View_CloseShop()
-# #清空查看这个摊位的玩家信息
-# playerShop.ClearWatchPlayer()
-# #清空商店
-# playerShop.Clear()
-#===============================================================================
- return
-
-#---------------------------------------------------------------------
-## 摆摊石减耐久
-# @param curPlayer 玩家
-# @param shopItem 摆摊石
-# @param shopLV 商店等级
-# @return None
-# @remarks 函数详细说明.
-#===============================================================================
-# def __ReduceShopItem(curPlayer, shopItem , shopLV):
-# if not __CheckShopItem(curPlayer, shopItem, shopLV):
-# GameWorld.Log('###摆摊石扣除耐久失败,无法查找摆摊石 = %s' % (shopLV) , curPlayer.GetPlayerID())
-# return
-#
-# shopItem.SetCurDurg(shopItem.GetCurDurg() - ChConfig.Def_Endure_Transform)
-# if shopItem.GetCurDurg() == 0 and shopItem.GetNoEndureDisappear():
-# shopItem.Clear()
-#
-# return
-#===============================================================================
-
-## 检查摆摊等级
-# @param curPlayer 玩家
-# @return None
-# @remarks 函数详细说明.
-def __CheckShopPlayerLV(curPlayer):
- tradeLVLimit = ReadChConfig.GetEvalChConfig("TradeLVLimit")
-
- if curPlayer.GetLV() < tradeLVLimit:
- return False
- return True
--
Gitblit v1.8.0