| | |
| | | if onEventType == ShareDefine.Def_OnEventType:
|
| | | #发钻石红包额度重置
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ServerRedPacketGrabCnt, 0)
|
| | | __NotifyGoldLimt(curPlayer)
|
| | | elif onEventType == ShareDefine.Def_OnEventTypeEx:
|
| | | oscDay = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg')
|
| | |
| | | sendCnt = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 5)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketCanGrabCnt, grabCnt+sendCnt)
|
| | | NotifyOSRedPacket(curPlayer)
|
| | | return
|
| | |
|
| | | def OnPlayerRecharge(curPlayer, orderRMB):
|
| | | ## 玩家充值
|
| | | |
| | | todayCoin = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AllCoinToday)
|
| | | # 每日首充红包
|
| | | if todayCoin - orderRMB * 100 == 0:
|
| | | dayFirstRedPacketID = IpyGameDataPY.GetFuncCfg("RechargeRedPacket", 1)
|
| | | GameWorld.DebugLog("每日首充红包: dayFirstRedPacketID=%s" % dayFirstRedPacketID)
|
| | | if dayFirstRedPacketID:
|
| | | CreatRedPacketByID(curPlayer, dayFirstRedPacketID)
|
| | | #else:
|
| | | # GameWorld.DebugLog("非每日首充: todayCoin=%s" % todayCoin)
|
| | | |
| | | # 单笔充值红包
|
| | | rmbRedPacketID = 0
|
| | | rmbRedPackIDDict = IpyGameDataPY.GetFuncEvalCfg("RechargeRedPacket", 2, {})
|
| | | rmbList = rmbRedPackIDDict.keys()
|
| | | rmbList.sort()
|
| | | for rmb in rmbList:
|
| | | if orderRMB <= rmb:
|
| | | rmbRedPacketID = rmbRedPackIDDict[rmb]
|
| | | break
|
| | | |
| | | if rmbRedPacketID:
|
| | | GameWorld.DebugLog("单笔充值红包: orderRMB=%s,rmbRedPacketID=%s" % (orderRMB, rmbRedPacketID))
|
| | | CreatRedPacketByID(curPlayer, rmbRedPacketID)
|
| | | return
|
| | |
|
| | | def CreatCacheRedPacktet(curPlayer):
|
| | |
| | | if not PlayerFeastRedPacket.GetFeastRedPacketState():
|
| | | GameWorld.DebugLog(' 非节日红包活动中,不可发送!')
|
| | | return
|
| | | isFamilyRedPacket = False
|
| | | elif getType == ShareDefine.RedPackType_Server:
|
| | | isFamilyRedPacket = False
|
| | | else:
|
| | | if not curPlayer.GetFamilyID():
|
| | |
| | | return
|
| | |
|
| | |
|
| | | #// A6 08 发家族红包 #tagCMSendFamilyRedPacket
|
| | | #// A6 08 发家族红包 #tagCMSendFamilyRedPacket
|
| | | #
|
| | | #struct tagCMSendFamilyRedPacket
|
| | | #{
|
| | |
| | | # DWORD RedPacketID; // 红包ID,没有发0
|
| | | # WORD PacketCnt; // 红包数量
|
| | | # WORD MoneyNum; //金钱数量
|
| | | # WORD WishLen; //祝福语长度
|
| | | # char Wish[NameLen]; //size=WishLen
|
| | | # char Wish[33]; //祝福语
|
| | | # BYTE IsAnonymous; //是否匿名
|
| | | #};
|
| | | ## 发家族红包
|
| | | def OnSendFamilyRedPacket(index, clientData, tick):
|
| | |
| | | packetCnt = clientData.PacketCnt
|
| | | moneyNum = clientData.MoneyNum
|
| | | wishInfo = clientData.Wish
|
| | | isAnonymous = clientData.IsAnonymous
|
| | | if not redPacketID:
|
| | | #主动发的钻石红包 vip限制
|
| | | if not PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_FamilyGoldPack):
|
| | |
| | | __DoCreatRedPacket(curPlayer, ShareDefine.RedPackType_GoldPacket, IPY_GameWorld.TYPE_Price_Gold_Money, moneyNum, packetCnt, State_NoGot, wishInfo)
|
| | | else:
|
| | | # 注意:该函数发放的是已创建的红包,该操作只是把该红包开放给玩家可抢
|
| | | msg = str([curPlayer.GetPlayerID(), redPacketID, packetCnt])
|
| | | msg = str([curPlayer.GetPlayerID(), redPacketID, packetCnt, isAnonymous])
|
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "SendFamilyRedPacket", msg, len(msg))
|
| | | return
|
| | |
|
| | |
| | | packData = ChPyNetSendPack.tagMCFamilyRedPacketGoldLimit()
|
| | | packData.Clear()
|
| | | packData.HasSendGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0)
|
| | | packData.ServerGrabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ServerRedPacketGrabCnt)
|
| | | NetPackCommon.SendFakePack(curPlayer, packData)
|
| | | return
|
| | |
|
| | |
| | | canGrabCnt = GetOSCanGrabCnt(curPlayer)
|
| | | elif reqGetWay == ShareDefine.RedPackType_FeastSucc:
|
| | | canGrabCnt = PlayerFeastRedPacket.GetFeastSuccRedPacketCanGrabCnt(curPlayer)
|
| | | elif reqGetWay == ShareDefine.RedPackType_Server:
|
| | | canGrabCnt = GetServerRedPackCanGrabCnt(curPlayer)
|
| | | else:
|
| | | canGrabCnt = -1
|
| | | msg = str([redPacketID, reqGetWay, canGrabCnt])
|
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "GrabFamilyRedPacket", msg, len(msg))
|
| | | GameWorld.DebugLog(' 抢红包 getWay=%s,canGrabCnt=%s' % (reqGetWay, canGrabCnt))
|
| | | GameWorld.DebugLog(' 抢红包 redPacketID=%s,getWay=%s,canGrabCnt=%s' % (redPacketID, reqGetWay, canGrabCnt))
|
| | | return
|
| | |
|
| | |
|
| | |
| | | NotifyOSRedPacket(curPlayer)
|
| | | return
|
| | |
|
| | | def GetServerRedPackCanGrabCnt(curPlayer):
|
| | | #获取全服红包可抢次数
|
| | | # @return: -1为不限
|
| | | vipLVMaxGrabCntDict = IpyGameDataPY.GetFuncEvalCfg("RechargeRedPacket", 3, {})
|
| | | vipLVList = vipLVMaxGrabCntDict.keys()
|
| | | vipLVList.sort()
|
| | | for vipLV in vipLVList:
|
| | | if curPlayer.GetVIPLv() <= vipLV:
|
| | | maxGrabCnt = vipLVMaxGrabCntDict[vipLV]
|
| | | if not maxGrabCnt:
|
| | | return -1
|
| | | todayGrabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ServerRedPacketGrabCnt)
|
| | | return max(0, maxGrabCnt - todayGrabCnt)
|
| | | return 0
|
| | |
|
| | | def GrabServerRedPacketResult(curPlayer, moneyNum, isSelf):
|
| | | ##抢全服红包结果
|
| | | |
| | | if isSelf:
|
| | | return
|
| | | |
| | | grabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ServerRedPacketGrabCnt)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ServerRedPacketGrabCnt, grabCnt + 1)
|
| | | |
| | | __NotifyGoldLimt(curPlayer)
|
| | | return
|
| | |
|
| | | def ProcessOSRedPacket(curPlayer, tick):
|
| | | return
|
| | | #开服红包恢复次数
|