#!/usr/bin/python # -*- coding: GBK -*- # # ##@package PlayerTruck # # @todo: Íæ¼ÒïÚ³µ # # @author eggxp # @date 2010-5-13 # @version 1.3 # # @change: "2012-08-13 16:30" jiang Ôö¼ÓïÚ³µÂß¼­¼ÓÅж¨Èç¹ûÒÑÓÐïÚ³µÉ¾³ý¾ÉµÄ # @change: "2016-06-13 10:30" hxp ïÚ³µÐÞ¸ÄΪÏÞʱÍê³É # @change: "2017-01-21 15:30" hxp ¿ªÊ¼ÔËïÚʱ¼ä¸ÄΪͬ²½Ê£Óàʱ¼ä£¬Ôö¼Ó³¬Ê±ÇëÇóʱ¼äÑéÖ¤ #--------------------------------------------------------------------- #"""Version = 2017-01-21 15:30""" #------------------------------------------------------------------------------ import IPY_GameServer import ChPyNetSendPack import NetPackCommon import ReadChConfig import GameWorld import time #--------------------------------------------------------------------- #Íæ¼ÒÉÏÏßµÄʱºòÐèÒª×öµÄ: #curPlayer.SetLogoffTick(0) #Íæ¼Ò״̬´¦ÀíÐèÒª×öµÄ: #¸ù¾ÝÍæ¼ÒµÄGetLogoffTick()µÃµ½Íæ¼ÒÏÂÏßʱ¼ä, ¼ÆËãæô³µÊÇ·ñÐèÒªÏûʧ #·þÎñÆ÷Í£·þÐèÒª×öµÄ: #°Ñæô³µÉèÖÃΪÖÐֹ״̬(Õý³£ÖÐÖ¹, »Ù»µÖÐÖ¹) #class IPY_GAddTruck #{ #public: # //Íæ¼ÒID # int GetPlayerID(); # //æô³µID # int GetTruckID(); # //µØÍ¼ID # int GetMapID(); #}; ## ÎªÍæ¼ÒÔö¼ÓÒ»¸öïÚ³µ # @param index Íæ¼ÒÔÚGameServerÖеÄindex # @param tick µ÷ÓÃʱµÄtick # @return ÎÞ·µ»ØÖµ # @remarks º¯ÊýÏêϸ˵Ã÷£ºÎªÍæ¼ÒÔö¼ÓÒ»¸öïÚ³µ def MapServer_TruckAppear(index, tick): sendPack = IPY_GameServer.IPY_GAddTruck() playerID = sendPack.GetPlayerID() truckID = sendPack.GetTruckID() curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID) curTruck = GameWorld.GetTruckMananger().FindTruckByTruckID(truckID) if curPlayer and curTruck: GameWorld.ErrLog("GameServerÒѾ­´æÔÚïÚ³µ, MapServer֪ͨÔö¼Ó", sendPack.GetPlayerID()) #æô³µÏûʧ curTruck.SetTruckState(IPY_GameServer.tusDisappear) curTruck.Disappear() truckMananger = GameWorld.GetTruckMananger() curTruck = truckMananger.AddTruck(truckID, playerID) curTruck.SetMapID(sendPack.GetMapID()) curTruck.SetCountry(sendPack.GetCountry()) curTruck.SetName(sendPack.GetName()); curTruck.SetTruckState(IPY_GameServer.tusNormal) startTime = int(time.time()) curTruck.SetLogoffTick(startTime) # ÓÀºãÏîÄ¿ïÚ³µÖ÷ÈËÀëÏßʱ¼ä×÷Ϊ¿ªÊ¼Ê±¼äÓà SyncPlayerTruckStartTime(curPlayer) GameWorld.Log("%d ¿ªÊ¼æô³µ, startTime=%s" % (playerID, startTime), playerID) return ## ͬ²½ïÚ³µ¿ªÊ¼Ê±¼ä def SyncPlayerTruckStartTime(curPlayer): curTruck = GameWorld.GetTruckMananger().FindTruckByOwner(curPlayer.GetPlayerID()) # ÎÞïÚ³µ if curTruck == None: return curTime = int(time.time()) startTime = curTruck.GetLogoffTick() truckTime = ReadChConfig.GetEvalChConfig("TruckTime") * 60 remainTime = max(0, truckTime - (curTime - startTime)) truckStartTime = ChPyNetSendPack.tagGCTruckStartTime() truckStartTime.Clear() truckStartTime.StartTime = remainTime NetPackCommon.SendFakePack(curPlayer, truckStartTime) return #// AE 07 ÔËïÚʱ¼äµ¹¼ÆÊ±½áÊø #tagCGTruckTimeEnd # #struct tagCGTruckTimeEnd #{ # tagHead Head; #}; ### ÓÉÓÚ·þÎñÆ÷¼ìË÷ïÚ³µ³¬Ê±ÆµÂÊΪ1·ÖÖÓ£¬¹Ê¿Í»§¶Ëµ¹¼ÆÊ±½áÊøºóÖ÷¶¯ÇëÇó´¥·¢·þÎñ¶ËÍæ¼Ò¸öÈËÔËïÚ³¬Ê±Âß¼­ def OnTruckTimeEnd(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) if not curPlayer: return curTruck = GameWorld.GetTruckMananger().FindTruckByOwner(curPlayer.GetPlayerID()) # ÎÞïÚ³µ if curTruck == None: return # GetLogoffTick curTime = int(time.time()) startTime = curTruck.GetLogoffTick() # ÓÉÓÚ·þÎñÆ÷¼ìË÷ïÚ³µ³¬Ê±ÆµÂÊΪ1·ÖÖÓ, ÕâÀï×ö¸öÈݲîʱ¼ä1·ÖÖÓ truckTime = (ReadChConfig.GetEvalChConfig("TruckTime") - 1) * 60 if curTime - startTime < truckTime: GameWorld.Log("¿Í»§¶ËÇëÇóÔËïÚ³¬Ê±½áËã, ʵ¼Êδ³¬Ê±!: curTime=%s,startTime=%s,truckTime=%s" % (curTime, startTime, truckTime), curPlayer.GetPlayerID()) return result = "" curPlayer.MapServer_QueryPlayerResult(0, 0, "TruckTimeOut", result, len(result)) return #class IPY_GTruckRefresh #{ #public: # //æô³µID # int GetTruckID(); # //µØÍ¼ID # int GetMapID(); # //æô³µ×´Ì¬ # int GetTruckState(); #}; ## Íæ¼ÒïÚ³µË¢Ð # @param index Íæ¼ÒÔÚGameServerÖеÄindex # @param tick µ÷ÓÃʱµÄtick # @return ÎÞ·µ»ØÖµ # @remarks º¯ÊýÏêϸ˵Ã÷£ºÍæ¼ÒïÚ³µË¢Ð def MapServer_TruckRefresh(index, tick): sendPack = IPY_GameServer.IPY_GTruckRefresh() truckID = sendPack.GetTruckID() truckMananger = GameWorld.GetTruckMananger() truckState = sendPack.GetTruckState() curTruck = truckMananger.FindTruckByTruckID(truckID) if curTruck == None: return playerID = curTruck.GetOwnerID() curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID) GameWorld.Log("æô³µÐÅÏ¢ %d -> %d" %(truckID, truckState) , playerID) if truckState == IPY_GameServer.tusNull: #ɾ³ýæô³µ curTruck = truckMananger.FindTruckByOwner(curPlayer.GetPlayerID()) curTruck.Disappear() return curTruck.SetMapID(sendPack.GetMapID()) state = sendPack.GetTruckState() curTruck.SetTruckState(sendPack.GetTruckState()) #֪ͨµØÍ¼·þÎñÆ÷ if curPlayer == None: GameWorld.Log("ÕÒ²»µ½æô³µÖ÷ÈËÍæ¼Ò: %d"%(playerID) , playerID) return curPlayer.MapServer_SetPlayerTruckState(state) return #class IPY_GTruckChangeMap #{ #public: # //æô³µID # int GetTruckID(); # //NPCÀàÐÍID # int GetNPCTypeID(); # //ÓµÓÐÕßID # int GetPlayerID(); # //µ±Ç°ÉúÃü # int GetHP(); # # int GetMapID(); # # int GetPosX(); # # int GetPosY(); #}; ## Íæ¼ÒïÚ³µË¢Ð Èç¹ûTruckIdΪ0ÔòÇåµôïÚ³µ ·ñÔòÕÒµ½²¢»»µØÍ¼ # @param index Íæ¼ÒÔÚGameServerÖеÄindex # @param tick µ÷ÓÃʱµÄtick # @return ÎÞ·µ»ØÖµ # @remarks º¯ÊýÏêϸ˵Ã÷£ºÍæ¼ÒïÚ³µË¢Ð Èç¹ûTruckIdΪ0ÔòÇåµôïÚ³µ ·ñÔòÕÒµ½²¢»»µØÍ¼ def MapServer_TruckChangeMap(index, tick): sendPack = IPY_GameServer.IPY_GTruckMapRefresh() truckID = sendPack.GetTruckID() truckMananger = GameWorld.GetTruckMananger() if truckID == 0: #ɾ³ýæô³µ curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) curTruck = truckMananger.FindTruckByOwner(curPlayer.GetPlayerID()) curTruck.Disappear() return GameWorld.Log("æô³µµØÍ¼ÐÅÏ¢ %d -> %d" %(truckID, sendPack.GetMapID())) curTruck = truckMananger.FindTruckByTruckID(truckID) curTruck.SetMapID(sendPack.GetMapID()) #class IPY_GTruckMsg #public: # //get×Ô¶¯Éú³É # int GetHead(); # int GetMsg(); //1.Êܵ½¹¥»÷ # //set×Ô¶¯Éú³É # void SetHead(int inputHead); # void SetMsg(int inputMsg); //1.Êܵ½¹¥»÷ #}; ## ïÚ³µÐÅÏ¢ Êܵ½¹¥»÷µÈ # @param index Íæ¼ÒÔÚGameServerÖеÄindex # @param tick µ÷ÓÃʱµÄtick # @return ÎÞ·µ»ØÖµ # @remarks º¯ÊýÏêϸ˵Ã÷£ºïÚ³µÐÅÏ¢ Êܵ½¹¥»÷µÈ def MapServer_TruckMsg(index, tick): sendPack = IPY_GameServer.IPY_GTruckMsg() truckID = sendPack.GetTruckID() truckMananger = GameWorld.GetTruckMananger() curTruck = truckMananger.FindTruckByTruckID(truckID) curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curTruck.GetOwnerID()) GameWorld.Log("æô³µÐÅÏ¢ Msg = %d"%(sendPack.GetMsg()) , curPlayer.GetPlayerID()) curPlayer.Sync_TruckMsg(sendPack.GetMsg()) return ## Íæ¼ÒïÚ³µË¢ÐÂÇëÇó´¦Àí # @param index Íæ¼ÒÔÚGameServerÖеÄindex # @param tick µ÷ÓÃʱµÄtick # @return ÎÞ·µ»ØÖµ # @remarks º¯ÊýÏêϸ˵Ã÷£ºÍæ¼ÒïÚ³µË¢ÐÂÇëÇó´¦Àí def MapServer_TruckRefreshReq(index, tick): sendPack = IPY_GameServer.IPY_GTruckRefreshReq() curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) truckID = sendPack.GetTruckID() GameWorld.Log("ÒªÇóæô³µË¢Ð id = %d"%(truckID) , curPlayer.GetPlayerID()) truckMananger = GameWorld.GetTruckMananger() curTruck = truckMananger.FindTruckByTruckID(truckID) if curTruck == None: #ûÓÐæô³µ curPlayer.MapServer_TruckRefreshAnswer(0, 0) return curPlayer.MapServer_TruckRefreshAnswer(truckID, curTruck.GetMapID()) curState = curTruck.GetTruckState() if curState == IPY_GameServer.tusDestroy: #Íæ¼Òæô³µÒѾ­Ëð»µ, Ë¢ÐÂæô³µ×´Ì¬ curPlayer.MapServer_SetPlayerTruckState(curState) return ## ɾ³ýïÚ³µ # @param curTruck ÄÚ²¿µôÓú¯Êý # @return ÎÞ·µ»ØÖµ # @remarks º¯ÊýÏêϸ˵Ã÷£ºÉ¾³ýïÚ³µ def DelTruck( curTruck ): curTruck.SetTruckState(IPY_GameServer.tusDisappear) GameWorld.Log("æô³µÏûʧ, ID = %s MapID = %s"%(curTruck.GetTruckID(), curTruck.GetMapID())) #֪ͨµØÍ¼·þÎñÆ÷ curTruck.SyncMapServer_TruckRefresh() #æô³µÏûʧ curTruck.Disappear() return #////////////////////////////////////////////////////////////// #//03 06 æô³µÏûʧ#tagGDelTruck #tagGDelTruck * GettagGDelTruck(); # #class IPY_GDelTruck #{ #public: # # int GetTruckID(); #}; ## ɾ³ýÍæ¼ÒµÄæô³µ # @param index Íæ¼ÒÔÚGameServerÖеÄindex # @param tick µ÷ÓÃʱµÄtick # @return ÎÞ·µ»ØÖµ # @remarks º¯ÊýÏêϸ˵Ã÷£º#ɾ³ýÍæ¼ÒµÄæô³µ def MapServer_TruckDelete(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) pack = IPY_GameServer.IPY_GDelTruck() truckMananger = GameWorld.GetTruckMananger() truckID = pack.GetTruckID() curTruck = truckMananger.FindTruckByTruckID(truckID) if curTruck == None: return #2009.2.23 #Ò»¶¨ÒªÏÈɾ³ýæô³µ, ÔÙÇå³ýÍæ¼Ò״̬ #·ñÔò: #bugʾÀý: #1.Çå³ýÍæ¼Ò״̬ #2.Íæ¼Ò½Óæô³µÈÎÎñ <- ÕâÀï»á¶ÏÑÔ, 2Á¾æô³µ #3.ɾ³ýæô³µ DelTruck(curTruck) curPlayer.MapServer_SetPlayerTruckState(IPY_GameServer.tusNull) return