IT/Introduzione alle Risorse
Le risorse sono una parte chiave di MTA. Essenzialmente una riosra è una cartella o un archivio zip contenente dei file - tra cui gli script essenziali ed un file meta che descrive al server come la risorsa dev'essere caricata. Una risorsa può essere vista come un programma in un sistema operativo - può essere avviata e fermata, e più risorse possono essere avviate in contemporanea.
Terminologia
- Resource: Un archivio zip o una cartella contenente un file meta.xml e un certo numero di altri file (resource items). Questa va posizionata nella cartella
<SERVER>/mods/deathmatch/resources
di MTA. - Resource item: Un file contenuto in una risorsa, possono essere script LUA, mappe, immagini eccetera.
Il File Meta
Guarda l'articolo principale Meta.xml per dettagli
Il file Meta è il nucleo di ogni risorsa. Descrive esattamente quali files verranno usati nella risorsa, e come. Il seguente è un esempio che comprende ogni opzione che il tuo meta file può contenere e che ti potrebbero servire:
<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>
While a CTF map may have a meta.xml that looks like:
<meta> <include resource="ctf" /> <map src="myuberl33tctfmap.map" /> <info author="Tom" instructions="this is uber l33t !!!!!1111111" type="map" /> </meta>
Gli attributi Script/type, Config/type e File/type specificato se lo script/la risorsa deve essere inviato al client o no, e il default è "server".
Il tag include specifica le altre risorse che devono essere eseguite prima che questa risorsa sia avviata. In altre parole, se la tua risorsa depende da un'altra, puoi includere quest'ultima cosicchè l'altra risorse sia avviata prima.
Ogni riosrsa ha la propria macchina virtuale [ (VM ) Virtual Machine in inglese ]. Questa contiene ogni script nella risorsa. Questo significa che le variabili non sono condivise con altre risorse. Il miglior modo per comunicare con le altre risorse è usando il tag export ed esportando una funzione. Questo abiliterà le altre risorse a far partire questa funzione usando la funzione call.
Gli script inviati ai client sono avviati non appena tutti gli script sono stati scaricati.
Gli script possono leggere e scrivere alle prorie cartelle delle risorse con funzioni come xmlCreateFile e fileCreate. Possono anche leggere e scrivere alle altre risorse, ma deve avere l'accesso da [[Access_Control_List[ACL]]].
Ogni risorsa può essere solo caricata una volta, il server se ne accerterà. Se una risorsa è inclusa più di una volta, la stessa istanza sarà usata da ogni risorsa che la include.
Memorizzazione dei File
Le risorse possono sia essere memorizzati in un archivio zip sia in una cartella. Queste si trovano qui:
mods/deathmatch/resources/
Ogni risorsa può avere un file zip, una cartella o entrambi. Nel caso che esistino entrambi, la cartella ha precedenza sul file zip, in quanto tale i file possono essere messi nella cartella per "annullare" i file nell'archivio zip. Questo permette alle cartelle di essere usato per testare e sviluppare mappe/script mentre i file zip quando sono pronti per essere usati.
Funzioni Script
Il sistema delle risorce può essre amministrato da script. In quanto tale, sono disponibili le seguenti funzioni Serverside:
- 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
Anche i seguenti eventi sono disponibili: