| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package Player.PlayerFreshmanGuide  | 
| #  | 
| # @todo:ÐÂÊÖÖ¸µ¼Ô±  | 
| # @author hxp  | 
| # @date 2014-02-28  | 
| # @version 1.0  | 
| #  | 
| # ÏêϸÃèÊö: ÐÂÊÖÖ¸µ¼Ô±  | 
| #  | 
| #---------------------------------------------------------------------  | 
| #"""Version = 2014-02-28 21:10"""  | 
|   | 
| import ChConfig  | 
| import BuffSkill  | 
| import GameWorld  | 
| import SkillCommon  | 
| import ReadChConfig  | 
| import PlayerControl  | 
|   | 
|   | 
| ## ÉèÖÃÐÂÊÖÖ¸µ¼Ô±ÓÐЧÌìÊý  | 
| #  @param curPlayer Íæ¼ÒʵÀý  | 
| #  @param day ÌìÊý£¬Îª0ʱȡÏûÐÂÊÖÖ¸µ¼Ô±¹¦ÄÜ  | 
| #  @param tick µ±Ç°Ê±¼ä  | 
| #  @return  | 
| def SetFreshmanGuideDay(curPlayer, day):  | 
|     GameWorld.DebugLog("SetFreshmanGuideDay day=%s" % day, curPlayer.GetPlayerID())  | 
|     day = max(0, day)  | 
|     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreshmanGuideDay, day)  | 
|       | 
|     tick = GameWorld.GetGameWorld().GetTick()  | 
|       | 
|     # buff´¦Àí  | 
|     if day > 0:  | 
|         SkillCommon.AddBuffBySkillType(curPlayer, ChConfig.Def_SkillID_FreshmanGuideBuff, tick)  | 
|     else:  | 
|         BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_SkillID_FreshmanGuideBuff, tick)  | 
|       | 
|     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreshmanGuideSpeakerCntToday, 0)  | 
|     # Í¨ÖªGameServer  | 
|     __NotifyGameServer(curPlayer)  | 
|     return  | 
|   | 
|   | 
| ## »ñÈ¡ÐÂÊÖÖ¸µ¼Ô±Ê£ÓàÌìÊý  | 
| #  @param curPlayer Íæ¼ÒʵÀý  | 
| #  @return Ê£ÓàÌìÊý£¬Îª0±íʾ·ÇÖ¸µ¼Ô±  | 
| def GetFreshmanGuiderDay(curPlayer):  | 
|     return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreshmanGuideDay)  | 
|   | 
|   | 
| ## Í¨ÖªGameServer  | 
| #  @param curPlayer Íæ¼ÒʵÀý  | 
| #  @return None  | 
| def __NotifyGameServer(curPlayer):  | 
|     msgList = [GetFreshmanGuiderDay(curPlayer)]  | 
|     GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'FreshmanGuiderDay', \  | 
|                                                                '%s' % (msgList), len(str(msgList)))  | 
|     return  | 
|   | 
|   | 
| ## ÐÂÊÖÖ¸µ¼Ô±µÇ¼´¦Àí  | 
| #  @param curPlayer ·¢³öÇëÇóµÄÍæ¼Ò  | 
| #  @return None  | 
| def FreshmanGuiderOnLogin(curPlayer):  | 
|     # ·ÇÐÂÊÖÖ¸µ¼Ô±  | 
|     if GetFreshmanGuiderDay(curPlayer) <= 0:  | 
|         return  | 
|       | 
|     # µÇ¼ʱÏòGameServerͬ²½Ê£ÓàÌìÊý  | 
|     __NotifyGameServer(curPlayer)  | 
|     return  | 
|   | 
|   | 
| ## ÐÂÊÖÖ¸µ¼Ô±¹ýÌì´¦Àí  | 
| #  @param curPlayer ·¢³öÇëÇóµÄÍæ¼Ò  | 
| #  @param tick µ±Ç°Ê±¼ä  | 
| #  @return None  | 
| def FreshmanGuiderOnDay(curPlayer):  | 
|     # ·ÇÐÂÊÖÖ¸µ¼Ô±  | 
|     if GetFreshmanGuiderDay(curPlayer) <= 0:  | 
|         GameWorld.DebugLog("FreshmanGuiderOnDay...·ÇÐÂÊÖÖ¸µ¼Ô±!", curPlayer.GetPlayerID())  | 
|         return  | 
|       | 
|     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreshmanGuideSpeakerCntToday, 0)  | 
|     nowDay = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreshmanGuideDay)  | 
|     nowDay = max(0, nowDay - 1)  | 
|     GameWorld.DebugLog("FreshmanGuiderOnDay...¸üÐÂÐÂÊÖÖ¸µ¼Ô±ÌìÊý£º%s,Çå¿Õ´«Òô´ÎÊý£¡" % nowDay, curPlayer.GetPlayerID())  | 
|     SetFreshmanGuideDay(curPlayer, nowDay)  | 
|     return  | 
|   | 
|   | 
| ## ÐÂÊÖÖ¸µ¼Ô±¿É·ñÃâ·ÑʹÓô«Òô  | 
| #  @param curPlayer ·¢³öÇëÇóµÄÍæ¼Ò  | 
| #  @return True or False  | 
| def CanFreeSpeak(curPlayer):  | 
|     # ·ÇÐÂÊÖÖ¸µ¼Ô±  | 
|     if GetFreshmanGuiderDay(curPlayer) <= 0:  | 
|         return False  | 
|       | 
|     maxFreeCnt = ReadChConfig.GetEvalChConfig("FreshmanGuiderFreeSpeakCnt")    | 
|     todayCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreshmanGuideSpeakerCntToday)  | 
|     GameWorld.DebugLog("CanFreeSpeak maxFreeCnt=%s,todayCnt=%s" % (maxFreeCnt, todayCnt), curPlayer.GetPlayerID())  | 
|     return todayCnt < maxFreeCnt  | 
|   | 
|   | 
| ## Ôö¼ÓÐÂÊÖÖ¸µ¼Ô±Ãâ·ÑʹÓô«Òô´ÎÊý  | 
| #  @param curPlayer ·¢³öÇëÇóµÄÍæ¼Ò  | 
| #  @return  | 
| #  @remarks Ä¬ÈϼÓ1  | 
| def AddFreeSpeakCnt(curPlayer):  | 
|     speakerCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreshmanGuideSpeakerCntToday)  | 
|     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreshmanGuideSpeakerCntToday, speakerCnt + 1)  | 
|     GameWorld.DebugLog("AddFreeSpeakCnt ÐÂÊÖÖ¸µ¼Ô±Ôö¼ÓÃâ·Ñ·¢´«Òô´ÎÊý£¡µ±Ç°ÒÑÃâ·Ñ´ÎÊý=%s"   | 
|                        % (speakerCnt + 1), curPlayer.GetPlayerID())  | 
|     return  | 
|   |