Jump to content

ALARME BASE MTA DAYZ


Recommended Posts

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
  • Other Languages Moderators

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
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
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 by Lord Henry
  • Thanks 1
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...