Jump to content

Introdução a Scripts


Recommended Posts

Sobre: Olá galera estou começando a programar e achei um incomodo tudo em inglês porque não entende nada então traduzir aqui!

Os recursos são uma parte fundamental da MTA. Um recurso é essencialmente um arquivo zip ou pasta que contém uma coleção de arquivos, além de um arquivo que descreve meta para o servidor como o recurso deve ser carregado e que arquivos que ele contém. Um recurso pode ser visto como sendo, em parte, equivalente a um programa rodando em um sistema operacional - que pode ser iniciado e interrompido, e vários recursos podem ser executados ao mesmo tempo.

Tudo o que tem a ver com scripting acontece em recursos, o que um recurso não define se é um modo de jogo, um mapa ou qualquer outra coisa. MTA vem com recursos que você pode, opcionalmente, utilizar na sua gamemodes, como maplimits para manter playings dentro de uma área de jogo ou para criar deathpickups pickups arma.

Seu primeiro passo para começar a Lua scripting deve estar usando um editor de Lua. Isto torna muito mais fácil de script. Recomendamos Notepad + +ou LuaEdit . Há também um não-oficial Script Editor MTA (em estado de trabalho em andamento) que você pode testar para fora.

Criar um roteiro de trabalho

Vamos primeiro aprender como fazer um script básico que permite que o jogador andar na cidade, passo a passo.

Onde estão todos os scripts?

Vamos dar uma olhada na estrutura do script arquivo. Vá para a pasta do servidor MTA, e siga o caminho abaixo:

/ Seu MTA Server / mods / deathmatch / resources /

Você vai ver um monte de arquivos. Zip, que são os scripts de exemplo embalados enviado com MTA DM. Cada arquivo é um "recurso", e todos eles vão ser descompactado e carregado pelo servidor quando for iniciado. Para criar o seu próprio recurso, basta fazer uma pasta com seu nome preferido. Usaremos "myserver" para este tutorial.

Agora você deve estar sob este diretório:

/ Seu MTA Server / mods / deathmatch / resources / myserver /

Identificar o seu recurso

A fim de deixar o servidor saber o que está no recurso, uma meta.xml arquivo deve ser criado para listar o conteúdo do recurso. Ele deve estar localizado no diretório raiz do recurso, que é o "myserver" pasta em nosso caso. Portanto, criar um arquivo de texto com o nome "meta.xml", e abri-lo com o notepad.

Digite os seguintes códigos na meta.xml arquivo:

<meta> 
     <info author="Seu nick" type="gamemode" name="Nome do seu gm" description="Descrição do seu gm" /> 
     <script src="script.lua" /> 
</meta> 

No />

O tag indica os arquivos de script contido no recurso, que criaremos a seguir.

Criando um simples script

Note que no />

function joinHandler() 
    local x = 1959.55 
    local y = -1714.46 
    local z = 10 
    spawnPlayer(source, x, y, z) 
    fadeCamera(source, true) 
    setCameraTarget(source, source) 
    outputChatBox("Bem vindo ao meu servidor!", source) 
end 
addEventHandler("onPlayerJoin", getRootElement(), joinHandler) 

O script vai gerar-lhe na coordenada (x, y, z) acima referidos, quando você entrar no jogo. Note que o fadeCamera função deve ser usada ou a tela ficará preta. Além disso, nas versões após DP2, você precisa definir o destino da câmera (caso contrário, todos os jogadores a vontade é ver o céu azul).

A fonte de variável indica que disparou o evento. Uma vez que um jogador juntou-se quando o código é acionado, você usa esta variável para olhar que se juntou. Por isso vai gerar esse jogador em vez de todo mundo ou uma pessoa aleatória.

Se tivermos um olhar mais atento sobre AddEventHandler , você pode ver três coisas: 'onPlayerJoin', que indica quando é acionado. getRootElement (), que mostra por que / quem ele pode ser acionado. (GetRootElement () é tudo / todos) E joinHandler, o que indica a função que tem que ser desencadeada depois do evento é disparado. Outros detalhes serão explicados mais tarde, em outro exemplo, agora vamos executar o servidor e experimentá-lo!

Executar o script

Para ter o servidor começou, basta executar o arquivo executável no diretório DM MTA. A lista de estatísticas do servidor será mostrado em primeiro lugar, observe o número da porta, que você vai precisar de quando entrar no jogo. Em seguida, o servidor carrega todos os recursos sob o diretório / recursos / e "pronto para aceitar conexões!"

Antes de se conectar ao servidor, você deve executar o modo de jogo. Tipo "modo de jogo myserver" e pressione Enter. O servidor irá iniciar o modo de jogo que você acabou de criar, e também irá mostrar os erros e advertências a partir deste ponto. Agora você pode iniciar o cliente MTA DM, e "Quick Connect", usando o endereço IP do seu servidor eo número da porta que você viu anteriormente. Se tudo correr bem, depois de alguns segundos o seu personagem vai estar andando nas ruas de Los Santos.

Em seguida, vamos adicionar um comando ao seu script que os jogadores podem usar para gerar um veículo ao lado de sua posição. Você pode ignorá-lo e confira mais scripting avançado com o Map Manager , que continua neste tutorial. Outro ramo deste tutorial é Introdução ao Scripting GUI , você pode segui-lo para ver como interface gráfica do usuário no MTA: DM é desenhada e escrita.

Criando um simples comando

Vamos voltar ao conteúdo do script.lua arquivo. Como mencionado acima, queremos proporcionar um comando para criar um veículo ao lado de sua atual posição no jogo. Em primeiro lugar precisamos criar uma função que deseja chamar e um manipulador de comando que cria o comando, o jogador será capaz de entrar no console.

-- Criar a função de chamadas manipulador de comando, com os argumentos: thePlayer, comando, vehicleModel  
function createVehicleForPlayer(thePlayer, command, vehicleModel) 
   -- Criar um veiculo  
end 
  
-- create a command handler 
addCommandHandler("criarcarro", createVehicleForPlayer) 

Nota: Nomes de funções são clicáveis ​​em exemplos de código no wiki e ligado a documentação das funções ".

Sobre manipuladores de comando

O primeiro argumento de addCommandHandler é o nome do comando, o jogador será capaz de entrar, o segundo argumento é a função deste será chamada, neste caso createVehicleForPlayer .

Se você já tiver experiência em scripting, você vai saber que você chamar uma função como esta:

functionName ( argumento1, argumento2, argument3, .. ) 
functionName ( thePlayer, commandName, argument3, .. ) 

Se tivermos um olhar mais atento na parte inferior do exemplo acima, podemos ver argument1 é thePlayer e argument2 o CommandName. thePlayer é simplesmente aquele que digitou o comando, então o que você chamá-lo, a variável conterá o jogador que ativou o comando. commandName é simplesmente que o comando digitado. Então, se eles digitei "/ greet", este argumento irá conter "saudar". Argumento 3 é algo extra que o jogador digitou, você vai aprender um pouco mais no tutorial. Nunca se esqueça que os primeiros dois argumentos são argumentos padrão, mas você pode nomeá-los para o que quiser.

Chamamos o addCommandHandler função desta forma e desde já createVehicleForPlayer é uma função também, ele pode ser chamado dessa maneira também. Mas nós estamos usando um manipulador de comando para isso, que chama-lo de forma similar, internamente.

Por exemplo: tipos de Alguém "createvehicle 468" no jogo no console para gerar uma Sanchez, o manipulador de comando chama a função createVehicleForPlayer, como se tivéssemos esta linha de código no script:

createVehicleForPlayer(thePlayer, "criarcarro" , "468")  - É o elemento thePlayer jogador do jogador que entrou com o comando 

Como podemos ver, ele fornece vários parâmetros: o jogador que chama o comando, o comando ele entrou e qualquer texto que tivesse depois disso, neste caso "468" como ID de veículo para a Sanchez. Os dois primeiros parâmetros são os mesmos com todos os manipuladores de comando, que você pode ler sobre o AddEventHandler página. Por este fato, você sempre tem que definir pelo menos os dois parâmetros para usar qualquer depois disso (por exemplo, para processar o texto que foi digitado após o comando, como em nosso exemplo a id modelo do veículo).

Nota: Você tem que adicionar o manipulador de comando depois que você definiu a função do manipulador, senão ele não pode encontrá-lo. A ordem das questões de execução.

Escrever a função

A fim de preencher a função que nós criamos, nós precisamos pensar sobre o que temos de fazer:

Obter a posição de jogadores, por isso sabemos onde desovar o veículo (que quer que ele apareça ao lado do jogador)

Calcular a posição que queremos para desovar o veículo no (não queremos que ele seja exibido no player)

Desovar o veículo

Verificar se ele foi gerado com sucesso, ou uma mensagem de saída

Para atingir nossos objetivos, temos que usar várias funções. Para encontrar a função que precisamos de usar, que deve visitar o Server List Functions . Primeiro precisamos de uma função para obter a posição de jogadores. Como os jogadores são Elements, que pular para o primeiro elemento funções onde encontramos a getElementPosition função. Clicando no nome da função na lista, você começa com a descrição da função. Lá podemos ver a sintaxe, o que ele retorna e, geralmente, um exemplo. A sintaxe nos mostra o que podemos ou argumentos têm de apresentar.

Para getElementPosition , a sintaxe é:

float, float, float getElementPosition ( element theElement ) 

Os três float(flutuar) na frente do nome da função são o tipo de retorno. Neste caso significa que a função retorna três números de ponto flutuante. (X, y e z) Dentro dos parênteses, você pode ver quais os argumentos que você tem que submeter-se. Neste caso, apenas o elemento cuja posição você deseja obter, que é o jogador em nosso exemplo.

function createVehicleForPlayer(thePlayer, command, vehicleModel) 
    --obter a posição e colocá-lo no x, y, z variáveis  
    ​​--(meios locais, as variáveis ​​só existem no escopo atual, neste caso, a função)  
    local x,y,z = getElementPosition(thePlayer) 
end 

Em seguida, queremos garantir que o veículo não vai gerar diretamente no player, então adicionamos algumas unidades para o x variável, o que irá torná-lo desovar leste do jogador.

function createVehicleForPlayer(thePlayer, command, vehicleModel) 
    local x,y,z = getElementPosition(thePlayer) -- Obter a posição do jogador 
    x = x + 5 -- Adicionar 5 unidas na posição x 
end 

Agora precisamos de uma outra função, uma para desovar um veículo. Mais uma vez, procure-a na lista de funções do servidor , desta vez - já que estamos falando de veículos - no veículo funções seção, onde vamos escolher createVehicle . Na sintaxe desta função, só temos um tipo de retorno (que é mais comum), um elemento de veículo que aponta para o veículo que acabou de criar. Além disso, vemos que alguns argumentos são colocados dentro de [] o que significa que esses são opcionais.

Nós já temos todos os argumentos de que precisamos para createVehicle na nossa função: A posição que apenas calculado no x, y, z variáveis ​​eo id modelo que nós fornecemos através do comando ("createvehicle 468") e pode acessar na função como vehicleModel variável.

function createVehicleForPlayer(thePlayer, command, vehicleModel) 
    local x,y,z = getElementPosition(thePlayer) -- Obter posição do jogador 
    x = x + 5 -- Add mais 5 uni 
    -- - criar o veículo e armazenar o elemento do veículo retornado na variável''''createdVehicle  
    local createdVehicle = createVehicle(tonumber(vehicleModel),x,y,z) 
end 

É claro que este código pode ser melhorado em muitas maneiras, mas pelo menos queremos adicionar uma verificação se o veículo foi criado com êxito ou não. Como podemos ler no createVehicle página em Returns , a função retorna falso quando foi incapaz de criar o veículo. Assim, vamos verificar o valor do createVehicle variável.

Agora temos nosso script completo:

function createVehicleForPlayer(thePlayer, command, vehicleModel) 
    local x,y,z = getElementPosition(thePlayer) -- Pegar posição do jogador 
    x = x + 5 -- add 5 unidade no comando x 
    local createdVehicle = createVehicle(tonumber(vehicleModel),x,y,z) 
    -- Chekar a value retun ''false'' 
    if (createdVehicle == false) then 
        -- Erro ao criar o veiculo aparecer a mensagem abaixo. 
        outputChatBox("Erro ao criar o veiculo.",thePlayer) 
    end 
end 
addCommandHandler("criarcarro", createVehicleForPlayer) 
  

Como você pode ver, nós introduzimos uma outra função com outputChatBox . Até agora, você deve ser capaz de explorar a função de página de documentação do mesmo. Para mais avançado scripting, confira o Map Manager .

O que você precisa saber

Você já leu algumas coisas sobre recursos, manipuladores de comando e funções de busca na documentação no primeiro parágrafo, mas há muito mais para aprender. Esta seção lhe dará uma visão geral bastante curto sobre algumas dessas coisas, ao ligar para páginas relacionadas, se possível.

Clientside scripts e Serverside

Você já deve ter notado esses termos ou similar (Server / Client) em algum lugar deste wiki, principalmente em conjunto com funções. MTA não só suporta scripts que são executados no servidor e fornecer comandos (como o que escrevi acima) ou outros recursos, mas também scripts que são executados no cliente MTA os jogadores usam para se conectar ao servidor. A razão para isto é, que fornece algumas características MTA tem que ser clientside (como um GUI - Graphical User Interface), outros devem ser, porque eles trabalham melhor e outros ainda estão em melhor situação para ser serverside ou simplesmente não funcionam clientside.

A maioria dos scripts que você vai fazer (gamemodes, mapas) será, provavelmente, serverside, como o que escreveu na primeira seção. Se você tiver algo que não pode ser resolvido serverside, você provavelmente terá que fazê-lo clientside. Para um script clientside por exemplo, você poderia criar um arquivo de script comuns (por exemplo chamado client.lua ) e especificá-lo na meta.xml, como este:

<script src="client.lua" type="client" /> 

------------------------------------------------------------------------

Traduzirei mais depois, Obg a atenção!

Creditos:

Wiki MTA 90% Disponibilizar o tutorial em inglês

Lordsams 10% Traduzir a português

  • Thanks 1
  • Confused 1
Link to comment

Eu nao li o post inteiro porque nao preciso, mas nao significa que esteja mal. É bom para os que realmente estao começando em Lua(que por certo é uma linguagem de script criada no Brasil). Bom trabalho e animo ao criar novos tutoriais(caso crie outro :D).

Link to comment
  • 3 weeks later...
  • 2 weeks later...
  • 1 month later...
  • 7 months later...
  • 1 year later...
  • 5 years later...

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...