| | |
| | | ## OnDay处理
|
| | | # @param curPlayer
|
| | | # @return None
|
| | | def RedPacketOnDay(curPlayer):
|
| | | #发钻石红包额度重置
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0)
|
| | | __NotifyGoldLimt(curPlayer)
|
| | | def RedPacketOnDay(curPlayer, onEventType):
|
| | | if onEventType == ShareDefine.Def_OnEventType:
|
| | | #发钻石红包额度重置
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0)
|
| | | __NotifyGoldLimt(curPlayer)
|
| | | elif onEventType == ShareDefine.Def_OnEventTypeEx:
|
| | | oscDay = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg')
|
| | | openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
|
| | | if openServerDay < oscDay:
|
| | | grabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketCanGrabCnt, 0)
|
| | | sendCnt = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 5)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketCanGrabCnt, grabCnt+sendCnt)
|
| | | NotifyOSRedPacket(curPlayer)
|
| | | return
|
| | |
|
| | | def CreatCacheRedPacktet(curPlayer):
|
| | | #加入仙盟后,发放待发的红包
|
| | | ipyMgr = IpyGameDataPY.IPY_Data()
|
| | | for i in xrange(ipyMgr.GetFamilyRedPackCount()):
|
| | | ipyData = ipyMgr.GetFamilyRedPackByIndex(i)
|
| | | redPacketID = ipyData.GetID()
|
| | | if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FamilyRedPacketCache, redPacketID):
|
| | | CreatRedPacketByID(curPlayer, redPacketID)
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FamilyRedPacketCache, redPacketID, 0)
|
| | | return
|
| | |
|
| | |
|
| | | def CreatRedPacketByID(curPlayer, redPacketID, state=State_NoSend, data=0):
|
| | | #根据红包ID生成红包
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('FamilyRedPack', redPacketID)
|
| | | if not ipyData:
|
| | | return
|
| | | DoCreatFamilyRedPacket(curPlayer, ipyData.GetGetType(), ipyData.GetMoneyType(), ipyData.GetMoneyNum(), ipyData.GetPacketCnt(), state, '', data)
|
| | | return
|
| | |
|
| | | ## 生成红包
|
| | | def DoCreatFamilyRedPacket(curPlayer, getType, moneyType=2, awardNum=100, packetCnt=10, state=State_NoSend, wishInfo='', data=0):
|
| | | # if not curPlayer.GetFamilyID():
|
| | | # #没家族
|
| | | # return
|
| | | |
| | | getType = ipyData.GetGetType()
|
| | | if getType == IpyGameDataPY.GetFuncCfg('OpenServerRedPacketType'):
|
| | | oscDay = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg')
|
| | | openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
|
| | | if openServerDay >= oscDay:
|
| | | GameWorld.DebugLog(' 发开服红包,活动已过,不可发送!')
|
| | | return
|
| | | else:
|
| | | if not curPlayer.GetFamilyID():
|
| | | #没家族 先存起来,等进仙盟时再补发
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FamilyRedPacketCache, redPacketID, 1)
|
| | | return
|
| | | |
| | | DoCreatFamilyRedPacket(curPlayer, getType, ipyData.GetMoneyType(), ipyData.GetMoneyNum(), ipyData.GetPacketCnt(), state, '', data)
|
| | | return
|
| | |
|
| | | ## 生成红包
|
| | | def DoCreatFamilyRedPacket(curPlayer, getType, moneyType=2, awardNum=100, packetCnt=10, state=State_NoSend, wishInfo='', data=0):
|
| | |
|
| | | |
| | | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | packetCnt = min(packetCnt, awardNum)
|
| | |
|
| | |
| | | if awardNum + goldLimit > familyRedPacketGoldLimit:
|
| | | GameWorld.DebugLog(' 主动发仙盟钻石红包,额度已超%s,不可发送!' % familyRedPacketGoldLimit, playerID)
|
| | | return
|
| | | |
| | | if not PlayerControl.HaveMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney, awardNum):
|
| | | curBourseMoney = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
|
| | | GameWorld.Log(" 不能发钻石红包 no enough bourse money! priceCount=%s,curBourseMoney=%s" |
| | | % (awardNum, curBourseMoney), playerID)
|
| | | return
|
| | | if not PlayerControl.PayMoney(curPlayer, moneyType, awardNum, ChConfig.Def_Cost_FamilyRedPacket):
|
| | | return
|
| | |
|
| | |
| | | if not isSelf: #抢自己的红包不扣次数
|
| | | grabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketCanGrabCnt, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketCanGrabCnt, max(0, grabCnt-1))
|
| | | if grabCnt == IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 4):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketStartTime, int(time.time()))
|
| | | # if grabCnt == IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 4):
|
| | | # PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketStartTime, int(time.time()))
|
| | |
|
| | |
|
| | | #֪ͨ
|
| | |
| | | return
|
| | |
|
| | | def ProcessOSRedPacket(curPlayer, tick):
|
| | | return
|
| | | #开服红包恢复次数
|
| | | if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_OSRedPacket, tick):
|
| | | return
|