TheBlllack Posted January 21, 2018 Share Posted January 21, 2018 Como faço para criar um alarme que impeça players dentro de seus veículos entrarem em bases. No momento estou usando este alarme: RestricLocation = {} TeleportLocation = {} EnabledAlarm = true TimesToKick = {} TimeSireneEnabled = true ColCuboid = false --------------------------------------- CONFIGS -------------------------------------------- RestricLocation["location1"] = {1883.2015,625.07776,7.820313} --Local 1 RestricLocation["location2"] = {1950.8517,585.38348,40.318998} --LOCAL 2 TeleportLocation = {1921.2296,703.27991,16.018101} --LOCAL TO TELEPORT PLAYER GroupName = "Base01" -- name of the acl/gang group !!! GroupNameBy = 1 -- 1 for gang name, 2 for ACL group ! cmdTurnON = "turnONcmd" -- Command to enable alarm / cmdTurnOFF = "TurnOFFcmd" -- Command to disable alarm / MsgtoKICK = "Base privada, se afaste dela ou será banido:" MsgCantCreateCollision = "Can't be created the Collision, check your location1 and location2" EnableVehicleGodMode = false -- true enabled, false disabled. KickORBAN = 1 -- 1 for kick player, 2 for BAN BanTime = 900000 -- time in seconds of ban, 900000 sec = 15 min MsgBAN = "Intruso" -- Reason of BAN ! --------------------------------------- CONFIGS -------------------------------------------- function sendMsg(iplayer,msg) outputChatBox ( msg, iplayer, 255, 255, 255, true ) end function EnterPlace ( theElement ) if (getElementType ( theElement ) == "player") and (PlayerHaveLevel (theElement) == false) and (EnabledAlarm == true ) then if(TimesToKick[theElement] > 0) then sendMsg(theElement,MsgtoKICK ..TimesToKick[theElement]) TimesToKick[theElement] = TimesToKick[theElement] -1 setElementPosition( theElement, TeleportLocation[1], TeleportLocation[2], TeleportLocation[3]) if TimeSireneEnabled == true then triggerClientEvent ( "ActiveAlarm", getRootElement() ) end sendMsgOwners(theElement) else if (KickORBAN == 1) then kickPlayer(theElement) else banPlayer ( theElement , false, false, true, "Alarme system Base", MsgBAN, BanTime ) end end elseif getElementType ( theElement ) == "vehicle" then SetVehicleGodMode(theElement,true) end end function ExitPlace ( theElement ) if getElementType ( theElement ) == "vehicle" then SetVehicleGodMode(theElement,false) end end function ASBenable1 ( source ) if(PlayerHaveLevel (source) == true) then EnabledAlarm = true end end function ASBdisable1 ( source ) if(PlayerHaveLevel (source) == true) then EnabledAlarm = false end end function ResetStats ( ) local connectedPlayers = getElementsByType ( "player" ) for i, aPlayer in ipairs(connectedPlayers) do if TimesToKick[aPlayer] == nil then TimesToKick[aPlayer] = 5 end if(TimesToKick[aPlayer] < 5) then TimesToKick[aPlayer] = TimesToKick[aPlayer] + 1 end end end function playerConnect ( playerNick ) local iPlayer = getPlayerFromName ( playerNick ) TimesToKick[iPlayer] = 5 end function PlayerHaveLevel( PlayerID ) if GroupNameBy == 1 then if ( getElementData ( PlayerID , "gang" ) == GroupName ) then return true else return false end else local accName = getAccountName ( getPlayerAccount ( PlayerID ) ) if ( isObjectInACLGroup ("user."..accName, aclGetGroup ( GroupName ) ) ) then return true else return false end end end function ResourceStart( ) LoadLocations() CreateCollision() local connectedPlayers = getElementsByType ( "player" ) for i, aPlayer in ipairs(connectedPlayers) do TimesToKick[aPlayer] = 5 end end addEventHandler( "onResourceStart", getResourceRootElement( getThisResource() ),ResourceStart) function LoadLocations() local RX, RY, RZ, WRX, WRX, WRX if(RestricLocation["location1"][1] > RestricLocation["location2"][1]) then RestricLocation["maxx"] = RestricLocation["location1"][1] RestricLocation["minx"] = RestricLocation["location2"][1] else RestricLocation["maxx"] = RestricLocation["location2"][1] RestricLocation["minx"] = RestricLocation["location1"][1] end if(RestricLocation["location1"][2] > RestricLocation["location2"][2]) then RestricLocation["maxy"] = RestricLocation["location1"][2] RestricLocation["miny"] = RestricLocation["location2"][2] else RestricLocation["maxy"] = RestricLocation["location2"][2] RestricLocation["miny"] = RestricLocation["location1"][2] end if(RestricLocation["location1"][3] > RestricLocation["location2"][3]) then RestricLocation["maxz"] = RestricLocation["location1"][3] RestricLocation["minz"] = RestricLocation["location2"][3] else RestricLocation["maxz"] = RestricLocation["location2"][3] RestricLocation["minz"] = RestricLocation["location1"][3] end end function CreateCollision() RX = RestricLocation["minx"] WRX = RestricLocation["maxx"] - RestricLocation["minx"] RY = RestricLocation["miny"] WRY = RestricLocation["maxy"] - RestricLocation["miny"] RZ = RestricLocation["minz"] WRZ = RestricLocation["maxz"] - RestricLocation["minz"] ColCuboid = createColCuboid ( RX, RY, RZ, WRX, WRY, WRZ ) if ColCuboid then addEventHandler ( "onColShapeHit", ColCuboid, EnterPlace ) addEventHandler ( "onColShapeLeave", ColCuboid, ExitPlace ) else outputDebugString(MsgCantCreateCollision) end end function ResourceStop( ) destroyElement ( ColCuboid ) end addEventHandler( "onResourceStop", getResourceRootElement( getThisResource() ),ResourceStop) function SireneEnabled() TimeSireneEnabled = true end function sendMsgOwners( PlayerID ) local connectedPlayers = getElementsByType ( "player" ) for i, aPlayer in ipairs(connectedPlayers) do if(PlayerHaveLevel (aPlayer) == true) then sendMsg(aPlayer," O Jogador " ..getPlayerName ( PlayerID ) .." esta tentando invadir a sua BASE !") end end end function SetVehicleGodMode( VehicleID, godEoD ) if EnableVehicleGodMode == true then setElementData(VehicleID, "godmode", godEoD) setVehicleDamageProof (VehicleID, godEoD ) end end setTimer ( SireneEnabled , 20000, 0, "" ) setTimer ( ResetStats , 15000, 0, "" ) addCommandHandler(cmdTurnON, ASBenable1 ) addCommandHandler(cmdTurnOFF, ASBdisable1 ) addEventHandler ("onPlayerConnect", getRootElement(), playerConnect) Porém ele não expulsa jogadores dentro de veiculos. O que fazer? Link to comment
#RooTs Posted January 21, 2018 Share Posted January 21, 2018 Tentou mudar o valor da linha 6 para true ? Link to comment
Other Languages Moderators Lord Henry Posted January 21, 2018 Other Languages Moderators Share Posted January 21, 2018 Na linha 38, faça isso: if isPedInVehicle ( theElement ) then local vehicle = getPedOccupiedVehicle ( theElement ) removePedFromVehicle ( theElement ) end setElementPosition( theElement, TeleportLocation[1], TeleportLocation[2], TeleportLocation[3]) Link to comment
TheBlllack Posted January 22, 2018 Author Share Posted January 22, 2018 10 hours ago, #RooTs said: Tentou mudar o valor da linha 6 para true ? Sim, não teve efeito 3 hours ago, Lord Henry said: Na linha 38, faça isso: if isPedInVehicle ( theElement ) then local vehicle = getPedOccupiedVehicle ( theElement ) removePedFromVehicle ( theElement )endsetElementPosition( theElement, TeleportLocation[1], TeleportLocation[2], TeleportLocation[3]) Mudei, e teve efeito porém o veículo permanece no lugar e apenas o player e teleportado, o que devo mudar para o veiculo ir junto com o veiculo? pois pelo fato de ser um 'base' se o jogador voltar para o local ele será teleportado novamente, no fim perderá seu veiculo. Link to comment
Other Languages Moderators Lord Henry Posted January 22, 2018 Other Languages Moderators Share Posted January 22, 2018 (edited) if isPedInVehicle ( theElement ) then local theVehicle = getPedOccupiedVehicle ( theElement ) setElementPosition( theVehicle, TeleportLocation[1], TeleportLocation[2], TeleportLocation[3]) else setElementPosition( theElement, TeleportLocation[1], TeleportLocation[2], TeleportLocation[3]) end Dessa forma, se o jogador estiver em um veículo, teleporta o veículo e o jogador dentro. Se não estiver em um veículo, teleporta só o jogador. Edited January 22, 2018 by Lord Henry 1 Link to comment
TheBlllack Posted January 22, 2018 Author Share Posted January 22, 2018 Funcionou perfeitamente!!! Obrigado cara! Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now