From cc67f06bbf1bd011da40d20456d36ab2f0b667f9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 22 十月 2025 10:54:18 +0800
Subject: [PATCH] 16 卡牌服务端(删除家族仓库)
---
/dev/null | 276 -----------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 16 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 5
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 179 --------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 202 ----------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 7
6 files changed, 4 insertions(+), 681 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index 15547e7..ff03d39 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -274,22 +274,6 @@
PacketSubCMD_1=0x16
PacketCallFunc_1=OnZhenbaogeOP
-;家族仓库
-[PlayerFamilyStore]
-ScriptName = Player\PlayerFamilyStore.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 2
-
-PacketCMD_1=0xA6
-PacketSubCMD_1=0x09
-PacketCallFunc_1=OnFamilyStoreDonate
-
-PacketCMD_2=0xA6
-PacketSubCMD_2=0x10
-PacketCallFunc_2=OnFamilyStoreExchange
-
;家族阵法
[PlayerFamilyZhenfa]
ScriptName = Player\PlayerFamilyZhenfa.py
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index e328ff4..f88214d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3123,7 +3123,6 @@
Def_PlayerKey_BuyItemCnt = "BuyItemCnt" # 购买物品数量
Def_PlayerKey_SpeedHorse = "SpeedHorse" # 骑乘时附加移动速度值
Def_PlayerKey_QueryOpenServerAwardState = "QueryOpenServerAwardState" # 查询开服奖励状态
-Def_PlayerKey_QueryFamilyStoreTick = "QueryFamilyStoreTick" # 战盟仓库操作tick
Def_PlayerKey_QueryMarkIdCardIndex = 'QueryMarkIdCardIndex' # 指定账号生成卡类型
Def_PlayerKey_QueryNewGuyCardType = 'QueryNewGuyCardType' # 查询的新手卡类型
@@ -4513,7 +4512,7 @@
ItemGive_OpenServerCampaign, # 开服活动
ItemGive_CTG, # CTG
ItemGive_DiceEx, # 我要天机 15
-ItemGive_FamilyStore, # 仙盟宝库
+ItemGive_16, # 仙盟宝库
ItemGive_Refine, # 炼丹
ItemGive_Chests, # 宝箱
ItemGive_TrialExchange, # 宗门兑换
@@ -4539,7 +4538,6 @@
ItemGive_OpenServerCampaign:"OpenServerCampaign",
ItemGive_CTG:"CTG",
ItemGive_DiceEx:"DiceEx",
- ItemGive_FamilyStore:"FamilyStore",
ItemGive_Refine:"Refine",
ItemGive_Chests:"Chests",
ItemGive_TrialExchange:"TrialExchange",
@@ -4569,7 +4567,7 @@
ItemDel_AttrFruit, # 属性道具
ItemDel_AddBourseItem, # 上架交易所
ItemDel_EquipDecompose, # 装备分解
-ItemDel_FamilyStore, # 捐献装备 20
+ItemDel_20, # 捐献装备 20
ItemDel_Treasure, # 寻宝
ItemDel_WingExp, # 翅膀精炼经验
ItemDel_StoneUpgrade, # 宝石升级
@@ -4620,7 +4618,6 @@
ItemDel_AttrFruit:"AttrFruit",
ItemDel_AddBourseItem:"AddBourseItem",
ItemDel_EquipDecompose:"EquipDecompose",
- ItemDel_FamilyStore:"FamilyStore",
ItemDel_Treasure:"Treasure",
ItemDel_WingExp:"WingExp",
ItemDel_StoneUpgrade:"StoneUpgrade",
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index bfe39f1..ee06bbe 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -4236,73 +4236,6 @@
#------------------------------------------------------
-# A4 09 家族仓库删除物品 #tagCGFamilyStoreDel
-
-class tagCGFamilyStoreDel(Structure):
- Head = tagHead()
- IndexCount = 0 #(BYTE IndexCount)
- StoreItemIndex = list() #(vector<BYTE> StoreItemIndex)// 仓库物品索引,1代表索引0的物品,与兑换一致
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA4
- self.Head.SubCmd = 0x09
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.IndexCount):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.StoreItemIndex.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA4
- self.Head.SubCmd = 0x09
- self.IndexCount = 0
- self.StoreItemIndex = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1 * self.IndexCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.IndexCount)
- for i in range(self.IndexCount):
- data = CommFunc.WriteBYTE(data, self.StoreItemIndex[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- IndexCount:%d,
- StoreItemIndex:%s
- '''\
- %(
- self.Head.OutputString(),
- self.IndexCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagCGFamilyStoreDel=tagCGFamilyStoreDel()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGFamilyStoreDel.Head.Cmd,m_NAtagCGFamilyStoreDel.Head.SubCmd))] = m_NAtagCGFamilyStoreDel
-
-
-#------------------------------------------------------
#A4 03 加入家族审核情况 #tagCGJoinFamilyReply
class tagCGJoinFamilyReply(Structure):
@@ -8613,118 +8546,6 @@
m_NAtagCMFamilyMoneyDonate=tagCMFamilyMoneyDonate()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyMoneyDonate.Cmd,m_NAtagCMFamilyMoneyDonate.SubCmd))] = m_NAtagCMFamilyMoneyDonate
-
-
-#------------------------------------------------------
-# A6 09 家族仓库捐赠物品 #tagCMFamilyStoreDonate
-
-class tagCMFamilyStoreDonate(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("ItemIndex", c_ubyte), # 捐赠物品在背包中的索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA6
- self.SubCmd = 0x09
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA6
- self.SubCmd = 0x09
- self.ItemIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMFamilyStoreDonate)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A6 09 家族仓库捐赠物品 //tagCMFamilyStoreDonate:
- Cmd:%s,
- SubCmd:%s,
- ItemIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.ItemIndex
- )
- return DumpString
-
-
-m_NAtagCMFamilyStoreDonate=tagCMFamilyStoreDonate()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyStoreDonate.Cmd,m_NAtagCMFamilyStoreDonate.SubCmd))] = m_NAtagCMFamilyStoreDonate
-
-
-#------------------------------------------------------
-# A6 10 家族仓库兑换物品 #tagCMFamilyStoreExchange
-
-class tagCMFamilyStoreExchange(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("StoreItemIndex", c_ubyte), # 0-兑换口粮;>0-兑换仓库物品,1代表索引0的物品
- ("ItemID", c_int), # 兑换的物品ID
- ("ExcangeCount", c_ushort), # 兑换个数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA6
- self.SubCmd = 0x10
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA6
- self.SubCmd = 0x10
- self.StoreItemIndex = 0
- self.ItemID = 0
- self.ExcangeCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMFamilyStoreExchange)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A6 10 家族仓库兑换物品 //tagCMFamilyStoreExchange:
- Cmd:%s,
- SubCmd:%s,
- StoreItemIndex:%d,
- ItemID:%d,
- ExcangeCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.StoreItemIndex,
- self.ItemID,
- self.ExcangeCount
- )
- return DumpString
-
-
-m_NAtagCMFamilyStoreExchange=tagCMFamilyStoreExchange()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyStoreExchange.Cmd,m_NAtagCMFamilyStoreExchange.SubCmd))] = m_NAtagCMFamilyStoreExchange
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 5938ce6..6c92a45 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -10631,208 +10631,6 @@
#------------------------------------------------------
-# A4 06 家族仓库物品信息 #tagGCFamilyStoreItemInfo
-
-class tagGCFamilyStoreItem(Structure):
- Index = 0 #(BYTE Index)// 仓库格子索引,从0开始代表第一格
- ItemID = 0 #(DWORD ItemID)// 物品ID
- ItemDataLen = 0 #(WORD ItemDataLen)
- ItemData = "" #(String ItemData)//size = ItemDataLen
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.Index,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ItemDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataLen)
- return _pos
-
- def Clear(self):
- self.Index = 0
- self.ItemID = 0
- self.ItemDataLen = 0
- self.ItemData = ""
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 4
- length += 2
- length += len(self.ItemData)
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.Index)
- data = CommFunc.WriteDWORD(data, self.ItemID)
- data = CommFunc.WriteWORD(data, self.ItemDataLen)
- data = CommFunc.WriteString(data, self.ItemDataLen, self.ItemData)
- return data
-
- def OutputString(self):
- DumpString = '''
- Index:%d,
- ItemID:%d,
- ItemDataLen:%d,
- ItemData:%s
- '''\
- %(
- self.Index,
- self.ItemID,
- self.ItemDataLen,
- self.ItemData
- )
- return DumpString
-
-
-class tagGCFamilyStoreItemInfo(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//数量
- StoreItemList = list() #(vector<tagGCFamilyStoreItem> StoreItemList)//size = Count
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA4
- self.Head.SubCmd = 0x06
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temStoreItemList = tagGCFamilyStoreItem()
- _pos = temStoreItemList.ReadData(_lpData, _pos)
- self.StoreItemList.append(temStoreItemList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA4
- self.Head.SubCmd = 0x06
- self.Count = 0
- self.StoreItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Count):
- length += self.StoreItemList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteString(data, self.StoreItemList[i].GetLength(), self.StoreItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- StoreItemList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCFamilyStoreItemInfo=tagGCFamilyStoreItemInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemInfo.Head.Cmd,m_NAtagGCFamilyStoreItemInfo.Head.SubCmd))] = m_NAtagGCFamilyStoreItemInfo
-
-
-#------------------------------------------------------
-# A4 07 家族仓库物品清除 #tagGCFamilyStoreItemClear
-
-class tagGCFamilyStoreItemClear(Structure):
- Head = tagHead()
- ClearType = 0 #(BYTE ClearType)//0-指定格子清除; 1-所有物品清除
- IndexCount = 0 #(BYTE IndexCount)
- IndexList = list() #(vector<BYTE> IndexList)//清除的格子索引, 仅指定格子清除时有效,从0开始代表第一格
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA4
- self.Head.SubCmd = 0x07
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.ClearType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.IndexCount):
- value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
- self.IndexList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA4
- self.Head.SubCmd = 0x07
- self.ClearType = 0
- self.IndexCount = 0
- self.IndexList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- length += 1 * self.IndexCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.ClearType)
- data = CommFunc.WriteBYTE(data, self.IndexCount)
- for i in range(self.IndexCount):
- data = CommFunc.WriteBYTE(data, self.IndexList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- ClearType:%d,
- IndexCount:%d,
- IndexList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.ClearType,
- self.IndexCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagGCFamilyStoreItemClear=tagGCFamilyStoreItemClear()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyStoreItemClear.Head.Cmd,m_NAtagGCFamilyStoreItemClear.Head.SubCmd))] = m_NAtagGCFamilyStoreItemClear
-
-
-#------------------------------------------------------
# A4 09 家族守卫人皇信息通知 #tagGCFamilySWRHInfo
class tagGCFamilySWRHInfo(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyStore.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyStore.py
deleted file mode 100644
index 325ade2..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyStore.py
+++ /dev/null
@@ -1,276 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerFamilyStore
-#
-# @todo:战盟宝库
-# @author hxp
-# @date 2017-09-09
-# @version 1.0
-#
-# 详细描述: 战盟宝库
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2017-09-09 18:30"""
-#-------------------------------------------------------------------------------
-import GameWorld
-import ItemCommon
-import IPY_GameWorld
-import IpyGameDataPY
-import PlayerControl
-import ItemControler
-import ShareDefine
-import ChConfig
-
-import math
-
-#// A6 09 家族仓库捐赠物品 #tagCMFamilyStoreDonate
-#
-#struct tagCMFamilyStoreDonate
-#{
-# tagHead Head;
-# BYTE ItemIndex; // 捐赠物品在背包中的索引
-#};
-def OnFamilyStoreDonate(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- itemIndex = clientData.ItemIndex
- familyID = curPlayer.GetFamilyID()
- if not familyID:
- GameWorld.DebugLog("没有战盟,无法捐赠!", curPlayer.GetPlayerID())
- return
-
- itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- curItem = itemPack.GetAt(itemIndex)
- if not ItemCommon.CheckItemCanUse(curItem):
- GameWorld.DebugLog("物品不可用,无法捐赠!itemIndex=%s" % itemIndex)
- return
- if curItem.GetIsBind():
- GameWorld.DebugLog("装备已绑定,无法捐赠!itemIndex=%s" % itemIndex)
- return
- if curItem.GetEndureReduceType():
- GameWorld.DebugLog("有时效耐久物品,无法捐赠!itemIndex=%s" % itemIndex)
- return
- if not ItemCommon.CheckItemIsEquip(curItem):
- GameWorld.DebugLog("非装备,无法捐赠!itemIndex=%s" % itemIndex)
- return
- if ItemCommon.CheckHasStone(curItem):
- GameWorld.DebugLog("装备有宝石,无法捐赠!itemIndex=%s" % itemIndex)
- return
-
- curPlaceRule = None
- equipPlace = curItem.GetEquipPlace()
- # 暂定最多支持1~5种规则
- for i in xrange(1, 6):
- itemRule = IpyGameDataPY.GetFuncCfgIpyData("FamilyStoreItemRule%s" % i)
- if not itemRule:
- break
- if equipPlace in itemRule.GetNumerical1():
- curPlaceRule = itemRule.GetNumerical2()
- break
-
- if not curPlaceRule:
- GameWorld.ErrLog("找不到该装备位对应的捐赠规则,无法捐赠!equipPlace=%s" % equipPlace)
- return
- reqClassLV, reqStar, reqColor = curPlaceRule
-
- itemClassLV = ItemCommon.GetItemClassLV(curItem)
- itemStar = curItem.GetItemQuality()
- itemColor = curItem.GetItemColor()
- if itemClassLV < reqClassLV:
- GameWorld.DebugLog("装备阶级不足,不能捐赠!itemIndex=%s,equipPlace=%s,reqClassLV=%s > itemClassLV=%s"
- % (itemIndex, equipPlace, reqClassLV, itemClassLV))
- return
- if itemStar < reqStar:
- GameWorld.DebugLog("装备星级不足,不能捐赠!itemIndex=%s,equipPlace=%s,reqStar=%s > itemStar=%s"
- % (itemIndex, equipPlace, reqStar, itemStar))
- return
- if itemColor < reqColor:
- GameWorld.DebugLog("装备颜色不足,不能捐赠!itemIndex=%s,equipPlace=%s,reqColor=%s > itemColor=%s"
- % (itemIndex, equipPlace, reqColor, itemColor))
- return
-
- ipyData = IpyGameDataPY.GetIpyGameData("PetEatEquip", itemColor, itemClassLV)
- if not ipyData or not ipyData.GetFamilyStoreItemScore():
- GameWorld.DebugLog("该装备没有配置捐赠积分,无法捐赠!itemColor=%s,itemClassLV=%s" % (itemColor, itemClassLV))
- return
- itemScore = ipyData.GetFamilyStoreItemScore()
-
- if not __CheckCanFamilyStoreOperate(curPlayer, tick):
- return
-
- msgList = ["DonateReq", itemIndex, itemScore, curItem.GetGUID()]
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "FamilyStore",
- '%s' % (msgList), len(str(msgList)))
- return
-
-
-def __DoFamilyStoreDonateItem(curPlayer, itemIndex, itemScore, itemGUID):
- itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- curItem = itemPack.GetAt(itemIndex)
- if not ItemCommon.CheckItemCanUse(curItem):
- GameWorld.ErrLog("捐赠仙盟物品失败!物品不可用!itemIndex=%s,itemGUID=%s" % (itemIndex, itemGUID), curPlayer.GetPlayerID())
- return
- if itemGUID != curItem.GetGUID():
- GameWorld.ErrLog("捐赠仙盟物品失败!物品GUID不一致!itemIndex=%s,itemGUID=%s,newGUID=%s"
- % (itemIndex, itemGUID, curItem.GetGUID()), curPlayer.GetPlayerID())
- return
- itemID = curItem.GetItemTypeID()
- userData = curItem.GetUserData()
- itemDict = {"ItemID":itemID, "IsSuit":int(curItem.GetIsSuite()), "UserData":userData, "EquipGS":ItemCommon.GetEquipGearScore(curItem)}
- # 删除物品, 捐赠的默认为装备,只扣除数量1
- ItemCommon.DelItem(curPlayer, curItem, 1, False, ChConfig.ItemDel_FamilyStore)
-
- # 增加捐赠积分
- PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyStoreScore, itemScore)
-
- # 广播战盟频道
- PlayerControl.FamilyNotify(curPlayer.GetFamilyID(), "TreasuryDonation", [curPlayer.GetName(), itemID, userData])
-
- # 同步到GameServer仓库保存
- msgList = ["DonateItem", itemDict]
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "FamilyStore",
- '%s' % (msgList), len(str(msgList)))
- return
-
-def OnFamilyStoreQueryResult(curPlayer, result):
-
- opType = result[0]
- # 捐献请求返回
- if opType == "DonateReq":
- itemIndex, itemScore, itemGUID, hasSpace = result[1:]
- if hasSpace:
- __DoFamilyStoreDonateItem(curPlayer, itemIndex, itemScore, itemGUID)
- return
- GameWorld.DebugLog("战盟仓库没有空间,无法捐赠!")
-
- # 捐献物品结果返回
- elif opType == "DonateItem":
- pass
-
- # 兑换物品
- elif opType == "Exchange":
- itemID = result[2]
- needScore = result[3]
- itemDict = result[4]
- if itemDict:
- # 兑换装备默认1个,不绑定
- __DoGiveExchangeItem(curPlayer, itemID, 1, False, needScore, itemDict)
-
- curPlayer.SetDict(ChConfig.Def_PlayerKey_QueryFamilyStoreTick, 0)
- return
-
-
-#// A6 10 家族仓库兑换物品 #tagCMFamilyStoreExchange
-#
-#struct tagCMFamilyStoreExchange
-#{
-# tagHead Head;
-# BYTE StoreItemIndex; // 0-兑换口粮;>0-兑换仓库物品,1代表索引0的物品
-# DWORD ItemID; // 兑换的物品ID
-# WORD ExcangeCount; // 兑换个数
-#};
-def OnFamilyStoreExchange(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- itemIndex = clientData.StoreItemIndex
- itemID = clientData.ItemID
- excangeCount = clientData.ExcangeCount
-
- # 灵宠口粮兑换
- if itemIndex <= 0:
- __DoExchangePetFood(curPlayer, excangeCount)
- return
-
- # 非口粮兑换的话默认兑换1个
- hasSpace = ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem)
- if not hasSpace:
- GameWorld.DebugLog("背包没有空间,无法兑换!")
- return
-
- itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
- if not itemData:
- GameWorld.DebugLog("兑换物品ID不存在!itemID=%s" % itemID)
- return
-
- itemClassLV = ItemCommon.GetItemClassLV(itemData)
- itemColor = itemData.GetItemColor()
-
- ipyData = IpyGameDataPY.GetIpyGameData("PetEatEquip", itemColor, itemClassLV)
- if not ipyData or not ipyData.GetFamilyStoreItemScore():
- GameWorld.DebugLog("该装备没有配置捐赠积分,无法兑换!itemColor=%s,itemClassLV=%s" % (itemColor, itemClassLV))
- return
-
- needScore = ipyData.GetFamilyStoreItemScore() # 兑换所需积分
- if not PlayerControl.HaveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyStoreScore, needScore):
- GameWorld.DebugLog("仓库积分不足兑换!needScore=%s" % (needScore))
- return
-
- if not __CheckCanFamilyStoreOperate(curPlayer, tick):
- return
-
- msgList = ["Exchange", itemIndex - 1, itemID, needScore]
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "FamilyStore",
- '%s' % (msgList), len(str(msgList)))
- return
-
-def __DoExchangePetFood(curPlayer, excangeCount):
- petFoodExchange = IpyGameDataPY.GetFuncCfgIpyData("PetFoodExchange")
- petFoodID = petFoodExchange.GetNumerical1()
- petFoodCount = petFoodExchange.GetNumerical2() # 单次兑换获得的个数
- petFoodScore = petFoodExchange.GetNumerical3()
-
- itemData = GameWorld.GetGameData().GetItemByTypeID(petFoodID)
- if not itemData:
- return
-
- totalCount = excangeCount * petFoodCount
- packCount = itemData.GetPackCount() # 堆叠上限
- needSpace = int(math.ceil((totalCount) / float(packCount)))
- spaceCount = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
-
- if spaceCount < needSpace:
- GameWorld.DebugLog("背包空间不足,无法兑换口粮!excangeCount=%s,needSpace=%s > spaceCount=%s"
- % (excangeCount, needSpace, spaceCount))
- return
-
- costScore = petFoodScore * excangeCount
- if not PlayerControl.HaveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyStoreScore, costScore):
- GameWorld.DebugLog("仓库积分不足兑换!costScore=%s" % (costScore))
- return
-
- # 兑换口粮默认绑定
- __DoGiveExchangeItem(curPlayer, petFoodID, totalCount, True, costScore)
- return
-
-def __DoGiveExchangeItem(curPlayer, itemID, itemCount, isBind, costScore, itemDict={}):
- # 扣钱
- PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_FamilyStoreScore, costScore)
-
- # 给物品
- if itemDict:
- pass
- #itemDict['IsBind'] = isBind
- #ItemControler.GivePlayerEquip(curPlayer, itemDict, event=[ChConfig.ItemGive_FamilyStore, False, {}])
- else:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem],
- event=[ChConfig.ItemGive_FamilyStore, False, {}])
-
- # 广播战盟频道
- PlayerControl.FamilyNotify(curPlayer.GetFamilyID(), "TreasuryExchange",
- [curPlayer.GetName(), costScore, itemID, itemDict.get("UserData","")])
-
- GameWorld.DebugLog("__DoGiveExchangeItem, itemID=%s,itemCount=%s,isBind=%s,costScore=%s,itemDict=%s"
- % (itemID, itemCount, isBind, costScore, itemDict))
- return
-
-
-def __CheckCanFamilyStoreOperate(curPlayer, tick):
- ## 检查战盟仓库操作CD
- lastTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_QueryFamilyStoreTick)
- if lastTick and tick - lastTick < 5000:
- GameWorld.DebugLog("战盟仓库操作CD中..., 无法处理!", curPlayer.GetPlayerID())
- return False
- curPlayer.SetDict(ChConfig.Def_PlayerKey_QueryFamilyStoreTick, tick)
- return True
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 3f4aa3a..a696439 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -611,7 +611,7 @@
CDBPlayerRefresh_ProDefHPPer, # 生命上限换算为防护值的百分比 165
CDBPlayerRefresh_ProDefAbsorb, # 防护盾吸收伤害百分比
CDBPlayerRefresh_FamilyContribution, # 战盟贡献度
-CDBPlayerRefresh_FamilyStoreScore, # 战盟仓库积分
+CDBPlayerRefresh_168, # 战盟仓库积分
CDBPlayerRefresh_Rune, # 符印精华点
CDBPlayerRefresh_RuneSplinters, # 符印碎片 170
CDBPlayerRefresh_RealmPoint, # 境界修炼点
@@ -734,7 +734,7 @@
TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子)
TYPE_Price_FamilyExp = 6 # 战盟经验
-TYPE_Price_FamilyStoreScore = 10 # 战盟仓库积分
+TYPE_Price_10 = 10 # 战盟仓库积分
TYPE_Price_RealmPoint = 13 # 境界修炼点
TYPE_Price_Ysog = 14 # 魔精
TYPE_Price_FamilyCoin = 15 # 仙盟公会贡献币
@@ -794,7 +794,6 @@
# 自定义积分及通知字典 {货币类型:通知客户端刷新类型, ...} , 如果不通知的话刷新类型则配置 None
TYPE_Price_CurrencyDict = {
- TYPE_Price_FamilyStoreScore:CDBPlayerRefresh_FamilyStoreScore,
TYPE_Price_Rune:CDBPlayerRefresh_Rune,
TYPE_Price_RuneSplinters:CDBPlayerRefresh_RuneSplinters,
TYPE_Price_TreasureScore:CDBPlayerRefresh_TreasureScore,
--
Gitblit v1.8.0