O arquivo Meta

From Multi Theft Auto: Wiki
Revision as of 17:40, 24 September 2016 by Talidan (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

O meta.xml é um arquivo de metadados que define ao MTA os conceitos iniciais de um recurso. Exemplos seriam seu nome, os scripts a serem usados e quais devem ser pré-carregados para serem transferidos ao cliente; junto a outros de sua natureza. Ele também transforma arquivos em elementos, a exemplo de sons, imagens e modelos. É escrito em XML, o qual é baseado em HTML e é pai do XHTML.

obs: Metadados são dados sobre outros dados. O termo é estranho, mas o próprio nome já diz. No caso do MTA eles seriam metadados descritivos, pois se referem ao conteúdo do jogo.

Tags

O XML é um formato de texto muito usado para representar dados, inclusive pelo MTA. As tags a seguir são todas as possibilidades:

  • <info /> Representa informações sobre o recurso que podem ser usados de forma opcional, e lidos pela função getResourceInfo, caso necessário:
    • author: O autor do recurso
    • version: A versão do recurso
    • name:' O nome do recurso
    • description: Uma breve descrição do recurso
    • type: Qual é o tipo do recurso, pode ser um "gamemode", "script", "map", ou "misc".
  • <script /> O código fonte do recurso, os possíveis parâmetros são:
    • src: O nome do arquivo do código fonte
    • type: O tipo de código-fonte: "client", "server" ou "shared".
    • cache: Quando o script é do tipo client, esse atributo diz se o arquivo será salvo ou não no disco rígido dele. O padrão é "true", se for usado o contrário, será apagado quando o recurso parar.
    • validate: Se for definido como falso, o MTA não verificará se é compatível
  • <map /> Define mapa do gamemode, os possíveis atributos são:
    • src: o nome do arquivo .map (pode também ser o diretório, ex: maps/nome-do-mapa.map)
    • dimension: Dimensão em que o mapa será carregado (opcional)
  • <File /> Um arquivo do lado do cliente. Geralmente são imagens, .txd, .col, .dff ou arquivos .xml. Eles vão ser baixado pelos clientes quando o recurso é iniciado (ou quando ele entrar no servidor)
    • src: nome do arquivo do lado do cliente (pode ser outro caminho por exemplo, "images/imagem.png".)
    • download: Vai ou não ser enviado para o cliente automaticamente(opcional). O padrão é "true". Usando "false" significa que eles não são enviados no início de recursos, mas poderia ser usado posteriormente por DownloadFile (a partir da versão 1.4)
  • <include /> Inclui os recursos necessários a estarem rodando
    • resource: Nome do recurso que você quer iniciar junto com esse
    • minversion: A versão mínima desse recurso (opcional)
    • maxversion: A versão máxima desse recurso (opcional)
  • <config /> O arquivo de configuração em XML a ser usado pelo recurso:
    • src: Seu nome
    • type: Seu tipo: "client" ou "server"
  • <export /> Exporta uma função do seu recurso, para que outros possam usa-la com o call
    • function: O nome da função
    • type: Diz se será exportado para o lado do cliente ou servidor (valores válidos são: "server" ou "client")
    • http: Indica se ele pode ser chamado via HTTP ("true" ou "false")
  • <html />
    • src: O nome do arquivo HTTP (pode ser um diretório)
    • default: Qual arquivo html a ser mostrado por padrão ao acessar o caminho /nome-do-recurso/ no servidor. Somente um html pode ser definido, os outros são ignorados (true/false)
    • raw: O arquivo html não é interpretado pelo Lua e assim só passa como um dado binário. Deve ser usado para arquivos binários, como imagens principalmente (true/false)
  • <settings> <setting name="" value=""/> </settings>: Muitos gamemodes usam o sistema de configurações para habilitar administradores do servidor configurá-los como desejarem. Um exemplo seria definir o tempo de duração da partida e usar o get e set para manipular o valor responsável por isso.
  • <min_mta_version /> Versão mínima do MTA para o recurso rodar sem problemas. Quando estiver terminando um recurso, a versão mínima deve a mesma da versão do MTA:SA que está usando (a qual no momento é 1.6.0). Veja o exemplo abaixo.
    • client: A versão mínima do cliente
    • server: A versão mínima do servidor
  • <aclrequest /> Indica uma lista de permissões do ACL a serem usados pelo recurso.
  • <sync_map_element_data /> Indica se os dados de elemento como "PosX" e "DoubleSided" são tranferidos para o cliente. Esses geralmente não são necessários por muitos gamemodes ou recursos, exceto Map Editor e Interiors; caso contrário, não funcionarão. Quando definido no recurso, se aplicará a todos os mapas carregados por ele.
    • false: Desabilita essa transferência para todos os recursos. Isso pode reduzir a demora de download consideravelmente.
    • true: Habilita essa tranferência. Se esses valores forem definidos de forma distinta entre os recursos, o que estiver configurado como "true" terá prioridade e todos os demais transferirão esse mesmo dado.
  • <oop/> OOP - Veja mais informações na página: OOP
    • false: Desabilita o OOP.
    • true: Habilita-o
  • <download_priority_group/> O valor padrão do grupo de prioridade de download do recurso é 0. Se este for definido para um valor maior que 0, então o recurso será baixado e iniciado no cliente antes dos outros recursos. Se defindo para um valor menor que 0, o recurso será baixado e iniciado no cliente depois dos outros recursos.

Exemplo

Aqui está um exemplo de um arquivo meta usando algumas das tags mencionadas:

<meta>
    <info author="Slothman" type="gamemode" name="Stealth" />
    <config src="help.xml" type="client"/>

    <download_priority_group>0</download_priority_group>
    <min_mta_version client="1.6.0" server="1.6.0" />

    <sync_map_element_data>false</sync_map_element_data>

    <script src="stealthmain_server.lua" />
    <script src="noiseblip.lua" />
    <script src="mission_timer.lua" />
    <script src="gadgets_server.lua" />
    <script src="gadgets_client.lua" type="client"/>
    <script src="stealthmain_client.lua" type="client" validate="true"/>
    <script src="noisebar.lua" type="client"/>
    <script src="spycam.lua" type="client"/>
    <script src="riemann_z_demonstration.lua" type="client" cache="false"/>
    <map src="base.map" dimension="1"/>

    <file src="riot_shield.txd" />
    <file src="riot_shield.dff" />
    <file src="riot_shield.col" />
    <file src="armor.png" download="true"/>
    <file src="camera.png" download="false"/>
    <file src="cloak.png" />
    <file src="goggles.png" />
    <file src="mine.png" />
    <file src="radar.png" />
    <file src="shield.png" />

    <include resource="scoreboard" />
    <include resource="killmessages" />
    <include resource="maplimits" />
    
    <export function="exampleExport1" type="server" />
    <export function="exampleExport2" type="client" />
    <export function="exampleExport3" type="shared" />

    <settings>
         <setting name="roundlimit" value="[6]" /> 
	 <setting name="teamdamage" value="[1]" /> 
	 <setting name="teambalance" value="[1]" /> 
	 <setting name="spazammo" value="[25]" /> 
	 <setting name="m4ammo" value="[100]" />
	 <setting name="shotgunammo" value="[25]" />
	 <setting name="sniperammo" value="[20]" />
	 <setting name="ak47ammo" value="[120]" />
	 <setting name="rifleammo" value="[40]" />
	 <setting name="deserteagleammo" value="[45]" />
	 <setting name="pistolammo" value="[132]" />
	 <setting name="uziammo" value="[150]" />
	 <setting name="tec9ammo" value="[150]" />
	 <setting name="silencedammo" value="[65]" />
	 <setting name="grenadeammo" value="[4]" />
	 <setting name="satchelammo" value="[4]" />
	 <setting name="teargasammo" value="[4]" />
	 <setting name="molatovammo" value="[4]" />
	 <setting name="isAllowedToShoot" value="true" />
     </settings>

     <aclrequest>
	 <right name="function.startResource" access="true" />
	 <right name="function.stopResource" access="true" />
	 <right name="function.setPlayerMuted" access="true" />
     </aclrequest>
</meta>