#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GameWorldLogic.FBProcess.GameLogic_CrossGrassland # # @todo:¿ç·þ²ÝÔ° # @author hxp # @date 2019-04-15 # @version 1.0 # # ÏêϸÃèÊö: ¿ç·þ²ÝÔ° # #------------------------------------------------------------------------------- #"""Version = 2019-04-15 16:30""" #------------------------------------------------------------------------------- import GameWorld import GameWorldProcess import PlayerFairyDomain import NPCCustomRefresh import IpyGameDataPY import PyGameData import NPCCommon def DoResetCrossGrassland(curPlayer, eventType): ## ²ÝÔ°ÖØÖà resetCollectType = 10 + eventType NPCCommon.DoResetCollectNPCTimeByType(curPlayer, [resetCollectType]) # ±¦Ïä¹Ö´ÎÊýÖØÖà return def __SetGrasslandVisitState(curPlayer, mapID, lineID, state): ipyData = IpyGameDataPY.GetIpyGameDataByCondition("FairyDomain", {"MapID":mapID, "LineID":lineID}) if not ipyData: return False eventID = ipyData.GetID() if not PlayerFairyDomain.SetFairyDomainEventState(curPlayer, eventID, state): return False return True def OnEnterFBEvent(curPlayer, mapID, lineID, tick): if not __SetGrasslandVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting): return False return True ## ¿ªÆô¸±±¾ def OnOpenFB(tick): gameWorld = GameWorld.GetGameWorld() realMapID, copyMapID = gameWorld.GetRealMapID(), gameWorld.GetCopyMapID() key = (realMapID, copyMapID) if key in PyGameData.g_crossFuncLineDataCache: refreshNPCInfo = PyGameData.g_crossFuncLineDataCache[key] GameWorld.DebugLog("¸±±¾¿ªÆô¸ù¾Ý±£´æµÄÐéÄâÏß·±êÊÔµãË¢¹ÖÐÅϢˢ¹Ö: realMapID=%s,copyMapID=%s,refreshNPCInfo=%s" % (realMapID, copyMapID, refreshNPCInfo)) NPCCustomRefresh.OnFBOpenSetRandomRefreshNPCInfo(refreshNPCInfo, tick) return def GetCurFBFuncLineID(): ## »ñÈ¡±¾Ïß·¹¦ÄÜÏß·ID return GameWorld.GetGameWorld().GetPropertyID() % 10000 / 10 def GetCurFBLineZoneID(): ## »ñÈ¡±¾Ïß·ËùÊô¿ç·þ·ÖÇø return GameWorld.GetGameWorld().GetPropertyID() / 10000 ## ½ø¸±±¾ def DoEnterFB(curPlayer, tick): playerID = curPlayer.GetPlayerID() zoneID = GetCurFBLineZoneID() funcLineID = GetCurFBFuncLineID() GameWorld.Log("DoEnterFB zoneID=%s,funcLineID=%s" % (zoneID, funcLineID), playerID) return ## ¸±±¾×ÜÂß¼­¼ÆÊ±Æ÷ def OnProcess(tick): return ## ¹Ø±Õ¸±±¾ def OnCloseFB(tick): gameWorld = GameWorld.GetGameWorld() refreshNPCInfo = NPCCustomRefresh.GetCopyMapRandomRefreshNPCInfo() if refreshNPCInfo: realMapID, copyMapID = gameWorld.GetRealMapID(), gameWorld.GetCopyMapID() key = (realMapID, copyMapID) PyGameData.g_crossFuncLineDataCache[key] = refreshNPCInfo GameWorld.DebugLog("»º´æÐéÄâÏß·±êÊÔµãË¢¹ÖÐÅÏ¢: realMapID=%s,copyMapID=%s,refreshNPCInfo=%s" % (realMapID, copyMapID, refreshNPCInfo)) GameWorld.GetGameWorld().SetPropertyID(0) return ## Íæ¼ÒÍ˳ö¸±±¾ def DoExitFB(curPlayer, tick): return ##Íæ¼ÒÖ÷¶¯À뿪¸±±¾. def DoPlayerLeaveFB(curPlayer, tick): gameWorld = GameWorld.GetGameWorld() #×îºóÒ»ÈËÍ˳ö¸±±¾Ôò¹Ø±ÕµØÍ¼ if gameWorld.GetMapCopyPlayerManager().GetPlayerCount() == 1: GameWorldProcess.CloseFB(tick) return ## ¿Í»§¶Ë½øÈë×Ô¶¨Ò峡¾° def OnEnterCustomScene(curPlayer, mapID, lineID): __SetGrasslandVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting) return ## ¸ø×Ô¶¨Ò帱±¾½±ÀøºóÐø´¦Àí ## @return: ·µ»Ø½áË㸱±¾overÐÅÏ¢×ֵ䣬²»º¬jsonItemÐÅÏ¢ def OnGiveCustomFBPrizeOK(curPlayer, mapID, lineID): __SetGrasslandVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited) overDict = {} return overDict