-
Posts
111 -
Joined
-
Last visited
Everything posted by zMpyster
-
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!
-
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...
-
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
-
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
-
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...
-
Conta seria um valor de xp do player que chega de 0 a 100
-
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
-
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...
-
Então eu posso postar lá tbm?
-
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
-
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")
-
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
-
Más, vc acha que se eu mudar a vtr pra outra talvez ajude em algo?
-
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
-
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
-
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)
-
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
-
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
-
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
-
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?
-
Acabei fazendo parecido com oq vc disse, só que usei marke, pra manter a mesma ideia que tinha
-
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...
-
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
-
Acabei achando o erro, se olhar a print verá que teve uma parte que estava com o valor "nil nil", sem a vírgula