Jump to content

[Ayuda] Script /dm


LPM//Bruno

Recommended Posts

Bueno amigos nesesito ayuda con mi script de /dm, lo que hace es desactivar las armas y el daño al ponerlo. Hubo conflictos con el grenzones, asi que lo unii a los 2 en 1 solo script.

EL problema es que cuando un usuario se warpea a una zona verde, y luego va hacia otra , eesta se bugea y el usuario puede pegar en zona verde.

EL otro problema es que cuando los users ponen en mi panel de FR el comando destrabar (killLocalPlayer() es) es decir el usuario muere, y respawnea yo he puesto para que los usuarios cuando esten en una zona verde NO pudieran utilizar el comando /dm pero cuando mueren, en la zona de respawn este comando se bugea y pueden utilizarlo, de forma que salen y pueden matar a cualquiera y quedar inmortales.

CLIENT

--- by BRUNO 
 
modop = false
zonaverde = false
 
 
addEvent ("entra",true)
addEventHandler ("entra",getRootElement(),
function()
zonaverde = true
        addEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage )
        addEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage )
        addEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage )
        toggleControl ("fire", false)
        toggleControl ("aim_weapon", false)
        toggleControl ("vehicle_fire", false)
        toggleControl ("vehicle_secondary_fire ", false)
        showPlayerHudComponent ("weapon", false)
        showPlayerHudComponent ("crosshair", false)
        showPlayerHudComponent ("ammo", false)
        toggleControl ("next_weapon", false)
        toggleControl ("previous_weapon", false)
    end
    )
 
 
addEvent ("sale",true)
addEventHandler ("sale",getRootElement(),
function()
 zonaverde = false
 if (modop == true) then -- comprueba si el dm esta activado o no
                addEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage )
        addEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage )
        addEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage )
        setElementAlpha (getLocalPlayer(), 255)
        toggleControl ("fire", false)
        toggleControl ("aim_weapon", false)
        toggleControl ("vehicle_fire", false)
        toggleControl ("vehicle_secondary_fire ", false)
        showPlayerHudComponent ("weapon", false)
        showPlayerHudComponent ("crosshair", false)
        showPlayerHudComponent ("ammo", false)
        toggleControl ("next_weapon", false)
        toggleControl ("previous_weapon", false)
        else
        removeEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage )
        removeEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage )
        removeEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage )
        setElementAlpha (getLocalPlayer(), 255)
        toggleControl ("fire", true)
        toggleControl ("aim_weapon", true)
        toggleControl ("vehicle_fire", true)
        toggleControl ("vehicle_secondary_fire ", true)
        showPlayerHudComponent ("weapon", true)
        showPlayerHudComponent ("crosshair", true)
        showPlayerHudComponent ("ammo", true)
        toggleControl ("next_weapon", true)
        toggleControl ("previous_weapon", true)
    end
    end
)
 
 
 
 
 
 
    anti_pasivo_abuse = false
     
    function pasivo()
        if anti_pasivo_abuse then
        triggerServerEvent("MensajeAntiAbuse", getLocalPlayer(), getLocalPlayer())
        return end
        anti_pasivo_abuse = true
        setTimer(function() anti_pasivo_abuse = false end,
180000, 1)
        if zonaverde == true then return end
        if (modop == false) then
            modop = true
            addEventHandler ("onClientPlayerDamage", getLocalPlayer(), stopDamage)
            addEventHandler ("onClientPlayerStealthKill", getLocalPlayer(), stopDamage)
            addEventHandler ("onClientPedDamage", getLocalPlayer(), stopDamage)
            setElementAlpha (getLocalPlayer(), 255)
            toggleControl ("fire", false)
            toggleControl ("aim_weapon", false)
            toggleControl ("vehicle_fire", false)
            toggleControl ("vehicle_secondary_fire ", false)
            toggleControl ("next_weapon", false)
            toggleControl ("previous_weapon", false)
            showPlayerHudComponent ("weapon", false)
            showPlayerHudComponent ("crosshair", false)
            showPlayerHudComponent ("ammo", false)
            triggerServerEvent("DmON", getLocalPlayer(), getLocalPlayer())
            triggerServerEvent("ActivarDM", getLocalPlayer(), getLocalPlayer())
        else
            modop = false
            removeEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopDamage )
            removeEventHandler ( "onClientPlayerStealthKill", getLocalPlayer(), stopDamage )
            removeEventHandler ( "onClientPedDamage", getLocalPlayer(), stopDamage )
            setElementAlpha (getLocalPlayer(), 255)
            toggleControl ("fire", true)
            toggleControl ("aim_weapon", true)
            toggleControl ("vehicle_fire", true)
            toggleControl ("vehicle_secondary_fire ", true)
            toggleControl ("next_weapon", true)
            toggleControl ("previous_weapon", true)
            showPlayerHudComponent ("weapon", true)
            showPlayerHudComponent ("crosshair", true)
            showPlayerHudComponent ("ammo", true)
            toggleControl ("next_weapon", true)
            toggleControl ("previous_weapon", true)
            triggerServerEvent("DmOFF", getLocalPlayer(), getLocalPlayer())
            triggerServerEvent("DesactivarDM", getLocalPlayer(), getLocalPlayer())
        end
    end
addEvent ("pasivo",true)
addEventHandler ("pasivo",getLocalPlayer(),pasivo)
 
function NoKill()
    if (modop == true) then
        addEventHandler ("onClientPlayerDamage", getLocalPlayer(), stopDamage)
        addEventHandler ("onClientPlayerStealthKill", getLocalPlayer(), stopDamage)
        addEventHandler ("onClientPedDamage", getLocalPlayer(), stopDamage)
        setElementAlpha (getLocalPlayer(), 255)
        toggleControl ("fire", false)
        toggleControl ("aim_weapon", false)
        toggleControl ("vehicle_fire", false)
        toggleControl ("vehicle_secondary_fire ", false)
        showPlayerHudComponent ("weapon", false)
        showPlayerHudComponent ("crosshair", false)
        showPlayerHudComponent ("ammo", false)
        toggleControl (hitElement, "next_weapon", false)
        toggleControl (hitElement, "previous_weapon", false)
    end
end
addEventHandler("onClientPlayerWasted", getLocalPlayer(), NoKill)
 
function stopDamage ()
        cancelEvent()
end
 
---- Contenido del realdriveby
 
 
local driver = false
local shooting = false
local helpText,helpAnimation
lastSlot = 0
settings = {}
 
 
--This function simply sets up the driveby upon vehicle entry
local function setupDriveby( player, seat )
    --If his seat is 0, store the fact that he's a driver
    if seat == 0 then
        driver = true
    else
        driver = false
    end
    --By default, we set the player's equiped weapon to nothing.
    setPedWeaponSlot( localPlayer, 0 )
    if settings.autoEquip then
        toggleDriveby()
    end
end
addEventHandler( "onClientPlayerVehicleEnter", localPlayer, setupDriveby )
 
--Tell the server the clientside script was downloaded and started
addEventHandler("onClientResourceStart",getResourceRootElement(getThisResource()),
    function()
        bindKey ( "mouse2", "down", "Toggle Driveby", "" )
        bindKey ( "e", "down", "Next driveby weapon", "1" )
        bindKey ( "q", "down", "Previous driveby weapon", "-1" )
        toggleControl ( "vehicle_next_weapon",false )
        toggleControl ( "vehicle_previous_weapon",false )
        triggerServerEvent ( "driveby_clientScriptLoaded", localPlayer )
        helpText = dxText:create("",0.5,0.85)
        helpText:scale(1)
        helpText:type("stroke",1)
    end
)
 
addEventHandler("onClientResourceStop",getResourceRootElement(getThisResource()),
    function()
        toggleControl ( "vehicle_next_weapon",true )
        toggleControl ( "vehicle_previous_weapon",true )
    end
)
 
--Get the settings details from the server, and act appropriately according to them
addEvent ( "doSendDriveBySettings", true )
addEventHandler("doSendDriveBySettings",localPlayer,
    function(newSettings)
        settings = newSettings
        --We change the blocked vehicles into an indexed table that's easier to check
        local newTable = {}
        for key,vehicleID in ipairs(settings.blockedVehicles) do
            newTable[vehicleID] = true
        end
        settings.blockedVehicles = newTable
    end
)
 
--This function handles the driveby toggling key.
function toggleDriveby()
    --If he's not in a vehicle dont bother
    if not isPedInVehicle( localPlayer ) then return end
    --If its a blocked vehicle dont allow it
    local vehicleID = getElementModel ( getPedOccupiedVehicle ( localPlayer ) )
    if settings.blockedVehicles[vehicleID] then return end
    if (modop == true) then return end
    --Has he got a weapon equiped?
    local equipedWeapon = getPedWeaponSlot( localPlayer )
    if equipedWeapon == 0 then
        --Decide whether he is a driver or passenger
        if ( driver ) then weaponsTable = settings.driver
        else weaponsTable = settings.passenger end
        --We need to get the switchTo weapon by finding any valid IDs
        local switchTo
        local switchToWeapon
        local lastSlotAmmo = getPedTotalAmmo ( localPlayer, lastSlot )
        if not lastSlotAmmo or lastSlotAmmo == 0 or getSlotFromWeapon(getPedWeapon (localPlayer,lastSlot)) == 0 then
            for key,weaponID in ipairs(weaponsTable) do
                local slot = getSlotFromWeapon ( weaponID )
                local weapon = getPedWeapon ( localPlayer, slot )
                if weapon == 1 then weapon = 0 end --If its a brass knuckle, set it to a fist to avoid confusion
                --if the weapon the player has is valid
                if weapon == weaponID then
                    --If the ammo isn't 0
                    if getPedTotalAmmo ( localPlayer, slot ) ~= 0 then
                        --If no switchTo slot was defined, or the slot was 4 (SMG slot takes priority)
                        if not switchTo or slot == 4 then
                            switchTo = slot
                            switchToWeapon = weaponID
                        end
                    end
                end
            end
        else
            local lastSlotWeapon = getPedWeapon ( localPlayer, lastSlot )
            for key,weaponID in ipairs(weaponsTable) do --If our last used weapon is a valid weapon
                if weaponID == lastSlotWeapon then
                    switchTo = lastSlot
                    switchToWeapon = lastSlotWeapon
                    break
                end
            end
        end
        --If a valid weapon was not found, dont set anything.
        if not switchTo then return end
       
Link to comment

Entonces que debo hacer? Los utilizo o no? TomasitoCaram podrias editar el codigo tu? No es por ser comodo, sino que tambien estoy desbugeando otras cosas, y ademas no entiendo mucho sobre los set y get Element data :( me harias un gran favor hasta puedo darte mod en mi server xD

Link to comment
Entonces que debo hacer? Los utilizo o no? TomasitoCaram podrias editar el codigo tu? No es por ser comodo, sino que tambien estoy desbugeando otras cosas, y ademas no entiendo mucho sobre los set y get Element data :( me harias un gran favor hasta puedo darte mod en mi server xD

No los utilices, el uso de recursos que significa el utilizar 'setElementData' es bastante alto, revisa este post en el que explican formas alternativas un tanto mas eficientes.

* Pueden hacer una simple prueba y notaran que incluso sin utilizar la sincronización, 'setElementData' tarda 20 veces mas que la forma alternativa ahí explicada.

Link to comment
Entonces que debo hacer? Los utilizo o no? TomasitoCaram podrias editar el codigo tu? No es por ser comodo, sino que tambien estoy desbugeando otras cosas, y ademas no entiendo mucho sobre los set y get Element data :( me harias un gran favor hasta puedo darte mod en mi server xD

No los utilices, el uso de recursos que significa el utilizar 'setElementData' es bastante alto, revisa este post en el que explican formas alternativas un tanto mas eficientes.

* Pueden hacer una simple prueba y notaran que incluso sin utilizar la sincronización, 'setElementData' tarda 20 veces mas que la forma alternativa ahí explicada.

¿Y si quisiera usar eso en distintos resources? Con esa forma no podría.

Link to comment
  • Recently Browsing   0 members

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