Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    3,980
  • Joined

  • Last visited

  • Days Won

    181

Everything posted by Lord Henry

  1. Essa sua função não foi a que eu mandei. Use essa: function inicio4 () if isElement (veh4[client]) then -- Client = localPlayer, somente neste caso. destroyElement (veh4[client]) veh4[client] = nil end Trabalho = true veh4[client] = createVehicle (493, -615.03826904297, 1807.0825195313, 0.19021162390709, 0, 0, 76.391845703125) setElementVisibleTo ( Bfim4, client, true ) warpPedIntoVehicle (client, veh4[client]) outputChatBox ("Take this Flag Card without leaving the vehicle!", client, 255, 255, 0) addEventHandler ( "onVehicleExplode", veh4[client], function () if (veh4[client]) and isElement(veh4[client]) then destroyElement (veh4[client]) setElementVisibleTo ( Bfim4, client, false ) outputChatBox("Mission failled, your vehicle blow.", client , 255, 0, 0) end end) end addEvent ("iniciaJob4", true) addEventHandler ("iniciaJob4", getRootElement(), inicio4) Na sua função, setElementVisibleTo vai falhar se o veículo (source) estiver vazio.
  2. Bom, o motivo do seu onVehicleExplode não funcionar é porque neste evento, source não é o jogador e sim o veículo. Você criou o veículo como sendo veh4[client], ou seja, client = jogador. Mas client só é existe em funções que são chamadas por um script client-side usando triggerServerEvent. Nas demais funções, você usou veh4[source] com o objetivo de source = jogador. Mas nas demais funções o source por padrão não é um jogador pois tudo depende do evento que está ativando a função. No evento onMarkerHit, ele funcionou pois você declarou source no primeiro parâmetro da função. Se vc não tivesse declarado, source seria o marker que foi colidido. No evento onVehicleExit, ele funcionou pois você declarou source no primeiro parâmetro da função. Se vc não tivesse declarado, source seria o veículo que o jogador saiu. No evento onVehicleExplode, source = veículo que explodiu. Não adiantaria declarar source na função pois este evento não possui parâmetros. A solução mais fácil, seria você colocar a função do onVehicleExplode dentro da função onde existe o client. No caso, dentro da função inicio4. --mission 4-- Mfim4 = createMarker ( -1875.0139160156, -1474.5141601563, 1 -1, "ring", 4, 0 ,255 ,0, 255) Bfim4 = createBlipAttachedTo ( Mfim4, 20 ) setElementVisibleTo ( Bfim4, root, false ) veh4 = {} function inicio4 () if isElement (veh4[client]) then -- Client = localPlayer, somente neste caso. destroyElement (veh4[client]) veh4[client] = nil end Trabalho = true veh4[client] = createVehicle (493, -615.03826904297, 1807.0825195313, 0.19021162390709, 0, 0, 76.391845703125) setElementVisibleTo ( Bfim4, client, true ) warpPedIntoVehicle (client, veh4[client]) outputChatBox ("Take this Flag Card without leaving the vehicle!", client, 255, 255, 0) addEventHandler ( "onVehicleExplode", veh4[client], function () if (veh4[client]) and isElement(veh4[client]) then destroyElement (veh4[client]) setElementVisibleTo ( Bfim4, client, false ) outputChatBox("Mission failled, your vehicle blow.", client , 255, 0, 0) end end) end addEvent ("iniciaJob4", true) addEventHandler ("iniciaJob4", getRootElement(), inicio4)
  3. Se eu converter pra string antes de passar pro client, ele funcionaria?
  4. O problema está no fato dele não reconhecer numero decimal. Pois se reconhecesse, ele organizaria direito quando colocamos true no parâmetro number.
  5. Teste nesta tabela: scoreGrid = guiCreateGridList (10, 20, 580, 330, false) nameColumn = guiGridListAddColumn (scoreGrid, "Player", 0.33) numberColumn = guiGridListAddColumn (scoreGrid, "K/D", 0.1) nomeTable = {"Nome5", "Nome3", "Nome7", "Nome9", "Nome1", "Nome2", "Nome4", "Nome8", "Nome10", "Nome6") numberTable = {8,4.1,4.2,4.01,4.11,10,2,4.001,5,1}
  6. I don't know any other way to show a selectable text with many lines.
  7. Continua não dando certo. Os números decimais estão funcionando, mas os inteiros que são com mais de um dígito não aparecem na ordem correta. Ele considera 14 menor que 2. Se eu deixar o parâmetro de number como true, os números inteiros funcionam bem, mas os decimais ficam aleatórios. (1.1 = 1.01 = 1.11) Se eu deixar o parâmetro de number como false, os números decimais funcionam bem, mas os inteiros de 2 ou mais dígitos ficam errados. (14 < 2)
  8. No caso, devo usar guiGridSetItemText, mas deixando como false no parâmetro de number?
  9. Sim. Mas antes eu não defini como number e mesmo assim bugava a organização. Dai converti pra number pra ver se resolvia e não mudou em nada. function scoreInfo (names, kills, deaths, ratio, given, taken, copRatio) guiSetVisible (scoreWindow, true) guiSetVisible (closeGrid, true) showCursor (true) if names then for i, v in ipairs (names) do if type (ratio[i]) == "number" then ratio[i] = math.round (ratio[i], 3, "floor") -- Aplica o redutor decimal no ratio. end if type (copRatio[i]) == "number" then copRatio[i] = math.round (copRatio[i], 3, "floor") -- Aplica o redutor decimal no copRatio. end local row = guiGridListAddRow (scoreGrid, names[i], "|", kills[i], deaths[i], ratio[i], "|", given[i], taken[i], copRatio[i]) guiGridListSetItemColor (scoreGrid, row, nilColumn, 255, 0, 0) guiGridListSetItemColor (scoreGrid, row, nullColumn, 255, 0, 0) end end end addEvent ("showRank", true) addEventHandler ("showRank", getRootElement(), scoreInfo)
  10. Você poderia ter lido a Wiki do GetDistanceBetweenPoints3D. Mas vou mostrá-lo no seu código. gate1 = createObject (2121, 2138.8000488281, 1454, 13.5) local gates1 = false function moveGate1 (thePlayer) local x, y, z = getElementPosition (thePlayer) if gates1 then moveObject (gate1, 1000, 2138.8000488281, 1454, 13.5) -- Fecha o portão. gates1 = false elseif getDistanceBetweenPoints3D (x, y, z, 2138.8000488281, 1454, 13.5) < 20 then -- Se a distância entre o player que usou o comando e o portão for menor que 20 metros, então: moveObject (gate1, 1000, 2138.8000488281, 1454, 4) -- Abre o portão. gates1 = true else outputChatBox ("Você precisa se aproximar mais do portão para abrí-lo.", thePlayer, 255, 0, 0) end end addCommandHandler ("123", moveGate1)
  11. Use GetDistanceBetweenPoints3D, usando a posição do jogador e a posição do portão.
  12. Você pode usar setElementData para setar dados no jogador quando ele passar pelos markers. Dai crie uma condição com getElementData, se o jogador já possuir tal data, significa que ele já passou por aquele marker e dai não deve ativar novamente.
  13. Eae galera. Encontrei um bug na lista do meu painel de ranking. Onde os valores numéricos que são decimais não ficam na ordem correta do maior pro menor nem vice-versa. Eles ficam aleatórios. Os valores inteiros ficam organizados corretamente. Já configurei para a lista considerá-los como números usando guiGridSetItemText e setando o parâmetro number como true. Ele organiza os valores inteiros corretamente, mas os valores float não. Alguém sabe como resolver? Segue a print mostrando o problema: Os valores estão sendo cortados para somente 3 casas decimais usando a função math.round, que está funcionando perfeitamente. Parte do script que preenche a lista:
  14. Essa função ela é exportada pelo resource bone_attach, você deve ter esse resource funcionando no seu servidor para funcionar. Para importar funções de outros resources, use call.
  15. A função isElementAttachedToBone não existe e também não é uma função nativa do MTA.
  16. This is a solution, but my memos use custom text. The users don't know where to break line. How to disable a memobox' scrollbar? I could use guiSetEnabled, but the text need to be selectable.
  17. Use a ferramenta <> do fórum para postar seu script.
  18. Esse problema ocorre devido a transferência server>client? Ou essa função só funciona direito no lado client mesmo?
  19. Pra deletar scripts vc precisa dar /refresh Tem certeza que você está colocando os scripts no lugar correto? Já verificou o prompt do Console e o /debugscript 3 para ver se há erros?
  20. Isso pode ocorrer quando vc remove muitos objetos originais do mapa, pois remover objetos originais do mapa também consomem processamento.
  21. Mande prints da distância que ele desaparece e da distância máxima que ele é visível. (upe a imagem no https://prnt.sc)
  22. Sugiro que evite GMs compilados de terceiros. Estude e crie seu próprio sem erros. Ou se quiser mesmo continuar usando este GM, peça correção ao desenvolvedor.
  23. Isso chama-se draw distance. O GTA descarrega objetos distantes para manter o jogo leve de ser processado.
×
×
  • Create New...