FR/Ressources
Les ressources sont une grande partie de MTA. Une ressource est un dossier ou une archive zip qui contient une multitude de fichiers - contenant des scripts et le fichier meta meta qui décrit comment la ressource doit se charger. Une ressource peut être comparée à un logiciel exécutez dans un système d'exploitation - il peut être démarré, arrêté et plusieurs logiciels peuvent démarrer ensemble. Chose à se rappeler : il n'y a pas de multi-tâches entre les ressources (à l'instar des logiciels)
Définitions
- Resource - Une archive zip ou un dossier contenant un fichier meta.xml et des fichiers ("resource item"). Elles sont placées dans le dossier mods/deathmatch/resources du serveur.
- Resource item - Un fichier contenu dans une ressource, qui peut être un script, une image, une map...
Le fichier meta
Voir l'article Meta.xml pour plus de détails
Le fichier meta est le coeur de chaque ressource. Il décris exactement quels fichiers dans quelles ressources doivent être utilisé, et comment. Le fichier suivant montre toutes les options possibles de vos fichiers meta qui peut, suivant vos besoins, être toutes utilisé, ou partiellement... :
<meta> <info author="eAi" description="Simple script de CTF (Capture de drapeau)" 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>
Tandis que le fichier meta d'une map pour le script ci-dessus ressemble à ça :
<meta> <include resource="ctf" /> <map src="myuberl33tctfmap.map" /> <info author="Tom" instructions="this is uber l33t !!!!!1111111" type="map" /> </meta>
Les attributs Script/type, Config/type et File/type spécifient si le/la script/resource doit être envoyé au client ou par défaut au "server".
La balise include spécifie les autres ressources qui doivent être chargées avant que la ressource se lance. En d'autres termes, si votre ressource dépend d'une (ou plusieurs) autre ressource, vous pouvez l'inclure, et elle se chargera avant votre ressource.
Chaque ressource a sa propre machine virtuelle (VM, comme Virtual Machine en anglais). Elle contient tous les scripts dans la ressource. Ce qui signifie que les variables ne sont pas partagées avec les autres ressources. La meilleur chose à faire pour communiquer avec les autres ressources est d'utiliser la balise export et les fonctions d'export. Cela autorisera à utiliser cette fonction en utilisant la fonction call.
Les scripts envoyés au client démarre lorsque tous ont été téléchargés.
Les scripts peuvent lire et écrire dans leur dossier avec les fonctions comme xmlCreateFile et fileCreate. Elle peut aussi lire et écrire dans d'autres ressources mais doivent avoir un accès spécial (voir ACL)
Chaque ressource ne peut être chargée qu'une seule et unique fois, le serveur vérifie si c'est le cas. Si elle est chargée plusieurs fois, la même instance va être utilisée par chaque ressource qui l'utilise.
Stockage des fichiers
Les ressources sont stockée soit dans un dossier, soit dans une archive zip situé(e) dans :
server/mods/deathmatch/resources/ (si vous avez installé le serveur avec le client)
ou
mods/deathmatch/resources/ (pour les installations dédiées)
Chaque ressource peut contenir une archive zip, un dossier (ou les deux). Dans le cas où les deux existent, le dossier à "la priorité" sur l'archive zip. Les fichiers peuvent être placer tels quels dans le dossier pour "écraser" l'archive zip. Les dossiers sont donc la plupart du temps utilisés pour faire des tests ou développer des maps/scripts et les archives zip sont utilisées lorsque la ressource est terminée et mise sur le serveur.
Notes
- Les noms de ressouces ne peuvent contenir des points (".").
- Si la ressource sauvegarde des fichiers, les noms de ces fichiers ne doivent pas être mis dans le meta.xml
- Les fichiers listés dans le meta.xml doient être considéré comme "lisable seulement (read-only)" par votre script. Ne pas les modifier avec les fonctions xmlSaveFile, FileSave etc.
- Quand vous faites une archive zip de votre ressource, ne mettez pas les fichiers à sauvegarder dedans. Si votre ressource utilise des fichiers à sauvegarder, ils doivent être créés par votre ressource quand elle en a besoin.
- Quand vous faites une archive zip de votre ressource, mettez seulement les fichiers listés dans le meta.xml. Ne mettez pas les fichiers à sauvegarder sinon des choses étranges vont se passer.
- Nous vous recommandons d'éviter les espaces et les caractères spéciaux de vos noms de ressources.
Fonctions
Le système de ressources peut être manipuler par le script. Voici des fonctions utiles (server-side, côté serveur) :
- 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
Ainsi que les évenements suivant :