From b4b72d0c241ffc26dbbbd7a047578f1f4fead2f4 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 09 十二月 2021 16:11:53 +0800
Subject: [PATCH] 9341 【BT5】【主干】【后端】情缘系统(Couple命令增加添加喜糖宴会;修复多个喜糖宴会同时存在时吃喜糖同步错误bug)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py | 76 ++++++++++++++++++++++++++++++++++++--
1 files changed, 72 insertions(+), 4 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
index 3be21b8..3fbf392 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
@@ -36,7 +36,7 @@
import GameFuncComm
import PlayerTJG
import IpyGameDataPY
-import json
+import cPickle
import time
import random
@@ -591,7 +591,7 @@
return
#请求记录申请进入家族信息
- sendMsg = json.dumps([familyID, curPlayer.GetFightPower()])
+ sendMsg = cPickle.dumps([familyID, PlayerControl.GetFightPower(curPlayer)], 2)
curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_AddFamilyAction,
ShareDefine.Def_ActionType_FamilyAdd, '', sendMsg, len(sendMsg))
@@ -746,7 +746,7 @@
## 添加家族事件记录
def AddFamilyEventNote(curPlayer, eventType, valueList):
##同步记录到GameServer, eventType默认为value1
- sendMsg = json.dumps([eventType] + valueList, ensure_ascii=False)
+ sendMsg = cPickle.dumps([eventType] + valueList, 2)
curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_AddFamilyAction, ShareDefine.Def_ActionType_FamilyEvent, '', sendMsg, len(sendMsg))
GameWorld.DebugLog("AddFamilyEventNote sendMsg=%s" % sendMsg)
return
@@ -932,4 +932,72 @@
clientPack = ChPyNetSendPack.tagMCFamilyDayAward()
clientPack.GetState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyDayAward)
NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
\ No newline at end of file
+ return
+
+
+#// A6 06 家族兑换活跃令 #tagCMFamilyActivityExchange
+#
+#struct tagCMFamilyActivityExchange
+#{
+# tagHead Head;
+# BYTE Count; //材料所在背包索引的数量
+# WORD IndexList[Count]; //材料所在背包索引列表
+# DWORD ItemIDList[Count]; //材料所在背包物品ID列表
+#};
+## 家族兑换活跃令
+# @param playerIndex 玩家索引
+# @param clientData 客户端封包
+# @param tick 时间
+# @return None
+def OnFamilyActivityExchange(index, clientData, tick):
+ curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+ if not clientData.Count:
+ return
+ playerID = curPlayer.GetID()
+ eatIndexList = clientData.IndexList
+ eatItemIDList = clientData.ItemIDList
+ givePoint = 0 #分解得到活跃令
+ familyDonateDict = IpyGameDataPY.GetFuncEvalCfg('FamilyDonate', 1, {})
+ familyDonateSpecialDict = IpyGameDataPY.GetFuncEvalCfg('FamilyDonate', 2, {})
+ itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+ for i, index in enumerate(eatIndexList):
+ eatItem = itemPack.GetAt(index)
+ if not ItemCommon.CheckItemCanUse(eatItem):
+ GameWorld.DebugLog("物品不可用,无法兑换!itemIndex=%s" % index)
+ continue
+ eatItemID = eatItem.GetItemTypeID()
+ if eatItemID != eatItemIDList[i]:
+ GameWorld.Log('家族兑换活跃令 发的物品ID不对应index=%s eatItemID=%s,ItemIDList[i]=%s' % (index, eatItemID, eatItemIDList[i]), playerID)
+ continue
+ #if eatItem.GetIsBind():
+ # GameWorld.DebugLog("装备已绑定,无法兑换!itemIndex=%s" % index)
+ # continue
+ if eatItem.GetEndureReduceType():
+ GameWorld.DebugLog("有时效耐久物品,无法兑换!itemIndex=%s" % index)
+ continue
+ if eatItemID in familyDonateSpecialDict:
+ addPoint = familyDonateSpecialDict[eatItemID]
+ else:
+ if not ItemCommon.CheckItemIsEquip(eatItem):
+ GameWorld.DebugLog("非装备,无法兑换!itemIndex=%s" % index)
+ continue
+ itemColor = eatItem.GetItemColor()
+ if str(itemColor) not in familyDonateDict:
+ continue
+ isSuite = eatItem.GetSuiteID()
+ addPoint = familyDonateDict[str(itemColor)][1 if isSuite else 0]
+ itemCnt = eatItem.GetCount()
+ givePoint += addPoint * itemCnt
+ ItemCommon.DelItem(curPlayer, eatItem, itemCnt, True, ChConfig.ItemDel_FamilyStore, {'addPoint':addPoint}, True)
+
+ if not givePoint:
+ GameWorld.DebugLog("家族兑换活跃令,没有装备可兑换!")
+ return
+ PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyActivity, givePoint)
+
+ #通知结果
+ packData = ChPyNetSendPack.tagMCFamilyActivityExchangeResult()
+ packData.Clear()
+ packData.Point = givePoint
+ NetPackCommon.SendFakePack(curPlayer, packData)
+ return
--
Gitblit v1.8.0