lordsams Posted October 24, 2011 Share Posted October 24, 2011 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 1 1 Link to comment
Kerang Posted October 24, 2011 Share Posted October 24, 2011 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 ). Link to comment
Stanley Sathler Posted November 15, 2011 Share Posted November 15, 2011 Convenhamos que a intenção é boa, mas infelizmente a tradução do Google Tradutor deixa a desejar. Sem querer fazer spam, mas segue abaixo um tutorial (baseado neste original) com minha tradução. Acho eu que esta esteja melhor explicada: http://mtasabrasil.com.br/index.php?showtopic=20 Um abraço, Stanley Sathler. 1 Link to comment
alex_coll Posted November 29, 2011 Share Posted November 29, 2011 teria como algum de vcs me ensinar a criar um server de derby? Link to comment
drk Posted January 9, 2012 Share Posted January 9, 2012 Antes de você ter uma ideia de fazer um 'servidor de DD ( destruction derby )' você tem que aprender LUA primeiro. Link to comment
\_<(o.o)>_/ Posted August 19, 2012 Share Posted August 19, 2012 Toturial taooooooooooooo grande que ja nem paciiencia tenho para ler Link to comment
Anderson22 Posted January 8, 2014 Share Posted January 8, 2014 Valeu aew, tava prescisando, nao li tudo, mas deu para entender. Link to comment
BruceWayne Posted March 12, 2019 Share Posted March 12, 2019 Muito bom cara, meu celebro tá começando a abrir postar para o MTA logo mais eu criarei o MELHOR SERVIDOR DE MTA. Que ainda está em desenvolvimento em meu celebro kkkkkkk Vlw pelo tutorial ajudou pacas 1 Link to comment
DNL291 Posted March 12, 2019 Share Posted March 12, 2019 @BruceWayne Evite responder tópicos antigos sem motivos por favor. Isso é conhecido como "reviver tópico" (pra sua informação). Leia as regras do fórum pra evitar esses tipos de mal comportamento em fóruns. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now