-
Posts
4,005 -
Joined
-
Last visited
-
Days Won
184
Everything posted by Lord Henry
-
Qual erro aparece no /debugscript 3?
-
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)
-
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.
-
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.
-
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)
-
É 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)
- 1 reply
-
- 1
-
-
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.
-
Vale lembrar que createFile, se for feito client-side, ficará salvo na máquina dos jogadores, podendo ser aberto e alterado por eles.
-
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
-
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)
-
Essa função não existe no MTA.
-
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
-
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
-
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
-
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.
- 1 reply
-
- 1
-
-
Primeiramente vc precisa saber como a lógica do script vai funcionar.
-
script [DUVIDA] Como chamar função de server-side no client-side?
Lord Henry replied to noonbr's topic in Programação em Lua
triggerServerEvent- 2 replies
-
- 1
-
-
- duvida
- server-side
-
(and 4 more)
Tagged with:
-
Heatshot? Nunca ouvi falar disso.
-
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
-
Modifique a handling dele. Ele causa dano absurdo ao colidir por causa da massa alta que ele tem. SetVehicleHandling
-
Falta o parênteses dos parâmetros na sua função. Preste mais atenção.
-
Use a função útil: GenerateString
-
Não exagere no uso de linhas em branco. E não precisa da função marker(). Coloque aqueles setElementInterior fora de funções.
-
Só blindar o veículo com setVehicleDamageProof
-
Pra matar o player com 1 tiro em qualquer parte do corpo, vc não precisa verificar o bodyPart. Remova essa condição.