Jump to content

DNL291

Moderators
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. Se tiver falando se um intervalo de tempo para pressionar uma tecla, você pode usar onClientKey e setTimer.
  2. Acho que você quis dizer uma coluna com os dados de cada player, numa tabela. Você pode ver aqui as sintaxes: https://www.w3schools.com/sql/sql_insert.asp https://www.w3schools.com/sql/sql_update.asp https://www.w3schools.com/sql/sql_select.asp Assumindo que já tenha feito sua conexão com o banco e tabela.
  3. Acho que aqui você quis verificar se ambos os números são positivos? Faça assim: if (num1 >= 0 and num2 >= 0) then Outra coisa também, a verificação if commandName then não é necessária pois sempre vai existir esse parâmetro. Edit: Tem um erro no código do Lord Henry, linha 7, mude o outro valor para num2. Caso vá testar o código dele, fica o aviso.
  4. executeCommandHandler Chama uma função ligada a um manipulador de comando. Utilize no lado que o addCommandHandler foi criado.
  5. Database e bloco de notas não tem nada a ver, 'bloco de notas' acho que seria um arquivo de texto. Para um arquivo de texto: fileCreate fileOpen fileWrite fileClose Se for salvamento SQL: dbExec Ou: executeSQLQuery - SQL do MTA createMarker onMarkerHit getVehiclePlateText
  6. https://forum.multitheftauto.com/search/?q=Twitter&type=forums_topic&nodes=127
  7. Não lembro o tópico, use a ferramenta de pesquisa aqui, você mesmo pode procurar. Ou tente fazer o script, são poucas linhas.
  8. addCommandHandler -- faça um loop nos jogadores; verifique se não é o mesmo do comando getElementsByType("player") getDistanceBetweenPoints3D getPlayerName outputChatBox
  9. Provavelmente existe algum script no servidor que habilita novamente. Mas antes disso certifique-se que esse código esteja funcionando - tá faltando um ) depois do 'end', lembre-se de testar scripts com o debug ativado (/debugscript 3), embora teria mostrado algum erro no console do servidor.
  10. Otimização básica : Faça as variáveis localmente sempre que possível. Você poderia ter feito esse código client-side; Quanto mais código sever-side, mais 'peso' para o servidor. Encurtar e Otimizar o código Você pode deixar uma só função lidando com o onMarkerHit. Além disso, em vez de ter criado todas as markers numa tabela, faça isso com os locais x,y,z da marker. Para controlar a rota, utilizar uma variável que irá manter o index da marker na tabela; Esse será o índice da tabela que corresponde ao marker atual criado, dessa forma, quando criar a próxima rota é só indexar a tabela das coordenadas incrementando +1 no índice. Este exemplo mostra isso na prática: local markerAtual local rota function inicio(thePlayer) rota = 1 local x,y,z = unpack(etapas[rota]) markerAtual = createMarker( x,y,z, "checkpoint", 0, 255,0,0, 20 ) end addCommandHandler("cnh", inicio) addEventHandler("onMarkerHit", resourceRoot, function() if isElement(markerAtual) then destroyElement(markerAtual) end rota = rota + 1 if rota == #etapas then return outputChatBox( "Todas rotas concluídas" ) end local x,y,z = unpack(etapas[rota]) markerAtual = createMarker( x,y,z, "checkpoint", 0, 255,0,0, 20 ) end, true, "low") Outra outra, sempre use tabulação e não quebre muitas linhas excessivamente.
  11. https://forum.multitheftauto.com/topic/118944-ajuda-interior-aberto/
  12. https://wiki.multitheftauto.com/wiki/SetVehicleIdleRespawnDelay
  13. Pelo fórum já tem códigos desse tipo, mas aqui estão as funções: "onPlayerWasted" getPlayerWantedLevel setPlayerWantedLevel outputChatBox
  14. Aprenda Mysql primeiro de tudo, ter esse conhecimento é fundamental para quem possui servidor, além de uma noção em Lua. Você pode fazer o banco de dados funcionar localmente dependendo do tipo do banco.
  15. Você quer setar o dano server-side, certo? Você pode fazer com onClientPlayerDamage. Não precisa ser no mesmo evento mencionado.
  16. Faça if condição then elseif condição then end Em vez de vários blocos de if's E também: verifique o parâmetro button para o clique com o botão esquerdo do mouse e se o state é 'down' para não chamar duas vezes a mesma ação.
  17. https://wiki.multitheftauto.com/wiki/ProcessLineOfSight Tenha em mente que essa função é 'pesada', só use se realmente precisar ou se não se importa com performance.
  18. Tente com bindKey + setControlState. E posta no local certo da próxima vez - https://forum.multitheftauto.com/forum/127-programação-em-Lua/ @ArthurScr
  19. O problema pode estar no client-side, geralmente dá esses conflitos quando duplicam com outro resource parecido. Movido para https://forum.multitheftauto.com/forum/127-programação-em-Lua/ @VORT3X
  20. Leia os argumentos de setElementData: theElement, key, value, synchronize (opcional) setElementData(source, "oneshot", true) Assim deve funcionar ^
  21. onPlayerJoin ou onPlayerLogin -- se tiver painel de login spawnPlayer setCameraTarget fadeCamera onPlayerWasted setTimer E as mesma funções acima pra respawn.
  22. Você vai precisar disso para o seu script, não tem saída. E mesmo que seja complexo pra você, você não fará nada além de utilizar as funções já feitas. Editando por cima do código do Lord Henry e adicionando o meu ficaria assim: local limite_de_objetos = 20 local globalObjects = {} function createObjectG (thePlayer, commandName) if globalObjects[thePlayer] and #globalObjects[thePlayer] >= limite_de_objetos then -- verifica se a quantidade de objects do jogador atingiu o limite return outputChatBox ("Quantidade de objetos atingiu o limite", thePlayer) end local x, y, z = getElementPosition (thePlayer) local object = createPlayerObject (thePlayer, 1237, x , y , z -1) if object then -- checa se o objeto foi criado com sucesso. outputChatBox ("Objeto criado com sucesso!", thePlayer) else outputChatBox ("Falha ao criar o objeto!", thePlayer) end end addCommandHandler ("cb", createObjectG) -- deletar um objeto específico da tabela function deletObjeto (thePlayer, commandName, id) if globalObjects[thePlayer] and tonumber(id) then id = tonumber(id) if globalObjects[thePlayer][id] then destroyElement (globalObjects[thePlayer][id]) table.remove(globalObjects[thePlayer], id) outputChatBox ("Objeto ID: "..id.." foi destruído com sucesso!", thePlayer) else outputChatBox ("Objeto com este id não foi encontrado!", thePlayer) end end end addCommandHandler ("dob", deletObjeto) -- deletar todos objetos addCommandHandler("dall", function (player) if destroyPlayerObjects( player ) then outputChatBox ("Todos objects foram destruídos!!", thePlayer) end end) function createPlayerObject( player, ... ) if isElement(player) then local object = createObject( ... ) if not object then return false end if not globalObjects[player] then globalObjects[player] = {} end table.insert( globalObjects[player], object ) return object end end function destroyPlayerObjects( player ) if globalObjects[player] then for i=1, #globalObjects[player] do if isElement(globalObjects[player][i]) then destroyElement(globalObjects[player][i]) end end globalObjects[player] = nil return true end return false end addEventHandler("onPlayerQuit", root, function() destroyPlayerObjects( source ) end) (não foi testado)
  23. Aqui as funções para isso: local globalObjects = {} function createPlayerObject( player, ... ) if isElement(player) then local object = createObject( ... ) if not object then return false end if not globalObjects[player] then globalObjects[player] = {} end table.insert( globalObjects[player], object ) end end function destroyPlayerObjects( player ) if globalObjects[player] then for i=1, #globalObjects[player] do if isElement(globalObjects[player][i]) then destroyElement(globalObjects[player][i]) end end globalObjects[player] = nil end end addEventHandler("onPlayerQuit", root, function() destroyPlayerObjects( source ) end) Você vai poder verificar a quantidade atual de objects com uma verificação tipo assim: local limite = 20 if globalObjects[player] and #globalObjects[player] >= limite then return outputChatBox("Limite de objects criados!", player) end
  24. Adicione o comando: addCommandHandler com o comando desejado ( 'oneshot' ); Quando o jogador digitar o comando, utilize a função setElementData; Quando sair, remova essa elementData, que pode ser passando false no valor. Obs: no seu código está verificando se bodypart é 3 que é o torso, troque para 9 se quiser que seja a cabeça.
×
×
  • Create New...