PT-BR/Recursos

From Multi Theft Auto: Wiki

Recursos são uma parte essencial do MTA, nada mais que uma pasta ou um arquivo zip contendo arquivos definidos por outro chamado meta.xml. Em outras palavras, o meta só tem a função de alegar a existência desses arquivos e eles só serão carregados se estiverem lá. Um recurso também pode ser visto como um programa de computador rodando em um SO - pode ser iniciado, parado e vários deles rodando ao mesmo tempo. Porém, não há a possibilidade de haver uma espécie de multi-tarefa entre eles.


Definições

  • Recurso (Resource, em Inglês) - Um arquivo zip ou pasta contendo um meta.xml e demais arquivos. Eles estão localizados na pasta ../server/mods/deathmath/resources.
  • Componente do Recurso - É um arquivo pertencente ao recurso; por enquanto isso pode ser um mapa, script, imagens e etc.

O arquivo meta

O arquivo meta é como se fosse a alma de cada recurso. Ele descreve exatamente quais arquivos contidos no recurso devem ser usados, e como. Abaixo, há um exemplo contendo todas as possíveis maneiras de utilização de tags. Lembrando que você pode usar quantas delas for preciso. Para mais informações sobre o meta, veja o artigo principal.

<meta>
    <info author="eAi" description="This is a basic CTF script" version="4"/>

    <include resource="radarblips"/>
    <include resource="markermanagement" />

    <script src="ctf.lua" />
    <script src="flag.lua" />
    <script src="ctf_client.lua" type="client" />

    <file src="model.dff" />
    <file src="quitbutton.png" />
    <file src="killed.png"  />

    <html src="test.htm" default="true"/>
    <html src="logo.png" raw="true" />

    <export function="multiply" http="true" />
    <export function="getPlayerList" />
    <export function="getElementOwner" type="client"/>

    <config src="vehicle-list.xml" type="client" />
    <config src="markerconfig.xml" type="server"  />

    <map src="somestuff.map" dimension="99" />
</meta>

Um mapa de CTF também pode ter um meta.xml, como a seguir:

<meta>
    <include resource="ctf" />
    <map src="myuberl33tctfmap.map" />

    <info author="Tom" instructions="this is uber l33t !!!!!1111111" type="map" />
</meta>


Script/type, Config/type and File/type são atributos específicos indicando se os arquivos devem ser enviados ao cliente ou não. O padrão sempre será "server".

A tag include indica a obrigatoriedade de um recurso específico já estar rodando antes desse. Isso porque provavelmente ele depende do outro para realizar suas atividades.

Cada recurso contém sua própria máquina virtual (VM) e ela abriga todos scripts do recurso. Isso significa que as variáveis não são compartilhadas entre recursos. Todavia, se for usado a tag export é possível definir uma função específica a todos recursos. Feito isso, é só usar a call para executar esta função.

Scripts são enviados aos clientes assim que todos estiverem carregados.

Scripts são capazes de ler e escrever em seu respectivo recurso ao usar as funções xmlCreateFile e fileCreate. Eles também podem fazer isto em outros, mas precisarão de uma autorização no ACL.

Cada recurso só pode ser carregado uma vez; o servidor irá se certificar disso. Se ele estiver incluído em mais de um recurso, o mesmo ego será usado por todos que o incluíram.

Sistema de arquivos

Os arquivos dos recursos podem estar armazenados dentro de um zip ou pasta. Eles estão localizados em: ../server/mods/deathmatch/resources/ (claro, se foi instalado o servidor junto ao cliente)

ou

../mods/deathmatch/resources/ (para servidores dedicados)


Cada recurso pode ter um arquivo zip, diretório ou ambos. Se for o último caso, o diretório pode se sobre sair ao zip, ou seja, arquivos podem ser colocados na pasta para substituir os dentro do zip. Isso pode ser usado como uma espécie de pasta-teste para desenvolvimento de mapas/scripts, enquanto os arquivos comprimidos serão usados por usuários finais.

Outras coisas importantes

  • Recursos não podem ter pontos em seu nome
  • Se um recurso fizer alterações em algum arquivo, não o declare no meta.xml
  • Os arquivos declarados no meta.xml são considerados somente-leitura. Não os modifique com xmlSaveFile, FileSave e cia.
  • Quando estiver fazendo um arquivo zip para seu recurso:
    • Não inclua arquivos que serão usados pelo usuário. Crie-os com seu script quando for necessário
    • Só coloque arquivos listados no meta.xml, caso contrário, coisas ruins vão acontecer. (É, eles serão apagados)
  • É recomendado evitar espaços ou caracters especiais nos nomes dos recursos


Funções de Script

O sistema que rege os recursos pode ser manipulado por um script. Desta forma, funções do servidor farão o papel:


E aqui estão os eventos: