Jump to content

[Ajuda] Armas nas costas


Recommended Posts

Blz pessoal? Baixei essa resource aq, q enquanto o player está com uma arma na mão, a outra aparece nas costas, fica uma bagunça grande, pois quanto mais armas, mais armas nas costas ;/. Alguém pode vê o código baixando o arquivo e me ensinar como restringir pra somente a shotgun, sniper, ak47 e deagle ficar colada no player?

Abraço!

Grato!

Aí está o arquivo: https://community.multitheftauto.com/index.php?p= ... includes=1

Link to comment

acredito que seja esse:

--[[ BackWeapons script By Gothem 
  
    Feel free to use and change it as you want, 
    obviously keeping the credit to the creator.--]] 
  
local jugadores = {} 
local lplayer = getLocalPlayer() 
local info = {} 
local sx,sy = guiGetScreenSize() 
  
function crearArma(jug,arma) 
    local model = obtenerObjeto(arma) 
    local slot = getSlotFromWeapon(arma) 
    jugadores[jug][slot] = createObject(model,0,0,0) 
    setElementCollisionsEnabled(jugadores[jug][slot],false) 
end 
  
function destruirArma(jug,slot) 
    destroyElement(jugadores[jug][slot]) 
    jugadores[jug][slot] = nil 
end 
  
addEventHandler("onClientResourceStart",getResourceRootElement(),function() 
    for k,v in ipairs(getElementsByType("player",root,true)) do 
        jugadores[v] = {} 
        info[v] = {true,isPedInVehicle(v)} 
    end 
end,false) 
  
addEventHandler("onClientPlayerQuit",root,function() 
    if jugadores[source] and source ~= lplayer then 
        for k,v in pairs(jugadores[source]) do 
            destroyElement(v) 
        end 
        jugadores[source] = nil 
        info[source] = nil 
    end 
end) 
  
addEventHandler("onClientElementStreamIn",root,function() 
    if getElementType(source) == "player" and source ~= lplayer then 
        jugadores[source] = {} 
        info[source] = {true,isPedInVehicle(source)} 
    end 
end) 
  
addEventHandler("onClientElementStreamOut",root,function() 
    if jugadores[source] and source ~= lplayer then 
        for k,v in pairs(jugadores[source]) do 
            destroyElement(v) 
        end 
        jugadores[source] = nil 
        info[source] = nil 
    end 
end) 
  
addEventHandler("onClientPlayerSpawn",root,function() 
    if jugadores[source] then 
        info[source][1] = true 
    end 
end) 
  
addEventHandler("onClientPlayerWasted",root,function() 
    if jugadores[source] then 
        for k,v in pairs(jugadores[source]) do 
            destruirArma(source,k) 
        end 
        info[source][1] = false 
    end 
end) 
  
addEventHandler("onClientPlayerVehicleEnter",root,function() 
    if jugadores[source] then 
        for k,v in pairs(jugadores[source]) do 
            destruirArma(source,k) 
        end 
        info[source][2] = true 
    end 
end) 
  
addEventHandler("onClientPlayerVehicleExit",root,function() 
    if jugadores[source] then 
        info[source][2] = false 
    end 
end) 
  
addEventHandler("onClientPreRender",root,function() 
    for k,v in pairs(jugadores) do 
        local x,y,z = getPedBonePosition(k,3) 
        local rot = math.rad(90-getPedRotation(k)) 
        local i = 15 
        local wep = getPedWeaponSlot(k) 
        local ox,oy = math.cos(rot)*0.22,-math.sin(rot)*0.22 
        local alpha = getElementAlpha(k) 
        for q,w in pairs(v) do 
            if q == wep then 
                destruirArma(k,q) 
            else 
                setElementRotation(w,0,70,getPedRotation(k)+90) 
                setElementAlpha(w,alpha) 
                if q==2 then 
                    local px,py,pz = getPedBonePosition(k,51) 
                    local qx,qy = math.sin(rot)*0.11,math.cos(rot)*0.11 
                    setElementPosition(w,px+qx,py+qy,pz) 
                elseif q==4 then 
                    local px,py,pz = getPedBonePosition(k,41) 
                    local qx,qy = math.sin(rot)*0.06,math.cos(rot)*0.06 
                    setElementPosition(w,px-qx,py-qy,pz) 
                else 
                    setElementPosition(w,x+ox,y+oy,z-0.2) 
                    setElementRotation(w,-17,-(50+i),getPedRotation(k)) 
                    i=i+15 
                end 
            end 
        end 
        if info[k][1] and not info[k][2] then 
            for i=1,7 do 
                local arma = getPedWeapon(k,i) 
                if arma~=wep and arma>0 and not jugadores[k][i] then 
                    crearArma(k,arma) 
                end 
            end 
        end 
    end 
end) 
  
function obtenerObjeto(arma) 
    local m 
    if arma > 1 and arma < 9 then 
        m = 331 + arma 
    elseif arma == 9 then 
        m = 341 
    elseif arma == 15 then 
        m = 326 
    elseif (arma > 21 and arma < 30) or (arma > 32 and arma < 39) or (arma > 40 and arma < 44) then 
        m = 324 + arma 
    elseif arma > 29 and arma < 32 then 
        m = 325 + arma 
    elseif arma == 32 then 
        m = 372 
    end 
    return m 
end 

Link to comment

Tente isto:

--[[ BackWeapons script By Gothem 
  
    Feel free to use and change it as you want, 
    obviously keeping the credit to the creator.--]] 
  
local jugadores = {} 
local lplayer = getLocalPlayer() 
local info = {} 
local validWeapons = { [25] = true, [34] = true, [30] = true, [24] = true } 
local sx,sy = guiGetScreenSize() 
  
function crearArma(jug,arma) 
    local model = obtenerObjeto(arma) 
    local slot = getSlotFromWeapon(arma) 
    jugadores[jug][slot] = createObject(model,0,0,0) 
    setElementCollisionsEnabled(jugadores[jug][slot],false) 
end 
  
function destruirArma(jug,slot) 
    destroyElement(jugadores[jug][slot]) 
    jugadores[jug][slot] = nil 
end 
  
addEventHandler("onClientResourceStart",getResourceRootElement(),function() 
    for k,v in ipairs(getElementsByType("player",root,true)) do 
        jugadores[v] = {} 
        info[v] = {true,isPedInVehicle(v)} 
    end 
end,false) 
  
addEventHandler("onClientPlayerQuit",root,function() 
    if jugadores[source] and source ~= lplayer then 
        for k,v in pairs(jugadores[source]) do 
            destroyElement(v) 
        end 
        jugadores[source] = nil 
        info[source] = nil 
    end 
end) 
  
addEventHandler("onClientElementStreamIn",root,function() 
    if getElementType(source) == "player" and source ~= lplayer then 
        jugadores[source] = {} 
        info[source] = {true,isPedInVehicle(source)} 
    end 
end) 
  
addEventHandler("onClientElementStreamOut",root,function() 
    if jugadores[source] and source ~= lplayer then 
        for k,v in pairs(jugadores[source]) do 
            destroyElement(v) 
        end 
        jugadores[source] = nil 
        info[source] = nil 
    end 
end) 
  
addEventHandler("onClientPlayerSpawn",root,function() 
    if jugadores[source] then 
        info[source][1] = true 
    end 
end) 
  
addEventHandler("onClientPlayerWasted",root,function() 
    if jugadores[source] then 
        for k,v in pairs(jugadores[source]) do 
            destruirArma(source,k) 
        end 
        info[source][1] = false 
    end 
end) 
  
addEventHandler("onClientPlayerVehicleEnter",root,function() 
    if jugadores[source] then 
        for k,v in pairs(jugadores[source]) do 
            destruirArma(source,k) 
        end 
        info[source][2] = true 
    end 
end) 
  
addEventHandler("onClientPlayerVehicleExit",root,function() 
    if jugadores[source] then 
        info[source][2] = false 
    end 
end) 
  
addEventHandler("onClientPreRender",root,function() 
    for k,v in pairs(jugadores) do 
        local x,y,z = getPedBonePosition(k,3) 
        local rot = math.rad(90-getPedRotation(k)) 
        local i = 15 
        local wep = getPedWeaponSlot(k) 
        local ox,oy = math.cos(rot)*0.22,-math.sin(rot)*0.22 
        local alpha = getElementAlpha(k) 
        for q,w in pairs(v) do 
            if q == wep then 
                destruirArma(k,q) 
            else 
                setElementRotation(w,0,70,getPedRotation(k)+90) 
                setElementAlpha(w,alpha) 
                if q==2 then 
                    local px,py,pz = getPedBonePosition(k,51) 
                    local qx,qy = math.sin(rot)*0.11,math.cos(rot)*0.11 
                    setElementPosition(w,px+qx,py+qy,pz) 
                elseif q==4 then 
                    local px,py,pz = getPedBonePosition(k,41) 
                    local qx,qy = math.sin(rot)*0.06,math.cos(rot)*0.06 
                    setElementPosition(w,px-qx,py-qy,pz) 
                else 
                    setElementPosition(w,x+ox,y+oy,z-0.2) 
                    setElementRotation(w,-17,-(50+i),getPedRotation(k)) 
                    i=i+15 
                end 
            end 
        end 
        if info[k][1] and not info[k][2] then 
            for i=1,7 do 
                local arma = getPedWeapon(k,i) 
                if validWeapons[arma] then 
                    if arma~=wep and arma>0 and not jugadores[k][i] then 
                        crearArma(k,arma) 
                    end 
                end 
            end 
        end 
    end 
end) 
  
function obtenerObjeto(arma) 
    local m 
    if arma > 1 and arma < 9 then 
        m = 331 + arma 
    elseif arma == 9 then 
        m = 341 
    elseif arma == 15 then 
        m = 326 
    elseif (arma > 21 and arma < 30) or (arma > 32 and arma < 39) or (arma > 40 and arma < 44) then 
        m = 324 + arma 
    elseif arma > 29 and arma < 32 then 
        m = 325 + arma 
    elseif arma == 32 then 
        m = 372 
    end 
    return m 
end 

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...