#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#---------------------------------------------------------------------
|
#
|
#---------------------------------------------------------------------
|
##@package PlayerFamily
|
#¼Ò×åÂß¼´¦Àí
|
#
|
# @author eggxp
|
# @date 2010-4-23
|
# @version 1.0
|
#
|
#---------------------------------------------------------------------
|
#"""Version = 2017-07-12 21:00"""
|
#---------------------------------------------------------------------
|
import IPY_GameWorld
|
import GameWorld
|
import EventShell
|
import FBLogic
|
import ChConfig
|
import PlayerControl
|
import ShareDefine
|
import ReadChConfig
|
import PlayerTruck
|
import NetPackCommon
|
import ChPyNetSendPack
|
import DataRecordPack
|
import GameLogic_FamilyWar
|
import ChMapToGamePyPack
|
import PlayerFamilyTech
|
import PlayerFamilyRedPacket
|
import SkillCommon
|
import BuffSkill
|
import ItemCommon
|
import PlayerSuccess
|
import GameFuncComm
|
import PlayerTJG
|
import IpyGameDataPY
|
|
import time
|
import random
|
#---------------------------------------------------------------------
|
#¼Ò×åË¢ÐÂ
|
#class IPY_MFamilyRefresh
|
#{
|
#public:
|
#
|
# int GetFamilyID();
|
#
|
# char * GetFamilyName();
|
#};
|
## ¼Ò×åË¢ÐÂ
|
# @param index Íæ¼ÒË÷Òý
|
# @param tick µ±Ç°Ê±¼ä
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def GameServer_FamilyRefresh(index, tick):
|
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
refreshPack = IPY_GameWorld.IPY_MFamilyRefresh()
|
|
if curPlayer.GetID() != refreshPack.GetPlayerID():
|
#²»ÊÇ×Ô¼º
|
return
|
|
lastFamilyID = curPlayer.GetFamilyID()
|
|
#************×峤±ä¸üɾ³ý·¢²¼ÈÎÎñ*************************************************
|
if (curPlayer.GetFamilyMemberLV() == IPY_GameWorld.fmlLeader
|
and refreshPack.GetFamilyMemberLV()!= IPY_GameWorld.fmlLeader):
|
EventShell.EventResponse_OnMemberChange(curPlayer)
|
#*******************************************************************
|
|
#---¸ù¾Ý·â°üÐÞ¸ÄÍæ¼Ò¼Ò×åÊôÐÔ---
|
if lastFamilyID != refreshPack.GetFamilyID():
|
curPlayer.SetFamilyID(refreshPack.GetFamilyID())
|
familyIDChangeTime = int(time.time())
|
#PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyIDChangeTime, familyIDChangeTime)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_LastFamilyID, lastFamilyID)
|
GameWorld.Log("¼Ç¼¼Ò×å±ä¸üʱ¼ä...familyIDChangeTime=%s,lastFamilyID=%s,nextFamilyID=%s"
|
% (familyIDChangeTime, lastFamilyID, refreshPack.GetFamilyID()), curPlayer.GetPlayerID())
|
|
#´¥·¢Íæ¼Ò¼ÓÈë¼Ò×åʼþ
|
EventShell.EventResponse_OnFamilyAdd(curPlayer)
|
|
if curPlayer.GetFamilyName() != refreshPack.GetFamilyName():
|
curPlayer.SetFamilyName(refreshPack.GetFamilyName())
|
#֪ͨÖÜÎ§Íæ¼Ò¼Ò×åÃû³ÆË¢ÐÂ
|
curPlayer.Notify_FamilyNameRefresh()
|
|
refreshFamilyLV = refreshPack.GetFamilyLV()
|
lastFamilyLV = curPlayer.GetFamilyLV()
|
if lastFamilyLV != refreshFamilyLV:
|
#ÈÎÎñÐèÇ󣬼ǼÏÈǰµÄ¼Ò×åµÈ¼¶
|
curPlayer.SetDict(ChConfig.Def_PlayerKey_FamilyLVLeave, lastFamilyLV)
|
|
isLVUP = False
|
if lastFamilyLV and refreshFamilyLV > 0:
|
#´¥·¢¼Ò×åÉý¼¶Ê¼þ
|
isLVUP = True
|
|
curPlayer.SetFamilyLV(refreshFamilyLV)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyLV, refreshFamilyLV)
|
|
__OnFamilyLVBuffChange(curPlayer, tick)
|
#´¥·¢¼Ò×åÉý¼¶Ê¼þ, ÔÚSetFamilyLVÖ®ºó£¬ÈÎÎñ¿ÉÒÔÈ¡µÈ¼¶Åж¨
|
if isLVUP:
|
EventShell.EventResponse_OnFamilyLVUp(curPlayer)
|
|
if curPlayer.GetFamilyMemberLV() != refreshPack.GetFamilyMemberLV():
|
curPlayer.SetFamilyMemberLV(refreshPack.GetFamilyMemberLV())
|
#֪ͨÖÜÎ§Íæ¼Ò¼Ò×åְλˢÐÂ
|
curPlayer.Notify_FamilyMemberLVRefresh()
|
GameLogic_FamilyWar.DoCheckChampionFamilyTitle(curPlayer)
|
|
if curPlayer.GetFamilyMoney() != refreshPack.GetFamilyMoney():
|
curPlayer.SetFamilyMoney(refreshPack.GetFamilyMoney())
|
|
if curPlayer.GetFamilyLastWeekActiveValue() != refreshPack.GetLastWeekFamilyActiveValue():
|
curPlayer.SetFamilyLastWeekActiveValue(refreshPack.GetLastWeekFamilyActiveValue())
|
|
#---´¦ÀíÌØÊâÂß¼, ½øÈëÍ˳ö¼Ò×å---
|
|
if lastFamilyID != 0 and curPlayer.GetFamilyID() == 0:
|
#Íæ¼ÒÀ뿪¼Ò×å
|
__OnLeaveFamily(curPlayer, tick)
|
|
#¸Ä±äïÚ³µÉíÉϼǼµÄÖ÷ÈËÐÅÏ¢
|
PlayerTruck.ChangeTruckNoteInfo(curPlayer)
|
|
elif lastFamilyID == 0 and curPlayer.GetFamilyID() != 0:
|
#¸Õ½ø¼Ò×岢Ϊ×峤,´¥·¢½¨¼Ò×åʼþ
|
if curPlayer.GetFamilyMemberLV() == IPY_GameWorld.fmlLeader:
|
EventShell.EventResponse_OnCreateFamily(curPlayer)
|
|
#½øÈë¼Ò×å´¥·¢Ê¼þ
|
__OnEnterFamily(curPlayer, tick)
|
|
#¸Ä±äïÚ³µÉíÉϼǼµÄÖ÷ÈËÐÅÏ¢
|
PlayerTruck.ChangeTruckNoteInfo(curPlayer)
|
|
#---֪ͨ¿Í»§¶ËË¢ÐÂÊôÐÔ---
|
curPlayer.View_FamilyInfoRefresh()
|
return
|
|
## ½øÈë¼Ò×å´¥·¢Ê¼þ
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param tick µ±Ç°Ê±¼ä
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def __OnEnterFamily(curPlayer, tick):
|
EventShell.EventResponse_OnFamily(curPlayer)
|
__OnFamilyLVBuffChange(curPlayer, tick)
|
PlayerFamilyTech.Sync_PlayerFamilyTechLV(curPlayer)
|
DelAddFamilyRecord(curPlayer)
|
GameLogic_FamilyWar.DoCheckChampionFamilyTitle(curPlayer)
|
PlayerFamilyRedPacket.CreatCacheRedPacktet(curPlayer)
|
return
|
|
## Í˳ö¼Ò×å´¥·¢Ê¼þ
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param tick µ±Ç°Ê±¼ä
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def __OnLeaveFamily(curPlayer, tick):
|
#---Çå¿Õ¼Ò×åÏà¹ØÐÅÏ¢---
|
curPlayer.SetPerExp(0)
|
curPlayer.SetFamilyHornor(0)
|
curPlayer.SetFamilyActiveValue(0)
|
curPlayer.SetLastWeekFamilyActiveValue(0)
|
curPlayer.SetFamilyLV(0)
|
|
#´¥·¢Íæ¼ÒÀ뿪¼Ò×åµÄÈÎÎñ
|
EventShell.EventResponse_OnLeaveFamily(curPlayer)
|
|
#ÉèÖÃÁì½±ÏÞÖÆ
|
__SetForbidFamilyAward(curPlayer)
|
FBLogic.OnLeaveFamily(curPlayer, tick)
|
|
__OnFamilyLVBuffChange(curPlayer, tick)
|
#Çå¿Õ²Ö¿â»ý·Ö
|
PlayerControl.SetPlayerCurrency(curPlayer, ShareDefine.TYPE_Price_FamilyStoreScore, 0)
|
GameLogic_FamilyWar.DoCheckChampionFamilyTitle(curPlayer)
|
return
|
|
## ¼Ò×åµÈ¼¶¼Ó³Öbuff±ä¸ü´¦Àí(½ø¡¢Í˼Ò×åʱ ¼° ¼Ò×åµÈ¼¶±ä¸üʱ)
|
def __OnFamilyLVBuffChange(curPlayer, tick):
|
return
|
# ¿ç·þ·þÎñÆ÷²»´¦Àí£¬·ÀÖ¹µÇ¼¿ç·þ·þÎñÆ÷ºóÎÞÕ½Ã˵¼ÖÂÕ½Á¦Ï½µ
|
if GameWorld.IsMergeServer():
|
return
|
|
familyLVBuffSkillTypeID = ReadChConfig.GetEvalChConfig("FamilyLVBuff")
|
if not familyLVBuffSkillTypeID:
|
return
|
|
# ÏÈɾºó¼Ó
|
playerSkillManager = curPlayer.GetSkillManager()
|
BuffSkill.DelBuffBySkillID(curPlayer, familyLVBuffSkillTypeID, tick)
|
playerSkillManager.DeleteSkillBySkillTypeID(familyLVBuffSkillTypeID)
|
familyLV = curPlayer.GetFamilyLV()
|
GameWorld.DebugLog("__OnFamilyLVBuffChange familyLV=%s,familyLVBuffSkillTypeID=%s" % (familyLV, familyLVBuffSkillTypeID))
|
if familyLV > 0:
|
curSkill = GameWorld.GetGameData().FindSkillByType(familyLVBuffSkillTypeID , familyLV)
|
if not curSkill:
|
return
|
skillID = curSkill.GetSkillID()
|
playerSkillManager.LVUPSkillByID(skillID)
|
SkillCommon.AddBuffBySkillType(curPlayer, familyLVBuffSkillTypeID, tick, familyLV)
|
|
curControl = PlayerControl.PlayerControl(curPlayer)
|
#curControl.CalcPassiveBuffAttr()
|
curControl.RefreshPlayerAttrByBuff()
|
return
|
|
def GetPlayerChangeFamilyPastHour(curPlayer):
|
## »ñÈ¡Íæ¼Ò¼Ò×å±ä¸üÒѾ¾¹ýÁ˶೤ʱ¼ä
|
curTime = int(time.time())
|
changeTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyIDChangeTime)
|
return (curTime - changeTime) / 3600
|
|
#
|
#//////////////////////////////////////////////////////////////
|
#//08 04 ÉêÇë¼Ò×åÕ½#tagMRequestFamilyWar
|
#tagMRequestFamilyWar * GettagMRequestFamilyWar();
|
#
|
#class IPY_MRequestFamilyWar
|
#{
|
#public:
|
#
|
# int GetFamilyID();
|
#
|
# char * GetFamilyName();
|
#
|
# int GetVSFamilyID();
|
#
|
# char * GetVSFamilyName();
|
#};
|
## 08 04 ÉêÇë¼Ò×åÕ½#
|
# @param index Íæ¼ÒË÷Òý
|
# @param tick µ±Ç°Ê±¼ä
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def GameServer_RequestFamilyWar(index, tick):
|
#===============================================================================
|
# curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
# pack = IPY_GameWorld.IPY_MRequestFamilyWar()
|
# familyID = pack.GetFamilyID()
|
# familyName = pack.GetFamilyName()
|
# vsFamilyID = pack.GetVSFamilyID()
|
# vsFamilyName = pack.GetVSFamilyName()
|
# FBLogic.OnRequestFamilyWar(curPlayer, familyID, familyName, vsFamilyID, vsFamilyName, tick)
|
#===============================================================================
|
GameWorld.ErrLog('GameServer_RequestFamilyWar, ´Ë½Ó¿Ú·ÏÆú')
|
return
|
#---------------------------------------------------------------------
|
##Íæ¼Ò½ðǮת»»Îª¼Ò×å½ðÇ®
|
# @param playerMoney Íæ¼Ò½ðÇ®
|
# @return ¼Ò×å½ðÇ®
|
# @remarks Íæ¼Ò½ðǮת»»Îª¼Ò×å½ðÇ®
|
def GetPlayerMoney_Change_FamilyMoney(playerMoney):
|
return int(playerMoney * ShareDefine.Def_PlayerMoney_Change_FamilyMoney_Rate)
|
#---------------------------------------------------------------------
|
##Íæ¼Ò»îÔ¾¶Èת»»Îª¼Ò×å»îÔ¾¶È
|
# @param activeValue Íæ¼Ò»îÔ¾¶È
|
# @return ¼Ò×å»îÔ¾¶È
|
# @remarks Íæ¼Ò»îÔ¾¶Èת»»Îª¼Ò×å»îÔ¾¶È
|
def GetPlayerActiveValue_Change_ActiveValue(activeValue):
|
return activeValue
|
|
#---------------------------------------------------------------------
|
##ÀÛ¼ÓÍæ¼ÒµÄ¼Ò×å»îÔ¾¶È
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param addValue Ìí¼ÓµÄÊýÖµ
|
# @param sendPackGameServer ÊÇ·ñ֪ͨGameServerÀÛ¼Ó¼Ò×å»îÔ¾¶È
|
# @param reason À´Ô´, ÔÒò
|
# @return None
|
# @remarks ÀÛ¼ÓÍæ¼ÒµÄ¼Ò×å»îÔ¾¶È
|
def AddPlayerFamilyActiveValue(curPlayer, addValue, sendPackGameServer = False, reason = 0, isSysMsg=False):
|
if addValue <= 0:
|
#GameWorld.ErrLog("AddPlayerFamilyActiveValue Err = %s"%(addValue))
|
return
|
|
curActiveValue = curPlayer.GetFamilyActiveValue()
|
totalActiveValue = curPlayer.GetLastWeekFamilyActiveValue()
|
|
#---ÀÛ¼ÓÍæ¼Ò¼Ò×å»îÔ¾¶È---
|
if curActiveValue < ChConfig.Def_UpperLimit_DWord:
|
#ÀۼƻîÔ¾¶È
|
curPlayer.SetFamilyActiveValue(min(curActiveValue + addValue, ChConfig.Def_UpperLimit_DWord))
|
curPlayer.SetLastWeekFamilyActiveValue(min(totalActiveValue + addValue, ChConfig.Def_UpperLimit_DWord))
|
|
#Ôö¼Ó¹±Ï×¶È
|
PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_Family_Contribution, addValue, isSysHint=isSysMsg)
|
|
#Á÷Ïò¼Ç¼:
|
DataRecordPack.DR_AddPlayerFamilyActiveValue(curPlayer, addValue, curPlayer.GetFamilyActiveValue(), reason)
|
|
#---֪ͨÊÀ½ç·þÎñÆ÷ÀÛ¼Ó¼Ò×å»îÔ¾¶È---
|
#@warning: µ¶½£Ð¦ÏîÄ¿, Íæ¼Ò¼Ò×å»îÔ¾¶ÈÀÛ¼ÓͬʱÀÛ¼Ó¼Ò×å»îÔ¾¶È
|
# Èç¹ûÕâ±ßûÓмÓÉÏÈ¥ÔÚÍâÃæÒª´¦ÀíÒ»´ÎÀÛ¼Ó¼Ò×å»îÔ¾¶È
|
if not sendPackGameServer:
|
return True
|
|
#µ¶½£Ð¦ÒªÇó, Íæ¼Ò»îÔ¾¶ÈÀÛ¼ÓµÄͬʱÀÛ¼Ó¼Ò×å»îÔ¾¶È 1»îÔ¾=1×ʽð
|
SendPack_GameServer_AddFamilyDetailEx(curPlayer, addValue, addValue, resion=reason)
|
return True
|
|
#---------------------------------------------------------------------
|
##֪ͨÊÀ½ç·þÎñÆ÷ÀÛ¼Ó¼Ò×åÊôÐÔ
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param addFamilyHornor Ìí¼Ó¼Ò×åÊÞÁ¸
|
# @param addFamilyMoney Ìí¼Ó¼Ò×å×ʽð
|
# @param addFamilyActiveValue Ôö¼Ó¼Ò×å»îÔ¾¶È
|
# @return ·µ»ØÖµÎÞÒâÒå
|
# @remarks ֪ͨÊÀ½ç·þÎñÆ÷ÀÛ¼Ó¼Ò×åÊôÐÔ
|
def SendPack_GameServer_AddFamilyDetail(curPlayer, addFamilyHornor = 0, addFamilyMoney = 0, addFamilyActiveValue = 0, resion=0):
|
# //Ôö¼Ó¼Ò×åÈÙÓþ
|
# int GetAddFamilyHornor();
|
# //Ôö¼Ó¼Ò×å×ʽð
|
# int GetAddFamilyMoney();
|
# //Ôö¼Ó¼Ò×å»îÔ¾¶È
|
# int GetFamilyActiveValue();
|
# GameWorld.Log('addFamilyHornor = %s, addFamilyMoney = %s, addFamilyActiveValue = %s'%
|
# (addFamilyHornor, addFamilyMoney, addFamilyActiveValue))
|
|
#curPlayer.GameServer_AddFamilyDetail(addFamilyHornor, addFamilyMoney, addFamilyActiveValue)
|
#¸ÄΪPY°ü
|
if not curPlayer.GetFamilyID():
|
return
|
sendPack = ChMapToGamePyPack.tagMGAddFamilyDetail()
|
sendPack.PlayerID = curPlayer.GetPlayerID()
|
sendPack.AddFamilyHornor = addFamilyHornor
|
sendPack.AddFamilyMoney = addFamilyMoney
|
sendPack.FamilyActiveValue = addFamilyActiveValue
|
sendPack.AddResion = resion
|
NetPackCommon.SendPyPackToGameServer(sendPack)
|
GameWorld.DebugLog("AddFamilyDetail addFamilyHornor=%s,addFamilyMoney=%s,addFamilyActiveValue=%s, resion=%s"
|
% (addFamilyHornor, addFamilyMoney, addFamilyActiveValue, resion), curPlayer.GetPlayerID())
|
return
|
#---------------------------------------------------------------------
|
##֪ͨÊÀ½ç·þÎñÆ÷ÀÛ¼Ó¼Ò×åÊôÐÔ
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param addFamilyActiveValue Ôö¼ÓÍæ¼Ò¼Ò×å»îÔ¾¶È
|
# @param addFamilyHornor Ìí¼Ó¼Ò×åÈÙÓþ
|
# @param addFamilyMoney Ìí¼Ó¼Ò×å×ʽð
|
# @return ·µ»ØÖµÎÞÒâÒå
|
# @remarks ֪ͨÊÀ½ç·þÎñÆ÷ÀÛ¼Ó¼Ò×åÊôÐÔ
|
def SendPack_GameServer_AddFamilyDetailEx(curPlayer, addPlayerActiveValue, addFamilyMoney = 0, addFamilyHornor = 0, resion=0):
|
|
#µ¶½£Ð¦Ôö¼ÓÍæ¼Ò»îÔ¾¶ÈĬÈÏÐÂÔö¼Ò×å»îÔ¾¶È
|
addFamilyActiveValue = GetPlayerActiveValue_Change_ActiveValue(addPlayerActiveValue)
|
|
SendPack_GameServer_AddFamilyDetail(curPlayer, addFamilyHornor, addFamilyMoney, addFamilyActiveValue, resion)
|
|
return
|
#---------------------------------------------------------------------
|
##֪ͨGameServer, ¿Í»§¶Ë¿ªÊ¼´´½¨¼Ò×å
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @return ·µ»ØÖµÎÞÒâÒå
|
# @remarks ֪ͨGameServer, ¿Í»§¶Ë¿ªÊ¼´´½¨¼Ò×å
|
def SendPack_GameServer_InputFamilyName(curPlayer):
|
#֪ͨGameServerÉèÖò鿴״̬, ·ÀÍâ¹Ò
|
curPlayer.GameServer_SetPlayerViewFamilyState(ShareDefine.TViewFamilyType_CreateFamily)
|
#֪ͨ¿Í»§¶Ë´ò¿ªÊäÈë¼Ò×åÃû½çÃæ
|
curPlayer.Frm_InputFamilyName()
|
return
|
|
##֪ͨGameServer, ¿Í»§¶Ë¿ªÊ¼ä¯ÀÀ¼Ò×åÐÅÏ¢
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @return ·µ»ØÖµÎÞÒâÒå
|
# @remarks ֪ͨGameServer, ¿Í»§¶Ë¿ªÊ¼ä¯ÀÀ¼Ò×åÐÅÏ¢
|
def SendPack_GameServer_ViewAllFamily(curPlayer):
|
#֪ͨGameServerÉèÖò鿴״̬, ·ÀÍâ¹Ò
|
curPlayer.GameServer_SetPlayerViewFamilyState(ShareDefine.TViewFamilyType_FamilyWar)
|
#֪ͨGameServer¸ø¿Í»§¶Ë¼Ò×åÐÅÏ¢
|
curPlayer.GameServer_ViewAllFamily()
|
return
|
|
##֪ͨGameServer, Çå³ý¿Í»§¶Ëä¯ÀÀ¼Ò×å״̬
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @return ·µ»ØÖµÎÞÒâÒå
|
# @remarks ֪ͨGameServer, ֪ͨGameServer, Çå³ý¿Í»§¶Ëä¯ÀÀ¼Ò×å״̬
|
def SendPack_GameServer_ClearViewFamilyState(curPlayer):
|
#MapServer¸æËßGameServer×Ô¼ºÊÇ·ñÔÚ´´½¨¼Ò×å״̬
|
#ÒòΪ¼Ò×å·â°üÊÇÔÚGameServer´¦ÀíµÄ, ·ÀÖ¹±»Æ
|
if curPlayer.GetViewFamilyState() in [ShareDefine.TViewFamilyType_None,
|
ShareDefine.TViewFamilyType_CreateFamily]:
|
#TViewFamilyType_CreateFamily״̬ÔÚGameServer DoCreateFamily½áÊøºó½â³ý
|
return
|
|
curPlayer.GameServer_SetPlayerViewFamilyState(ShareDefine.TViewFamilyType_None)
|
return
|
|
def __SetForbidFamilyAward(curPlayer):
|
''' ÉèÖüÒ×åÏà¹Ø»î¶¯Áì½±ÏÞÖÆ
|
Èç¹ûÍ˳öʱ½ñÈÕÒÑ¿ªÊ¼¹ý¶ÔÓ¦»î¶¯£¬ÔòÉèÖÃÁì½±ÏÞÖÆ
|
'''
|
|
playerID = curPlayer.GetPlayerID()
|
openState = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_FamilyActivityDayState)
|
forbidState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ForbidFamilyAward)
|
GameWorld.DebugLog("Í˳ö¼Ò×å´¦Àí¼Ò×å»î¶¯½±ÀøÁìÈ¡ÏÞÖÆ! openState=%s,forbidState=%s" % (openState, forbidState), playerID)
|
|
updForbidState = forbidState
|
for activityType in ShareDefine.Def_FamActivityList:
|
|
if not openState&pow(2, activityType):
|
GameWorld.DebugLog(" ¸Ã¼Ò×å»î¶¯½ñÈÕ먦Æô¹ý£¡ ²»ÉèÖÃÏÞÖÆÁì½±! activityType=%s" % activityType, playerID)
|
continue
|
updForbidState = updForbidState|pow(2, activityType)
|
GameWorld.DebugLog(" ¼Ò×å»î¶¯Áì½±ÏÞÖÆ activityType=%s,updForbidState=%s" % (activityType, updForbidState), playerID)
|
|
if updForbidState != forbidState:
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ForbidFamilyAward, updForbidState)
|
GameWorld.DebugLog(" ¸üмÒ×å»î¶¯Áì½±ÏÞÖÆ: forbidState=%s,updForbidState=%s" % (forbidState, updForbidState), playerID)
|
|
return
|
|
## ÉèÖÃÍæ¼ÒÊÇ·ñ¿ÉÒԲμӼÒ×å»î¶¯
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param isForbid ÊÇ·ñÏÞÖÆ
|
# @return ·µ»ØÖµÎÞÒâÒå
|
def SetForbidFamilyAction(curPlayer, isForbid):
|
#===============================================================================================
|
# if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ForbidFamilyAction) != isForbid:
|
# PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ForbidFamilyAction, isForbid)
|
#
|
# # Í¨ÖªÍæ¼ÒÊÇ·ñ¿ÉÒԲμӼÒ×å»î¶¯
|
# SendClientForbidFamilyAction(curPlayer)
|
#===============================================================================================
|
return
|
|
|
## Í¨ÖªÍæ¼ÒÊÇ·ñ¿ÉÒԲμӼÒ×å»î¶¯
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @return ·µ»ØÖµÎÞÒâÒå
|
def SendClientForbidFamilyAction(curPlayer):
|
# isForbid = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ForbidFamilyAction)
|
#
|
# outCardsCDTime = ChPyNetSendPack.tagPyFamilyActionForbid()
|
# outCardsCDTime.Clear()
|
#
|
# outCardsCDTime.IsForbid = isForbid
|
# NetPackCommon.SendFakePack(curPlayer, outCardsCDTime)
|
return
|
|
|
#===============================================================================
|
# //A6 01 ÏòÍæ¼ÒÉêÇë¼ÓÈë¼Ò×å #tagCGRequestJoinFamilyByPlayer
|
#
|
# struct tagCGRequestJoinFamilyByPlayer
|
#
|
# {
|
# tagHead Head;
|
# DWORD AddPlayerID; //ÉêÇë¼ÓÈëµÄÍæ¼ÒID
|
# };
|
#===============================================================================
|
## ͨ¹ýÉêÇë¼ÓÈë¼Ò×å
|
# @param index: Íæ¼ÒË÷Òý
|
# @param clientData: ·â°ü½á¹¹Ìå
|
# @param tick: ʱ¼ä´Á
|
# @return: None
|
def RequestAddFamilyByID(index, clientData, tick):
|
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
|
addPlayerID = clientData.AddPlayerID #ÉêÇë½øÈëµÄ¼Ò×åID
|
|
addPlayer = GameWorld.GetPlayerManager().FindPlayerByID(addPlayerID)
|
#¶Ô·½ÏÂÏß
|
if not addPlayer:
|
return
|
|
addFamilyID = addPlayer.GetFamilyID()
|
#¶Ô·½Ã»ÓмÒ×å
|
if addFamilyID <= 0:
|
return
|
|
#ÉêÇë¼ÓÈë
|
AddFamily(curPlayer, addFamilyID)
|
|
#֪ͨµ±Ç°ÉêÇë¼ÓÈëµÄÄÄЩ¼Ò×å
|
#Sync_RequestAddFamilyInfo(curPlayer)
|
return
|
|
|
#===============================================================================
|
# //A6 02 ÉêÇë¼ÓÈë¼Ò×å#tagCGRequesJoinFamily
|
#
|
# struct tagCGRequesJoinFamily
|
#
|
# {
|
# tagHead Head;
|
# BYTE Type; //ÉêÇëÀàÐÍ
|
# DWORD AddFamilyID; //ÉêÇë¼ÓÈëµÄ¼Ò×å
|
# };
|
#===============================================================================
|
## ÉêÇë¼ÓÈë¼Ò×å
|
# @param index: Íæ¼ÒË÷Òý
|
# @param clientData: ·â°ü½á¹¹Ìå
|
# @param tick: ʱ¼ä´Á
|
# @return: None
|
def RequestAddFamily(index, clientData, tick):
|
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
|
addFamilyID = clientData.AddFamilyID # ÉêÇë½øÈëµÄ¼Ò×åID
|
requestType = clientData.Type # ÉêÇëÀàÐÍ(ÉêÇë/³·Ïú)
|
|
if requestType == 0:
|
#ÉêÇë¼ÓÈë
|
AddFamily(curPlayer, addFamilyID)
|
|
elif requestType == 1:
|
DelAddFamilyRecord()
|
|
|
#֪ͨµ±Ç°ÉêÇë¼ÓÈëµÄÄÄЩ¼Ò×å
|
Sync_RequestAddFamilyInfo(curPlayer)
|
return
|
|
def DelAddFamilyRecord(curPlayer):
|
for index in range(0, ChConfig.Def_Player_RequestAddFamilyMaxCnt):
|
|
#ÉêÇë¼ÓÈëµÄ¼Ò×åID
|
requestAddFamilyID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyID%index)
|
if not requestAddFamilyID:
|
continue
|
#±¾°æ±¾ÒòΪ¿Í»§¶ËûÓе¥¸öÈ¡ÏûÉêÇëµÄ²Ù×÷£¬´Ë´¦·¢Ò»´Î°üÒ»´ÎÐÔÈ«²¿È¡Ïû
|
# if addFamilyID != requestAddFamilyID:
|
# continue
|
|
#ÉêÇëÊýÁ¿-1
|
requestAddFamilyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyCnt)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RequestAddFamilyCnt, requestAddFamilyCnt - 1)
|
|
#Çå³ý³·ÏúÉêÇëµÄ¼Ò×åID¼Ç¼
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RequestAddFamilyID%index, 0)
|
|
#ÏòGameServer·¢ËÍÇëÇóɾ³ý¸ÃÍæ¼ÒµÄÉêÇë¼Ò×åÐÅÏ¢Çé¿ö
|
sendMsg = str(requestAddFamilyID)
|
curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_DelFamilyAction,
|
ShareDefine.Def_ActionType_FamilyAdd, '', sendMsg, len(sendMsg))
|
|
Sync_RequestAddFamilyInfo(curPlayer)
|
return
|
|
## ֪ͨµ±Ç°ÉêÇë¼ÓÈëµÄÄÄЩ¼Ò×å
|
# @param curPlayer:Íæ¼ÒʵÀý
|
# @return: None
|
def Sync_RequestAddFamilyInfo(curPlayer):
|
requestAddFamilyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyCnt)
|
|
packList = []
|
for index in range(0, ChConfig.Def_Player_RequestAddFamilyMaxCnt):
|
familyID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyID%index)
|
if familyID == 0:
|
continue
|
|
requestAddFamilyInfo = ChPyNetSendPack.tagRequestJoinFamily()
|
requestAddFamilyInfo.RequestFamilyID = familyID
|
packList.append(requestAddFamilyInfo)
|
|
requestAddFamily = ChPyNetSendPack.tagMCNotifyRequestJoinFamilyInfo()
|
requestAddFamily.Clear()
|
requestAddFamily.RequestCount = len(packList)
|
requestAddFamily.RequestAddFamilyInfo = packList
|
|
NetPackCommon.SendFakePack(curPlayer, requestAddFamily)
|
return
|
|
|
## ÉêÇë¼ÓÈë°ï»á
|
#@param curPlayer ¼Ò×åʵÀý
|
#@param familyID ¼Ò×åID
|
#@return ·µ»ØÖµÎÞÒâÒå
|
def AddFamily(curPlayer, familyID):
|
|
requestAddFamilyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyCnt)
|
if requestAddFamilyCnt >= ChConfig.Def_Player_RequestAddFamilyMaxCnt:
|
# jiazu_pan_21675 ¸ÄΪ jiazu_lhs_31379 ×î¶àͬʱÏò%s¸ö°ï»á·¢³öÉêÇë
|
PlayerControl.NotifyCode(curPlayer, "jiazu_lhs_31379", [ChConfig.Def_Player_RequestAddFamilyMaxCnt])
|
return
|
|
#ÊÇ·ñÒѾÉêÇëÁË
|
for index in range(0, ChConfig.Def_Player_RequestAddFamilyMaxCnt):
|
if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyID%index) == familyID:
|
GameWorld.DebugLog('ÒѾÔÚÉêÇëÁбíÖÐ')
|
#ÒѾÔÚÉêÇëÁбíÖÐ
|
return
|
|
#ÇëÇó¼Ç¼ÉêÇë½øÈë¼Ò×åÐÅÏ¢
|
sendMsg = str([familyID, curPlayer.GetFightPower()])
|
curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_AddFamilyAction,
|
ShareDefine.Def_ActionType_FamilyAdd, '', sendMsg, len(sendMsg))
|
|
#µÈGameServer·´À¡½á¹ûÔÙ´¦Àí
|
return
|
|
#¼Ç¼¸öÈËÉêÇë¼ÓÈëµÄ¼Ò×åID
|
for index in range(0, ChConfig.Def_Player_RequestAddFamilyMaxCnt):
|
if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyID%index) == 0:
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RequestAddFamilyID%index, familyID)
|
break
|
|
#¼Ç¼¸öÈËÉêÇë¼ÓÈë¼Ò×åµÄ¸öÊý
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RequestAddFamilyCnt, requestAddFamilyCnt + 1)
|
|
return
|
|
|
|
|
|
## Õ½ÃËÍæ¼ÒOnDay
|
# @param curPlayer
|
# @return None
|
def FamilyPlayerOnDay(curPlayer):
|
if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Family):
|
return
|
#ÿÈÕ¸£Àû½±Àø
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyDayAward, 0)
|
Sync_FamilyDayRewardState(curPlayer)
|
return
|
|
|
## Õ½ÃËÍæ¼ÒOnLogin
|
# @param curPlayer
|
# @return None
|
def FamilyPlayerOnLogin(curPlayer, tick):
|
if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Family):
|
return
|
|
PlayerFamilyTech.Sync_PlayerFamilyTechLV(curPlayer)
|
SyncFamilyActivityInfo(curPlayer)
|
Sync_FamilyDayRewardState(curPlayer)
|
return
|
|
|
|
|
## ֪ͨGameServerÔö¼Ó¼Ò×åÏà¹ØÐÅÏ¢Öµ
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param infoDict ÐÅÏ¢×Öµä
|
# @return
|
def Send_GameServer_PyAddFamilyInfoValue(curPlayer, infoDict={}):
|
if not isinstance(infoDict, dict) or not infoDict:
|
GameWorld.DebugLog("Send_GameServer_PyAddFamilyInfoValue infoDict=%s err!" % str(infoDict))
|
return
|
|
sendMsg = '%s'%(infoDict)
|
#GameWorld.DebugLog("Send_GameServer_PyAddFamilyInfoValue sendMsg=%s" % sendMsg)
|
GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'PyAddFamilyInfoValue', sendMsg, len(sendMsg))
|
return
|
|
|
|
#// A6 05 ¼Ò×å¾èÏ×ÊÞÁ¸ #tagCMFamilyDonate
|
#
|
#struct tagCMFamilyDonate
|
#{
|
# tagHead Head;
|
#};
|
def OnFamilyDonateItem(index, clientData, tick):
|
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
if not curPlayer:
|
return
|
|
playerFamilyID = curPlayer.GetFamilyID()
|
if playerFamilyID <= 0:
|
return
|
totalAddActiveValue = 0
|
delItemList = []
|
totalCnt = 0
|
curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
for i in range(curPack.GetCount()):
|
item = curPack.GetAt(i)
|
if item == None or item.IsEmpty():
|
continue
|
if item.GetType() != ChConfig.Def_ItemType_FamilyBossFood:
|
continue
|
addActiveValue = item.GetEffectByIndex(0).GetEffectValue(0)
|
# if not addActiveValue:
|
# continue
|
itemCnt = item.GetCount()
|
totalAddActiveValue += addActiveValue * itemCnt
|
delItemList.append([item, itemCnt])
|
totalCnt += itemCnt
|
if not totalCnt:
|
GameWorld.DebugLog('±³°üÀïûÓпɾèÏ×µÄÎïÆ·')
|
return
|
for eatItem, delCnt in delItemList:
|
ItemCommon.DelItem(curPlayer, eatItem, delCnt, False)
|
|
#ÀÛ¼Ó¸öÈË»îÔ¾¶È/¹±Ï×¶È
|
if totalAddActiveValue:
|
AddPlayerFamilyActiveValue(curPlayer, totalAddActiveValue, True, ShareDefine.Def_AddFAVReason_FamilyDonateItem)
|
AddFamilyBossFood(curPlayer, totalCnt, ShareDefine.Def_AddFAVReason_FamilyDonateItem)
|
GameWorld.DebugLog(' ¾èÏ×ÏÉÃËÊÞÁ¸ totalCnt=%s,totalAddActiveValue=%s'%(totalCnt,totalAddActiveValue))
|
return
|
|
def DoAddFamilyBossFoodEx(curPlayer, itemID, itemCnt, reason=0):
|
itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
|
if not itemData:
|
return
|
if itemData.GetType() != ChConfig.Def_ItemType_FamilyBossFood:
|
return
|
addActiveValue = itemData.GetEffectByIndex(0).GetEffectValue(0)
|
if not addActiveValue:
|
return
|
totalAddActiveValue = addActiveValue * itemCnt
|
GameWorld.DebugLog('×Ô¶¯¾èÏ×ÏÉÃËÊÞÁ¸ totalCnt=%s,totalAddActiveValue=%s,reason=%s' % (itemCnt, totalAddActiveValue, reason))
|
#ÀÛ¼Ó¸öÈË»îÔ¾¶È/¹±Ï×¶È
|
AddPlayerFamilyActiveValue(curPlayer, totalAddActiveValue, True, reason)
|
AddFamilyBossFood(curPlayer, itemCnt, reason)
|
return True
|
|
##Ôö¼ÓÊÞÁ¸
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param addExp Ôö¼ÓµÄ¾Ñéµã
|
# @return ·µ»ØÖµÎÞÒâÒå
|
def AddFamilyBossFood(curPlayer, addExp, reason):
|
#ûÓмÒ×å²»´¦Àí
|
familyID = curPlayer.GetFamilyID()
|
if familyID == 0:
|
return
|
if addExp <= 0:
|
return
|
SendPack_GameServer_AddFamilyDetailEx(curPlayer, 0, 0, addExp, reason)
|
return
|
|
#---------------------------------------------------------------------
|
|
|
|
## Ìí¼Ó¼Ò×åʼþ¼Ç¼
|
def AddFamilyEventNote(curPlayer, eventType, valueList):
|
##ͬ²½¼Ç¼µ½GameServer, eventTypeĬÈÏΪvalue1
|
sendMsg = str([eventType] + valueList)
|
curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_AddFamilyAction, ShareDefine.Def_ActionType_FamilyEvent, '', sendMsg, len(sendMsg))
|
GameWorld.DebugLog("AddFamilyEventNote sendMsg=%s" % sendMsg)
|
return
|
|
|
## --------------------------------- ÏÉÃË»îÔ¾ -----------------------------------
|
def OnWeekEx(curPlayer):
|
#ÖØÖÃ
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyActivityAwardRecord, 0)
|
for actionid in ShareDefine.FamilyActiveIDList:
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyActivityFinishCnt%actionid, 0)
|
|
SyncFamilyActivityInfo(curPlayer)
|
return
|
|
## ÁìÈ¡ÏÉÃË»îÔ¾¶È½±Àø
|
# @param curPlayer
|
# @param awardIndex
|
# @return None
|
def GetFamilyActivityAward(curPlayer, awardIndex):
|
familyActiveList = IpyGameDataPY.GetFuncEvalCfg('FamilyActive')
|
familyActiveAwardList = IpyGameDataPY.GetFuncEvalCfg('FamilyActive', 2)
|
if awardIndex < 0 or awardIndex >= len(familyActiveList):
|
GameWorld.ErrLog("»îÔ¾¶È½±ÀøË÷Òý²»ºÏ·¨,index=%s,Len=%s" % (awardIndex, len(familyActiveList)))
|
return
|
|
# ÅжÏÊÇ·ñÒÑÁìÈ¡
|
getAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyActivityAwardRecord, 0)
|
if getAwardRecord & pow(2, awardIndex):
|
GameWorld.Log("ÒѾÁìÈ¡¹ý¸Ã»îÔ¾¶È½±Àø,index=%s" % (awardIndex))
|
return
|
|
|
needActivity = familyActiveList[awardIndex]
|
totalActivity = __GetTotalFamilyActivity(curPlayer)#×Ü»îÔ¾¶È
|
|
# ÅжϻîÔ¾¶È
|
if totalActivity < needActivity:
|
GameWorld.Log("Áì½±»îÔ¾¶È²»×ã,index=%s,needActivity=%s,totalActivity=%s"
|
% (awardIndex, needActivity, totalActivity))
|
return
|
|
activityValue = familyActiveAwardList[awardIndex]
|
PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyActivity, activityValue)
|
|
# ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç
|
updAwardRecord = getAwardRecord | (1 << awardIndex)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyActivityAwardRecord, updAwardRecord)
|
|
SyncFamilyActivityInfo(curPlayer)
|
GameWorld.DebugLog("ÁìÈ¡ÏÉÃË»îÔ¾¶È½±ÀøOK£¡ index=%s,needActivity=%s,totalActivity=%s,awardRecord=%s"
|
% (awardIndex, needActivity, totalActivity, updAwardRecord))
|
return
|
|
def AddFamilyActivity(curPlayer, actionid, addCnt=1):
|
ipyData = IpyGameDataPY.GetIpyGameData('FamilyActivity', actionid)
|
if not ipyData:
|
return
|
if not GameFuncComm.GetFuncCanUse(curPlayer, ipyData.GetUnLockFuncID()):
|
return
|
finishCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyActivityFinishCnt%actionid, 0)
|
maxCnt = ipyData.GetTotalActivityTime()
|
if finishCnt >= maxCnt:
|
return
|
newCnt = min(maxCnt, finishCnt+addCnt)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyActivityFinishCnt%actionid, newCnt)
|
SyncFamilyActivityInfo(curPlayer, actionid)
|
GameWorld.DebugLog(' ÏÉÃË»îÔ¾Íê³É´ÎÊý actionid=%s,newCnt=%s'%(actionid, newCnt))
|
return
|
|
def __GetTotalFamilyActivity(curPlayer):
|
##»ñÈ¡×ÜÏÉÃË»îÔ¾¶È
|
totalPoint = 0
|
ipyDataMgr = IpyGameDataPY.IPY_Data()
|
for i in xrange(ipyDataMgr.GetFamilyActivityCount()):
|
ipyData = ipyDataMgr.GetFamilyActivityByIndex(i)
|
actionid = ipyData.GetID()
|
curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyActivityFinishCnt%actionid, 0)
|
totalPoint += curTimes/ipyData.GetSingleTimes()*ipyData.GetSingleActiveValue()
|
return totalPoint
|
|
def SyncFamilyActivityInfo(curPlayer, syncActionid=-1):
|
#֪ͨ»îÔ¾ÁìÈ¡Çé¿ö
|
syncActionIDList = ShareDefine.FamilyActiveIDList if syncActionid==-1 else [syncActionid]
|
sendPack = ChPyNetSendPack.tagMCFamilyActivityInfo()
|
sendPack.Clear()
|
sendPack.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyActivityAwardRecord, 0)
|
sendPack.InfoList = []
|
for actionid in syncActionIDList:
|
activityInfo = ChPyNetSendPack.tagMCFamilyActionCnt()
|
activityInfo.ActionID = actionid
|
activityInfo.FinishCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyActivityFinishCnt%actionid, 0)
|
sendPack.InfoList.append(activityInfo)
|
sendPack.Count = len(sendPack.InfoList)
|
NetPackCommon.SendFakePack(curPlayer, sendPack)
|
return
|
|
#=================ÏÉÃ˸ÄÃû======================
|
#// A6 11 ¼Ò×å¸ÄÃû #tagCMRenameFamily
|
#
|
#struct tagCMRenameFamily
|
#{
|
# tagHead Head;
|
# BYTE NewNameLen;
|
# char NewName[NewNameLen];
|
# BYTE ItemIndex; //¸ÄÃûÎïÆ·ÔÚ±³°üÖеÄλÖÃ
|
#};
|
def UpdateFamilyName(index, clientData, tick):
|
|
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
if GameWorld.IsMergeServer():
|
#itemuse_lzxkoy_0:²»¿ÉÔÚ¿ç·þ»·¾³ÏÂʹÓøÄÃû¹¦ÄÜ¡£
|
PlayerControl.NotifyCode(curPlayer, "itemuse_lzxkoy_0")
|
return
|
|
if not curPlayer.GetFamilyID():
|
return
|
|
if curPlayer.GetDictByKey(ChConfig.Def_Player_Dict_UpdateFamilyName):
|
#ÕýÔÚ¸ÄÃûÖÐ
|
GameWorld.Log("ÏÉÃËÒѾÔÚ¸ÄÃûÖÐ...", curPlayer.GetID())
|
return
|
|
#ÐÂÃû×Ö
|
newName = clientData.NewName
|
itemIndex = clientData.ItemIndex
|
|
itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
curItem = itemPack.GetAt(itemIndex)
|
if not ItemCommon.CheckItemCanUse(curItem):
|
return
|
if curItem.GetType() != ChConfig.Def_ItemType_ChangeFamilyName:
|
return
|
|
#¸ÄÃûÎïÆ·ÔÚ±³°üµÄλÖÃ
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_UpdateFamilyNameItemIndex, itemIndex)
|
|
#ÉèÖÃÕýÔÚ¸ÄÃûÖÐ...
|
curPlayer.SetDict(ChConfig.Def_Player_Dict_UpdateFamilyName, 1)
|
|
#֪ͨGameServerÕýʽ¸ÄÃû
|
newNameMsg = str(newName)
|
GameWorld.Log("UpdateFamilyName ֪ͨGameServerÕýʽ¸ÄÃûΪ:%s"%newNameMsg, curPlayer.GetID())
|
GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'UpdateFamilyName', newNameMsg, len(newNameMsg))
|
return
|
|
|
## ¿Û³ý¸ÄÃûÏûºÄ
|
# @param curPlayer: Íæ¼ÒʵÀý
|
# @return: None
|
def PayUpdateFamilyNameCost(curPlayer):
|
itemIndex = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_UpdateFamilyNameItemIndex)
|
#¿Û³ýÎïÆ·
|
itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
curItem = itemPack.GetAt(itemIndex)
|
if curItem:
|
ItemCommon.DelItem(curPlayer, curItem, 1, True, 'UpdateFamilyName')
|
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_UpdateFamilyNameItemIndex, 0)
|
return
|
|
def GetFamilyDayAward(curPlayer):
|
##ÁìÈ¡ÏÉÃËÿÈÕ½±Àø 2СʱÍÑ»ú¹Òʱ¼ä
|
if not curPlayer.GetFamilyID():
|
return
|
hasGot = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyDayAward)
|
if hasGot:
|
GameWorld.DebugLog('ÁìÈ¡ÏÉÃËÿÈÕ½±Àø µ±ÈÕÒÑÁìÈ¡£¡')
|
return
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyDayAward, 1)
|
addTime = IpyGameDataPY.GetFuncCfg('FamilyDayAward')
|
PlayerTJG.AddTJGTime(curPlayer, addTime)
|
#֪ͨ
|
Sync_FamilyDayRewardState(curPlayer)
|
PlayerControl.NotifyCode(curPlayer, 'OfflinePlugSuccess', [addTime/60/60])
|
|
return
|
|
def Sync_FamilyDayRewardState(curPlayer):
|
clientPack = ChPyNetSendPack.tagMCFamilyDayAward()
|
clientPack.GetState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyDayAward)
|
NetPackCommon.SendFakePack(curPlayer, clientPack)
|
return
|