#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package Player.PlayerFace
|
#
|
# @todo:Í·ÏñÍ·Ïñ¿ò
|
# @author hxp
|
# @date 2024-09-12
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: Í·ÏñÍ·Ïñ¿ò
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2024-09-12 12:00"""
|
#-------------------------------------------------------------------------------
|
|
import GameWorld
|
import PlayerControl
|
import IPY_GameWorld
|
import ChPyNetSendPack
|
import IpyGameDataPY
|
import NetPackCommon
|
import ItemCommon
|
import PlayerHero
|
import PlayerHJG
|
import ChConfig
|
import ObjPool
|
|
import random
|
import time
|
|
def OnPlayerLogin(curPlayer):
|
SyncFaceInfo(curPlayer)
|
SyncFacePicInfo(curPlayer)
|
return
|
|
def OnMinute(curPlayer):
|
curTime = int(time.time())
|
|
delFaceList = []
|
ipyDataMgr = IpyGameDataPY.IPY_Data()
|
for index in range(ipyDataMgr.GetPlayerFaceCount()):
|
ipyData = ipyDataMgr.GetPlayerFaceByIndex(index)
|
faceID = ipyData.GetFaceID()
|
if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID):
|
# δ¼¤»îµÄ²»´¦Àí
|
continue
|
endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceEndTime % faceID)
|
if not endTime or endTime > curTime:
|
# ÓÀ¾Ã»òδ¹ýÆÚ
|
continue
|
if DelFace(curPlayer, faceID, False, "FaceTimeout"):
|
delFaceList.append(faceID)
|
|
if delFaceList:
|
RefreshFaceAttr(curPlayer)
|
|
delFacePicList = []
|
for index in range(ipyDataMgr.GetPlayerFacePicCount()):
|
ipyData = ipyDataMgr.GetPlayerFacePicByIndex(index)
|
facePicID = ipyData.GetFacePicID()
|
if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID):
|
# δ¼¤»îµÄ²»´¦Àí
|
continue
|
endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicEndTime % facePicID)
|
if not endTime or endTime > curTime:
|
# ÓÀ¾Ã»òδ¹ýÆÚ
|
continue
|
if DelFacePic(curPlayer, facePicID, False, "FacePicTimeout"):
|
delFacePicList.append(facePicID)
|
|
if delFacePicList:
|
RefreshFacePicAttr(curPlayer)
|
return
|
|
def AddFace(curPlayer, faceID, setExpireTimes=None, isFree=False):
|
if faceID <= 0:
|
return
|
playerID = curPlayer.GetPlayerID()
|
ipyData = IpyGameDataPY.GetIpyGameData("PlayerFace", faceID)
|
if not ipyData:
|
return
|
if ipyData.GetUnlockWay() != 2:
|
GameWorld.DebugLog("·ÇµÀ¾ß¼¤»îµÄ²»ÓÃÌí¼Ó: faceID=%s" % (faceID), playerID)
|
return
|
if not isFree:
|
itemID = ipyData.GetUnlockValue()
|
itemCount = ipyData.GetUnlockNeedCnt()
|
if not itemID or not itemCount:
|
return
|
needItemList = [[itemID, itemCount]]
|
itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
|
if lackItemDict:
|
GameWorld.DebugLog("¼¤»îËùÐèÎïÆ·²»×ã! faceID=%s,lackItemDict=%s" % (faceID, lackItemDict), playerID)
|
return
|
ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "AddFace")
|
|
ipyExpireSeconds = ipyData.GetExpireMinutes() * 60
|
|
curTime = int(time.time())
|
state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID)
|
endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceEndTime % faceID)
|
GameWorld.Log("Ìí¼ÓÍ·Ïñ: faceID=%s,setExpireTimes=%s,state=%s,endTime=%s,ipyExpireSeconds=%s,curTime=%s"
|
% (faceID, setExpireTimes, state, endTime, ipyExpireSeconds, curTime), playerID)
|
updEndTime = endTime
|
|
# Ö¸¶¨Ê±³¤µÄ£¬ÈçGMÖ¸¶¨
|
if setExpireTimes > 0:
|
updEndTime = curTime + setExpireTimes
|
GameWorld.Log(" Ö¸¶¨Í·Ïñʱ³¤: faceID=%s,updEndTime=%s" % (faceID, updEndTime), playerID)
|
|
# ÓÀ¾Ã
|
elif ipyExpireSeconds == 0 or setExpireTimes == 0:
|
updEndTime = 0
|
GameWorld.Log(" Ìí¼ÓÓÀ¾ÃÍ·Ïñ: faceID=%s,updEndTime=%s" % (faceID, updEndTime), playerID)
|
|
else:
|
# δ¹ýÆÚ
|
if endTime > curTime:
|
updEndTime = endTime + ipyExpireSeconds
|
GameWorld.Log(" ÀÛ¼ÓÍ·Ïñʱ³¤: faceID=%s,updEndTime=%s" % (faceID, updEndTime), playerID)
|
else:
|
updEndTime = curTime + ipyExpireSeconds
|
GameWorld.Log(" ÖØÐ¼¤»îÍ·Ïñ: faceID=%s,updEndTime=%s" % (faceID, updEndTime), playerID)
|
|
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID, 1)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceEndTime % faceID, updEndTime)
|
RefreshFaceAttr(curPlayer)
|
SyncFaceInfo(curPlayer, [faceID])
|
return True
|
|
def DelFace(curPlayer, faceID, isRefreshAttr=True, notifyMail=""):
|
playerID = curPlayer.GetPlayerID()
|
ipyData = IpyGameDataPY.GetIpyGameData("PlayerFace", faceID)
|
if not ipyData:
|
return
|
if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID):
|
return
|
GameWorld.Log("ɾ³ýÍ·Ïñ: faceID=%s,notifyMail=%s" % (faceID, notifyMail), playerID)
|
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceEndTime % faceID, 0)
|
# ÐǼ¶²»ÖØÖã¬ÖØÐ¼¤»îºóÔÙ´ÎÉúЧ
|
|
if curPlayer.GetFace() == faceID:
|
defaultFaceIDList = GetDefaultFaceIDList()
|
randFace = random.choice(defaultFaceIDList) if defaultFaceIDList else 0
|
curPlayer.SetFace(randFace)
|
GameWorld.DebugLog("Íæ¼ÒÅå´÷µÄÍ·Ïñ±»É¾³ý£¬Ëæ»úÖØÖÃĬÈÏÍ·Ïñ! randFace=%s" % randFace, playerID)
|
|
if isRefreshAttr:
|
RefreshFaceAttr(curPlayer)
|
SyncFaceInfo(curPlayer, [faceID])
|
if notifyMail:
|
PlayerControl.SendMailByKey(notifyMail, [playerID], [], [faceID])
|
|
return True
|
|
def GetDefaultFaceIDList():
|
defaultFaceIDList = []
|
ipyDataMgr = IpyGameDataPY.IPY_Data()
|
for index in range(ipyDataMgr.GetPlayerFaceCount()):
|
ipyData = ipyDataMgr.GetPlayerFaceByIndex(index)
|
faceID = ipyData.GetFaceID()
|
if ipyData.GetUnlockWay() != 1:
|
continue
|
defaultFaceIDList.append(faceID)
|
return defaultFaceIDList
|
|
def IsFaceCanUse(curPlayer, faceID, ipyData=None):
|
## Í·ÏñÊÇ·ñ¿ÉÓÃ
|
state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID)
|
if state:
|
return True
|
|
if not ipyData:
|
ipyData = IpyGameDataPY.GetIpyGameData("PlayerFace", faceID)
|
if ipyData:
|
unlockWay = ipyData.GetUnlockWay()
|
unlockValue = ipyData.GetUnlockValue()
|
if unlockWay == 1: # ĬÈϼ¤»îµÄ
|
return True
|
if unlockWay == 3: # ¹ØÁªÎ佫
|
heroID = unlockValue
|
return True if PlayerHero.GetHeroActivite(curPlayer, heroID) else False
|
|
return False
|
|
def RefreshFaceAttr(curPlayer):
|
PlayerHJG.RefreshHJGAttr(curPlayer)
|
return
|
|
def OnUseFace(curPlayer, faceID):
|
playerID = curPlayer.GetPlayerID()
|
if not IsFaceCanUse(curPlayer, faceID):
|
GameWorld.DebugLog("¸ÃÍ·Ïñ²»¿ÉÓÃ! faceID=%s" % (faceID), playerID)
|
return
|
GameWorld.DebugLog("Í·Ïñ»Ã»¯! faceID=%s" % (faceID), playerID)
|
curPlayer.SetFace(faceID)
|
return
|
|
def OnFaceStarUP(curPlayer, faceID):
|
playerID = curPlayer.GetPlayerID()
|
if not IsFaceCanUse(curPlayer, faceID):
|
GameWorld.DebugLog("¸ÃÍ·Ïñ²»¿ÉÓÃ! faceID=%s" % (faceID), playerID)
|
return
|
ipyData = IpyGameDataPY.GetIpyGameData("PlayerFace", faceID)
|
if not ipyData:
|
return
|
starMax = ipyData.GetStarMax()
|
curStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceStar % faceID)
|
if curStar >= starMax:
|
GameWorld.DebugLog("Í·ÏñÐǼ¶ÒÑÂú! faceID=%s,curStar=%s >= %s" % (faceID, curStar, starMax), playerID)
|
return
|
if ipyData.GetUnlockWay() != 2:
|
return
|
itemID = ipyData.GetUnlockValue()
|
itemCount = ipyData.GetUnlockNeedCnt()
|
if not itemID or not itemCount:
|
return
|
needItemList = [[itemID, itemCount]]
|
itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
|
if lackItemDict:
|
GameWorld.DebugLog("Í·ÏñÉýÐÇËùÐèÎïÆ·²»×ã! faceID=%s,lackItemDict=%s" % (faceID, lackItemDict), playerID)
|
return
|
ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "FaceStarUP")
|
|
nextStar = curStar + 1
|
GameWorld.DebugLog("Í·ÏñÉýÐÇ! faceID=%s,nextStar=%s" % (faceID, nextStar), playerID)
|
SetFaceStar(curPlayer, faceID, nextStar)
|
return
|
|
def SetFaceStar(curPlayer, faceID, setStar):
|
if not IsFaceCanUse(curPlayer, faceID):
|
return
|
ipyData = IpyGameDataPY.GetIpyGameData("PlayerFace", faceID)
|
if not ipyData:
|
return
|
setStar = min(setStar, ipyData.GetStarMax())
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceStar % faceID, setStar)
|
RefreshFaceAttr(curPlayer)
|
SyncFaceInfo(curPlayer, [faceID])
|
return True
|
|
def SyncFaceInfo(curPlayer, faceIDList=None):
|
if faceIDList == None:
|
syncIDList = []
|
ipyDataMgr = IpyGameDataPY.IPY_Data()
|
for index in range(ipyDataMgr.GetPlayerFaceCount()):
|
ipyData = ipyDataMgr.GetPlayerFaceByIndex(index)
|
syncIDList.append(ipyData.GetFaceID())
|
else:
|
syncIDList = faceIDList
|
|
faceList = []
|
for faceID in syncIDList:
|
state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID)
|
if not state and faceIDList == None:
|
continue
|
face = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCFace)
|
face.FaceID = faceID
|
face.State = state
|
face.EndTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceEndTime % faceID)
|
face.Star = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceStar % faceID)
|
faceList.append(face)
|
|
if not faceList:
|
return
|
|
clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCFaceInfo)
|
clientPack.FaceList = faceList
|
clientPack.Count = len(clientPack.FaceList)
|
NetPackCommon.SendFakePack(curPlayer, clientPack)
|
return
|
|
## ------------------------------------------------------------------------------------------------
|
|
def AddFacePic(curPlayer, facePicID, setExpireTimes=None, isFree=False):
|
if facePicID <= 0:
|
return
|
playerID = curPlayer.GetPlayerID()
|
ipyData = IpyGameDataPY.GetIpyGameData("PlayerFacePic", facePicID)
|
if not ipyData:
|
return
|
if ipyData.GetUnlockWay() != 2:
|
GameWorld.DebugLog("·ÇµÀ¾ß¼¤»îµÄ²»ÓÃÌí¼Ó: facePicID=%s" % (facePicID), playerID)
|
return
|
if not isFree:
|
itemID = ipyData.GetUnlockValue()
|
itemCount = ipyData.GetUnlockNeedCnt()
|
if not itemID or not itemCount:
|
return
|
needItemList = [[itemID, itemCount]]
|
itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
|
if lackItemDict:
|
GameWorld.DebugLog("¼¤»îËùÐèÎïÆ·²»×ã! facePicID=%s,lackItemDict=%s" % (facePicID, lackItemDict), playerID)
|
return
|
ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "AddFacePic")
|
|
ipyExpireSeconds = ipyData.GetExpireMinutes() * 60
|
|
curTime = int(time.time())
|
state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID)
|
endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicEndTime % facePicID)
|
GameWorld.Log("Ìí¼ÓÍ·Ïñ¿ò: facePicID=%s,setExpireTimes=%s,state=%s,endTime=%s,ipyExpireSeconds=%s,curTime=%s"
|
% (facePicID, setExpireTimes, state, endTime, ipyExpireSeconds, curTime), playerID)
|
updEndTime = endTime
|
|
# Ö¸¶¨Ê±³¤µÄ£¬ÈçGMÖ¸¶¨
|
if setExpireTimes > 0:
|
updEndTime = curTime + setExpireTimes
|
GameWorld.Log(" Ö¸¶¨Í·Ïñ¿òʱ³¤: facePicID=%s,updEndTime=%s" % (facePicID, updEndTime), playerID)
|
|
# ÓÀ¾Ã
|
elif ipyExpireSeconds == 0 or setExpireTimes == 0:
|
updEndTime = 0
|
GameWorld.Log(" Ìí¼ÓÓÀ¾ÃÍ·Ïñ¿ò: facePicID=%s,updEndTime=%s" % (facePicID, updEndTime), playerID)
|
|
else:
|
# δ¹ýÆÚ
|
if endTime > curTime:
|
updEndTime = endTime + ipyExpireSeconds
|
GameWorld.Log(" ÀÛ¼ÓÍ·Ïñ¿òʱ³¤: facePicID=%s,updEndTime=%s" % (facePicID, updEndTime), playerID)
|
else:
|
updEndTime = curTime + ipyExpireSeconds
|
GameWorld.Log(" ÖØÐ¼¤»îÍ·Ïñ¿ò: facePicID=%s,updEndTime=%s" % (facePicID, updEndTime), playerID)
|
|
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID, 1)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicEndTime % facePicID, updEndTime)
|
RefreshFacePicAttr(curPlayer)
|
SyncFacePicInfo(curPlayer, [facePicID])
|
return True
|
|
def DelFacePic(curPlayer, facePicID, isRefreshAttr=True, notifyMail=""):
|
playerID = curPlayer.GetPlayerID()
|
ipyData = IpyGameDataPY.GetIpyGameData("PlayerFacePic", facePicID)
|
if not ipyData:
|
return
|
if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID):
|
return
|
GameWorld.Log("ɾ³ýÍ·Ïñ¿ò: facePicID=%s,notifyMail=%s" % (facePicID, notifyMail), playerID)
|
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicEndTime % facePicID, 0)
|
# ÐǼ¶²»ÖØÖã¬ÖØÐ¼¤»îºóÔÙ´ÎÉúЧ
|
|
if curPlayer.GetFacePic() == facePicID:
|
defaultFacePicIDList = GetDefaultFacePicIDList()
|
randFacePic = random.choice(defaultFacePicIDList) if defaultFacePicIDList else 0
|
curPlayer.SetFacePic(randFacePic)
|
GameWorld.DebugLog("Íæ¼ÒÅå´÷µÄÍ·Ïñ¿ò¹ýÆÚ£¬Ëæ»úÖØÖÃĬÈÏÍ·Ïñ¿ò! randFacePic=%s" % randFacePic, playerID)
|
|
if isRefreshAttr:
|
RefreshFacePicAttr(curPlayer)
|
SyncFacePicInfo(curPlayer, [facePicID])
|
if notifyMail:
|
PlayerControl.SendMailByKey(notifyMail, [playerID], [], [facePicID])
|
return True
|
|
def GetDefaultFacePicIDList():
|
defaultFacePicIDList = []
|
ipyDataMgr = IpyGameDataPY.IPY_Data()
|
for index in range(ipyDataMgr.GetPlayerFacePicCount()):
|
ipyData = ipyDataMgr.GetPlayerFacePicByIndex(index)
|
facePicID = ipyData.GetFacePicID()
|
if ipyData.GetUnlockWay() != 1:
|
continue
|
defaultFacePicIDList.append(facePicID)
|
return defaultFacePicIDList
|
|
def IsFacePicCanUse(curPlayer, facePicID, ipyData=None):
|
## Í·Ïñ¿òÊÇ·ñ¿ÉÓÃ
|
state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID)
|
if state:
|
return True
|
|
if not ipyData:
|
ipyData = IpyGameDataPY.GetIpyGameData("PlayerFacePic", facePicID)
|
if ipyData:
|
unlockWay = ipyData.GetUnlockWay()
|
if unlockWay == 1: # ĬÈϼ¤»îµÄ
|
return True
|
|
return False
|
|
def RefreshFacePicAttr(curPlayer):
|
PlayerHJG.RefreshHJGAttr(curPlayer)
|
return
|
|
def OnUseFacePic(curPlayer, facePicID):
|
playerID = curPlayer.GetPlayerID()
|
if not IsFacePicCanUse(curPlayer, facePicID):
|
GameWorld.DebugLog("¸ÃÍ·Ïñ¿ò²»¿ÉÓÃ! facePicID=%s" % (facePicID), playerID)
|
return
|
GameWorld.DebugLog("Í·Ïñ¿ò»Ã»¯! facePicID=%s" % (facePicID), playerID)
|
curPlayer.SetFacePic(facePicID)
|
return
|
|
def OnFacePicStarUP(curPlayer, facePicID):
|
playerID = curPlayer.GetPlayerID()
|
if not IsFacePicCanUse(curPlayer, facePicID):
|
GameWorld.DebugLog("¸ÃÍ·Ïñ¿ò²»¿ÉÓÃ! facePicID=%s" % (facePicID), playerID)
|
return
|
ipyData = IpyGameDataPY.GetIpyGameData("PlayerFacePic", facePicID)
|
if not ipyData:
|
return
|
starMax = ipyData.GetStarMax()
|
curStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicStar % facePicID)
|
if curStar >= starMax:
|
GameWorld.DebugLog("Í·Ïñ¿òÐǼ¶ÒÑÂú! facePicID=%s,curStar=%s >= %s" % (facePicID, curStar, starMax), playerID)
|
return
|
if ipyData.GetUnlockWay() != 2:
|
return
|
itemID = ipyData.GetUnlockValue()
|
itemCount = ipyData.GetUnlockNeedCnt()
|
if not itemID or not itemCount:
|
return
|
needItemList = [[itemID, itemCount]]
|
itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
|
if lackItemDict:
|
GameWorld.DebugLog("Í·Ïñ¿òÉýÐÇËùÐèÎïÆ·²»×ã! facePicID=%s,lackItemDict=%s" % (facePicID, lackItemDict), playerID)
|
return
|
ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "FacePicStarUP")
|
|
nextStar = curStar + 1
|
GameWorld.DebugLog("Í·Ïñ¿òÉýÐÇ! facePicID=%s,nextStar=%s" % (facePicID, nextStar), playerID)
|
SetFacePicStar(curPlayer, facePicID, nextStar)
|
return
|
|
def SetFacePicStar(curPlayer, facePicID, setStar):
|
if not IsFacePicCanUse(curPlayer, facePicID):
|
return
|
ipyData = IpyGameDataPY.GetIpyGameData("PlayerFacePic", facePicID)
|
if not ipyData:
|
return
|
setStar = min(setStar, ipyData.GetStarMax())
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicStar % facePicID, setStar)
|
RefreshFacePicAttr(curPlayer)
|
SyncFacePicInfo(curPlayer, [facePicID])
|
return True
|
|
def SyncFacePicInfo(curPlayer, facePicIDList=None):
|
if facePicIDList == None:
|
syncIDList = []
|
ipyDataMgr = IpyGameDataPY.IPY_Data()
|
for index in range(ipyDataMgr.GetPlayerFacePicCount()):
|
ipyData = ipyDataMgr.GetPlayerFacePicByIndex(index)
|
syncIDList.append(ipyData.GetFacePicID())
|
else:
|
syncIDList = facePicIDList
|
|
facePicList = []
|
for facePicID in syncIDList:
|
state = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID)
|
if not state and facePicIDList == None:
|
continue
|
facePic = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCFacePic)
|
facePic.FacePicID = facePicID
|
facePic.State = state
|
facePic.EndTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicEndTime % facePicID)
|
facePic.Star = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicStar % facePicID)
|
facePicList.append(facePic)
|
|
if not facePicList:
|
return
|
|
clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCFacePicInfo)
|
clientPack.FacePicList = facePicList
|
clientPack.Count = len(clientPack.FacePicList)
|
NetPackCommon.SendFakePack(curPlayer, clientPack)
|
return
|