Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    4,005
  • Joined

  • Last visited

  • Days Won

    184

Everything posted by Lord Henry

  1. Se vc quer que algo seja feito ao colidir no marker, não faz sentido vc fazer usando comando. YouMarker = createMarker (1491.3908691406, -1765.4484863281, 18.795755386353, "cylinder", 1.5, 255, 255, 0, 170) function policeStationHit (hitElement) if (hitElement) and (getElementType (hitElement) == "player") then -- Se o elemento que colidiu no marker é um player, então: setPlayerWantedLevel (hitElement, 6) -- Coloca 6 estrelas de procurado nesse jogador. end end addEventHandler ("onMarkerHit", YouMarker, policeStationHit)
  2. Não tem. Antigamente existiam funções onde vc poderia obter/setar o trilho de um veículo. Mas essas funções foram removidas e não funcionam mais. Por exemplo setTrainTrack.
  3. A sintaxe a princípio está certa. Mas eu usaria INTEGER em vez de NUMERIC. Ah, vc quer fazer todas as lojas diferentes usarem o mesmo deposito (o que na realidade não faz sentido, mas ok). Sim, é possível. Você pode criar uma coluna para cada propriedade. E uma linha para cada material. Tudo na mesma table. | Material | Quantidade | Valor | | Fita Isolante | 54 | 5 | | Cano | 25 | 12 | | Hambúrguer | 132 | 8 | | Refrigerante | 48 | 6 | | Celular | 12 | 300 | | GPS | 30 | 22 | Usando o próprio nome do material vc já identifica de qual loja ele pertence. Não precisa diferenciar as lojas na table.
  4. client: addCommandHandler ("testar", function (cmd) triggerServerEvent ("eventoS", resourceRoot) -- Pode ser QUASE qualquer nome. end) addEvent ("eventoC", true) -- Pode ser QUASE qualquer nome. addEventHandler ("eventoC", root, function () outputChatBox ("Comando funcionou.") end) server: addEvent ("eventoS", true) addEventHandler ("eventoS", root, function () local accName = getAccountName (getPlayerAccount (client)) -- Obtém o nome da conta do jogador que executou o triggerServerEvent lá no client. if isObjectInACLGroup ("user."..accName, aclGetGroup ("Console")) then -- Verifica se está na ACL Group Console, pode ser qualquer outro grupo. triggerClientEvent (client, "eventoC", source) -- Ativa esse evento no client. else outputChatBox ("Comando não funcionou.", client) end end)
  5. É mais fácil simplesmente verificar se o player está dentro dos markers ao usar o comando. addCommandHandler ("pass", function (player, cmd, type) if (isElementWithinMarker (player, showLegend)) or (isElementWithinMarker (player, showLegend2)) then -- Se o jogador está dentro de um dos markers, então: if tonumber(type) == 4222 then ------- DENTRO DA BASE outputChatBox ("ATIVO", player) setElementPosition (player, modelX, modelY, modelZ) elseif tonumber(type) == 5222 then --- NO TET outputChatBox ("ATIVO 2", player) setElementPosition (player, modelX2, modelY2, modelZ2) end end end)
  6. Vai precisar fazer trigger duplo. Use o comando no cliente, então com um triggerServerEvent, verifique a ACL no servidor, se estiver na ACL, faz um triggerClientEvent para fazer o que o comando deveria fazer. É claro que, na maioria dos casos, é possível deixar o comando no server, junto com a verificação de ACL e então fazer um triggerClientEvent caso esteja na ACL.
  7. Vale lembrar que createFile, se for feito client-side, ficará salvo na máquina dos jogadores, podendo ser aberto e alterado por eles.
  8. executeCommandHandler Só funciona com comandos criados com addCommandHandler no mesmo lado. (se o comando tiver sido criado client-side, o execute também precisa ser client-side e vice-versa.) Não funciona para comandos nativos do MTA por questões de segurança. (ex: /quit, /disconnect, /reconnect, etc) Edit: EITAAA DNL '-' Mesmo instante q eu, ahuahauahua
  9. Basta verificar se ambos existem, se um deles não existir, mande um feedback de erro pro jogador. function soma (thePlayer, commandName, um, dois) local num1 = tonumber(um) -- Converte a string 'um' para número. Será false se não for possível. local num2 = tonumber(dois) -- O mesmo com 'dois'. if (not num1) or (not num2) then -- Se num1 não existe ou num2 não existe, então: (ocorre também se o que foi declarado no comando não foi número) return outputChatBox ("É obrigatório informar 2 números após o comando.", thePlayer, 255) -- Para a execução aqui e cancela a função. end local resultado = num1 + num2 -- A soma só pode ser feita com valores numéricos, 'um' e 'dois' são strings e não podem ser somados. outputChatBox ("A soma entre "..um.. "e "..dois.." é igual a: "..resultado..".", thePlayer, 255, 255, 255) -- Não precisa do true se não existir códigos #hex na mensagem. end addCommandHandler ("somar", soma)
  10. Essa função não existe no MTA.
  11. Eu faria uma table para a loja no banco de dados registry.db. Dai lá salvaria os materiais que estão no cofre, suas quantidades e valores. Você pode criar e manipular tables do banco de dados registry.db usando executeSQLQuery
  12. Inviável criar uma DB Table inteira para cada jogador. Faça todos eles na mesma table, da mesma forma que estão no internal.db
  13. Faltou a primeira variável retornada pelo processLineOfSight. O primeiro valor retornado é um booleano que indica se a linha colidiu em algo, o segundo valor dai sim é o X onde a linha colidiu. Outra coisa: Você definiu pra ele não detectar construções, ou seja, atravessar por elas até encontrar um jogador. Isso significa que se um jogador mirar na cabeça de outro jogador e atirar através de uma parede, vai considerar como HeadShot. local hit, x, y, z, hitElement, xx, yy, zz, _, _, piece = processLineOfSight (startX, startY, startZ, hitX, hitY, hitZ, true, false) -- Não precisa declarar a detecção de players como true, pois ela já é true por padrão. Só declare se for usar como false ou então se for usar algum parâmetro seguinte. if (hit) then -- Se a linha colidiu em algo, então: (caso contrário, todas as demais variáveis serão nil) if (getElementType (hitElement) == "player") then -- Se o elemento em que a linha colidiu for um jogador, então: if (piece == 9) then -- Se a linha colidiu na cabeça desse jogador, então: -- Com HS. else -- Sem HS. end end end
  14. Você pode fazer uns cálculos baseados na posição do veículo selecionado, no caso com getElementPosition e então colocar a posição da câmera com setCameraMatrix.
  15. Primeiramente vc precisa saber como a lógica do script vai funcionar.
  16. Heatshot? Nunca ouvi falar disso.
  17. Vc esqueceu de copiar uma parte do código-fonte lá da Wiki. Vc precisa copiar tudo que está dentro do retângulo azul. Source Code local allowed = { { 48, 57 }, { 65, 90 }, { 97, 122 } } -- numbers/lowercase chars/uppercase chars function generateString ( len ) if tonumber ( len ) then math.randomseed ( getTickCount () ) local str = "" for i = 1, len do local charlist = allowed[math.random ( 1, 3 )] str = str .. string.char ( math.random ( charlist[1], charlist[2] ) ) end return str end return false end
  18. Modifique a handling dele. Ele causa dano absurdo ao colidir por causa da massa alta que ele tem. SetVehicleHandling
  19. Falta o parênteses dos parâmetros na sua função. Preste mais atenção.
  20. Use a função útil: GenerateString
  21. Não exagere no uso de linhas em branco. E não precisa da função marker(). Coloque aqueles setElementInterior fora de funções.
  22. Só blindar o veículo com setVehicleDamageProof
  23. Pra matar o player com 1 tiro em qualquer parte do corpo, vc não precisa verificar o bodyPart. Remova essa condição.
×
×
  • Create New...