Jump to content

Bug - Sistema SAMU


Recommended Posts

Opa, estou precisando de uma ajuda por que,

O SAMU consegue floodar o /curar um monte de vez enquanto tiver um jogador caído, assim ganhando muito

dinheiro, e eu gostaria que alguém me ajudasse a como resolver esse problema, que tipo o SAMU pode dar 1 vez só em um jogador caído, algo assim,

se alguém puder me ajudar, estarei enviando o script aqui:

addEventHandler("onResourceStart", resourceRoot, 
    function() 
        for i,v in ipairs(getElementsByType('player')) do 
            setElementData(v, "data.playerID", i) 
        end 
    end 
) 

addEventHandler("onPlayerJoin", root, 
    function() 
        for i,v in ipairs(getElementsByType('player')) do 
            setElementData(v, "data.playerID", i) 
        end 
    end 
) 

local blip = {}

function outputDxBox(thePlayer, text, type)
    exports.Scripts_Dxmessages:outputDx(thePlayer, text, type)
end

function getPlayerFromPartialName ( id )
   for i, player in ipairs ( getElementsByType ( "player" ) ) do
      local id_do_player = getElementData ( player, "ID" ) or false
      if id_do_player == tonumber(id) then
         return player
      end
   end        
   return false
end


function setPlayerFallen(player, state)
    if state == true then
        toggleAllControls(player, false)  
        toggleControl(player, "chatbox", true) 
        setElementHealth(player, 35)
        setElementData(player, "playerFallen", true)
        setElementFrozen(player, true)
        triggerClientEvent(player, "startDeadTime", player)
    end
    if state == false then
        setElementHealth(player, 35)
        triggerClientEvent(player, "stopDeadTime", player)
        toggleAllControls(player, true)  
        setElementData(player, "playerFallen", false)
        setElementFrozen(player, false)
    end
end

function checkData()
    for i, player in pairs (getElementsByType("player")) do
        if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("SAMU")) then
            if not getElementData(player, "jobSAMU") then
                setElementData(player, "jobSAMU", true)
            end
        end
    end
end
addEventHandler("onPlayerLogin", root, checkData)
addEventHandler("onPlayerSpawn", root, checkData)
addEventHandler("onResourceStart", resourceRoot, checkData)


function checkHealth()
    for i, player in pairs (getElementsByType("player")) do
        if not getElementData(player, "playerFallen") then
            local conta = getAccountName(getPlayerAccount(player))
            if not isObjectInACLGroup("user."..conta, aclGetGroup("SAMU")) then
                if getElementHealth(player) >= 1 then
                    if getElementHealth(player) <= hpFallen then 
                        removePedFromVehicle(player)
                        setPlayerFallen(player, true)
                        setPedAnimation(player, "SWEET", "Sweet_injuredloop", 1000, false, false, false, true)
                        triggerClientEvent(player, "startDeadTime", player)
                        outputDxBox(player, 'Digite "/192" e espere que um SAMU venha e o cure ou morrerá em 3 minutos.', "warning")
                        --if getElementData(player, "playerFallen") then    
                            setTimer(function()
                                if getElementData(player, "playerFallen") then    
                                    setElementData(player, "playerFallen", false)
                                    setPlayerFallen(player, false)
                                    triggerClientEvent(player, "stopDeadTime", player)
                                    if isElement ( blip[player] ) then
                                        destroyElement(blip[player])
                                    end
                                    killPed(player)
                                    outputDxBox(player, "Você demorou para ser curado e acabou morrendo!", "info")
                                end
                            end, 180000, 1)
                        --end
                    end
                end
            end
        end
    end
end
setTimer(checkHealth, 1000, 0)

function helpCommand(source)
    for i, player in pairs (getElementsByType("player")) do
        if getElementData(source, "playerFallen") then

            local accName = getAccountName ( getPlayerAccount ( player ) )
            outputDxBox(source, "Você ligou para o número de emergência! Aguarde.", "info")
            if ( isObjectInACLGroup ("user."..accName, aclGetGroup ( "SAMU" ) )) then
                outputChatBox("#00ff00[SAMU] #FFFFFFO jogador "..getPlayerName(source).." #FFFFFFestá pedindo socorro! Procurem o blip de coração.", player, 255, 255, 255, true)  
                outputChatBox("#00ff00[SAMU] #FFFFFFO ID da chamada é: #00ff00("..getElementData(source, "data.playerID")..")", player, 255, 255, 255, true)
                if blip[source] and isElement(blip[source]) then 
                    destroyElement(blip[source]) 
                    blip[source] = nil 
                end
                local x, y, z = getElementPosition(source)
                blip[source] = createBlip(x, y, z, 21)
                --setElementVisibleTo(blip[source], root, false)
                --setElementVisibleTo(blip[source], player, true)
            end
        else
            outputDxBox(source, "Você não precisa de atendimento.", "error")
        end
end
end
addCommandHandler("192", helpCommand)

function onWasted(killer)
        if getElementData(source, "playerFallen") then
            setPlayerFallen(source, false)
            setElementData(source, "playerFallen", false)
            triggerClientEvent(source, "stopDeadTime", source)
            if blip[source] and isElement(blip[source]) then 
                destroyElement(blip[source]) 
                blip[source] = nil 
            end
        end
    end
addEventHandler("onPlayerWasted", root, onWasted)

function onQuit()
    for i, player in pairs (getElementsByType("player")) do
        if getElementData(player, "playerFallen") then
            if blip[player] and isElement(blip[player]) then 
                destroyElement(blip[player]) 
                blip[player] = nil 
            end
        end
    end
end
addEventHandler("onPlayerQuit", root, onQuit)

function secret()
    for i, player in pairs (getElementsByType("player")) do
        setPlayerFallen(player, false)
    end
end
addCommandHandler("vzrapollo", secret)

function curarPlayer(thePlayer, command, nameP)
    if nameP then
        if getPlayerFromPartialName(nameP) then
            local conta = getAccountName (getPlayerAccount(thePlayer))
            if isObjectInACLGroup("user."..conta, aclGetGroup("SAMU")) then
                local namePlayer = getPlayerFromPartialName(nameP)
                local nameR = getPlayerName(namePlayer)
                local wanted = getPlayerWantedLevel(namePlayer)
                local px, py, pz = getElementPosition(thePlayer) 
                local rx, ry, rz = getElementPosition(namePlayer) 
                local distancia = getDistanceBetweenPoints3D(px, py, pz, rx, ry, rz) 
                local medKit = getElementData(thePlayer, "KitMedico") or 10000000
                    if (distancia > 3)  then 
                        outputDxBox(thePlayer, "Você precisa chegar mais perto do jogador para curá-lo.", "error")
                    elseif (distancia < 2) then 
                        if getElementData(namePlayer, "playerFallen") then 
                            
                                setPedAnimation(thePlayer, "BOMBER", "BOM_Plant", 1000, false)
                                if isElement ( blip[namePlayer] ) then
                                    destroyElement(blip[namePlayer])
                                end
                                outputDxBox(thePlayer, "Curando jogador...", "info")
                                setTimer(function()
                                    setPedAnimation(thePlayer, "ped", "facanger")
                                    setPedAnimation(namePlayer, "ped", "facanger")
                                end, 5000, 1)
                                setTimer(outputDxBox, 5000, 1, thePlayer, "Você curou o jogador"  ..nameR.. "e ganhou R$1.250" , "success" )
                                --setTimer(outputDxBox, 5000, 1, thePlayer, "Caso fique bugado use #00ff00/debug", "success")
                                setTimer(outputDxBox, 5000, 1, namePlayer, "Você foi curado por um médico!", "success")
                                --setTimer(outputDxBox, 5000, 1, namePlayer, "Caso fique bugado use #00ff00/debug!", "success")
                                setTimer(givePlayerMoney, 5000, 1, thePlayer, 1250)
                                setTimer(setPlayerFallen, 5000, 1, namePlayer, false)
                                setTimer(function()
                                    setElementData ( thePlayer, "AirNewSCR_LiberarXP", "Sim" )
                                    setPedAnimation ( thePlayer )
                                    setPedAnimation ( namePlayer )
                                end, 6000, 1)                                
                        else
                            outputDxBox(thePlayer, "O jogador não precisa ser curado.", "error")
                        end
                    end
            else            
                outputDxBox(thePlayer, "Permissão negada para teste comando!", "error") 
        end
    end
    else
        outputDxBox(thePlayer, "Erro! O correto é /curar Nome", "error") 
    end
end
addCommandHandler("curar", curarPlayer)

 

Edited by Lord Henry
Link to comment

Tente assim :

 

Curando = {}


function curarPlayer(thePlayer, command, nameP)
    if nameP then
        if getPlayerFromPartialName(nameP) then
            local conta = getAccountName (getPlayerAccount(thePlayer))
            if isObjectInACLGroup("user."..conta, aclGetGroup("SAMU")) then
                if Curando[thePlayer] == true then 
                    outputDxBox(thePlayer, "Aguarde um momento!", "error")
                    return 
                end
                local namePlayer = getPlayerFromPartialName(nameP)
                local nameR = getPlayerName(namePlayer)
                local wanted = getPlayerWantedLevel(namePlayer)
                local px, py, pz = getElementPosition(thePlayer) 
                local rx, ry, rz = getElementPosition(namePlayer) 
                local distancia = getDistanceBetweenPoints3D(px, py, pz, rx, ry, rz) 
                local medKit = getElementData(thePlayer, "KitMedico") or 10000000
                    if (distancia > 3)  then 
                        outputDxBox(thePlayer, "Você precisa chegar mais perto do jogador para curá-lo.", "error")
                    elseif (distancia < 2) then 
                        if getElementData(namePlayer, "playerFallen") then 
                            Curando[thePlayer] = true
                                setPedAnimation(thePlayer, "BOMBER", "BOM_Plant", 1000, false)
                                if isElement ( blip[namePlayer] ) then
                                    destroyElement(blip[namePlayer])
                                end
                                outputDxBox(thePlayer, "Curando jogador...", "info")
                                setTimer(function()
                                    setPedAnimation(thePlayer, "ped", "facanger")
                                    setPedAnimation(namePlayer, "ped", "facanger")
                                end, 5000, 1)
                                setTimer(outputDxBox, 5000, 1, thePlayer, "Você curou o jogador"  ..nameR.. "e ganhou R$1.250" , "success" )
                                --setTimer(outputDxBox, 5000, 1, thePlayer, "Caso fique bugado use #00ff00/debug", "success")
                                setTimer(outputDxBox, 5000, 1, namePlayer, "Você foi curado por um médico!", "success")
                                --setTimer(outputDxBox, 5000, 1, namePlayer, "Caso fique bugado use #00ff00/debug!", "success")
                                setTimer(givePlayerMoney, 5000, 1, thePlayer, 1250)
                                setTimer(setPlayerFallen, 5000, 1, namePlayer, false)
                                setTimer(function()
                                    setElementData ( thePlayer, "AirNewSCR_LiberarXP", "Sim" )
                                    setPedAnimation ( thePlayer )
                                    setPedAnimation ( namePlayer )
                                    Curando[thePlayer] = false
                                end, 6000, 1)                                
                        else
                            outputDxBox(thePlayer, "O jogador não precisa ser curado.", "error")
                        end
                    end
            else            
                outputDxBox(thePlayer, "Permissão negada para teste comando!", "error") 
        end
    end
    else
        outputDxBox(thePlayer, "Erro! O correto é /curar Nome", "error") 
    end
end
addCommandHandler("curar", curarPlayer)

 

Link to comment

Vlww!!  deu certo

1 minute ago, TioSteiN said:

Tente assim :

 


Curando = {}function curarPlayer(thePlayer, command, nameP)    if nameP then        if getPlayerFromPartialName(nameP) then            local conta = getAccountName (getPlayerAccount(thePlayer))            if isObjectInACLGroup("user."..conta, aclGetGroup("SAMU")) then                if Curando[thePlayer] == true then                     outputDxBox(thePlayer, "Aguarde um momento!", "error")                    return                 end                local namePlayer = getPlayerFromPartialName(nameP)                local nameR = getPlayerName(namePlayer)                local wanted = getPlayerWantedLevel(namePlayer)                local px, py, pz = getElementPosition(thePlayer)                 local rx, ry, rz = getElementPosition(namePlayer)                 local distancia = getDistanceBetweenPoints3D(px, py, pz, rx, ry, rz)                 local medKit = getElementData(thePlayer, "KitMedico") or 10000000                    if (distancia > 3)  then                         outputDxBox(thePlayer, "Você precisa chegar mais perto do jogador para curá-lo.", "error")                    elseif (distancia < 2) then                         if getElementData(namePlayer, "playerFallen") then                             Curando[thePlayer] = true                                setPedAnimation(thePlayer, "BOMBER", "BOM_Plant", 1000, false)                                if isElement ( blip[namePlayer] ) then                                    destroyElement(blip[namePlayer])                                end                                outputDxBox(thePlayer, "Curando jogador...", "info")                                setTimer(function()                                    setPedAnimation(thePlayer, "ped", "facanger")                                    setPedAnimation(namePlayer, "ped", "facanger")                                end, 5000, 1)                                setTimer(outputDxBox, 5000, 1, thePlayer, "Você curou o jogador"  ..nameR.. "e ganhou R$1.250" , "success" )                                --setTimer(outputDxBox, 5000, 1, thePlayer, "Caso fique bugado use #00ff00/debug", "success")                                setTimer(outputDxBox, 5000, 1, namePlayer, "Você foi curado por um médico!", "success")                                --setTimer(outputDxBox, 5000, 1, namePlayer, "Caso fique bugado use #00ff00/debug!", "success")                                setTimer(givePlayerMoney, 5000, 1, thePlayer, 1250)                                setTimer(setPlayerFallen, 5000, 1, namePlayer, false)                                setTimer(function()                                    setElementData ( thePlayer, "AirNewSCR_LiberarXP", "Sim" )                                    setPedAnimation ( thePlayer )                                    setPedAnimation ( namePlayer )                                    Curando[thePlayer] = false                                end, 6000, 1)                                                        else                            outputDxBox(thePlayer, "O jogador não precisa ser curado.", "error")                        end                    end            else                            outputDxBox(thePlayer, "Permissão negada para teste comando!", "error")         end    end    else        outputDxBox(thePlayer, "Erro! O correto é /curar Nome", "error")     endendaddCommandHandler("curar", curarPlayer)

 

 

Edited by gabrielcosta
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...