Jump to content

Recommended Posts

é o seguinte pessoal comecei a aprender programaçao lua ontem para mim poder mecher com o mta....

até agora eu só fiz scripts dos mais simples com o addComandHandler para chamar as funçoes

Pessoal poderiam me explicar mais detalhadamente como se chama funções?

Aquele tal de addEventHandler eu não sei usar ainda nem sei pra que ele serve mais sei que tenho que usar ele na maioria dos scripts para funcionarem assim que executarem

se alguem puder explicar melhor como chamar funções eu agradeço, por exemplo como executar uma função sem o player precisar digitar algo no chat

Edited by luke250
Link to comment
  • Other Languages Moderators

AddEventHandler é uma função que será chamada quando o evento anexado a ela for ativado. Existem vários eventos diferentes que são ativados em diferentes circunstâncias, é impossível citar todos. Mas darei alguns exemplos pra facilitar.

Usando o evento onPlayerWasted anexado ao addEventHandler, fará com que a função anexada a ele seja executada quando um jogador morre.

function faleceu (totalAmmo, killer, weapon, bodypart, stealth) -- variáveis pré-definidas, se não for usar nenhuma delas, não precisa declará-las.
    -- No evento "onPlayerWasted" temos pré-definidas estas variáveis:
    -- source = jogador que morreu (elemento)
    -- totalAmmo = munição que o jogador que morreu tinha (número inteiro)
    -- killer = jogador ou veículo que matou ele (elemento)
    -- weapon = ID da arma do killer (número inteiro)
    -- bodypart = parte do corpo que foi atacada (número inteiro)
    -- stealth = se morreu direto por um golpe fatal ou se morreu por dano normal. (true ou false)
    local nome = getPlayerName (source) -- nome = nick do jogador que morreu.
    outputChatBox (nome.."#FFFFFF morreu.", root, 255, 255, 255, true) -- Envia no chat para todos, o nome do jogador que morreu. (root = todo mundo.)
end
addEventHandler ("onPlayerWasted", getRootElement(), faleceu) -- Executa a função "faleceu", quando qualquer jogador morrer.

Usando este outro evento onVehicleEnter, fará com que a função anexada a ele seja executada quando um jogador entrar em um veículo.

function entrouVeiculo (thePlayer, seat, jacked)
    -- source = o veículo que o jogador entrou. (elemento)
    -- thePlayer = o jogador que entrou no veículo. (elemento)
    -- seat = o ID do assento em que o jogador sentou no veículo (número inteiro)
    -- jacked = se o jogador entrou no veículo roubando de outro player ou não. (true ou false)
    local nomeVeiculo = getVehicleName (source) -- nomeVeiculo = nome do veiculo que o jogador entrou.
    if jacked and seat == 0 then -- Se foi roubado e o assento for do motorista, então:
        outputChatBox ("Você roubou um "..nomeVeiculo, thePlayer, 255, 255, 0, false)
    else -- Se entrou no veículo sem roubar, então:
        outputChatBox ("Você entrou em um #00FF00"..nomeVeiculo, thePlayer, 255, 255, 255, true)
    end
end
addEventHandler ("onVehicleEnter", getRootElement(), entrouVeiculo) -- Chama essa função quando qualquer jogador entrar em um veículo.

Esses eventos acima só funcionam server-side, assim como está dito na Wiki.

Já esta outra função aqui, só funciona client-side. É um evento que executa a função anexada a cada frame que passou.

function textoNaTela () -- Não existem parâmetros para o onClientRender.
    dxDrawText ("TEXTO RENDERIZADO.", 5, 5) -- Mostra este texto durante 1 frame na sua tela.
end
addEventHandler ("onClientRender", getRootElement(), textoNaTela) -- Executa isso em cada frame. Fazendo com que o texto permaneça na tela.

Para remover um evento ativador, use removeEventHandler. Assim como o removeCommandHandler faz com que um comando pare de ativar determinada função.

Usando o removeEventHandler, fará o onClientRender parar de ativar a cada frame. Assim como diz o exemplo da Wiki.

Edited by Lord Henry
  • Like 1
  • Thanks 1
Link to comment
  • Moderators

O MTA usa um tipo de Programação orientada a eventos (veja o link) (no caso scripting - que aplica-se ao próprio Mod).

Tudo será difícil pra você se ainda é novato em programação. Seria melhor você buscar o conhecimento básico da programação

O básico seria:

Variáveis, funções, if - elseif - else, (loop) for - while, tabelas

Para usar uma função, você precisa entender a sua sintaxe. Eventos como já foi explicado, faz a função ligada a ele ser chamada quando a ação do evento for feita. E existem eventos que envia parâmetros pra função ligada a ele (você pode ver esses exemplos do Lord Henry com os eventos onPlayerWasted e onVehicleEnter).

Na vida real, esse "evento" seria como seu despertador que seria configurado para te chamar num horário que você programou, a diferença é que na aplicação no MTA ele serve para fazer a chamada em tudo que é necessário - em veículos, jogadores, elementos do jogo, interface e criações do MTA, mundo do GTA, etc.

Você também pode adicionar o seu próprio evento usando addEvent.

Enfim, esse vídeo será útil pra você ter um bom começo em programação: https://www.youtube.com/watch?v=Ds1n6aHchRU

 

Edited by DNL291
  • Thanks 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...