PT-BR/Recursos
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.
Contents
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:
- addResourceConfig
- addResourceMap
- call
- callRemote
- copyResource
- createResource
- deleteResource
- fetchRemote
- getResourceACLRequests
- getResourceConfig
- getResourceDynamicElementRoot
- getResourceExportedFunctions
- getResourceFromName
- getResourceInfo
- getResourceLastStartTime
- getResourceLoadFailureReason
- getResourceLoadTime
- getResourceMapRootElement
- getResourceName
- getResourceOrganizationalPath
- getResourceRootElement
- getResourceState
- getResources
- getThisResource
- isResourceArchived
- refreshResources
- removeResourceFile
- renameResource
- restartResource
- setResourceInfo
- startResource
- stopResource
- updateResourceACLRequest
- getRemoteRequests
- getRemoteRequestInfo
- abortRemoteRequest
E aqui estão os eventos: