From 23876f36a929f7e8f1fe94ae543b03bc24a61f1e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 25 二月 2025 20:24:08 +0800
Subject: [PATCH] 10263 【越南】【英文】【BT】【GM】【砍树】后端支持NPC仿真实玩家战斗和快速战斗(镜像回收时同步清除地图中缓存的镜像被动buff效果;)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py | 58 +++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 39 insertions(+), 19 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
index 0067b13..1c95448 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
@@ -24,6 +24,7 @@
import ChPyNetSendPack
import PlayerCompensation
import PlayerDBGSEvent
+import PlayerViewCache
import PlayerControl
import PlayerFamily
import PyGameData
@@ -78,6 +79,7 @@
#value4 moneyType
#value5 getMoney
#strValue1 名字
+ #strValue2 face|facePic
recData.SetValue1(grabObj.redPacketID)
recData.SetValue2(grabObj.playerID)
@@ -85,6 +87,7 @@
recData.SetValue4(grabObj.moneyType)
recData.SetValue5(grabObj.getMoney)
recData.SetStrValue1(grabObj.playerName)
+ recData.SetStrValue2('%s|%s' % (grabObj.face, grabObj.facePic))
return
class RedPacketGrab():
@@ -97,6 +100,8 @@
self.playerName = ""
self.moneyType = 0
self.getMoney = 0
+ self.face = 0
+ self.facePic = 0
return
class RedPacketData():
@@ -356,11 +361,15 @@
if not redPacketObj:
continue
+ strValue2List = recData.GetStrValue2().split('|')
+
grabObj = RedPacketGrab(redPacketID, playerID)
grabObj.playerJob = recData.GetValue3()
grabObj.playerName = recData.GetStrValue1()
grabObj.moneyType = recData.GetValue4()
grabObj.getMoney = recData.GetValue5()
+ grabObj.face = GameWorld.ToIntDef(strValue2List[0]) if len(strValue2List) > 0 else 0
+ grabObj.facePic = GameWorld.ToIntDef(strValue2List[1]) if len(strValue2List) > 1 else 0
redPacketObj.grabDict[playerID] = grabObj
@@ -448,6 +457,14 @@
PlayerDBGSEvent.SetDBGSTrig_ByKey(DBKey_RedPacketSystemDayCount, 0) # 重置每日全服系统红包发放个数
RandTodayServerSystemRedPacketSendTime()
return
+
+def GetRedPackGetWayType(getWay):
+ ## 获取红包getWay所属红包分类
+ getWayTypeDict = IpyGameDataPY.GetFuncEvalCfg("RedPacketClassify", 1, {})
+ for getWayType, getWayList in getWayTypeDict.items():
+ if getWay in getWayList:
+ return getWayType
+ return ShareDefine.RedPackWayType_Family
def CheckDelRedpacketData():
## 检查红包删除红包,5分钟一次: 1-删除过期红包,2-删除已全部抢完的红包
@@ -945,6 +962,9 @@
def CreateSystemRedPacket(redPackID):
## 发放系统红包
+ if IpyGameDataPY.GetFuncCfg("RedPacketClassify", 2):
+ GameWorld.DebugLog("未开放红包发放! redPackID=%s" % redPackID)
+ return
ipyData = IpyGameDataPY.GetIpyGameData('FamilyRedPack', redPackID)
if not ipyData:
return
@@ -961,7 +981,8 @@
PlayerDBGSEvent.SetDBGSTrig_ByKey(DBKey_RedPacketSend % redPackID, 1)
GameWorld.DebugLog("定时发放的红包,设置已发放! redPackID=%s" % redPackID)
- if getType == ShareDefine.RedPackType_Server:
+ getWayType = GetRedPackGetWayType(getType)
+ if getWayType == ShareDefine.RedPackWayType_Server:
isAnonymous = 1
job = 0
@@ -987,11 +1008,7 @@
family = GameWorld.GetFamilyManager().FindFamily(familyID)
if not family:
return
- #packetCnt = min(packetCnt, family.GetCount())
-# if getType != 0:
-# commonCntLimit = IpyGameDataPY.GetFuncCfg('FamilyRedPacketCnt')
-# packetCnt = max(packetCnt, commonCntLimit)
-
+
if outputNum < packetCnt:
GameWorld.DebugLog(" 生成新仙盟红包 红包额度不能低该红包个数!outputNum=%s,redCnt=%s" % (outputNum, packetCnt))
return
@@ -1004,6 +1021,9 @@
def CreatNewFamilyRedPacket(family, playerID, redPackID):
'''外部接口,生成仙盟新红包'''
if not family or not playerID or not redPackID:
+ return
+ if IpyGameDataPY.GetFuncCfg("RedPacketClassify", 2):
+ GameWorld.DebugLog("未开放红包发放! redPackID=%s,familyID=%s" % (redPackID, family.GetID()), playerID)
return
ipyData = IpyGameDataPY.GetIpyGameData('FamilyRedPack', redPackID)
if not ipyData:
@@ -1063,21 +1083,14 @@
#通知
OnChangeRedPacketState(family, redPacketObj, None)
- if getType == ShareDefine.RedPackType_OpenServer:
- if not PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSRedPacket):
- PlayerControl.WorldNotify(0, 'OpenRedBag2', [playerName, data, outputNum])
- PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSRedPacket, 1)
- elif data in IpyGameDataPY.GetFuncEvalCfg('OSRSuccess'):
- PlayerControl.WorldNotify(0, 'OpenRedBag3', [playerName, data, outputNum])
-
+
if not familyID:
#大于200额度的红包
getTypeRainDict = IpyGameDataPY.GetFuncEvalCfg('OpenServerRedPacketRain', 2, {})
if str(getType) in getTypeRainDict:
PlayerControl.WorldNotify(0, getTypeRainDict[str(getType)])
- elif outputNum >= IpyGameDataPY.GetFuncCfg('OpenServerRedPacketRain') \
- and getType not in [ShareDefine.RedPackType_Server]:
- PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType])
+ elif outputNum >= IpyGameDataPY.GetFuncCfg('OpenServerRedPacketRain'):
+ PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType])
return redPacketObj
@@ -1187,9 +1200,10 @@
GameWorld.ErrLog("领取的红包类型不一致,无法领取! reqGetWay=%s,getWay=%s" % (reqGetWay, getWay))
return
- if getWay in [ShareDefine.RedPackType_OpenServer, ShareDefine.RedPackType_Server]:
+ getWayType = GetRedPackGetWayType(getWay)
+ if getWayType == ShareDefine.RedPackWayType_Server:
getNumformula = IpyGameDataPY.GetFuncCompileCfg('OpenRedRacketOutNum')
- elif getWay in ShareDefine.FeastRedPackType:
+ elif getWayType == ShareDefine.RedPackWayType_Feast:
getNumformula = IpyGameDataPY.GetFuncCompileCfg('FeastRedPacket', 2)
else:
getNumformula = IpyGameDataPY.GetFuncCompileCfg('FamilyRedRacketOutNum')
@@ -1204,6 +1218,8 @@
grabObj = RedPacketGrab(redPacketID, playerID)
grabObj.playerJob = curPlayer.GetJob()
grabObj.playerName = curPlayer.GetName()
+ grabObj.face = curPlayer.GetFace()
+ grabObj.facePic = curPlayer.GetFacePic()
grabObj.moneyType = moneyType
grabObj.getMoney = getMoney
grabRecordDict[playerID] = grabObj
@@ -1239,6 +1255,8 @@
grabInfo.Name = grabObj.playerName
grabInfo.NameLen = len(grabInfo.Name)
grabInfo.PlayeJob = grabObj.playerJob
+ grabInfo.Face = grabObj.face
+ grabInfo.FacePic = grabObj.facePic
grabInfo.MoneyNum = grabObj.getMoney
sendPack.GrabInfo.append(grabInfo)
sendPack.Count = len(sendPack.GrabInfo)
@@ -1296,7 +1314,7 @@
if isAll and state in [State_HasGot, State_HasAllGot]:
#GameWorld.DebugLog(" 已抢或抢完的不发: redPacketID=%s,state=%s" % (redPacketID, state))
continue
-
+ tagCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(redPacketObj.playerID))
packetInfo = ChPyNetSendPack.tagFRedPacketInfo()
packetInfo.Clear()
packetInfo.RedPacketID = redPacketObj.redPacketID
@@ -1305,6 +1323,8 @@
packetInfo.NameLen = len(packetInfo.Name)
packetInfo.Time = redPacketObj.createTime
packetInfo.PlayeJob = redPacketObj.playerJob
+ packetInfo.Face = tagCacheDict.get("Face", 0)
+ packetInfo.FacePic = tagCacheDict.get("FacePic", 0)
packetInfo.MoneyType = redPacketObj.moneyType
packetInfo.MoneyNum = redPacketObj.moneyValue
packetInfo.GetWay = redPacketObj.getWay
--
Gitblit v1.8.0