White141516 Posted December 14, 2020 Share Posted December 14, 2020 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
HiroShi Posted December 14, 2020 Share Posted December 14, 2020 pfv, mande somente a função a qual quer adicionar ! Link to comment
Other Languages Moderators Lord Henry Posted December 14, 2020 Other Languages Moderators Share Posted December 14, 2020 Deu muita agonia de ver tantas funções iguais com o mesmo comando. Daria pra fazer tudo com 1 função. Link to comment
HiroShi Posted December 14, 2020 Share Posted December 14, 2020 (edited) 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 December 14, 2020 by HiroShi Código otimizado + ou - 1 Link to comment
Other Languages Moderators Lord Henry Posted December 14, 2020 Other Languages Moderators Share Posted December 14, 2020 (edited) 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 December 14, 2020 by Lord Henry Código comentado. 1 Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now