Jump to content

[AJUDA SCRIPT] ALGUÉM PFV ME AJUDA EM ADICIONAR LIMITE DE DISTÂNCIA NESSE SCRIPT PFV?


Recommended Posts

Queria ajuda para adicionar limite de distância nesse script meu aqui, já tentei 1 vez mas não deu muito certo...

---------- Server

function getPlayerID(id)
	v = false
	for i, player in ipairs (getElementsByType("player")) do
		if getElementData(player, "ID") == id then
			v = player
			break
		end
	end
	return v
end

function playerHasItem(player, itemID)
    for i, v in pairs(getElementData(player, 'TS:InventarioInfo')) do 
        if type(v) == 'table' then 
            if v['Item'] == tonumber(itemID) then return true end
        end 
    end
    return false 
end

function returnQntdItem(player, itemID)  
    if (player) then
        for i, v in pairs(getElementData(player, "TS:InventarioInfo")) do
            if (type(v) == "table") then
                if (v['Item'] == tonumber(itemID)) then
                    return v['Quantidade']
                end
            end
        end
    end
    return false
end

function revistar(source, commandName, id)
    local bandete = returnQntdItem(source, 10)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 10) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..bandete.." bandeides em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local kit = returnQntdItem(source, 11)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 11) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..kit.." kits de reparos em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local maconha = returnQntdItem(source, 12)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 12) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..maconha.." Maconhas em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local AK = returnQntdItem(source, 13)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 13) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..AK.." armamentos AK-47 em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local MUNICAO1 = returnQntdItem(source, 14)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 14) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..MUNICAO1.." munições 762 em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local FALL = returnQntdItem(source, 15)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 15) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..FALL.." armamentos FALL em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local MUNICAO2 = returnQntdItem(source, 16)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 16) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..MUNICAO2.." munições 762 em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local mp5 = returnQntdItem(source, 17)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 17) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..mp5.." armamentos MP5 em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local MUNICAO3 = returnQntdItem(source, 18)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 18) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..MUNICAO3.." munições 9mm em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local tec = returnQntdItem(source, 19)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 19) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..tec.." armamentos TEC-9 em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local uzi = returnQntdItem(source, 20)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 20) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..uzi.." armamentos UZI em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local revolver = returnQntdItem(source, 21)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 21) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..revolver.." armamentos REVOLVER-38 em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local glock = returnQntdItem(source, 22)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 22) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..glock.." armamentos GLOCK em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local MUNICAO4 = returnQntdItem(source, 23)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 23) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..MUNICAO4.." munições 45 em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local faca = returnQntdItem(source, 24)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 24) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..faca.." facas em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local akvip = returnQntdItem(source, 25)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 25) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..akvip.." armamentos AK-47-VIP em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local AWP = returnQntdItem(source, 26)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 26) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..AWP.." armamentos AK-47-VIP em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)


function revistar(source, commandName, id)
    local MUNICAO5 = returnQntdItem(source, 27)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 27) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..MUNICAO5.." munições sniper em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local AWPVIP = returnQntdItem(source, 28)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 28) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..AWPVIP.." armamentos AWP-VIP em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local colete = returnQntdItem(source, 30)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 30) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..colete.." coletes em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local dinheirosujo = returnQntdItem(source, 31)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 31) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..dinheirosujo.." de Dinheiro Sujo em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local galoes = returnQntdItem(source, 32)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 32) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..galoes.." galoes de gasolina em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

function revistar(source, commandName, id)
    local lockpick = returnQntdItem(source, 33)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
                if playerHasItem(targetPlayer, 33) == true then
                    outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..lockpick.." lockpicks em sua mochila!",source,255,0,0,true)
                    return
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

 

Link to comment
36 minutes ago, Lord Henry said:

Deu muita agonia de ver tantas funções iguais com o mesmo comando. Daria pra fazer tudo com 1 função.

ss

local distanciaMaxima = 5

function getPlayerID(id)
	v = false
	for i, player in ipairs (getElementsByType("player")) do
		if getElementData(player, "ID") == id then
			v = player
			break
		end
	end
	return v
end

function playerHasItem(player, itemID)
    for i, v in pairs(getElementData(player, 'TS:InventarioInfo')) do 
        if type(v) == 'table' then 
            if v['Item'] == tonumber(itemID) then return true end
        end 
    end
    return false 
end

function returnQntdItem(player, itemID)  
    if (player) then
        for i, v in pairs(getElementData(player, "TS:InventarioInfo")) do
            if (type(v) == "table") then
                if (v['Item'] == tonumber(itemID)) then
                    return v['Quantidade']
                end
            end
        end
    end
    return false
end

function verificarDistancia(player, abordado)
	if player and abordado then
		local x,y,z = getElementPosition(player)
		local x2,y2,z2 = getElementPosition(abordado)
		local distancia = getDistanceBetweenPoints3D(x,y,z,x2,y2,z2)
		if distancia then
			return distancia
		end
	end
end

itemsTable = {
	-- item id, item name
	{10, 'Bandages'},
	{11, 'Kits reparos'},
	{12, 'Maconhas'},
	{13, 'Armamentos de AK-47'},
	{14, 'Munições de 762'},
	{15, 'Munições de FALL'},
	{16, 'Munições de 762'},
	{17, 'Armamento de MP5'},
	{18, 'Armamento de 9mm'},
	{19, 'Armamento de TEC-9'},
	{20, 'Armamento de Uzi'},
	{21, 'Armamento de REVOLVER-38'},
	{22, 'Armamento de GLOCK'},
	{23, 'Armamento de 45'},
	{24, 'Facas'},
	{25, 'Armamentos de AK-47-VIP'},
	{26, 'Armamentos de AWP'},
	{27, 'Munições de Sniper'},
	{28, 'Armamentos de AWP-VIP'},
	{30, 'Coletes'},
	{31, 'de Dinheiro Sujo'},
	{32, 'Galoes de gasolina'},
	{33, 'Lockpicks'},
}

function revistar(source, commandName, id)
    if (id) then
        local playerID = tonumber(id)
        if (playerID) then
            local targetPlayer, targetPlayerName = getPlayerID(playerID)
            if (targetPlayer) then
            	if verificarDistancia(source, targetPlayer) > 5 then return outputChatBox("#0037FF✘#ffffffERROR#0037FF✘➺ #ffffff Chegue mais perto do abordado!",source,255,0,0,true) end
                for i,v in ipairs( itemsTable ) do
                	local item = returnQntdItem(source, v[1])
                	if playerHasItem(targetPlayer, v[1]) == true then
                    	outputChatBox("#0037FF✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..item.." "..v[2].." em sua mochila!",source,255,0,0,true)
                    	return
                	end
                end
            end
        end
    end
end
addCommandHandler("revistar", revistar)

Está aí amigo.
Mas uma dica, melhore esse código, não tem necessidade fazer esse tanto de function sendo que dar para fazer em apenas 1, e outra dica é aprender a mexer com tabelas !.

 

Espero te lhe ajudado.

Edited by HiroShi
Código otimizado + ou -
  • Thanks 1
Link to comment
  • Other Languages Moderators

Assim está melhor.

function getPlayerID(id)
	v = false
	for i, player in ipairs (getElementsByType("player")) do
		if getElementData(player, "ID") == id then
			v = player
			break
		end
	end
	return v
end

function playerHasItem(player, itemID)
    for i, v in pairs(getElementData(player, 'TS:InventarioInfo')) do 
        if type(v) == 'table' then 
            if v['Item'] == tonumber(itemID) then return true end
        end 
    end
    return false 
end

function returnQntdItem(player, itemID)  
    if (player) then
        for i, v in pairs(getElementData(player, "TS:InventarioInfo")) do
            if (type(v) == "table") then
                if (v['Item'] == tonumber(itemID)) then
                    return v['Quantidade']
                end
            end
        end
    end
    return false
end

function verificarDistancia (player, abordado)
	if player and abordado then
		local x,y,z = getElementPosition(player)
		local x2,y2,z2 = getElementPosition(abordado)
		local distancia = getDistanceBetweenPoints3D(x,y,z,x2,y2,z2)
		if distancia then
			return distancia
		end
	end
end

local itens = {
    [10] = "Bandeide(s)",
    [11] = "Kit(s) de Reparo",
    [12] = "Maconha(s)",
    [13] = "Armamento(s) AK-47",
    [14] = "Munição(ões) 762",
    [15] = "Armamento(s) FALL",
    [16] = "Munição(ões) 762", -- Repete mesmo?
    [17] = "Armamento(s) MP5",
    [18] = "Munição(ões) 9mm",
    [19] = "Armamento(s) TEC-9",
    [20] = "Armamento(s) UZI",
    [21] = "Armamento(s) Revólver-38",
    [22] = "Armamento(s) Glock",
    [23] = "Munição(ões) 45",
    [24] = "Faca(s)",
    [25] = "Armamento(s) AK-47-VIP",
    [26] = "Armamento(s) AK-47-VIP", -- Repete mesmo?
    [27] = "Munição(ões) Sniper",
    [28] = "Armamento(s) AWP-VIP",
    [30] = "Colete(s)",
    [31] = "Dinheiro Sujo(s)",
    [32] = "Galão(ões)",
    [33] = "Lockpick(s)",
}

function revista (thePlayer, commandName, id) -- Não use source como parâmetro de função.
    if (tonumber(id)) then
        local targetPlayer = getPlayerID(tonumber(id))
        if (targetPlayer) then
            if (verificarDistancia (thePlayer, targetPlayer) > 5) then -- Se a distância pro jogador for maior que 5, manda o feedback e nada acontece.
                outputChatBox ("O jogador com este ID não está perto o suficiente para ser revistado.", thePlayer, 255, 150, 0) -- Sempre dê feedback em caso de erro.
                return
            end
            for i, item in pairs (itens) do -- Tabela de itens com seus ids indexados, pra não precisar entupir de if.
                if (playerHasItem (targetPlayer, i) == true) then
                    outputChatBox ("✘#ffffffINFO#0037FF✘➺ #ffffff O Cidadão tem "..returnQntdItem (targetPlayer, i).." "..item.." em sua mochila!", thePlayer, 0, 55, 255, true)
                end
            end
        else
            outputChatBox ("Nenhum jogador com este ID foi encontrado.", thePlayer, 255, 150, 0)
        end
    else
        outputChatBox ("Sintaxe: /revistar <playerID>", thePlayer, 255, 150, 0)
    end
end
addCommandHandler ("revistar", revista) -- Não use o nome da função igual ao comando.

 

Edited by Lord Henry
Código comentado.
  • Like 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...