#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
#-------------------------------------------------------------------------------
|
#
|
##@package PlayerGoldGift
|
#
|
# @todo: ¼ÇÂ¼Íæ¼ÒµÄ³äÖµºÀÀñ½±ÀøÐÅÏ¢£¬¶þ½øÖÆÎ»±êʾ£¬Ä¿Ç°ÓÃÁËÒ»¸ö×Öµä
|
# @author hxp
|
# @date 2013-10-16 17:00
|
#
|
# @version 3.0
|
# ¼òҪ˵Ã÷:
|
# ÏêϸÃèÊö:
|
# @change: "2013-10-22 11:10" hxp Ð޸ĶÁÈ¡½±ÀøÎïÆ·±í·½Ê½
|
# @change: "2013-11-12 17:00" hxp Ôö¼ÓÊ׳佱ÀøÁìÈ¡Âß¼
|
# @change: "2013-12-09 18:00" hxp Ôö¼ÓÁ콱ȫ·þ¹ã²¥mark
|
# @change: "2014-05-11 14:35" xcc Ôö¼ÓmarkÈç¹ûΪ¿Õ£¬¾Í²»Ìáʾ
|
# @change: "2014-06-06 20:30" hxp Á콱ȫ·þ¹ã²¥ÐÞ¸Ä
|
# @change: "2014-06-12 21:00" hxp Ôö¼ÓÌìÌìÊ׳ä
|
# @change: "2014-08-22 12:00" hxp È¥³ý¶àÓàÈ«·þ¹ã²¥
|
# @change: "2014-10-09 14:00" hxp Ê׳ä/ÌìÌìÊ׳乿ÔòÐ޸ģ¬ÌìÌìÊ׳äÒ»ÌìÖ»ÄÜÁìȡһ´Î
|
# @change: "2014-12-16 18:00" hxp ·¢ËͳäÖµºÀÀñ·¢ËÍÓʼþ
|
# @change: "2014-12-22 14:00" hxp Ôö¼Óµ¥ÈÕ³äÖµ¶àѡһÀñ°ü
|
# @change: "2015-02-06 10:30" hxp µ¥ÈÕ³äÖµ¶àѡһÀñ°üÖ§³ÖÅäÖÃÐÇÆÚ¼¸
|
# @change: "2015-02-11 18:30" hxp µ¥ÈÕ³äÖµ¶àѡһÀñ°ü¿ª·þǰ¼¸Ìì²»¿ªÆôµÄ½öÏÞÖÆÐÇÆÚ¼¸µÄ»î¶¯
|
# @change: "2015-04-23 12:00" hxp µ±ÈÕ³äÖµ¶àѡһÀñ°üÖ§³Ö¶à¸ö×êʯµµ½±Àø
|
# @change: "2015-04-28 16:00" hxp Ôö¼ÓÿÈÕ³äÖµÔª±¦Êý֪ͨ
|
# @change: "2015-05-21 14:30" hxp Ôö¼Óµ±ÈÕ³äÖµÎÞÏÞÁìÈ¡Àñ°ü
|
# @change: "2015-06-09 20:30" hxp ½±ÀøÃû³Æ¸ÄΪ¿Í»§¶ËÅäÖÃ
|
# @change: "2016-01-26 15:00" hxp PY±íÖ§³ÖÖØ¶Á
|
# @change: "2016-06-27 14:00" hxp Ê׳äÖ§³Ö¿ÉÅäÖöî¶È
|
#------------------------------------------------------------------------------
|
#"""Version = 2017-05-12 18:00"""
|
#------------------------------------------------------------------------------
|
import GameWorld
|
import IPY_GameWorld
|
import ItemControler
|
import ChConfig
|
import ItemCommon
|
import PlayerControl
|
import ShareDefine
|
import DataRecordPack
|
import ChPyNetSendPack
|
import PlayerFamilyRedPacket
|
import NetPackCommon
|
import IpyGameDataPY
|
import PlayerTJG
|
import ChEquip
|
|
import time
|
|
##------------------------------------------------------------------------------
|
def DoFirstGoldOpen(curPlayer):
|
## Ê׳俪Æô ¼Ç¼ÌáʾʣÓàʱ¼ä
|
if curPlayer.GetChangeCoinPointTotal():
|
return
|
showSysTime = IpyGameDataPY.GetFuncCfg("FirstGold", 3)
|
if not showSysTime:
|
return
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldRemainTime, showSysTime)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTipStartTime, int(time.time()))
|
|
Sync_FirstGoldTime(curPlayer)
|
return
|
|
def UpdateFirstGoldTime(curPlayer):
|
#¸üÐÂÊ׳äÌáʾʣÓàʱ¼ä
|
if PlayerTJG.GetIsTJG(curPlayer):
|
return
|
remainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldRemainTime)
|
if not remainTime:
|
return
|
if curPlayer.GetChangeCoinPointTotal():
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldRemainTime, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTipStartTime, 0)
|
else:
|
curTime = int(time.time())
|
startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldTipStartTime)
|
remainTime = max(0, remainTime - (curTime - startTime))
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldRemainTime, remainTime)
|
if not remainTime:
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTipStartTime, 0)
|
return
|
|
def Sync_FirstGoldTime(curPlayer):
|
##֪ͨÊ׳äÌáʾʣÓàʱ¼ä
|
showSysTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldRemainTime)
|
if not showSysTime:
|
return
|
sendPack = ChPyNetSendPack.tagMCFirstGoldTime()
|
sendPack.Clear()
|
sendPack.FirstGoldRemainTime = showSysTime
|
NetPackCommon.SendFakePack(curPlayer, sendPack)
|
return
|
|
|
def GetPlayerGoldGiftFirst(curPlayer):
|
'''ÁìÈ¡Íæ¼ÒÊ׳佱Àø
|
'''
|
|
isGet = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GoldGiftFirstRecord)
|
if isGet:
|
GameWorld.DebugLog("ÒѾÁìÈ¡¹ýÊ׳佱Àø£¡", curPlayer.GetPlayerID())
|
return
|
|
if not curPlayer.GetChangeCoinPointTotal():
|
GameWorld.DebugLog("ûÓгäÖµ¹ý£¬ÎÞ·¨ÁìÈ¡Ê׳佱Àø!", curPlayer.GetPlayerID())
|
return
|
|
firstGoldRewardDict = IpyGameDataPY.GetFuncEvalCfg("FirstGold", 1)
|
jobStr = str(curPlayer.GetJob())
|
if jobStr not in firstGoldRewardDict:
|
GameWorld.ErrLog("ûÓÐÅäÖøÃÖ°Òµ¶ÔÓ¦µÄÊ׳佱Àø!job=%s" % jobStr, curPlayer.GetPlayerID())
|
return
|
rewardItemList = firstGoldRewardDict[jobStr]
|
if not rewardItemList:
|
return
|
needSpace = len(rewardItemList)
|
|
# ¼ì²é±³°ü
|
packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
|
if needSpace > packSpace:
|
PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
|
return
|
|
# ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GoldGiftFirstRecord, 1)
|
|
# ¸øÎïÆ·
|
for itemID, itemCount, isBind in rewardItemList:
|
ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
|
|
# È«·þÌáʾ
|
if len(rewardItemList) >= 2:
|
PlayerControl.WorldNotify(0, "FirstPayReward1", [curPlayer.GetPlayerName(), rewardItemList[0][0], rewardItemList[1][0]])
|
# ¼Ç¼Áìȡʼþ
|
DataRecordPack.DR_GoldGiftGiveItem(curPlayer, "FirstGoldGift")
|
|
# ֪ͨ¿Í»§¶Ë
|
Sync_FirstGoldInfo(curPlayer)
|
return
|
|
###################################################################
|
|
## ³äÖµºÀÀñOnDay
|
# @param curPlayer: Íæ¼Ò
|
# @return: None
|
def OnDay(curPlayer):
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyChargeState, 0)
|
return
|
|
## ³äÖµºÀÀñOnLogin
|
# @param curPlayer: Íæ¼Ò
|
# @return: None
|
def OnLogin(curPlayer):
|
Sync_FirstGoldInfo(curPlayer)
|
|
Sync_FirstGoldTime(curPlayer)
|
#¸üÐÂÊ׳äÌáʾ¿ªÊ¼¼ÆÊ±Ê±¼ä
|
if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldRemainTime):
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTipStartTime, int(time.time()))
|
return
|
|
## Íæ¼Ò³äÖµÔª±¦
|
# @param curPlayer: Íæ¼Ò
|
# @param addGold: ³äÔª±¦Êý
|
# @return: None
|
def OnPlayerChargeGold(curPlayer, addGold):
|
|
# ¸üнñÈÕÒѳäÖµÊý
|
dailyGoldCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargeCnt)
|
updDailyGoldCnt = dailyGoldCnt + addGold
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyGoldChargeCnt, updDailyGoldCnt)
|
#PlayerControl.NotifyPlayerDictValue(curPlayer, ChConfig.Def_PDict_DailyGoldChargeCnt)
|
|
return
|
|
def Sync_FirstGoldInfo(curPlayer):
|
## ֪ͨÊ׳äÐÅÏ¢
|
sendPack = ChPyNetSendPack.tagMCFirstGoldInfo()
|
sendPack.Clear()
|
sendPack.FirstGoldRewardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GoldGiftFirstRecord)
|
sendPack.FirstGoldTry = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldTry)
|
NetPackCommon.SendFakePack(curPlayer, sendPack)
|
return
|
|
#// A5 11 ÊÔÓÃÊ׳äÎäÆ÷ #tagCMTryFirstGoldItem
|
#
|
#struct tagCMTryFirstGoldItem
|
#
|
#{
|
# tagHead Head;
|
#};
|
def OnTryFirstGoldItem(index, clientData, tick):
|
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldTry) != 1:
|
return
|
tryItemDict = IpyGameDataPY.GetFuncEvalCfg('FirstGoldTryItem', 1, {})
|
tryItemID = tryItemDict.get(curPlayer.GetJob(), 0)
|
if not tryItemID:
|
return
|
|
|
#ÏÈжÏÂÖ÷ÊÖÎäÆ÷£¨Èô±³°üÂúÔò·¢Óʼþ£©£¬ÔÙ´©ÉÏË͵ÄÎäÆ÷
|
equipPlace = ShareDefine.retWeapon
|
curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
curItem = curPack.GetAt(equipPlace)
|
if ItemCommon.CheckItemCanUse(curItem):
|
spaceIndex = ItemControler.GetItemPackSpaceIndex(curPlayer, IPY_GameWorld.rptItem)
|
if spaceIndex == -1:
|
itemObj = ItemCommon.GetMailItemDict(curItem)
|
PlayerControl.SendMailByKey('', [curPlayer.GetID()], [itemObj])
|
ItemCommon.DelItem(curPlayer, curItem, 1, False)
|
else:
|
result = ItemControler.PlayerItemControler(curPlayer).UnEquipItem(equipPlace, spaceIndex)
|
if not result:
|
GameWorld.Log(' ÊÔÓÃÊ׳äÎäÆ÷ жÏÂÔ×°±¸Ê§°Ü£¡£¡', curPlayer.GetID())
|
return
|
tryItem = ItemControler.GetOutPutItemObj(tryItemID)
|
if ChEquip.DoPlayerEquipItem(curPlayer, tryItem, ItemCommon.GetEquipPackIndex(tryItem), tick):
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTry, 2)
|
else:
|
curItem.clear()
|
GameWorld.Log(' ÊÔÓÃÊ׳äÎäÆ÷ ÊÔ´©Ê§°Ü£¡£¡tryItemID=%s'%tryItemID, curPlayer.GetID())
|
Sync_FirstGoldInfo(curPlayer)
|
return
|
|
def FirstGoldTryItemOutTime(curPlayer):
|
##Ê׳äÊÔÓÃÎïÆ·¹ýÆÚÁË Èô±³°ü²Ö¿âûÎäÆ÷ÔòËÍÒ»°Ñ
|
|
haveEquip = False #ÊÇ·ñÓпɴ©µÄÎäÆ÷
|
playerItemControl = ItemControler.PlayerItemControler(curPlayer)
|
for packIndex in [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse]:
|
curPack = curPlayer.GetItemManager().GetPack(packIndex)
|
for i in range(0, curPack.GetCount()):
|
curItem = curPack.GetAt(i)
|
if not ItemCommon.CheckItemCanUse(curItem):
|
continue
|
if curItem.GetEquipPlace() != ShareDefine.retWeapon:
|
continue
|
if not ItemCommon.CheckItemCanUseByExpireTime(curItem):
|
# ¹ýÆÚ
|
continue
|
if not playerItemControl.PlayerCanEquipItem(curItem, False):
|
continue
|
haveEquip = True
|
break
|
if not haveEquip:
|
giveItemDict = IpyGameDataPY.GetFuncEvalCfg('FirstGoldTryItem', 2, {})
|
giveItemID = giveItemDict.get(curPlayer.GetJob(), 0)
|
if not giveItemID:
|
return
|
GameWorld.DebugLog('Ê׳äÊÔÓÃÎïÆ·¹ýÆÚÁË ±³°ü²Ö¿âûÎäÆ÷ÔòËÍÒ»°ÑgiveItemID=%s'%giveItemID, curPlayer.GetID())
|
if not ItemControler.GivePlayerItem(curPlayer, giveItemID, 1, 0, [IPY_GameWorld.rptItem]):
|
GameWorld.DebugLog('Ê׳äÊÔÓÃÎïÆ·¹ýÆÚÁË ±³°ü²Ö¿âûÎäÆ÷ÔòËÍÒ»°Ñ û¸ø³É¹¦£¡£¡giveItemID=%s'%giveItemID, curPlayer.GetID())
|
|
return
|
#ÿÈÕ³äÖµÈÎÒâ½ð¶îºì°ü½±Àø
|
def DayChargeRedPackAward(curPlayer):
|
if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyChargeState) == 1:
|
return
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyChargeState, 1)
|
PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, 2)
|
return
|