Jump to content

zMpyster

Members
  • Posts

    111
  • Joined

  • Last visited

Everything posted by zMpyster

  1. playerOrDist = {} function getUberNear(cliente) tableUber = aclGroupListObjects(aclGetGroup("UBER")) for objects,name in pairs(tableUber)do player = getAccountPlayer(name) if (getElementType( player ) == "player" and player ~= cliente) then local jX, jY, jZ = getElementPosition (player) local pX, pY, pZ = getElementPosition (cliente) local dist = getDistanceBetweenPoints3D ( pX, pY, pZ, jX, jY, jZ) if distancia[cliente] == nil or distancia[cliente] == false then distancia[cliente] = dist..","..player else local playerOrDist = split(distancia[cliente], ',') if playerOrDist[1] > dist then distancia[cliente] = dist..","..player end end end end return distancia[cliente] end Fiz esse pequeno código, aonde retorna um trabalhador da UBER mais próximo de tal player, estou com uma pequena dúvida, ali na parte "if playerOrDist[1] > dist then", se dois players pedirem uber ao mesmo tempo, tem chance de um número sobrepor o outro ex: cliente(Danilo) - uber mais próximo(carlos) - km(1) cliente2(João) - uber mais próximo(Jorge) - km(6) o meu medo é de quando "Danilo" e "João" pedirem uber ao mesmo tempo, acabe bugando e ficando assim cliente(Danilo) - uber mais próximo(Jorge) - km(6) cliente2(João) - uber mais próximo(Jorge) - km(6) espero que tenham entendido, boa noite!
  2. Bom pessoal, estava fazendo umas hands de veículos e acabei ficando confuso em uma coisa, uns dos critérios usados no MTA para definir a velocidade de tal veículo através de hands é: Aceleração e o peso, eu não sei se entra nessa lista a velocidade máxima, más então, eu fiz duas hands, uma de um Kadett (coloquei no lugar do Elegant) e outra de uma porsche Carrera GT(no lugar no alpha). Eu modifiquei, a velocidade máxima, inércia, peso, aceleração, deixei a aceleração de ambos no 8, e ai na hora do teste fiquei surpreso, na mesma avenida, o Kadett pegou 141 e a Porsche 140, a velocidade máxima dela era de 330km/h e a do Kadett 174km/h. Bom acabei ficando confuso nessa hora e por isso estou aqui, queria saber quais são todos os critérios utilizados no MTA para determinar a velocidade de tal veículo. OBS: Usei o mod hands, o mais conhecido, eu acho...
  3. Bom gente, gostaria de saber se existe alguma função que retorna as posições das luzes de tal veículo, onde poderia ser usado para fazer um script de seta para veículos
  4. Na verdade nesses veículos ai não, más, eu achei estranho na função aparecer que é compatível com o veículo edit: acabei de testar no elegy e também aconteceu a mesma coisa
  5. Ontem eu estava terminando um script de oficina, em uma função minha ela recuperava todos os spoilers disponíveis no veículo, ai que ta o problema, na wiki do MTA o id 1164 é um spoiler Só que tem um pequeno problema, quando eu tento colocar esse spoiler em qualquer carro ele simplesmente buga e não acontece nada (não é colocado nenhum spoiler e o carro fica sem nenhum spoiler como estava), sendo que na função local upgrade = getVehicleUpgradeOnSlot(car, 2) ele é retornado, agora eu não sei se o bug é do MTA ou do meu mod...
  6. Conta seria um valor de xp do player que chega de 0 a 100
  7. local screenW, screenH = guiGetScreenSize() dxDrawRectangle(screenW * 0.4319, screenH * 0.0898, screenW * 0.1464, screenH * 0.0195, tocolor(0, 0, 0, 39), false) dxDrawRectangle(screenW * 0.4319, screenH * 0.0898, screenW*(conta1*2), screenH * 0.0195, tocolor(251, 165, 0, 254), false) -- quadrado que varia do valor de conta1 Bom, o conta1 ele varia de 0 até 100, eu queria saber como posso deixar o quadrado certo em todas as resoluções
  8. Eu, me esqueci que tinha como fazer contas mais simplificadas nesse caso kk, não sou muito bom ainda com script, acho que essa é a primeira função que faço...
  9. function convertMilliseconds (milliseconds, times) if tonumber(milliseconds) and tostring(times) then milliseconds = tonumber(milliseconds) newMilliseconds = milliseconds day = nil minutes = nil hour = nil if times == "day" then if milliseconds >= 86400000 then day = 0 newMilliseconds = milliseconds for i=1, 100 do if newMilliseconds >= 86400000 then day = day + 1 newMilliseconds = newMilliseconds - 86400000 else break end end end return day or 0 elseif times == "hour" then for i=1, 100 do if newMilliseconds > 86400000 then newMilliseconds = newMilliseconds - 86400000 else break end end if newMilliseconds > 86400000 then newMilliseconds = 86400000 else newMilliseconds = newMilliseconds end hour = 0 for h=1, 100 do if newMilliseconds >= 3600000 then hour = hour + 1 newMilliseconds = newMilliseconds - 3600000 else break end end return hour or 0 elseif times == "minutes" then for i=1, 100 do if newMilliseconds > 86400000 then newMilliseconds = newMilliseconds - 86400000 else break end end for h=1, 100 do if newMilliseconds > 3600000 then newMilliseconds = newMilliseconds - 3600000 else break end end if newMilliseconds > 3600000 then newMilliseconds = 3600000 else newMilliseconds = newMilliseconds end minutes = 0 for m=1, 100 do if newMilliseconds >= 60000 then minutes = minutes + 1 newMilliseconds = newMilliseconds - 60000 else break end end return minutes or 0 end end end não consegui editar o outro então decidi postar aqui, arrumei um bug que tava dando quando o milissegundo era muito grande
  10. Bom galera, queria mostrar a vocês meu script de conversão de milissegundos em dia / hora / minutos, não achei nenhum script que fosse igual a esse então resolvi fazer um eu mesmo. Aqui em baixo tirei print de um mod de IPVA feito por mim, aqui mostra basicamente o que estou falando kk Aqui está o script: function convertMilliseconds (milliseconds, times) if tonumber(milliseconds) and tostring(times) then milliseconds = tonumber(milliseconds) newMilliseconds = milliseconds if times == "day" then if milliseconds >= 86400000 then day = 0 newMilliseconds = milliseconds for i=1, 100 do if newMilliseconds >= 86400000 then day = day + 1 newMilliseconds = newMilliseconds - 86400000 else break end end end return day or 0 elseif times == "hour" then for i=1, 100 do if newMilliseconds > 86400000 then newMilliseconds = newMilliseconds - 86400000 else break end end if newMilliseconds > 86400000 then newMilliseconds = 86400000 else newMilliseconds = newMilliseconds end hour = 0 for h=1, 100 do if newMilliseconds >= 3600000 then hour = hour + 1 newMilliseconds = newMilliseconds - 3600000 else break end end return hour or 0 elseif times == "minutes" then for i=1, 100 do if newMilliseconds > 86400000 then newMilliseconds = newMilliseconds - 86400000 else break end end for h=1, 100 do if newMilliseconds > 3600000 then newMilliseconds = newMilliseconds - 3600000 else break end end if newMilliseconds > 3600000 then newMilliseconds = 3600000 else newMilliseconds = newMilliseconds end minutes = 0 for m=1, 100 do if newMilliseconds >= 60000 then minutes = minutes + 1 newMilliseconds = newMilliseconds - 60000 else break end end return minutes or 0 end end end Ele está um pouco extenso pq não encontrei mais formas de simplificar, qualquer problema que vocês encontrarem me fale. formas de usar: Millisegundos = 60000 convertMilliseconds(Millisegundos, "day") convertMilliseconds(Millisegundos, "hour") convertMilliseconds(Millisegundos, "minutes")
  11. Fiz um teste aqui com um trem e um vagão (com a mesma função ), e o vagão também ficava sumindo dependendo do ângulo que olhasse, agora estou com dúvida de que se eu usar outra forma eu n possa evitar esse bug
  12. Más, vc acha que se eu mudar a vtr pra outra talvez ajude em algo?
  13. Seria mais fácil se verificasse se a vida do veículo fosse maior que 300 no script de ligar o veículo, assim toda vez que o player fosse ligar o veículo o mesmo teria que ter mais que 300 de vida
  14. Acabei usando esta função só que tenho um problema, o player quando ficar no porta-malas ele fica desaparecendo dependendo do angulo que vc olhe pro porta-malas, quase sempre só fica com o id na cabeça e o ped inivisível
  15. O script basicamente anexa o player na vtr (porta-malas) só que o player fica girando junto com o carro, não sei oq fazer attachElements(nick, car, 0.1, -2.12, -0.15, 0, 0, 90)
  16. Acredito eu que esse não seja o evento certo, pelo oq li na wiki, esse evento é chamado quando tem alguma alteração nos datas, e não acho que não é isso que o mod precisa carteira, ele precisava recuperar a data e passar o valor no dx
  17. Mesma coisa, 5 mb quando eu abria a carteira playerInfo = {} function abrir1213241141241 () if not isPedInVehicle(localPlayer) then if pqwd == false then addEventHandler ("onClientRender", root, dx123433632312312) if getElementData(localPlayer, "moneyPraMostrarNaCarteiraEtrab") then local mess = getElementData(localPlayer, "moneyPraMostrarNaCarteiraEtrab") local mc = split(mess, ',') playerInfo[1] = mc[2] end if getElementData(localPlayer, "personSistema") then local personSistema = getElementData(localPlayer, "personSistema") local mc = split(personSistema, ',') playerInfo[2] = mc[1] playerInfo[3] = mc[2] playerInfo[4] = mc[3] playerInfo[5] = mc[4] if getElementData(localPlayer, "temCategoriaA") then playerInfo[6] = true end if getElementData(localPlayer, "temCategoriaB") then playerInfo[7] = true end if getElementData(localPlayer, "temCategoriaC") then playerInfo[8] = true end if getElementData(localPlayer, "temCategoriaD") then playerInfo[9] = true end if getElementData(localPlayer, "temCategoriaE") then playerInfo[10] = true end end pqwd = true elseif pqwd == true then removeEventHandler("onClientRender", root, dx123433632312312) pqwd = false end end end bindKey("M", "down", abrir1213241141241) Aqui o código identado
  18. playerInfo = {} function abrir1213241141241 () if not isPedInVehicle(localPlayer) then if pqwd == false then addEventHandler ("onClientRender", root, dx123433632312312) if getElementData(localPlayer, "moneyPraMostrarNaCarteiraEtrab") then local mess = getElementData(localPlayer, "moneyPraMostrarNaCarteiraEtrab") local mc = split(mess, ',') playerInfo[1] = mc[2] end if getElementData(localPlayer, "personSistema") then local personSistema = getElementData(localPlayer, "personSistema") local mc = split(personSistema, ',') playerInfo[2] = mc[1] playerInfo[3] = mc[2] playerInfo[4] = mc[3] playerInfo[5] = mc[4] if getElementData(localPlayer, "temCategoriaA") then playerInfo[6] = true end if getElementData(localPlayer, "temCategoriaB") then playerInfo[7] = true end if getElementData(localPlayer, "temCategoriaC") then playerInfo[8] = true end if getElementData(localPlayer, "temCategoriaD") then playerInfo[9] = true end if getElementData(localPlayer, "temCategoriaE") then playerInfo[10] = true end end pqwd = true elseif pqwd == true then removeEventHandler("onClientRender", root, dx123433632312312) pqwd = false end end end bindKey("M", "down", abrir1213241141241) Aqui o teste Eu fiz isso no próprio lado do cliente, e coloquei uma função sem evento manipulador em cima da onClientRender, a onClientRender só iria acontecer se a função onde eu passava as informções fosse chamada, sim só tem isso no código
  19. dxDrawImage(x*767, y*280, x*34, y*32, "carteira.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawText("R$ "..convertNumber(getPlayerMoney()), x*811, y*280, x*969, y*312, tocolor(19, 169, 0, 254), x*1.00, "default", "center", "center", false, false, false, false, false) dxDrawText("CARTEIRAS DE VEÍCULOS:", x*391, y*278, x*545, y*315, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("A:", x*392, y*325, x*423, y*348, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) if getElementData(localPlayer, "temCategoriaA") then dxDrawText("POSSUI", x*440, y*325, x*545, y*348, tocolor(0, 255, 0, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) else dxDrawText("NÃO POSSUI", x*440, y*325, x*545, y*348, tocolor(255, 0, 0, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) end dxDrawText("B:", x*392, y*358, x*423, y*381, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("C:", x*392, y*391, x*423, y*414, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("D:", x*392, y*424, x*423, y*447, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("E:", x*392, y*457, x*423, y*480, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) if getElementData(localPlayer, "temCategoriaB") then dxDrawText("POSSUI", x*440, y*358, x*545, y*381, tocolor(0, 255, 0, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) else dxDrawText("NÃO POSSUI", x*440, y*358, x*545, y*381, tocolor(255, 0, 0, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) end if getElementData(localPlayer, "temCategoriaC") then dxDrawText("POSSUI", x*440, y*424, x*545, y*447, tocolor(0, 255, 0, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) else dxDrawText("NÃO POSSUI", x*440, y*424, x*545, y*447, tocolor(255, 0, 0, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) end if getElementData(localPlayer, "temCategoriaD") then dxDrawText("POSSUI", x*440, y*391, x*545, y*414, tocolor(0, 255, 0, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) else dxDrawText("NÃO POSSUI", x*440, y*391, x*545, y*414, tocolor(255, 0, 0, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) end if getElementData(localPlayer, "temCategoriaE") then dxDrawText("POSSUI", x*440, y*457, x*545, y*480, tocolor(0, 255, 0, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) else dxDrawText("NÃO POSSUI", x*440, y*457, x*545, y*480, tocolor(255, 0, 0, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) end if getElementData(localPlayer, "personSistema") then local personSistema = getElementData(localPlayer, "personSistema") local mc = split(personSistema, ',') dxDrawText("NOME: #ffdead".. mc[1], x*745, y*316, x*969, y*346, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "left", "center", false, false, false, true, false) else dxDrawText("NOME: #ffdead", x*745, y*316, x*969, y*346, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "left", "center", false, false, false, true, false) end local mess = getElementData(localPlayer, "moneyPraMostrarNaCarteiraEtrab") local mc = split(mess, ',') dxDrawText("TRABALHO ATUAL: #FFDEAD"..mc[2], x*745, y*356, x*969, y*389, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "left", "center", false, false, false, true, false) if getElementData(localPlayer, "personSistema") then local personSistema = getElementData(localPlayer, "personSistema") local mc = split(personSistema, ',') dxDrawText("RG: #FFDEAD".. mc[2], x*805, y*394, x*927, y*427, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "left", "center", false, false, false, true, false) else dxDrawText("RG: #FFDEADOito digitos - 0", x*805, y*394, x*927, y*427, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "left", "center", false, false, false, true, false) end dxDrawRectangle(x*575, y*509, x*220, y*34, tocolor(254, 254, 254, 170), false) dxDrawText("Pressione 'M' para fechar a carteira", x*594, y*509, x*772, y*543, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("feito por: +zMpyster", x*866, y*530, x*975, y*543, tocolor(255, 255, 255, 255), x*1.00, "default", "left", "top", false, false, false, false, false) if getElementData(localPlayer, "personSistema") then local personSistema = getElementData(localPlayer, "personSistema") local mc = split(personSistema, ',') dxDrawText("País: #FFDEAD".. mc[3], x*800, y*432, x*931, y*465, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "left", "center", false, false, false, true, false) else dxDrawText("País: #FFDEAD", x*800, y*432, x*931, y*465, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "left", "center", false, false, false, true, false) end if getElementData(localPlayer, "personSistema") then local personSistema = getElementData(localPlayer, "personSistema") local mc = split(personSistema, ',') dxDrawText("Sexo: #FFDEAD".. mc[4], x*800, y*470, x*931, y*503, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "left", "center", false, false, false, true, false) else dxDrawText("Sexo: #FFDEAD", x*800, y*470, x*931, y*503, tocolor(255, 255, 255, 255), x*1.00, "default-bold", "left", "center", false, false, false, true, false) Esse código verifica a carteira de veículo, dinheiro, trabalho, sexo, nome, rg e para abrir a carteira é só apertar a tecla 'M', o problema é que toda vez que alguém abre a carteira o uso do client no /ipb vai de 0% para 5,50%, como posso reduzir esse uso de cpu?
  20. Acabei fazendo parecido com oq vc disse, só que usei marke, pra manter a mesma ideia que tinha
  21. if veh[source] and isElement(veh[source]) then if isElementWithinMarker(source, carga2) then if isPedInVehicle(source) then local speed = getTrainSpeed ( veh[source] ) if speed > 0 then return outputChatBox("#ff0000Você não pode colocar os vagões com o trem andando!", source,0,0,0,true) end setElementVisibleTo ( end1, source, true ) setElementVisibleTo ( theend, source, true ) setElementVisibleTo (carga1, source, false) setElementVisibleTo (carga2, source, false) setElementPosition(veh[source], 1752.4, -1954.242, 15.634) setTimer ( function() local x,y,z = getElementPosition(veh[source]) theBox[source] = createVehicle(590, x+10, y, 13.547) attachTrailerToVehicle (veh[source], theBox[source]) theBox2[source] = createVehicle(590, x+20, y, 13.547) attachTrailerToVehicle (theBox[source], theBox2[source]) end, 200, 1) outputChatBox("#FFFFFF[#ffff00TRAB-TREM#FFFFFF]#00ff00Agora vá entregar o cimento!",source,0,0,0,true) end end end Já tentei de tudo que é forma arrumar esse script e nada, vocês podem notar que tem algumas coisas tanto quanto desnecessárias, coloquei as mesmas pois não sabia mais oq fazer kk. Enfim, são 2 os problemas do script. Basicamente eu quero que o cara vá na marker e de um comando e automaticamente 2 vagões serão criados no trem. O primeiro problema é que não achei outra forma de fazer com que só desse pro player pegar o vagão quando tivesse parado se n fosse com o getTrainSpeed, o problema do getTrainSpeed é que ele se for colocado no 0 o trem tem que estar literalmente no ponto morto, e isso acaba bugando um pouco, pois os trens do mta são difícies de deixar no ponto morto(acho que é assim que se fala), ai acaba o player ficando muito tempo até conseguir pegar a carga. 2 problema: mesmo com a verificação da velocidade do trem ainda tem vezes que o vagão não se anexa ao mesmo, deixando os vagões aonde foram criados e o trem sem nada anexado Eu realmente não queria recorrer ao fórum, más, já estava desanimando de fazer esse mod...
  22. Toda vez que o carro de lixeiro do player for destruído ou explodir, tem uma verificação pra ver quem era o dono do veículo só que fica dando esse erro: ERROR:[BVC]TrabalhoLixeiro\s.lua:C stack overflow function verifyThePlayer(source) local players = getElementsByType ( "player" ) for u,psa in ipairs(players) do if veh[psa] and isElement(veh[psa]) then if source == veh[psa] then pasdah = psa break end end end if pasdah then return pasdah else return false end end function explodiuCamLixeiro () local players = verifyThePlayer(source) if not players == false then if veh[players] and isElement(veh[players]) then if source == veh[players] then if markerEntrega[players] then destroyElement(markerEntrega[players]) markerEntrega[players] = nil end quantidadeQueFoi[players] = nil if blip99[players] then destroyElement(blip99[players]) blip99[players] = nil end if veh[players] then destroyElement(veh[players]) veh[players] = nil end for i=1, 20 do local ads = getPlayerName(players).."".. i esseFoiEm[ads] = false if marker[ads] then destroyElement(marker[ads]) marker[ads] = nil end if blip[ads] then destroyElement(blip[ads]) blip[ads] = nil end end end end end end addEventHandler ( "onVehicleExplode", getRootElement(), explodiuCamLixeiro ) function TirouCamLixeiro () if getElementType(source) == "vehicle" then local players = verifyThePlayer(source) if not players == false then if veh[players] and isElement(veh[players]) then if source == veh[players] then if markerEntrega[players] then destroyElement(markerEntrega[players]) markerEntrega[players] = nil end quantidadeQueFoi[players] = nil if blip99[players] then destroyElement(blip99[players]) blip99[players] = nil end if veh[players] then destroyElement(veh[players]) veh[players] = nil end for i=1, 20 do local ads = getPlayerName(players).."".. i esseFoiEm[ads] = false if marker[ads] then destroyElement(marker[ads]) marker[ads] = nil end if blip[ads] then destroyElement(blip[ads]) blip[ads] = nil end end end end end end end addEventHandler ( "onElementDestroy", getRootElement(), TirouCamLixeiro ) O código em si ta funcionando perfeitamente, quando destrói o veículo e quando explode, só que quero tentar manter o debugscript limpo, a linha do erro é essa: for u,psa in ipairs(players) do edit1: Esqueci de falar que o erro do stack overflow acontece quando ambas funções acontecem
  23. Acabei achando o erro, se olhar a print verá que teve uma parte que estava com o valor "nil nil", sem a vírgula
×
×
  • Create New...