<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=V1ncenzo</id>
	<title>Multi Theft Auto: Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=V1ncenzo"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/V1ncenzo"/>
	<updated>2026-04-06T02:21:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40906</id>
		<title>Page d'accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40906"/>
		<updated>2014-07-17T16:48:23Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: Traduction et correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;/*border: 1px solid #D8D8D8;*/ padding-left: 15px; padding-right: 15px; height: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Mtalogo.png|left|100px|link=http://wiki.multitheftauto.com/]]'''Bienvenue sur le wiki de Multi Theft Auto.''' Sur ce wiki, vous trouverez toutes les informations sur Multi Theft Auto.&lt;br /&gt;
&lt;br /&gt;
Il y a [[How you can help|différents moyens de nous aider]]: créer une map, un gamemode, rediger des articles sur des fonctions, écrire un exemple, écrire un tutorial ou juste jouer à MTA et nous rapportez les bugs trouvés.&lt;br /&gt;
&lt;br /&gt;
Si vous avez une question ou un problème lié à la programmation, prenez contact avec nous sur notre [[IRC Channel|Canal IRC]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;[ Stop playing with yourself ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px; background: #FFFCF2;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Input-gaming.png‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Jouer&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #FFEEAA; border: 1px solid #FFCD19;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Go-down.png|link=http://mtasa.com/]] ''' [http://mtasa.com/ Download Multi Theft Auto: San Andreas {{Current Version|full}}]'''&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Where to buy GTASA|Où acheter GTA:SA]]&lt;br /&gt;
* [[FR/Manuel_Client|Manuel Client]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:DrawKiie DrawKiie] )&lt;br /&gt;
&amp;lt;!-- * [[Changes_in_{{padleft:|3|{{Current Version|full}}}}| Changes in {{padleft:|3|{{Current Version|full}}}}]] --&amp;gt;&lt;br /&gt;
* [[Changes_in_{{padleft:|5|{{Current Version|full}}}}| Changes in {{padleft:|5|{{Current Version|full}}}}]]&lt;br /&gt;
* [[FR/Problemes_connus|Problèmes connus]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Migrer_de_MTARace_a_MTASA_1.0.x|Migrer de MTA:Race à MTA:SA {{padleft:|3|{{Current Version|full}}}}]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Manuel_Serveur|Manuel Serveur]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/A propos des Map|A propos des Map]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Map Editor&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Resource:Editor|Manuel]]&lt;br /&gt;
*[[Resource:Editor/EDF|Editor Definition Format]]&lt;br /&gt;
*[[Resource:Editor/Plugins|Plugins]]&lt;br /&gt;
*[[Resource:Editor#FAQ|Questions Fréquentes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Package-x-generic.png‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Bases de données&amp;lt;/h3&amp;gt;&lt;br /&gt;
Cette section décrit toutes les capacités fournies par le LUA/MTA ou par les ressources.&lt;br /&gt;
* [[:Category:Resource|Catalogue des ressources]] - Vous devriez le lire pour réaliser un script approprié.&lt;br /&gt;
* [[FR/Les_scripts_clients| Les scripts clients]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Applications-development.png‎‎‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Développer Multi Theft Auto&amp;lt;/h3&amp;gt;&lt;br /&gt;
[[File:Go-down.png|link=http://nightly.mtasa.com/]] [http://nightly.mtasa.com/ Nightly builds]&lt;br /&gt;
* [[FR/Compiler_MTASA|Compiler MTASA sur Windows]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_Mac_OS_X|Compiler MTASA sur Mac OS X]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_GNU_Linux|Compiler MTASA sur GNU/Linux]]&lt;br /&gt;
* [[FR/Directives_de_codage|Directives de codage]]&lt;br /&gt;
* [http://code.google.com/p/mtasa-blue Google Code SVN]&lt;br /&gt;
* [[FR/Roadmap|Roadmap]]&lt;br /&gt;
* [http://bugs.mtasa.com/ Bugtracker]&lt;br /&gt;
* [[Branches]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Applications-office.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Wiki - Comment aider&amp;lt;/h3&amp;gt;&lt;br /&gt;
* Finir la documentation pour les [[:Category:Incomplete|Fonctions incomplètes]].&lt;br /&gt;
* [[:Category:Needs_Example |Ajouter des exemples pour les fonctions et évènements]].&lt;br /&gt;
* Relire et vérifier [[:Category:Needs Checking|les pages qui en ont besoins]].&lt;br /&gt;
* Écrire des tutoriels pour les nouveaux.&lt;br /&gt;
* Traduire les pages du wiki.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Internet-group-chat.png‎|link=]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;h3&amp;gt;Communautée&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [http://forum.multitheftauto.com/ Forum]&lt;br /&gt;
* IRC: [irc://irc.multitheftauto.com/mta irc.multitheftauto.com #mta]&lt;br /&gt;
* [http://community.mtasa.com/ MTA Community] - Partage et téléchargement de ressource.&lt;br /&gt;
* [http://twitter.com/#!/MTAQA/ Twitter] - [http://www.youtube.com/user/MTAQA Youtube] - [http://plus.google.com/102014133442331779727/ Google+] - [http://www.moddb.com/mods/multi-theft-auto-san-andreas ModDB]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Accessories-text-editor.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Programmer&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[FR/Introduction_Programmation|Introduction: La programmation]]&lt;br /&gt;
* [[FR/Introduction_GUI|Introduction: Le GUI]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:FatalTeror FatalTerror] )&lt;br /&gt;
* [[FR/Debugage|Tutoriel: Le débugage]] - Comment trouver les erreurs dans son script&lt;br /&gt;
* [[FR/Ressources|Introduction: Les ressources]] (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[FR/Ressource_Acces_Web|Accès depuis le web]] - Comment créer un site à partir d'une ressource (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[:Category:Resource|Catalogue des ressources]] &lt;br /&gt;
** [[FR/Meta.xml|Meta.xml]] - Derrière chaque ressource se trouve une meta pour la définir&lt;br /&gt;
** [[FR/ACL|ACL]] - Access Control List, pour définir les autorisations&lt;br /&gt;
* [[FR/Ecrire_Gamemode|Créer un gamemode]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche])&lt;br /&gt;
* [[FR/Fonctions_Utiles|Fonctions utiles]]&lt;br /&gt;
Liens Forum&lt;br /&gt;
* [http://forum.mtasa.com/viewforum.php?f=91 Forum Programmation]&lt;br /&gt;
* [http://forum.mtasa.com/viewforum.php?f=148 Programmation - Sous-partie des Tutoriels]&lt;br /&gt;
* [http://forum.mtasa.com/viewtopic.php?f=13&amp;amp;t=29363 Copies Hors-ligne du Wiki]&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:start-here.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Aide Générale du LUA&amp;lt;/h3&amp;gt;&lt;br /&gt;
Des pages conçues pour aider votre compréhension du Lua&lt;br /&gt;
*[http://www.lua.org/pil/index.html &amp;quot;Programming in Lua&amp;quot;]&lt;br /&gt;
**[http://www.lua.org/manual/5.1/#index Les fonctions Lua]&lt;br /&gt;
*[http://lua-users.org/wiki/TutorialDirectory wiki Lua]&lt;br /&gt;
*[http://nixstaller.berlios.de/manual/0.2/nixstaller_9.html Un guide général au Lua de Nixstaller]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px; background:#F2F2FF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Preferences-system.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Références&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[FR/Fonctions_Clients|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Clients|Events Clients]]&lt;br /&gt;
* [[FR/Fonctions_Serveurs|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Serveurs|Events Clients]]&lt;br /&gt;
&amp;lt;!-- Incomplet * [[Module functions|Server-side external module scripting functions list]] --&amp;gt;&lt;br /&gt;
* [[FR/MTA Classes|MTA Classes]] - Les descriptions détaillées de tous les types personnalisés MTA&lt;br /&gt;
** [[FR/Element|MTA Elements]] / [[Element tree]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:System-file-manager.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;[[Id|ID Listes]]&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[FR/Animations|Animations]]&lt;br /&gt;
*[[FR/Skins_Personnages|Skins Personnages]]&lt;br /&gt;
*[[FR/Vetements_CJ|Vêtements CJ]]&lt;br /&gt;
*[[FR/Garage|Garage IDs]]&lt;br /&gt;
*[[FR/Interieurs_IDs|Intérieurs IDs]]&lt;br /&gt;
*[[FR/Materiel_IDs|Matériel IDs]]&lt;br /&gt;
*[[FR/Projectiles|Projectiles]]&lt;br /&gt;
*[[FR/Radar Blips|Radar Blips]]&lt;br /&gt;
*[[FR/Sons|Sons]]&lt;br /&gt;
*[[FR/Vehicule_IDs|ID des véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Couleurs|Couleurs véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Upgrades|Tuning IDs]]&lt;br /&gt;
*[[FR/Armes|Armes]]&lt;br /&gt;
*[[FR/Meteos|Météos]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Osi symbol.png|75px|link=http://opensource.org/|left]]&lt;br /&gt;
'''Multi Theft Auto''' est '''Open Source'''. &lt;br /&gt;
&amp;lt;br/&amp;gt;Cela signifie que chacun peut contribuer à rendre Multi Theft Auto encore meilleur!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding-left: 15px; padding-right: 15px;&amp;quot; class=&amp;quot;plainlinks&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MTALogo_8ball.png|left|85px|link=Archive]]&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''À propos de [[Multi Theft Auto]]'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Archive]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Press Coverage|Media]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[http://code.google.com/p/mtasa-blue/people/list Développeurs]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''Multi Theft Auto 0.5'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Archive#Multi_Theft_Auto_0.5|Téléchargement]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[MTA 0.5r2 Known Issues|Problèmes Connus]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''Wiki Stats'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFARTICLES}} Articles&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFPAGES}} Pages&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFUSERS}} Utilisateurs enregistrés&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{Languages list|fr}}&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40905</id>
		<title>Page d'accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40905"/>
		<updated>2014-07-17T15:23:39Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;/*border: 1px solid #D8D8D8;*/ padding-left: 15px; padding-right: 15px; height: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Mtalogo.png|left|100px|link=http://wiki.multitheftauto.com/]]'''Bienvenue sur le wiki de Multi Theft Auto.''' Sur ce wiki, vous trouverez toutes les informations sur Multi Theft Auto.&lt;br /&gt;
&lt;br /&gt;
Il y a [[How you can help|différents moyens de nous aider]]: créer une map, un gamemode, rediger des articles sur des fonctions, écrire un exemple, écrire un tutorial ou juste jouer à MTA et nous rapportez les bugs trouvés.&lt;br /&gt;
&lt;br /&gt;
Si vous avez une question ou un problème lié à la programmation, prenez contact avec nous sur notre [[IRC Channel|Canal IRC]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;[ Stop playing with yourself ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px; background: #FFFCF2;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Input-gaming.png‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Jouer&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #FFEEAA; border: 1px solid #FFCD19;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Go-down.png|link=http://mtasa.com/]] ''' [http://mtasa.com/ Download Multi Theft Auto: San Andreas {{Current Version|full}}]'''&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Where to buy GTASA|Où acheter GTA:SA]]&lt;br /&gt;
* [[FR/Manuel_Client|Manuel Client]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:DrawKiie DrawKiie] )&lt;br /&gt;
&amp;lt;!-- * [[Changes_in_{{padleft:|3|{{Current Version|full}}}}| Changes in {{padleft:|3|{{Current Version|full}}}}]] --&amp;gt;&lt;br /&gt;
* [[Changes_in_{{padleft:|5|{{Current Version|full}}}}| Changes in {{padleft:|5|{{Current Version|full}}}}]]&lt;br /&gt;
* [[FR/Problemes_connus|Problèmes connus]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Migrer_de_MTARace_a_MTASA_1.0.x|Migrer de MTA:Race à MTA:SA {{padleft:|3|{{Current Version|full}}}}]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Manuel_Serveur|Manuel Serveur]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/A propos des Map|A propos des Map]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Map Editor&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Resource:Editor|Manuel]]&lt;br /&gt;
*[[Resource:Editor/EDF|Editor Definition Format]]&lt;br /&gt;
*[[Resource:Editor/Plugins|Plugins]]&lt;br /&gt;
*[[Resource:Editor#FAQ|Questions Fréquentes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Package-x-generic.png‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Bases de données&amp;lt;/h3&amp;gt;&lt;br /&gt;
Cette section décrit toutes les capacités fournies par le LUA/MTA ou par les ressources.&lt;br /&gt;
* [[:Category:Resource|Catalogue des ressources]] - Vous devriez le lire pour réaliser un script approprié.&lt;br /&gt;
* [[FR/Les_scripts_clients| Les scripts clients]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Applications-development.png‎‎‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Développer Multi Theft Auto&amp;lt;/h3&amp;gt;&lt;br /&gt;
[[File:Go-down.png|link=http://nightly.mtasa.com/]] [http://nightly.mtasa.com/ Nightly builds]&lt;br /&gt;
* [[FR/Compiler_MTASA|Compiler MTASA sur Windows]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_Mac_OS_X|Compiler MTASA sur Mac OS X]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_GNU_Linux|Compiler MTASA sur GNU/Linux]]&lt;br /&gt;
* [[FR/Directives_de_codage|Directives de codage]]&lt;br /&gt;
* [http://code.google.com/p/mtasa-blue Google Code SVN]&lt;br /&gt;
* [[FR/Roadmap|Roadmap]]&lt;br /&gt;
* [http://bugs.mtasa.com/ Bugtracker]&lt;br /&gt;
* [[Branches]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Applications-office.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Wiki - Comment aider&amp;lt;/h3&amp;gt;&lt;br /&gt;
* Finish documentation for [[:Category:Incomplete|Incomplete functions]].&lt;br /&gt;
* [[:Category:Needs_Example |Add examples to functions and events]].&lt;br /&gt;
* Review and verify [[:Category:Needs Checking|pages that need checking]].&lt;br /&gt;
* Write tutorials to help new people.&lt;br /&gt;
* Translate wiki pages.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Internet-group-chat.png‎|link=]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;h3&amp;gt;Community&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [http://forum.multitheftauto.com/ Forum]&lt;br /&gt;
* IRC: [irc://irc.multitheftauto.com/mta irc.multitheftauto.com #mta]&lt;br /&gt;
* [http://community.mtasa.com/ MTA Community] - Share and download resources.&lt;br /&gt;
* [http://twitter.com/#!/MTAQA/ Twitter] - [http://www.youtube.com/user/MTAQA Youtube] - [http://plus.google.com/102014133442331779727/ Google+] - [http://www.moddb.com/mods/multi-theft-auto-san-andreas ModDB]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Accessories-text-editor.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Programmer&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[FR/Introduction_Programmation|Introduction: La programmation]]&lt;br /&gt;
* [[FR/Introduction_GUI|Introduction: Le GUI]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:FatalTeror FatalTerror] )&lt;br /&gt;
* [[FR/Debugage|Tutoriel: Le débugage]] - Comment trouver les erreurs dans son script&lt;br /&gt;
* [[FR/Ressources|Introduction: Les ressources]] (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[FR/Ressource_Acces_Web|Accès depuis le web]] - Comment créer un site à partir d'une ressource (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[:Category:Resource|Catalogue des ressources]] &lt;br /&gt;
** [[FR/Meta.xml|Meta.xml]] - Derrière chaque ressource se trouve une meta pour la définir&lt;br /&gt;
** [[FR/ACL|ACL]] - Access Control List, pour définir les autorisations&lt;br /&gt;
* [[FR/Ecrire_Gamemode|Créer un gamemode]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche])&lt;br /&gt;
* [[FR/Fonctions_Utiles|Fonctions utiles]]&lt;br /&gt;
Forum Links&lt;br /&gt;
* [http://forum.mtasa.com/viewforum.php?f=91 Scripting Forum]&lt;br /&gt;
* [http://forum.mtasa.com/viewforum.php?f=148 Scripting Tutorials Sub-Forum]&lt;br /&gt;
* [http://forum.mtasa.com/viewtopic.php?f=13&amp;amp;t=29363 Offline Wiki Copies]&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:start-here.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Aide Générale du LUA&amp;lt;/h3&amp;gt;&lt;br /&gt;
Des pages conçues pour aider votre compréhension du Lua&lt;br /&gt;
*[http://www.lua.org/pil/index.html &amp;quot;Programming in Lua&amp;quot;]&lt;br /&gt;
**[http://www.lua.org/manual/5.1/#index Les fonctions Lua]&lt;br /&gt;
*[http://lua-users.org/wiki/TutorialDirectory wiki Lua]&lt;br /&gt;
*[http://nixstaller.berlios.de/manual/0.2/nixstaller_9.html Un guide général au Lua de Nixstaller]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px; background:#F2F2FF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Références&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[FR/Fonctions_Clients|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Clients|Events Clients]]&lt;br /&gt;
* [[FR/Fonctions_Serveurs|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Serveurs|Events Clients]]&lt;br /&gt;
&amp;lt;!-- Incomplet * [[Module functions|Server-side external module scripting functions list]] --&amp;gt;&lt;br /&gt;
* [[FR/MTA Classes|MTA Classes]] - Les descriptions détaillées de tous les types personnalisés MTA&lt;br /&gt;
** [[FR/Element|MTA Elements]] / [[Element tree]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:System-file-manager.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;[[Id|ID Listes]]&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[FR/Animations|Animations]]&lt;br /&gt;
*[[FR/Skins_Personnages|Skins Personnages]]&lt;br /&gt;
*[[FR/Vetements_CJ|Vêtements CJ]]&lt;br /&gt;
*[[FR/Garage|Garage IDs]]&lt;br /&gt;
*[[FR/Interieurs_IDs|Intérieurs IDs]]&lt;br /&gt;
*[[FR/Materiel_IDs|Matériel IDs]]&lt;br /&gt;
*[[FR/Projectiles|Projectiles]]&lt;br /&gt;
*[[FR/Radar Blips|Radar Blips]]&lt;br /&gt;
*[[FR/Sons|Sons]]&lt;br /&gt;
*[[FR/Vehicule_IDs|ID des véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Couleurs|Couleurs véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Upgrades|Tuning IDs]]&lt;br /&gt;
*[[FR/Armes|Armes]]&lt;br /&gt;
*[[FR/Meteos|Météos]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Osi symbol.png|75px|link=http://opensource.org/|left]]&lt;br /&gt;
'''Multi Theft Auto''' est '''Open Source'''. &lt;br /&gt;
&amp;lt;br/&amp;gt;Cela signifie que chacun peut contribuer à rendre Multi Theft Auto encore meilleur!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding-left: 15px; padding-right: 15px;&amp;quot; class=&amp;quot;plainlinks&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MTALogo_8ball.png|left|85px|link=Archive]]&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''À propos de [[Multi Theft Auto]]'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Archive]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Press Coverage|Media]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[http://code.google.com/p/mtasa-blue/people/list Développeurs]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''Multi Theft Auto 0.5'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Archive#Multi_Theft_Auto_0.5|Téléchargement]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[MTA 0.5r2 Known Issues|Problèmes Connus]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''Wiki Stats'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFARTICLES}} Articles&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFPAGES}} Pages&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFUSERS}} Utilisateurs enregistrés&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{Languages list|fr}}&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40904</id>
		<title>Page d'accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40904"/>
		<updated>2014-07-17T15:22:52Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: Refonte complète de la page d'accueil /*Original conservé*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;/*border: 1px solid #D8D8D8;*/ padding-left: 15px; padding-right: 15px; height: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Mtalogo.png|left|100px|link=http://wiki.multitheftauto.com/]]'''Bienvenue sur le wiki de Multi Theft Auto.''' Sur ce wiki, vous trouverez toutes les informations sur Multi Theft Auto.&lt;br /&gt;
&lt;br /&gt;
Il y a [[How you can help|différents moyens de nous aider]]: créer une map, un gamemode, rediger des articles sur des fonctions, écrire un exemple, écrire un tutorial ou juste jouer à MTA et nous rapportez les bugs trouvés.&lt;br /&gt;
&lt;br /&gt;
Si vous avez une question ou un problème lié à la programmation, prenez contact avec nous sur notre [[IRC Channel|Canal IRC]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;[ Stop playing with yourself ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px; background: #FFFCF2;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Input-gaming.png‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Jouer&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #FFEEAA; border: 1px solid #FFCD19;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Go-down.png|link=http://mtasa.com/]] ''' [http://mtasa.com/ Download Multi Theft Auto: San Andreas {{Current Version|full}}]'''&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Where to buy GTASA||Où acheter GTA:SA]]&lt;br /&gt;
* [[FR/Manuel_Client|Manuel Client]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:DrawKiie DrawKiie] )&lt;br /&gt;
&amp;lt;!-- * [[Changes_in_{{padleft:|3|{{Current Version|full}}}}| Changes in {{padleft:|3|{{Current Version|full}}}}]] --&amp;gt;&lt;br /&gt;
* [[Changes_in_{{padleft:|5|{{Current Version|full}}}}| Changes in {{padleft:|5|{{Current Version|full}}}}]]&lt;br /&gt;
* [[FR/Problemes_connus|Problèmes connus]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Migrer_de_MTARace_a_MTASA_1.0.x|Migrer de MTA:Race à MTA:SA {{padleft:|3|{{Current Version|full}}}}]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Manuel_Serveur|Manuel Serveur]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/A propos des Map|A propos des Map]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Map Editor&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[Resource:Editor|Manuel]]&lt;br /&gt;
*[[Resource:Editor/EDF|Editor Definition Format]]&lt;br /&gt;
*[[Resource:Editor/Plugins|Plugins]]&lt;br /&gt;
*[[Resource:Editor#FAQ|Questions Fréquentes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Package-x-generic.png‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Bases de données&amp;lt;/h3&amp;gt;&lt;br /&gt;
Cette section décrit toutes les capacités fournies par le LUA/MTA ou par les ressources.&lt;br /&gt;
* [[:Category:Resource|Catalogue des ressources]] - Vous devriez le lire pour réaliser un script approprié.&lt;br /&gt;
* [[FR/Les_scripts_clients| Les scripts clients]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Applications-development.png‎‎‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Développer Multi Theft Auto&amp;lt;/h3&amp;gt;&lt;br /&gt;
[[File:Go-down.png|link=http://nightly.mtasa.com/]] [http://nightly.mtasa.com/ Nightly builds]&lt;br /&gt;
* [[FR/Compiler_MTASA|Compiler MTASA sur Windows]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_Mac_OS_X|Compiler MTASA sur Mac OS X]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_GNU_Linux|Compiler MTASA sur GNU/Linux]]&lt;br /&gt;
* [[FR/Directives_de_codage|Directives de codage]]&lt;br /&gt;
* [http://code.google.com/p/mtasa-blue Google Code SVN]&lt;br /&gt;
* [[FR/Roadmap|Roadmap]]&lt;br /&gt;
* [http://bugs.mtasa.com/ Bugtracker]&lt;br /&gt;
* [[Branches]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Applications-office.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Wiki - Comment aider&amp;lt;/h3&amp;gt;&lt;br /&gt;
* Finish documentation for [[:Category:Incomplete|Incomplete functions]].&lt;br /&gt;
* [[:Category:Needs_Example |Add examples to functions and events]].&lt;br /&gt;
* Review and verify [[:Category:Needs Checking|pages that need checking]].&lt;br /&gt;
* Write tutorials to help new people.&lt;br /&gt;
* Translate wiki pages.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Internet-group-chat.png‎|link=]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;h3&amp;gt;Community&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [http://forum.multitheftauto.com/ Forum]&lt;br /&gt;
* IRC: [irc://irc.multitheftauto.com/mta irc.multitheftauto.com #mta]&lt;br /&gt;
* [http://community.mtasa.com/ MTA Community] - Share and download resources.&lt;br /&gt;
* [http://twitter.com/#!/MTAQA/ Twitter] - [http://www.youtube.com/user/MTAQA Youtube] - [http://plus.google.com/102014133442331779727/ Google+] - [http://www.moddb.com/mods/multi-theft-auto-san-andreas ModDB]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Accessories-text-editor.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Programmer&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[FR/Introduction_Programmation|Introduction: La programmation]]&lt;br /&gt;
* [[FR/Introduction_GUI|Introduction: Le GUI]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:FatalTeror FatalTerror] )&lt;br /&gt;
* [[FR/Debugage|Tutoriel: Le débugage]] - Comment trouver les erreurs dans son script&lt;br /&gt;
* [[FR/Ressources|Introduction: Les ressources]] (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[FR/Ressource_Acces_Web|Accès depuis le web]] - Comment créer un site à partir d'une ressource (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[:Category:Resource|Catalogue des ressources]] &lt;br /&gt;
** [[FR/Meta.xml|Meta.xml]] - Derrière chaque ressource se trouve une meta pour la définir&lt;br /&gt;
** [[FR/ACL|ACL]] - Access Control List, pour définir les autorisations&lt;br /&gt;
* [[FR/Ecrire_Gamemode|Créer un gamemode]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche])&lt;br /&gt;
* [[FR/Fonctions_Utiles|Fonctions utiles]]&lt;br /&gt;
Forum Links&lt;br /&gt;
* [http://forum.mtasa.com/viewforum.php?f=91 Scripting Forum]&lt;br /&gt;
* [http://forum.mtasa.com/viewforum.php?f=148 Scripting Tutorials Sub-Forum]&lt;br /&gt;
* [http://forum.mtasa.com/viewtopic.php?f=13&amp;amp;t=29363 Offline Wiki Copies]&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:start-here.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Aide Générale du LUA&amp;lt;/h3&amp;gt;&lt;br /&gt;
Des pages conçues pour aider votre compréhension du Lua&lt;br /&gt;
*[http://www.lua.org/pil/index.html &amp;quot;Programming in Lua&amp;quot;]&lt;br /&gt;
**[http://www.lua.org/manual/5.1/#index Les fonctions Lua]&lt;br /&gt;
*[http://lua-users.org/wiki/TutorialDirectory wiki Lua]&lt;br /&gt;
*[http://nixstaller.berlios.de/manual/0.2/nixstaller_9.html Un guide général au Lua de Nixstaller]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px; background:#F2F2FF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Références&amp;lt;/h3&amp;gt;&lt;br /&gt;
* [[FR/Fonctions_Clients|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Clients|Events Clients]]&lt;br /&gt;
* [[FR/Fonctions_Serveurs|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Serveurs|Events Clients]]&lt;br /&gt;
&amp;lt;!-- Incomplet * [[Module functions|Server-side external module scripting functions list]] --&amp;gt;&lt;br /&gt;
* [[FR/MTA Classes|MTA Classes]] - Les descriptions détaillées de tous les types personnalisés MTA&lt;br /&gt;
** [[FR/Element|MTA Elements]] / [[Element tree]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #D8D8D8; padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:System-file-manager.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;[[Id|ID Listes]]&amp;lt;/h3&amp;gt;&lt;br /&gt;
*[[FR/Animations|Animations]]&lt;br /&gt;
*[[FR/Skins_Personnages|Skins Personnages]]&lt;br /&gt;
*[[FR/Vetements_CJ|Vêtements CJ]]&lt;br /&gt;
*[[FR/Garage|Garage IDs]]&lt;br /&gt;
*[[FR/Interieurs_IDs|Intérieurs IDs]]&lt;br /&gt;
*[[FR/Materiel_IDs|Matériel IDs]]&lt;br /&gt;
*[[FR/Projectiles|Projectiles]]&lt;br /&gt;
*[[FR/Radar Blips|Radar Blips]]&lt;br /&gt;
*[[FR/Sons|Sons]]&lt;br /&gt;
*[[FR/Vehicule_IDs|ID des véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Couleurs|Couleurs véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Upgrades|Tuning IDs]]&lt;br /&gt;
*[[FR/Armes|Armes]]&lt;br /&gt;
*[[FR/Meteos|Météos]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Osi symbol.png|75px|link=http://opensource.org/|left]]&lt;br /&gt;
'''Multi Theft Auto''' est '''Open Source'''. &lt;br /&gt;
&amp;lt;br/&amp;gt;Cela signifie que chacun peut contribuer à rendre Multi Theft Auto encore meilleur!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding-left: 15px; padding-right: 15px;&amp;quot; class=&amp;quot;plainlinks&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MTALogo_8ball.png|left|85px|link=Archive]]&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''À propos de [[Multi Theft Auto]]'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Archive]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Press Coverage|Media]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[http://code.google.com/p/mtasa-blue/people/list Développeurs]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''Multi Theft Auto 0.5'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Archive#Multi_Theft_Auto_0.5|Téléchargement]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[MTA 0.5r2 Known Issues|Problèmes Connus]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''Wiki Stats'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFARTICLES}} Articles&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFPAGES}} Pages&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFUSERS}} Utilisateurs enregistrés&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{Languages list|fr}}&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40896</id>
		<title>Page d'accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40896"/>
		<updated>2014-07-16T20:43:16Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: Ajout logo de la page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background: #FFEEAA; padding: 5px; float:right; width: 30%;&amp;quot;&amp;gt;Dernière version stable de '''Multi Theft Auto: San Andreas''' est '''{{Current Version|full}}'''. Rendez-vous sur la [http://mtasa.com/ page principale] pour la télécharger.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Vous pouvez aussi télécharger une [http://nightly.mtasa.com/ beta] pour avoir la dernière version ( non stable ).&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:Mtalogo.png|left|100px|link=http://wiki.multitheftauto.com/]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Bienvenue sur le wiki de Multi Theft Auto. Sur ce wiki, vous trouverez toutes les informations sur Multi Theft Auto.&lt;br /&gt;
&lt;br /&gt;
Il y a [[How you can help|différents moyens de nous aider]]: créer une map, un gamemode, rediger des articles sur des fonctions, écrire un exemple, écrire un tutorial ou juste jouer à MTA et nous rapportez les bugs trouvés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
====Pour commencer====&lt;br /&gt;
&lt;br /&gt;
* [[FR/Manuel_Client|Manuel Client]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:DrawKiie DrawKiie] )&lt;br /&gt;
* [[FR/Manuel_Serveur|Manuel Serveur]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Problemes_connus|Problèmes connus]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Migrer_de_MTARace_a_MTASA_1.0.x|Migrer de MTA:Race à MTA:SA 1.0.x]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/A propos des Map|A propos des Map]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Accessories-text-editor.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Programmer====&lt;br /&gt;
&lt;br /&gt;
* [[FR/Introduction_Programmation|Introduction: La programmation]]&lt;br /&gt;
* [[FR/Introduction_GUI|Introduction: Le GUI]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:FatalTeror FatalTerror] )&lt;br /&gt;
* [[FR/Debugage|Tutoriel: Le débugage]] - Comment trouver les erreurs dans son script&lt;br /&gt;
* [[FR/Ressources|Introduction: Les ressources]] (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[FR/Ressource_Acces_Web|Accès depuis le web]] - Comment créer un site à partir d'une ressource (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[:Category:Resource|Catalogue des ressources]] &lt;br /&gt;
** [[FR/Meta.xml|Meta.xml]] - Derrière chaque ressource se trouve une meta pour la définir&lt;br /&gt;
** [[FR/ACL|ACL]] - Access Control List, pour définir les autorisations&lt;br /&gt;
* [[FR/Ecrire_Gamemode|Créer un gamemode]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche])&lt;br /&gt;
* [[FR/Fonctions_Utiles|Fonctions utiles]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Package-x-generic.png‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bases de données====&lt;br /&gt;
Cette section décrit toutes les capacités fournies par le LUA/MTA ou par les ressources.&lt;br /&gt;
* [[:Category:Resource|Catalogue des ressources]] - Vous devriez le lire pour réaliser un script approprié.&lt;br /&gt;
* [[FR/Les_scripts_clients| Les scripts clients]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:start-here.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aide générale du LUA====&lt;br /&gt;
Des pages conçues pour aider votre compréhension du Lua&lt;br /&gt;
*[http://www.lua.org/pil/index.html &amp;quot;Programming in Lua&amp;quot;]&lt;br /&gt;
**[http://www.lua.org/manual/5.1/#index Les fonctions Lua]&lt;br /&gt;
*[http://lua-users.org/wiki/TutorialDirectory wiki Lua]&lt;br /&gt;
*[http://nixstaller.berlios.de/manual/0.2/nixstaller_9.html Un guide général au Lua de Nixstaller]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Map Editor====&lt;br /&gt;
*[[Resource:Editor|Manuel]]&lt;br /&gt;
*[[Resource:Editor/EDF|Editor Definition Format]]&lt;br /&gt;
*[[Resource:Editor/Plugins|Plugins]]&lt;br /&gt;
*[[Resource:Editor#FAQ|Questions Fréquentes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Applications-development.png‎‎‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Développer Multi Theft Auto====&lt;br /&gt;
* [[FR/Compiler_MTASA|Compiler MTASA sur Windows]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_Mac_OS_X|Compiler MTASA sur Mac OS X]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_GNU_Linux|Compiler MTASA sur GNU/Linux]]&lt;br /&gt;
* [[FR/Directives_de_codage|Directives de codage]]&lt;br /&gt;
* [http://code.google.com/p/mtasa-blue Google Code SVN]&lt;br /&gt;
* [[FR/Roadmap|Roadmap]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px; background:#CCCCFF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Preferences-system.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Références====&lt;br /&gt;
* [[FR/Fonctions_Clients|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Clients|Events Clients]]&lt;br /&gt;
* [[FR/Fonctions_Serveurs|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Serveurs|Events Clients]]&lt;br /&gt;
&amp;lt;!-- Incomplet * [[Module functions|Server-side external module scripting functions list]] --&amp;gt;&lt;br /&gt;
* [[FR/MTA Classes|MTA Classes]] - Les descriptions détaillées de tous les types personnalisés MTA&lt;br /&gt;
** [[FR/Element|MTA Elements]] / [[Element tree]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:System-file-manager.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Id|ID Listes]]====&lt;br /&gt;
*[[FR/Animations|Animations]]&lt;br /&gt;
*[[FR/Skins_Personnages|Skins Personnages]]&lt;br /&gt;
*[[FR/Vetements_CJ|Vêtements CJ]]&lt;br /&gt;
*[[FR/Garage|Garage IDs]]&lt;br /&gt;
*[[FR/Interieurs_IDs|Intérieurs IDs]]&lt;br /&gt;
*[[FR/Materiel_IDs|Matériel IDs]]&lt;br /&gt;
*[[FR/Projectiles|Projectiles]]&lt;br /&gt;
*[[FR/Radar Blips|Radar Blips]]&lt;br /&gt;
*[[FR/Sons|Sons]]&lt;br /&gt;
*[[FR/Vehicule_IDs|ID des véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Couleurs|Couleurs véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Upgrades|Tuning IDs]]&lt;br /&gt;
*[[FR/Armes|Armes]]&lt;br /&gt;
*[[FR/Meteos|Météos]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Osi symbol.png|75px|link=http://opensource.org/|left]]&lt;br /&gt;
'''Multi Theft Auto''' est '''Open Source'''. &lt;br /&gt;
&amp;lt;br/&amp;gt;Cela signifie que chacun peut contribuer à rendre Multi Theft Auto encore meilleur!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding-left: 15px; padding-right: 15px;&amp;quot; class=&amp;quot;plainlinks&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MTALogo_8ball.png|left|85px|link=Archive]]&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''À propos de [[Multi Theft Auto]]'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Archive]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Press Coverage|Media]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[http://code.google.com/p/mtasa-blue/people/list Développeurs]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''Multi Theft Auto 0.5'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Archive#Multi_Theft_Auto_0.5|Téléchargement]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[MTA 0.5r2 Known Issues|Problèmes Connus]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''Wiki Stats'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFARTICLES}} Articles&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFPAGES}} Pages&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFUSERS}} Utilisateurs enregistrés&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Languages list|fr}}&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40892</id>
		<title>Page d'accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40892"/>
		<updated>2014-07-16T14:13:27Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: Ajout /* About MTA*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background: #FFEEAA; padding: 5px; float:right; width: 30%;&amp;quot;&amp;gt;Dernière version stable de '''Multi Theft Auto: San Andreas''' est '''{{Current Version|full}}'''. Rendez-vous sur la [http://mtasa.com/ page principale] pour la télécharger.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Vous pouvez aussi télécharger une [http://nightly.mtasa.com/ beta] pour avoir la dernière version ( non stable ).&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Bienvenue sur le wiki de Multi Theft Auto. Sur ce wiki, vous trouverez toutes les informations sur Multi Theft Auto.&lt;br /&gt;
&lt;br /&gt;
Il y a [[How you can help|différents moyens de nous aider]]: créer une map, un gamemode, rediger des articles sur des fonctions, écrire un exemple, écrire un tutorial ou juste jouer à MTA et nous rapportez les bugs trouvés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
====Pour commencer====&lt;br /&gt;
&lt;br /&gt;
* [[FR/Manuel_Client|Manuel Client]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:DrawKiie DrawKiie] )&lt;br /&gt;
* [[FR/Manuel_Serveur|Manuel Serveur]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Problemes_connus|Problèmes connus]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Migrer_de_MTARace_a_MTASA_1.0.x|Migrer de MTA:Race à MTA:SA 1.0.x]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/A propos des Map|A propos des Map]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Accessories-text-editor.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Programmer====&lt;br /&gt;
&lt;br /&gt;
* [[FR/Introduction_Programmation|Introduction: La programmation]]&lt;br /&gt;
* [[FR/Introduction_GUI|Introduction: Le GUI]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:FatalTeror FatalTerror] )&lt;br /&gt;
* [[FR/Debugage|Tutoriel: Le débugage]] - Comment trouver les erreurs dans son script&lt;br /&gt;
* [[FR/Ressources|Introduction: Les ressources]] (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[FR/Ressource_Acces_Web|Accès depuis le web]] - Comment créer un site à partir d'une ressource (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[:Category:Resource|Catalogue des ressources]] &lt;br /&gt;
** [[FR/Meta.xml|Meta.xml]] - Derrière chaque ressource se trouve une meta pour la définir&lt;br /&gt;
** [[FR/ACL|ACL]] - Access Control List, pour définir les autorisations&lt;br /&gt;
* [[FR/Ecrire_Gamemode|Créer un gamemode]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche])&lt;br /&gt;
* [[FR/Fonctions_Utiles|Fonctions utiles]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Package-x-generic.png‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bases de données====&lt;br /&gt;
Cette section décrit toutes les capacités fournies par le LUA/MTA ou par les ressources.&lt;br /&gt;
* [[:Category:Resource|Catalogue des ressources]] - Vous devriez le lire pour réaliser un script approprié.&lt;br /&gt;
* [[FR/Les_scripts_clients| Les scripts clients]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:start-here.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aide générale du LUA====&lt;br /&gt;
Des pages conçues pour aider votre compréhension du Lua&lt;br /&gt;
*[http://www.lua.org/pil/index.html &amp;quot;Programming in Lua&amp;quot;]&lt;br /&gt;
**[http://www.lua.org/manual/5.1/#index Les fonctions Lua]&lt;br /&gt;
*[http://lua-users.org/wiki/TutorialDirectory wiki Lua]&lt;br /&gt;
*[http://nixstaller.berlios.de/manual/0.2/nixstaller_9.html Un guide général au Lua de Nixstaller]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Map Editor====&lt;br /&gt;
*[[Resource:Editor|Manuel]]&lt;br /&gt;
*[[Resource:Editor/EDF|Editor Definition Format]]&lt;br /&gt;
*[[Resource:Editor/Plugins|Plugins]]&lt;br /&gt;
*[[Resource:Editor#FAQ|Questions Fréquentes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Applications-development.png‎‎‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Développer Multi Theft Auto====&lt;br /&gt;
* [[FR/Compiler_MTASA|Compiler MTASA sur Windows]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_Mac_OS_X|Compiler MTASA sur Mac OS X]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_GNU_Linux|Compiler MTASA sur GNU/Linux]]&lt;br /&gt;
* [[FR/Directives_de_codage|Directives de codage]]&lt;br /&gt;
* [http://code.google.com/p/mtasa-blue Google Code SVN]&lt;br /&gt;
* [[FR/Roadmap|Roadmap]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px; background:#CCCCFF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Preferences-system.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Références====&lt;br /&gt;
* [[FR/Fonctions_Clients|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Clients|Events Clients]]&lt;br /&gt;
* [[FR/Fonctions_Serveurs|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Serveurs|Events Clients]]&lt;br /&gt;
&amp;lt;!-- Incomplet * [[Module functions|Server-side external module scripting functions list]] --&amp;gt;&lt;br /&gt;
* [[FR/MTA Classes|MTA Classes]] - Les descriptions détaillées de tous les types personnalisés MTA&lt;br /&gt;
** [[FR/Element|MTA Elements]] / [[Element tree]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:System-file-manager.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Id|ID Listes]]====&lt;br /&gt;
*[[FR/Animations|Animations]]&lt;br /&gt;
*[[FR/Skins_Personnages|Skins Personnages]]&lt;br /&gt;
*[[FR/Vetements_CJ|Vêtements CJ]]&lt;br /&gt;
*[[FR/Garage|Garage IDs]]&lt;br /&gt;
*[[FR/Interieurs_IDs|Intérieurs IDs]]&lt;br /&gt;
*[[FR/Materiel_IDs|Matériel IDs]]&lt;br /&gt;
*[[FR/Projectiles|Projectiles]]&lt;br /&gt;
*[[FR/Radar Blips|Radar Blips]]&lt;br /&gt;
*[[FR/Sons|Sons]]&lt;br /&gt;
*[[FR/Vehicule_IDs|ID des véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Couleurs|Couleurs véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Upgrades|Tuning IDs]]&lt;br /&gt;
*[[FR/Armes|Armes]]&lt;br /&gt;
*[[FR/Meteos|Météos]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Osi symbol.png|75px|link=http://opensource.org/|left]]&lt;br /&gt;
'''Multi Theft Auto''' est '''Open Source'''. &lt;br /&gt;
&amp;lt;br/&amp;gt;Cela signifie que chacun peut contribuer à rendre Multi Theft Auto encore meilleur!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding-left: 15px; padding-right: 15px;&amp;quot; class=&amp;quot;plainlinks&amp;quot;&amp;gt;&lt;br /&gt;
[[File:MTALogo_8ball.png|left|85px|link=Archive]]&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''À propos de [[Multi Theft Auto]]'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Archive]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Press Coverage|Media]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[http://code.google.com/p/mtasa-blue/people/list Développeurs]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''Multi Theft Auto 0.5'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[Archive#Multi_Theft_Auto_0.5|Téléchargement]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;[[MTA 0.5r2 Known Issues|Problèmes Connus]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style: none; width: 200px; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;'''Wiki Stats'''&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFARTICLES}} Articles&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFPAGES}} Pages&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{NUMBEROFUSERS}} Utilisateurs enregistrés&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Languages list|fr}}&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40891</id>
		<title>Page d'accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40891"/>
		<updated>2014-07-16T13:57:25Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Ajout paragraphe Open Source*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background: #FFEEAA; padding: 5px; float:right; width: 30%;&amp;quot;&amp;gt;Dernière version stable de '''Multi Theft Auto: San Andreas''' est '''{{Current Version|full}}'''. Rendez-vous sur la [http://mtasa.com/ page principale] pour la télécharger.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Vous pouvez aussi télécharger une [http://nightly.mtasa.com/ beta] pour avoir la dernière version ( non stable ).&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Bienvenue sur le wiki de Multi Theft Auto. Sur ce wiki, vous trouverez toutes les informations sur Multi Theft Auto.&lt;br /&gt;
&lt;br /&gt;
Il y a [[How you can help|différents moyens de nous aider]]: créer une map, un gamemode, rediger des articles sur des fonctions, écrire un exemple, écrire un tutorial ou juste jouer à MTA et nous rapportez les bugs trouvés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
====Pour commencer====&lt;br /&gt;
&lt;br /&gt;
* [[FR/Manuel_Client|Manuel Client]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:DrawKiie DrawKiie] )&lt;br /&gt;
* [[FR/Manuel_Serveur|Manuel Serveur]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Problemes_connus|Problèmes connus]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Migrer_de_MTARace_a_MTASA_1.0.x|Migrer de MTA:Race à MTA:SA 1.0.x]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/A propos des Map|A propos des Map]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Accessories-text-editor.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Programmer====&lt;br /&gt;
&lt;br /&gt;
* [[FR/Introduction_Programmation|Introduction: La programmation]]&lt;br /&gt;
* [[FR/Introduction_GUI|Introduction: Le GUI]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:FatalTeror FatalTerror] )&lt;br /&gt;
* [[FR/Debugage|Tutoriel: Le débugage]] - Comment trouver les erreurs dans son script&lt;br /&gt;
* [[FR/Ressources|Introduction: Les ressources]] (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[FR/Ressource_Acces_Web|Accès depuis le web]] - Comment créer un site à partir d'une ressource (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[:Category:Resource|Catalogue des ressources]] &lt;br /&gt;
** [[FR/Meta.xml|Meta.xml]] - Derrière chaque ressource se trouve une meta pour la définir&lt;br /&gt;
** [[FR/ACL|ACL]] - Access Control List, pour définir les autorisations&lt;br /&gt;
* [[FR/Ecrire_Gamemode|Créer un gamemode]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche])&lt;br /&gt;
* [[FR/Fonctions_Utiles|Fonctions utiles]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Package-x-generic.png‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bases de données====&lt;br /&gt;
Cette section décrit toutes les capacités fournies par le LUA/MTA ou par les ressources.&lt;br /&gt;
* [[:Category:Resource|Catalogue des ressources]] - Vous devriez le lire pour réaliser un script approprié.&lt;br /&gt;
* [[FR/Les_scripts_clients| Les scripts clients]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:start-here.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aide générale du LUA====&lt;br /&gt;
Des pages conçues pour aider votre compréhension du Lua&lt;br /&gt;
*[http://www.lua.org/pil/index.html &amp;quot;Programming in Lua&amp;quot;]&lt;br /&gt;
**[http://www.lua.org/manual/5.1/#index Les fonctions Lua]&lt;br /&gt;
*[http://lua-users.org/wiki/TutorialDirectory wiki Lua]&lt;br /&gt;
*[http://nixstaller.berlios.de/manual/0.2/nixstaller_9.html Un guide général au Lua de Nixstaller]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Map Editor====&lt;br /&gt;
*[[Resource:Editor|Manuel]]&lt;br /&gt;
*[[Resource:Editor/EDF|Editor Definition Format]]&lt;br /&gt;
*[[Resource:Editor/Plugins|Plugins]]&lt;br /&gt;
*[[Resource:Editor#FAQ|Questions Fréquentes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Applications-development.png‎‎‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Développer Multi Theft Auto====&lt;br /&gt;
* [[FR/Compiler_MTASA|Compiler MTASA sur Windows]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_Mac_OS_X|Compiler MTASA sur Mac OS X]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_GNU_Linux|Compiler MTASA sur GNU/Linux]]&lt;br /&gt;
* [[FR/Directives_de_codage|Directives de codage]]&lt;br /&gt;
* [http://code.google.com/p/mtasa-blue Google Code SVN]&lt;br /&gt;
* [[FR/Roadmap|Roadmap]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px; background:#CCCCFF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Preferences-system.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Références====&lt;br /&gt;
* [[FR/Fonctions_Clients|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Clients|Events Clients]]&lt;br /&gt;
* [[FR/Fonctions_Serveurs|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Serveurs|Events Clients]]&lt;br /&gt;
&amp;lt;!-- Incomplet * [[Module functions|Server-side external module scripting functions list]] --&amp;gt;&lt;br /&gt;
* [[FR/MTA Classes|MTA Classes]] - Les descriptions détaillées de tous les types personnalisés MTA&lt;br /&gt;
** [[FR/Element|MTA Elements]] / [[Element tree]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:System-file-manager.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Id|ID Listes]]====&lt;br /&gt;
*[[FR/Animations|Animations]]&lt;br /&gt;
*[[FR/Skins_Personnages|Skins Personnages]]&lt;br /&gt;
*[[FR/Vetements_CJ|Vêtements CJ]]&lt;br /&gt;
*[[FR/Garage|Garage IDs]]&lt;br /&gt;
*[[FR/Interieurs_IDs|Intérieurs IDs]]&lt;br /&gt;
*[[FR/Materiel_IDs|Matériel IDs]]&lt;br /&gt;
*[[FR/Projectiles|Projectiles]]&lt;br /&gt;
*[[FR/Radar Blips|Radar Blips]]&lt;br /&gt;
*[[FR/Sons|Sons]]&lt;br /&gt;
*[[FR/Vehicule_IDs|ID des véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Couleurs|Couleurs véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Upgrades|Tuning IDs]]&lt;br /&gt;
*[[FR/Armes|Armes]]&lt;br /&gt;
*[[FR/Meteos|Météos]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:4px 8px 8px 8px; margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Osi symbol.png|75px|link=http://opensource.org/|left]]&lt;br /&gt;
'''Multi Theft Auto''' est '''Open Source'''. &lt;br /&gt;
&amp;lt;br/&amp;gt;Cela signifie que chacun peut contribuer à rendre Multi Theft Auto encore meilleur!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
{{Languages list|fr}}&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40885</id>
		<title>Page d'accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40885"/>
		<updated>2014-07-15T19:55:49Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: */ Ajout des icônes de catégorie*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background: #FFEEAA; padding: 5px; float:right; width: 30%;&amp;quot;&amp;gt;Dernière version stable de '''Multi Theft Auto: San Andreas''' est '''{{Current Version|full}}'''. Rendez-vous sur la [http://mtasa.com/ page principale] pour la télécharger.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Vous pouvez aussi télécharger une [http://nightly.mtasa.com/ beta] pour avoir la dernière version ( non stable ).&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Bienvenue sur le wiki de Multi Theft Auto. Sur ce wiki, vous trouverez toutes les informations sur Multi Theft Auto.&lt;br /&gt;
&lt;br /&gt;
Il y a [[How you can help|différents moyens de nous aider]]: créer une map, un gamemode, rediger des articles sur des fonctions, écrire un exemple, écrire un tutorial ou juste jouer à MTA et nous rapportez les bugs trouvés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
====Pour commencer====&lt;br /&gt;
&lt;br /&gt;
* [[FR/Manuel_Client|Manuel Client]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:DrawKiie DrawKiie] )&lt;br /&gt;
* [[FR/Manuel_Serveur|Manuel Serveur]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Problemes_connus|Problèmes connus]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Migrer_de_MTARace_a_MTASA_1.0.x|Migrer de MTA:Race à MTA:SA 1.0.x]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/A propos des Map|A propos des Map]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Accessories-text-editor.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Programmer====&lt;br /&gt;
&lt;br /&gt;
* [[FR/Introduction_Programmation|Introduction: La programmation]]&lt;br /&gt;
* [[FR/Introduction_GUI|Introduction: Le GUI]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:FatalTeror FatalTerror] )&lt;br /&gt;
* [[FR/Debugage|Tutoriel: Le débugage]] - Comment trouver les erreurs dans son script&lt;br /&gt;
* [[FR/Ressources|Introduction: Les ressources]] (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[FR/Ressource_Acces_Web|Accès depuis le web]] - Comment créer un site à partir d'une ressource (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[:Category:Resource|Catalogue des ressources]] &lt;br /&gt;
** [[FR/Meta.xml|Meta.xml]] - Derrière chaque ressource se trouve une meta pour la définir&lt;br /&gt;
** [[FR/ACL|ACL]] - Access Control List, pour définir les autorisations&lt;br /&gt;
* [[FR/Ecrire_Gamemode|Créer un gamemode]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche])&lt;br /&gt;
* [[FR/Fonctions_Utiles|Fonctions utiles]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Package-x-generic.png‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bases de données====&lt;br /&gt;
Cette section décrit toutes les capacités fournies par le LUA/MTA ou par les ressources.&lt;br /&gt;
* [[:Category:Resource|Catalogue des ressources]] - Vous devriez le lire pour réaliser un script approprié.&lt;br /&gt;
* [[FR/Les_scripts_clients| Les scripts clients]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:start-here.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aide générale du LUA====&lt;br /&gt;
Des pages conçues pour aider votre compréhension du Lua&lt;br /&gt;
*[http://www.lua.org/pil/index.html &amp;quot;Programming in Lua&amp;quot;]&lt;br /&gt;
**[http://www.lua.org/manual/5.1/#index Les fonctions Lua]&lt;br /&gt;
*[http://lua-users.org/wiki/TutorialDirectory wiki Lua]&lt;br /&gt;
*[http://nixstaller.berlios.de/manual/0.2/nixstaller_9.html Un guide général au Lua de Nixstaller]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Map Editor====&lt;br /&gt;
*[[Resource:Editor|Manuel]]&lt;br /&gt;
*[[Resource:Editor/EDF|Editor Definition Format]]&lt;br /&gt;
*[[Resource:Editor/Plugins|Plugins]]&lt;br /&gt;
*[[Resource:Editor#FAQ|Questions Fréquentes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Applications-development.png‎‎‎|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Développer Multi Theft Auto====&lt;br /&gt;
* [[FR/Compiler_MTASA|Compiler MTASA sur Windows]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_Mac_OS_X|Compiler MTASA sur Mac OS X]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_GNU_Linux|Compiler MTASA sur GNU/Linux]]&lt;br /&gt;
* [[FR/Directives_de_codage|Directives de codage]]&lt;br /&gt;
* [http://code.google.com/p/mtasa-blue Google Code SVN]&lt;br /&gt;
* [[FR/Roadmap|Roadmap]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px; background:#CCCCFF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:Preferences-system.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Références====&lt;br /&gt;
* [[FR/Fonctions_Clients|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Clients|Events Clients]]&lt;br /&gt;
* [[FR/Fonctions_Serveurs|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Serveurs|Events Clients]]&lt;br /&gt;
&amp;lt;!-- Incomplet * [[Module functions|Server-side external module scripting functions list]] --&amp;gt;&lt;br /&gt;
* [[FR/MTA Classes|MTA Classes]] - Les descriptions détaillées de tous les types personnalisés MTA&lt;br /&gt;
** [[FR/Element|MTA Elements]] / [[Element tree]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; width: 32px;&amp;quot;&amp;gt;[[File:System-file-manager.png|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Id|ID Listes]]====&lt;br /&gt;
*[[FR/Animations|Animations]]&lt;br /&gt;
*[[FR/Skins_Personnages|Skins Personnages]]&lt;br /&gt;
*[[FR/Vetements_CJ|Vêtements CJ]]&lt;br /&gt;
*[[FR/Garage|Garage IDs]]&lt;br /&gt;
*[[FR/Interieurs_IDs|Intérieurs IDs]]&lt;br /&gt;
*[[FR/Materiel_IDs|Matériel IDs]]&lt;br /&gt;
*[[FR/Projectiles|Projectiles]]&lt;br /&gt;
*[[FR/Radar Blips|Radar Blips]]&lt;br /&gt;
*[[FR/Sons|Sons]]&lt;br /&gt;
*[[FR/Vehicule_IDs|ID des véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Couleurs|Couleurs véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Upgrades|Tuning IDs]]&lt;br /&gt;
*[[FR/Armes|Armes]]&lt;br /&gt;
*[[FR/Meteos|Météos]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
{{Languages list|fr}}&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40884</id>
		<title>FR/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40884"/>
		<updated>2014-07-15T19:42:07Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le ficher ''meta.xml'' presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
Note: Vous pouvez essayer le generateur de Meta.xml crée par 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
=Balises=&lt;br /&gt;
XML est un format de donnée textuel (par balisage) qui est largement utilisé pour la représentation de donnée. MTA utilise un langage basé sur XML pour décrire les métadonnées des ressources en utilisant les balises suivantes:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Informations sur la ressource. Quelques paramètres possibles (tous paramètres arbitraire peut être utilsé/lu avec[[getResourceInfo]]):&lt;br /&gt;
** '''author:''' L'auteur de la ressource&lt;br /&gt;
** '''version:''' La version de la ressource&lt;br /&gt;
** '''name:''' Le nom de la ressource&lt;br /&gt;
** '''description:''' Une petite description de la ressource&lt;br /&gt;
** '''type:''' Le type de ressource, ça peut être &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; ou &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Le code source de la ressource, les paramètres possibles sont:&lt;br /&gt;
** '''src:''' Le nom du fichier&lt;br /&gt;
** '''type:''' Le type du code source: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' La map pour le gamemode, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier .map (Peut être distant. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Fichier côté client. Principalement des images, .txd, .col, .dff or .xml files. Ces fichiers seront téléchargés par le client lorsque la ressource sera chargée/lancée (ou lors de la connexion)&lt;br /&gt;
**'''src:''' le nom du fichier (peut être un chemin, ex: &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Ressource(s) utilisée(s) par votre ressource&lt;br /&gt;
**'''resource:''' Nom d'une ressource qui sera chargée&lt;br /&gt;
**'''minversion:''' Version minimum de cette '''resource''' (optionnel)&lt;br /&gt;
**'''maxversion:''' Version maximum de cette '''resource''' (optionnel)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Fichier de configuration (.xml) auquel la ressource peut accéder, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier de configuration&lt;br /&gt;
**'''type:''' Type de fichier: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Utilisé ceci pour exporter des fonctions, de votre ressource, qui pourront être utilisées par d'autres ressources [[call]]&lt;br /&gt;
**'''function:''' Nom de la fonction&lt;br /&gt;
**'''type''' Si la fonction est côté client ou serveur (valeurs valides: &amp;quot;server&amp;quot; et &amp;quot;client&amp;quot;)&lt;br /&gt;
**'''http:''' Permettre d'appeler la fonction via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Le nom du fichier HTTP (peut être un chemin)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' Le fichier html n'est pas analyser par l'intrepreteur LUA et est traité comme une donnée binaire. Doit être utiliser pour les données binaires (images principalement) (truel/false).&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' La plupart des gamemodes utilisent [[settings system]] pour laisser aux administrateurs le choix de la configuration du serveur. Par exemple vous pouvez définir le temps d'une partie et utiliser ensuite [[get]] et [[set]] pour respectivement récupérer ou changer cette valeur.&lt;br /&gt;
*'''&amp;lt;min_mta_version /&amp;gt;''' Version minimum requise pour que cette ressource fonctionne. Pour les ressources officielles, la version minimum doit être généralement définie sur la version courante de MTA:SA (actuellement : &amp;quot;{{Current Version|full}}&amp;quot;). Voir exemple pour démonstration.&lt;br /&gt;
**'''client:''' Version minimum du client&lt;br /&gt;
**'''server:''' Version minimum du serveur&lt;br /&gt;
*'''&amp;lt;aclrequest /&amp;gt;''' Liste des droits nécessaires à cette ressource, [[FR/ACL|ACL]].&lt;br /&gt;
{{New items|3.0132|1.3.1 r4141|&lt;br /&gt;
*'''&amp;lt;sync_map_element_data /&amp;gt;''' &lt;br /&gt;
Permet de contrôler si les [[FR/Element_data|données d’éléments]] du mapping telle que &amp;quot;PosX&amp;quot; et &amp;quot;DoubleSided&amp;quot; sont transférées au client. Ces données ne sont généralement pas requis pour la plupart des gamemodes ou ressources. (Pour que les intérieurs et Map Editor fonctionne cette donnée ne doit pas être sur ''false''). Quand ceci est configuré dans meta.xml, la modification s'applique à toutes les maps chargées par cette ressource.&lt;br /&gt;
**'''false:''' Désactive le transfert des données d'élements de mapping pour toutes les ressources. Cela peut réduire considérablement le temps de téléchargement des maps.&lt;br /&gt;
**'''true:''' Active le transfert des données d’éléments de mapping. (Si '''false''' et '''true''' sont configurés dans des ressources différentes, ''true'' aura la priorité et les données seront transférés.)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{New items|3.0140|1.4.0 r5313|&lt;br /&gt;
*'''&amp;lt;oop/&amp;gt;''' OOP - Veuillez vous référer à [[Client_Scripting_Classes|client scripting classes]] pour la documentation.&lt;br /&gt;
**'''false:''' Désactive OOP.&lt;br /&gt;
**'''true:''' Active OOP.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
Un exemple de fichier ''meta'' utilisant quelques unes de ces balises :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;aclrequest&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.startResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.stopResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/aclrequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40883</id>
		<title>FR/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40883"/>
		<updated>2014-07-15T19:39:27Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le ficher ''meta.xml'' presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
Note: Vous pouvez essayer le generateur de Meta.xml crée par 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
=Balises=&lt;br /&gt;
XML est un format de donnée textuel (par balisage) qui est largement utilisé pour la représentation de donnée. MTA utilise un langage basé sur XML pour décrire les métadonnées des ressources en utilisant les balises suivantes:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Informations sur la ressource. Quelques paramètres possibles (tous paramètres arbitraire peut être utilsé/lu avec[[getResourceInfo]]):&lt;br /&gt;
** '''author:''' L'auteur de la ressource&lt;br /&gt;
** '''version:''' La version de la ressource&lt;br /&gt;
** '''name:''' Le nom de la ressource&lt;br /&gt;
** '''description:''' Une petite description de la ressource&lt;br /&gt;
** '''type:''' Le type de ressource, ça peut être &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; ou &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Le code source de la ressource, les paramètres possibles sont:&lt;br /&gt;
** '''src:''' Le nom du fichier&lt;br /&gt;
** '''type:''' Le type du code source: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' La map pour le gamemode, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier .map (Peut être distant. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Fichier côté client. Principalement des images, .txd, .col, .dff or .xml files. Ces fichiers seront téléchargés par le client lorsque la ressource sera chargée/lancée (ou lors de la connexion)&lt;br /&gt;
**'''src:''' le nom du fichier (peut être un chemin, ex: &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Ressource(s) utilisée(s) par votre ressource&lt;br /&gt;
**'''resource:''' Nom d'une ressource qui sera chargée&lt;br /&gt;
**'''minversion:''' Version minimum de cette '''resource''' (optionnel)&lt;br /&gt;
**'''maxversion:''' Version maximum de cette '''resource''' (optionnel)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Fichier de configuration (.xml) auquel la ressource peut accéder, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier de configuration&lt;br /&gt;
**'''type:''' Type de fichier: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Utilisé ceci pour exporter des fonctions, de votre ressource, qui pourront être utilisées par d'autres ressources [[call]]&lt;br /&gt;
**'''function:''' Nom de la fonction&lt;br /&gt;
**'''type''' Si la fonction est côté client ou serveur (valeurs valides: &amp;quot;server&amp;quot; et &amp;quot;client&amp;quot;)&lt;br /&gt;
**'''http:''' Permettre d'appeler la fonction via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Le nom du fichier HTTP (peut être un chemin)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' Le fichier html n'est pas analyser par l'intrepreteur LUA et est traité comme une donnée binaire. Doit être utiliser pour les données binaires (images principalement) (truel/false).&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' La plupart des gamemodes utilisent [[settings system]] pour laisser aux administrateurs le choix de la configuration du serveur. Par exemple vous pouvez définir le temps d'une partie et utiliser ensuite [[get]] et [[set]] pour respectivement récupérer ou changer cette valeur.&lt;br /&gt;
*'''&amp;lt;min_mta_version /&amp;gt;''' Version minimum requise pour que cette ressource fonctionne. When authoring resources, the minimum version should usually be set to the current released version of MTA:SA (which at the moment is &amp;quot;{{Current Version|full}}&amp;quot;). See example for example.&lt;br /&gt;
**'''client:''' Version minimum du client&lt;br /&gt;
**'''server:''' Version minimum du serveur&lt;br /&gt;
*'''&amp;lt;aclrequest /&amp;gt;''' Liste des droits nécessaires à cette ressource, [[FR/ACL|ACL]].&lt;br /&gt;
{{New items|3.0132|1.3.1 r4141|&lt;br /&gt;
*'''&amp;lt;sync_map_element_data /&amp;gt;''' &lt;br /&gt;
Permet de contrôler si les [[FR/Element_data|données d’éléments]] du mapping telle que &amp;quot;PosX&amp;quot; et &amp;quot;DoubleSided&amp;quot; sont transférées au client. Ces données ne sont généralement pas requis pour la plupart des gamemodes ou ressources. (Pour que les intérieurs et Map Editor fonctionne cette donnée ne doit pas être sur ''false''). Quand ceci est configuré dans meta.xml, la modification s'applique à toutes les maps chargées par cette ressource.&lt;br /&gt;
**'''false:''' Désactive le transfert des données d'élements de mapping pour toutes les ressources. Cela peut réduire considérablement le temps de téléchargement des maps.&lt;br /&gt;
**'''true:''' Active le transfert des données d’éléments de mapping. (Si '''false''' et '''true''' sont configurés dans des ressources différentes, ''true'' aura la priorité et les données seront transférés.)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{New items|3.0140|1.4.0 r5313|&lt;br /&gt;
*'''&amp;lt;oop/&amp;gt;''' OOP - Veuillez vous référer à [[Client_Scripting_Classes|client scripting classes]] pour la documentation.&lt;br /&gt;
**'''false:''' Désactive OOP.&lt;br /&gt;
**'''true:''' Active OOP.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
Un exemple de fichier ''meta'' utilisant quelques unes de ces balises :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;aclrequest&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.startResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.stopResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/aclrequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40660</id>
		<title>FR/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40660"/>
		<updated>2014-07-11T12:33:26Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le ficher ''meta.xml'' presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
Note: Vous pouvez essayer le generateur de Meta.xml crée par 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
=Balises=&lt;br /&gt;
XML est un format de donnée textuel (par balisage) qui est largement utilisé pour la représentation de donnée. MTA utilise un langage basé sur XML pour décrire les métadonnées des ressources en utilisant les balises suivantes:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Informations sur la ressource. Quelques paramètres possibles (tous paramètres arbitraire peut être utilsé/lu avec[[getResourceInfo]]):&lt;br /&gt;
** '''author:''' L'auteur de la ressource&lt;br /&gt;
** '''version:''' La version de la ressource&lt;br /&gt;
** '''name:''' Le nom de la ressource&lt;br /&gt;
** '''description:''' Une petite description de la ressource&lt;br /&gt;
** '''type:''' Le type de ressource, ça peut être &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; ou &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Le code source de la ressource, les paramètres possibles sont:&lt;br /&gt;
** '''src:''' Le nom du fichier&lt;br /&gt;
** '''type:''' Le type du code source: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' La map pour le gamemode, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier .map (Peut être distant. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Fichier côté client. Principalement des images, .txd, .col, .dff or .xml files. Ces fichiers seront téléchargés par le client lorsque la ressource sera chargée/lancée (ou lors de la connexion)&lt;br /&gt;
**'''src:''' le nom du fichier (peut être un chemin, ex: &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Ressource(s) utilisée(s) par votre ressource&lt;br /&gt;
**'''resource:''' Nom d'une ressource qui sera chargée&lt;br /&gt;
**'''minversion:''' Version minimum de cette '''resource''' (optionnel)&lt;br /&gt;
**'''maxversion:''' Version maximum de cette '''resource''' (optionnel)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Fichier de configuration (.xml) auquel la ressource peut accéder, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier de configuration&lt;br /&gt;
**'''type:''' Type de fichier: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Utilisé ceci pour exporter des fonctions, de votre ressource, qui pourront être utilisées par d'autres ressources [[call]]&lt;br /&gt;
**'''function:''' Nom de la fonction&lt;br /&gt;
**'''type''' Si la fonction est côté client ou serveur (valeurs valides: &amp;quot;server&amp;quot; et &amp;quot;client&amp;quot;)&lt;br /&gt;
**'''http:''' Permettre d'appeler la fonction via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Le nom du fichier HTTP (peut être un chemin)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' Le fichier html n'est pas analyser par l'intrepreteur LUA et est traité comme une donnée binaire. Doit être utiliser pour les données binaires (images principalement) (truel/false).&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' Most gamemodes use [[settings system]] to let server admins to configure it how they like. For instance you could set round time and then use [[get]] and [[set]] to get the value or change it, respectively.&lt;br /&gt;
*'''&amp;lt;min_mta_version /&amp;gt;''' Version minimum requise pour que cette ressource fonctionne. When authoring resources, the minimum version should usually be set to the current released version of MTA:SA (which at the moment is &amp;quot;{{Current Version|full}}&amp;quot;). See example for example.&lt;br /&gt;
**'''client:''' Version minimum du client&lt;br /&gt;
**'''server:''' Version minimum du serveur&lt;br /&gt;
*'''&amp;lt;aclrequest /&amp;gt;''' Liste des droits nécessaires à cette ressource, [[FR/ACL|ACL]].&lt;br /&gt;
{{New items|3.0132|1.3.1 r4141|&lt;br /&gt;
*'''&amp;lt;sync_map_element_data /&amp;gt;''' &lt;br /&gt;
Permet de contrôler si les [[FR/Element_data|données d’éléments]] du mapping telle que &amp;quot;PosX&amp;quot; et &amp;quot;DoubleSided&amp;quot; sont transférées au client. Ces données ne sont généralement pas requis pour la plupart des gamemodes ou ressources. (Pour que les intérieurs et Map Editor fonctionne cette donnée ne doit pas être sur ''false''). Quand ceci est configuré dans meta.xml, la modification s'applique à toutes les maps chargées par cette ressource.&lt;br /&gt;
**'''false:''' Désactive le transfert des données d'élements de mapping pour toutes les ressources. Cela peut réduire considérablement le temps de téléchargement des maps.&lt;br /&gt;
**'''true:''' Active le transfert des données d’éléments de mapping. (Si '''false''' et '''true''' sont configurés dans des ressources différentes, ''true'' aura la priorité et les données seront transférés.)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{New items|3.0140|1.4.0 r5313|&lt;br /&gt;
*'''&amp;lt;oop/&amp;gt;''' OOP - Veuillez vous référer à [[Client_Scripting_Classes|client scripting classes]] pour la documentation.&lt;br /&gt;
**'''false:''' Désactive OOP.&lt;br /&gt;
**'''true:''' Active OOP.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
Un exemple de fichier ''meta'' utilisant quelques unes de ces balises :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;aclrequest&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.startResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.stopResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/aclrequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40659</id>
		<title>FR/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40659"/>
		<updated>2014-07-11T12:32:20Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Balises */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le ficher ''meta.xml'' presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
Note: Vous pouvez essayer le generateur de Meta.xml crée par 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
=Balises=&lt;br /&gt;
XML est un format de donnée textuel (par balisage) qui est largement utilisé pour la représentation de donnée. MTA utilise un langage basé sur XML pour décrire les métadonnées des ressources en utilisant les balises suivantes:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Informations sur la ressource. Quelques paramètres possibles (tous paramètres arbitraire peut être utilsé/lu avec[[getResourceInfo]]):&lt;br /&gt;
** '''author:''' L'auteur de la ressource&lt;br /&gt;
** '''version:''' La version de la ressource&lt;br /&gt;
** '''name:''' Le nom de la ressource&lt;br /&gt;
** '''description:''' Une petite description de la ressource&lt;br /&gt;
** '''type:''' Le type de ressource, ça peut être &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; ou &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Le code source de la ressource, les paramètres possibles sont:&lt;br /&gt;
** '''src:''' Le nom du fichier&lt;br /&gt;
** '''type:''' Le type du code source: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' La map pour le gamemode, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier .map (Peut être distant. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Fichier côté client. Principalement des images, .txd, .col, .dff or .xml files. Ces fichiers seront téléchargés par le client lorsque la ressource sera chargée/lancée (ou lors de la connexion)&lt;br /&gt;
**'''src:''' le nom du fichier (peut être un chemin, ex: &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Ressource(s) utilisée(s) par votre ressource&lt;br /&gt;
**'''resource:''' Nom d'une ressource qui sera chargée&lt;br /&gt;
**'''minversion:''' Version minimum de cette '''resource''' (optionnel)&lt;br /&gt;
**'''maxversion:''' Version maximum de cette '''resource''' (optionnel)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Fichier de configuration (.xml) auquel la ressource peut accéder, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier de configuration&lt;br /&gt;
**'''type:''' Type de fichier: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Utilisé ceci pour exporter des fonctions, de votre ressource, qui pourront être utilisées par d'autres ressources [[call]]&lt;br /&gt;
**'''function:''' Nom de la fonction&lt;br /&gt;
**'''type''' Si la fonction est côté client ou serveur (valeurs valides: &amp;quot;server&amp;quot; et &amp;quot;client&amp;quot;)&lt;br /&gt;
**'''http:''' Permettre d'appeler la fonction via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Le nom du fichier HTTP (peut être un chemin)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' Le fichier html n'est pas analyser par l'intrepreteur LUA et est traité comme une donnée binaire. Doit être utiliser pour les données binaires (images principalement) (truel/false).&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' Most gamemodes use [[settings system]] to let server admins to configure it how they like. For instance you could set round time and then use [[get]] and [[set]] to get the value or change it, respectively.&lt;br /&gt;
*'''&amp;lt;min_mta_version /&amp;gt;''' Version minimum requise pour que cette ressource fonctionne. When authoring resources, the minimum version should usually be set to the current released version of MTA:SA (which at the moment is &amp;quot;{{Current Version|full}}&amp;quot;). See example for example.&lt;br /&gt;
**'''client:''' Version minimum du client&lt;br /&gt;
**'''server:''' Version minimum du serveur&lt;br /&gt;
*'''&amp;lt;aclrequest /&amp;gt;''' Liste des droits nécessaires à cette ressource, [[FR/ACL|ACL]].&lt;br /&gt;
{{New items|3.0132|1.3.1 r4141|&lt;br /&gt;
*'''&amp;lt;sync_map_element_data /&amp;gt;''' &lt;br /&gt;
Permet de contrôler si les [[FR/Element_data||données d’éléments]] du mapping telle que &amp;quot;PosX&amp;quot; et &amp;quot;DoubleSided&amp;quot; sont transférées au client. Ces données ne sont généralement pas requis pour la plupart des gamemodes ou ressources. (Pour que les intérieurs et Map Editor fonctionne cette donnée ne doit pas être sur ''false''). Quand ceci est configuré dans meta.xml, la modification s'applique à toutes les maps chargées par cette ressource.&lt;br /&gt;
**'''false:''' Désactive le transfert des données d'élements de mapping pour toutes les ressources. Cela peut réduire considérablement le temps de téléchargement des maps.&lt;br /&gt;
**'''true:''' Active le transfert des données d’éléments de mapping. (Si '''false''' et '''true''' sont configurés dans des ressources différentes, ''true'' aura la priorité et les données seront transférés.)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{New items|3.0140|1.4.0 r5313|&lt;br /&gt;
*'''&amp;lt;oop/&amp;gt;''' OOP - Veuillez vous référer à [[Client_Scripting_Classes|client scripting classes]] pour la documentation.&lt;br /&gt;
**'''false:''' Désactive OOP.&lt;br /&gt;
**'''true:''' Active OOP.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
Un exemple de fichier ''meta'' utilisant quelques unes de ces balises :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;aclrequest&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.startResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.stopResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/aclrequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40657</id>
		<title>FR/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40657"/>
		<updated>2014-07-11T12:28:39Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le ficher ''meta.xml'' presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
Note: Vous pouvez essayer le generateur de Meta.xml crée par 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
=Balises=&lt;br /&gt;
XML est un format de donnée textuel (par balisage) qui est largement utilisé pour la représentation de donnée. MTA utilise un langage basé sur XML pour décrire les métadonnées des ressources en utilisant les balises suivantes:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Informations sur la ressource. Quelques paramètres possibles (tous paramètres arbitraire peut être utilsé/lu avec[[getResourceInfo]]):&lt;br /&gt;
** '''author:''' L'auteur de la ressource&lt;br /&gt;
** '''version:''' La version de la ressource&lt;br /&gt;
** '''name:''' Le nom de la ressource&lt;br /&gt;
** '''description:''' Une petite description de la ressource&lt;br /&gt;
** '''type:''' Le type de ressource, ça peut être &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; ou &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Le code source de la ressource, les paramètres possibles sont:&lt;br /&gt;
** '''src:''' Le nom du fichier&lt;br /&gt;
** '''type:''' Le type du code source: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' La map pour le gamemode, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier .map (Peut être distant. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Fichier côté client. Principalement des images, .txd, .col, .dff or .xml files. Ces fichiers seront téléchargés par le client lorsque la ressource sera chargée/lancée (ou lors de la connexion)&lt;br /&gt;
**'''src:''' le nom du fichier (peut être un chemin, ex: &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Ressource(s) utilisée(s) par votre ressource&lt;br /&gt;
**'''resource:''' Nom d'une ressource qui sera chargée&lt;br /&gt;
**'''minversion:''' Version minimum de cette '''resource''' (optionnel)&lt;br /&gt;
**'''maxversion:''' Version maximum de cette '''resource''' (optionnel)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Fichier de configuration (.xml) auquel la ressource peut accéder, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier de configuration&lt;br /&gt;
**'''type:''' Type de fichier: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Utilisé ceci pour exporter des fonctions, de votre ressource, qui pourront être utilisées par d'autres ressources [[call]]&lt;br /&gt;
**'''function:''' Nom de la fonction&lt;br /&gt;
**'''type''' Si la fonction est côté client ou serveur (valeurs valides: &amp;quot;server&amp;quot; et &amp;quot;client&amp;quot;)&lt;br /&gt;
**'''http:''' Permettre d'appeler la fonction via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Le nom du fichier HTTP (peut être un chemin)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' Le fichier html n'est pas analyser par l'intrepreteur LUA et est traité comme une donnée binaire. Doit être utiliser pour les données binaires (images principalement) (truel/false).&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' Most gamemodes use [[settings system]] to let server admins to configure it how they like. For instance you could set round time and then use [[get]] and [[set]] to get the value or change it, respectively.&lt;br /&gt;
*'''&amp;lt;min_mta_version /&amp;gt;''' Version minimum requise pour que cette ressource fonctionne. When authoring resources, the minimum version should usually be set to the current released version of MTA:SA (which at the moment is &amp;quot;{{Current Version|full}}&amp;quot;). See example for example.&lt;br /&gt;
**'''client:''' Version minimum du client&lt;br /&gt;
**'''server:''' Version minimum du serveur&lt;br /&gt;
*'''&amp;lt;aclrequest /&amp;gt;''' Liste des droits nécessaires à cette ressource, [[FR/ACL|ACL]].&lt;br /&gt;
{{New items|3.0132|1.3.1 r4141|&lt;br /&gt;
*'''&amp;lt;sync_map_element_data /&amp;gt;''' &lt;br /&gt;
Permet de contrôler si les données d’éléments du mapping telle que &amp;quot;PosX&amp;quot; et &amp;quot;DoubleSided&amp;quot; sont transférées au client. Ces données ne sont généralement pas requis pour la plupart des gamemodes ou ressources. (Pour que les intérieurs et Map Editor fonctionne cette donnée ne doit pas être sur ''false''). Quand ceci est configuré dans meta.xml, la modification s'applique à toutes les maps chargées par cette ressource.&lt;br /&gt;
**'''false:''' Désactive le transfert des données d'élements de mapping pour toutes les ressources. Cela peut réduire considérablement le temps de téléchargement des maps.&lt;br /&gt;
**'''true:''' Active le transfert des données d’éléments de mapping. (Si '''false''' et '''true''' sont configurés dans des ressources différentes, ''true'' aura la priorité et les données seront transférés.)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{New items|3.0140|1.4.0 r5313|&lt;br /&gt;
*'''&amp;lt;oop/&amp;gt;''' OOP - Veuillez vous référer à [[Client_Scripting_Classes|client scripting classes]] pour la documentation.&lt;br /&gt;
**'''false:''' Désactive OOP.&lt;br /&gt;
**'''true:''' Active OOP.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
Un exemple de fichier ''meta'' utilisant quelques unes de ces balises :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;aclrequest&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.startResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.stopResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/aclrequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40654</id>
		<title>FR/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40654"/>
		<updated>2014-07-10T16:02:19Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le ficher ''meta.xml'' presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
Note: Vous pouvez essayer le generateur de Meta.xml crée par 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
=Balises=&lt;br /&gt;
XML est un format de donnée textuel (par balisage) qui est largement utilisé pour la représentation de donnée. MTA utilise un langage basé sur XML pour décrire les métadonnées des ressources en utilisant les balises suivantes:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Informations sur la ressource. Quelques paramètres possibles (tous paramètres arbitraire peut être utilsé/lu avec[[getResourceInfo]]):&lt;br /&gt;
** '''author:''' L'auteur de la ressource&lt;br /&gt;
** '''version:''' La version de la ressource&lt;br /&gt;
** '''name:''' Le nom de la ressource&lt;br /&gt;
** '''description:''' Une petite description de la ressource&lt;br /&gt;
** '''type:''' Le type de ressource, ça peut être &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; ou &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Le code source de la ressource, les paramètres possibles sont:&lt;br /&gt;
** '''src:''' Le nom du fichier&lt;br /&gt;
** '''type:''' Le type du code source: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' La map pour le gamemode, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier .map (Peut être distant. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Fichier côté client. Principalement des images, .txd, .col, .dff or .xml files. Ces fichiers seront téléchargés par le client lorsque la ressource sera chargée/lancée (ou lors de la connexion)&lt;br /&gt;
**'''src:''' le nom du fichier (peut être un chemin, ex: &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Ressource(s) utilisée(s) par votre ressource&lt;br /&gt;
**'''resource:''' Nom d'une ressource qui sera chargée&lt;br /&gt;
**'''minversion:''' Version minimum de cette '''resource''' (optionnel)&lt;br /&gt;
**'''maxversion:''' Version maximum de cette '''resource''' (optionnel)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Fichier de configuration (.xml) auquel la ressource peut accéder, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier de configuration&lt;br /&gt;
**'''type:''' Type de fichier: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Utilisé ceci pour exporter des fonctions, de votre ressource, qui pourront être utilisées par d'autres ressources [[call]]&lt;br /&gt;
**'''function:''' Nom de la fonction&lt;br /&gt;
**'''type''' Si la fonction est côté client ou serveur (valeurs valides: &amp;quot;server&amp;quot; et &amp;quot;client&amp;quot;)&lt;br /&gt;
**'''http:''' Permettre d'appeler la fonction via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Le nom du fichier HTTP (peut être un chemin)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' Le fichier html n'est pas analyser par l'intrepreteur LUA et est traité comme une donnée binaire. Doit être utiliser pour les données binaires (images principalement) (truel/false).&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' Most gamemodes use [[settings system]] to let server admins to configure it how they like. For instance you could set round time and then use [[get]] and [[set]] to get the value or change it, respectively.&lt;br /&gt;
*'''&amp;lt;min_mta_version /&amp;gt;''' Version minimum requise pour que cette ressource fonctionne. When authoring resources, the minimum version should usually be set to the current released version of MTA:SA (which at the moment is &amp;quot;{{Current Version|full}}&amp;quot;). See example for example.&lt;br /&gt;
**'''client:''' Version minimum du client&lt;br /&gt;
**'''server:''' Version minimum du serveur&lt;br /&gt;
*'''&amp;lt;aclrequest /&amp;gt;''' Liste des droits nécessaires à cette ressource, [[FR/ACL|ACL]].&lt;br /&gt;
{{New items|3.0132|1.3.1 r4141|&lt;br /&gt;
*'''&amp;lt;sync_map_element_data /&amp;gt;''' Controls whether map [[Element_data|element data]] such as &amp;quot;PosX&amp;quot; and &amp;quot;DoubleSided&amp;quot; are transferred to the client. This data is usually not required by most gamemodes or resources. (Map Editor and Interiors require this to be not set to false to work). When set in a gamemode meta.xml, the setting will apply to all maps loaded by that resource.&lt;br /&gt;
**'''false:''' Disable transfer of map element data for all resources. This can reduce map download times considerably.&lt;br /&gt;
**'''true:''' Enable transfer of map element data for all resources. (If '''false''' and '''true''' are set in different resources, true will have priority and all resources will transfer map element data)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{New items|3.0140|1.4.0 r5313|&lt;br /&gt;
*'''&amp;lt;oop/&amp;gt;''' OOP - Veuillez vous référer à [[Client_Scripting_Classes|client scripting classes]] pour la documentation.&lt;br /&gt;
**'''false:''' Désactive OOP.&lt;br /&gt;
**'''true:''' Active OOP.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
Un exemple de fichier ''meta'' utilisant quelques unes de ces balises :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;aclrequest&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.startResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.stopResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/aclrequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40653</id>
		<title>FR/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40653"/>
		<updated>2014-07-10T16:01:25Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Balises */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le ficher ''meta.xml'' presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
Note: Vous pouvez essayer le generateur de Meta.xml crée par 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
=Balises=&lt;br /&gt;
XML est un format de donnée textuel (par balisage) qui est largement utilisé pour la représentation de donnée. MTA utilise un langage basé sur XML pour décrire les métadonnées des ressources en utilisant les balises suivantes:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Informations sur la ressource. Quelques paramètres possibles (tous paramètres arbitraire peut être utilsé/lu avec[[getResourceInfo]]):&lt;br /&gt;
** '''author:''' L'auteur de la ressource&lt;br /&gt;
** '''version:''' La version de la ressource&lt;br /&gt;
** '''name:''' Le nom de la ressource&lt;br /&gt;
** '''description:''' Une petite description de la ressource&lt;br /&gt;
** '''type:''' Le type de ressource, ça peut être &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; ou &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Le code source de la ressource, les paramètres possibles sont:&lt;br /&gt;
** '''src:''' Le nom du fichier&lt;br /&gt;
** '''type:''' Le type du code source: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' La map pour le gamemode, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier .map (Peut être distant. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Fichier côté client. Principalement des images, .txd, .col, .dff or .xml files. Ces fichiers seront téléchargés par le client lorsque la ressource sera chargée/lancée (ou lors de la connexion)&lt;br /&gt;
**'''src:''' le nom du fichier (peut être un chemin, ex: &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Ressource(s) utilisée(s) par votre ressource&lt;br /&gt;
**'''resource:''' Nom d'une ressource qui sera chargée&lt;br /&gt;
**'''minversion:''' Version minimum de cette '''resource''' (optionnel)&lt;br /&gt;
**'''maxversion:''' Version maximum de cette '''resource''' (optionnel)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Fichier de configuration (.xml) auquel la ressource peut accéder, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier de configuration&lt;br /&gt;
**'''type:''' Type de fichier: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Utilisé ceci pour exporter des fonctions, de votre ressource, qui pourront être utilisées par d'autres ressources [[call]]&lt;br /&gt;
**'''function:''' Nom de la fonction&lt;br /&gt;
**'''type''' Si la fonction est côté client ou serveur (valeurs valides: &amp;quot;server&amp;quot; et &amp;quot;client&amp;quot;)&lt;br /&gt;
**'''http:''' Permettre d'appeler la fonction via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Le nom du fichier HTTP (peut être un chemin)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' Le fichier html n'est pas analyser par l'intrepreteur LUA et est traité comme une donnée binaire. Doit être utiliser pour les données binaires (images principalement) (truel/false).&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' Most gamemodes use [[settings system]] to let server admins to configure it how they like. For instance you could set round time and then use [[get]] and [[set]] to get the value or change it, respectively.&lt;br /&gt;
*'''&amp;lt;min_mta_version /&amp;gt;''' Version minimum requise pour que cette ressource fonctionne. When authoring resources, the minimum version should usually be set to the current released version of MTA:SA (which at the moment is &amp;quot;{{Current Version|full}}&amp;quot;). See example for example.&lt;br /&gt;
**'''client:''' Version minimum du client&lt;br /&gt;
**'''server:''' Version minimum du serveur&lt;br /&gt;
*'''&amp;lt;aclrequest /&amp;gt;''' Liste des droits nécessaires à cette ressource, [[Access_Control_List|FR/ACL]].&lt;br /&gt;
{{New items|3.0132|1.3.1 r4141|&lt;br /&gt;
*'''&amp;lt;sync_map_element_data /&amp;gt;''' Controls whether map [[Element_data|element data]] such as &amp;quot;PosX&amp;quot; and &amp;quot;DoubleSided&amp;quot; are transferred to the client. This data is usually not required by most gamemodes or resources. (Map Editor and Interiors require this to be not set to false to work). When set in a gamemode meta.xml, the setting will apply to all maps loaded by that resource.&lt;br /&gt;
**'''false:''' Disable transfer of map element data for all resources. This can reduce map download times considerably.&lt;br /&gt;
**'''true:''' Enable transfer of map element data for all resources. (If '''false''' and '''true''' are set in different resources, true will have priority and all resources will transfer map element data)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{New items|3.0140|1.4.0 r5313|&lt;br /&gt;
*'''&amp;lt;oop/&amp;gt;''' OOP - Veuillez vous référer à [[Client_Scripting_Classes|client scripting classes]] pour la documentation.&lt;br /&gt;
**'''false:''' Désactive OOP.&lt;br /&gt;
**'''true:''' Active OOP.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
Un exemple de fichier ''meta'' utilisant quelques unes de ces balises :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;aclrequest&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.startResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.stopResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/aclrequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40652</id>
		<title>FR/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40652"/>
		<updated>2014-07-10T16:00:09Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le ficher ''meta.xml'' presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
Note: Vous pouvez essayer le generateur de Meta.xml crée par 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
=Balises=&lt;br /&gt;
XML est un format de donnée textuel (par balisage) qui est largement utilisé pour la représentation de donnée. MTA utilise un langage basé sur XML pour décrire les métadonnées des ressources en utilisant les balises suivantes:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Informations sur la ressource. Quelques paramètres possibles (tous paramètres arbitraire peut être utilsé/lu avec[[getResourceInfo]]):&lt;br /&gt;
** '''author:''' L'auteur de la ressource&lt;br /&gt;
** '''version:''' La version de la ressource&lt;br /&gt;
** '''name:''' Le nom de la ressource&lt;br /&gt;
** '''description:''' Une petite description de la ressource&lt;br /&gt;
** '''type:''' Le type de ressource, ça peut être &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; ou &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Le code source de la ressource, les paramètres possibles sont:&lt;br /&gt;
** '''src:''' Le nom du fichier&lt;br /&gt;
** '''type:''' Le type du code source: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' La map pour le gamemode, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier .map (Peut être distant. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Fichier côté client. Principalement des images, .txd, .col, .dff or .xml files. Ces fichiers seront téléchargés par le client lorsque la ressource sera chargée/lancée (ou lors de la connexion)&lt;br /&gt;
**'''src:''' le nom du fichier (peut être un chemin, ex: &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Ressource(s) utilisée(s) par votre ressource&lt;br /&gt;
**'''resource:''' Nom d'une ressource qui sera chargée&lt;br /&gt;
**'''minversion:''' Version minimum de cette '''resource''' (optionnel)&lt;br /&gt;
**'''maxversion:''' Version maximum de cette '''resource''' (optionnel)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Fichier de configuration (.xml) auquel la ressource peut accéder, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier de configuration&lt;br /&gt;
**'''type:''' Type de fichier: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Utilisé ceci pour exporter des fonctions, de votre ressource, qui pourront être utilisées par d'autres ressources [[call]]&lt;br /&gt;
**'''function:''' Nom de la fonction&lt;br /&gt;
**'''type''' Si la fonction est côté client ou serveur (valeurs valides: &amp;quot;server&amp;quot; et &amp;quot;client&amp;quot;)&lt;br /&gt;
**'''http:''' Permettre d'appeler la fonction via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Le nom du fichier HTTP (peut être un chemin)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' Le fichier html n'est pas analyser par l'intrepreteur LUA et est traité comme une donnée binaire. Doit être utiliser pour les données binaires (images principalement) (truel/false).&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' Most gamemodes use [[settings system]] to let server admins to configure it how they like. For instance you could set round time and then use [[get]] and [[set]] to get the value or change it, respectively.&lt;br /&gt;
*'''&amp;lt;min_mta_version /&amp;gt;''' Version minimum requise pour que cette ressource fonctionne. When authoring resources, the minimum version should usually be set to the current released version of MTA:SA (which at the moment is &amp;quot;{{Current Version|full}}&amp;quot;). See example for example.&lt;br /&gt;
**'''client:''' Version minimum du client&lt;br /&gt;
**'''server:''' Version minimum du serveur&lt;br /&gt;
*'''&amp;lt;aclrequest /&amp;gt;''' Liste des droits nécessaires à cette ressource [[Access_Control_List|ACL]].&lt;br /&gt;
{{New items|3.0132|1.3.1 r4141|&lt;br /&gt;
*'''&amp;lt;sync_map_element_data /&amp;gt;''' Controls whether map [[Element_data|element data]] such as &amp;quot;PosX&amp;quot; and &amp;quot;DoubleSided&amp;quot; are transferred to the client. This data is usually not required by most gamemodes or resources. (Map Editor and Interiors require this to be not set to false to work). When set in a gamemode meta.xml, the setting will apply to all maps loaded by that resource.&lt;br /&gt;
**'''false:''' Disable transfer of map element data for all resources. This can reduce map download times considerably.&lt;br /&gt;
**'''true:''' Enable transfer of map element data for all resources. (If '''false''' and '''true''' are set in different resources, true will have priority and all resources will transfer map element data)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{New items|3.0140|1.4.0 r5313|&lt;br /&gt;
*'''&amp;lt;oop/&amp;gt;''' OOP - Veuillez vous référer à [[Client_Scripting_Classes|client scripting classes]] pour la documentation.&lt;br /&gt;
**'''false:''' Désactive OOP.&lt;br /&gt;
**'''true:''' Active OOP.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
Un exemple de fichier ''meta'' utilisant quelques unes de ces balises :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;aclrequest&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.startResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.stopResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/aclrequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40651</id>
		<title>FR/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40651"/>
		<updated>2014-07-10T15:48:06Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: Mise à jour de la page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le ficher ''meta.xml'' presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
Note: Vous pouvez essayer le generateur de Meta.xml crée par 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
=Balises=&lt;br /&gt;
XML est un format de donnée textuel (par balisage) qui est largement utilisé pour la représentation de donnée. MTA utilise un langage basé sur XML pour décrire les métadonnées des ressources en utilisant les balises suivantes:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Informations sur la ressource. Quelques paramètres possibles (tous paramètres arbitraire peut être utilsé/lu avec[[getResourceInfo]]):&lt;br /&gt;
** '''author:''' L'auteur de la ressource&lt;br /&gt;
** '''version:''' La version de la ressource&lt;br /&gt;
** '''name:''' Le nom de la ressource&lt;br /&gt;
** '''description:''' Une petite description de la ressource&lt;br /&gt;
** '''type:''' Le type de ressource, ça peut être &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; ou &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Le code source de la ressource, les paramètres possibles sont:&lt;br /&gt;
** '''src:''' Le nom du fichier&lt;br /&gt;
** '''type:''' Le type du code source: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' La map pour le gamemode, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier .map (Peut être distant. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Fichier côté client. Principalement des images, .txd, .col, .dff or .xml files. Ces fichiers seront téléchargés par le client lorsque la ressource sera chargée/lancée (ou lors de la connexion)&lt;br /&gt;
**'''src:''' le nom du fichier (peut être un chemin, ex: &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Ressource(s) utilisée(s) par votre ressource&lt;br /&gt;
**'''resource:''' Nom d'une ressource qui sera chargée&lt;br /&gt;
**'''minversion:''' Version minimum de cette '''resource''' (optionnel)&lt;br /&gt;
**'''maxversion:''' Version maximum de cette '''resource''' (optionnel)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Fichier de configuration (.xml) auquel la ressource peut accéder, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier de configuration&lt;br /&gt;
**'''type:''' Type de fichier: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Utilisé ceci pour exporter des fonctions, de votre ressource, qui pourront être utilisées par d'autres ressources [[call]]&lt;br /&gt;
**'''function:''' Nom de la fonction&lt;br /&gt;
**'''type''' Si la fonction est côté client ou serveur (valeurs valides: &amp;quot;server&amp;quot; et &amp;quot;client&amp;quot;)&lt;br /&gt;
**'''http:''' Permettre d'appeler la fonction via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Le nom du fichier HTTP (peut être un chemin)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' Le fichier html n'est pas analyser par l'intrepreteur LUA et est traité comme une donnée binaire. Doit être utiliser pour les données binaires (images principalement) (truel/false).&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' Most gamemodes use [[settings system]] to let server admins to configure it how they like. For instance you could set round time and then use [[get]] and [[set]] to get the value or change it, respectively.&lt;br /&gt;
*'''&amp;lt;min_mta_version /&amp;gt;''' Minimum version requirements for this resource to run correctly. When authoring resources, the minimum version should usually be set to the current released version of MTA:SA (which at the moment is &amp;quot;{{Current Version|full}}&amp;quot;). See example for example.&lt;br /&gt;
**'''client:''' The minimum client version&lt;br /&gt;
**'''server:''' The minimum server version&lt;br /&gt;
*'''&amp;lt;aclrequest /&amp;gt;''' A list of [[Access_Control_List|ACL]] rights this resource will need.&lt;br /&gt;
{{New items|3.0132|1.3.1 r4141|&lt;br /&gt;
*'''&amp;lt;sync_map_element_data /&amp;gt;''' Controls whether map [[Element_data|element data]] such as &amp;quot;PosX&amp;quot; and &amp;quot;DoubleSided&amp;quot; are transferred to the client. This data is usually not required by most gamemodes or resources. (Map Editor and Interiors require this to be not set to false to work). When set in a gamemode meta.xml, the setting will apply to all maps loaded by that resource.&lt;br /&gt;
**'''false:''' Disable transfer of map element data for all resources. This can reduce map download times considerably.&lt;br /&gt;
**'''true:''' Enable transfer of map element data for all resources. (If '''false''' and '''true''' are set in different resources, true will have priority and all resources will transfer map element data)&lt;br /&gt;
}}&lt;br /&gt;
{{New items|3.0140|1.4.0 r5313|&lt;br /&gt;
*'''&amp;lt;oop/&amp;gt;''' OOP - Please refer to [[Client_Scripting_Classes|client scripting classes]] for documentation.&lt;br /&gt;
**'''false:''' Disable OOP.&lt;br /&gt;
**'''true:''' Enable OOP.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
Un exemple de fichier ''meta'' utilisant quelques unes de ces balises :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;aclrequest&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.startResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.stopResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/aclrequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40650</id>
		<title>FR/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40650"/>
		<updated>2014-07-10T09:53:35Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Exemple */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le ficher ''meta.xml'' presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
Note: Vous pouvez essayer le generateur de Meta.xml crée par 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
=Balises=&lt;br /&gt;
XML est un format de donnée textuel (par balisage) qui est largement utilisé pour la représentation de donnée. MTA utilise un langage basé sur XML pour décrire les métadonnées des ressources en utilisant les balises suivantes:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Informations sur la ressource. Quelques paramètres possibles (tous paramètres arbitraire peut être utilsé/lu avec[[getResourceInfo]]):&lt;br /&gt;
** '''author:''' L'auteur de la ressource&lt;br /&gt;
** '''version:''' La version de la ressource&lt;br /&gt;
** '''name:''' Le nom de la ressource&lt;br /&gt;
** '''description:''' Une petite description de la ressource&lt;br /&gt;
** '''type:''' Le type de ressource, ça peut être &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; ou &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Le code source de la ressource, les paramètres possibles sont:&lt;br /&gt;
** '''src:''' Le nom du fichier&lt;br /&gt;
** '''type:''' Le type du code source: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' La map pour le gamemode, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier .map (Peut être distant. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Fichier côté client. Principalement des images, .txd, .col, .dff or .xml files. Ces fichiers seront téléchargés par le client lorsque la ressource sera chargée/lancée (ou lors de la connexion)&lt;br /&gt;
**'''src:''' le nom du fichier (peut être un chemin, ex: &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Ressource(s) utilisée(s) par votre ressource&lt;br /&gt;
**'''resource:''' Nom d'une ressource qui sera chargée&lt;br /&gt;
**'''minversion:''' Version minimum de cette '''resource''' (optionnel)&lt;br /&gt;
**'''maxversion:''' Version maximum de cette '''resource''' (optionnel)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Fichier de configuration (.xml) auquel la ressource peut accéder, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier de configuration&lt;br /&gt;
**'''type:''' Type de fichier: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Utilisé ceci pour exporter des fonctions, de votre ressource, qui pourront être utilisées par d'autres ressources [[call]]&lt;br /&gt;
**'''function:''' Nom de la fonction&lt;br /&gt;
**'''type''' Si la fonction est côté client ou serveur (valeurs valides: &amp;quot;server&amp;quot; et &amp;quot;client&amp;quot;)&lt;br /&gt;
**'''http:''' Permettre d'appeler la fonction via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Le nom du fichier HTTP (peut être un chemin)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' Le fichier html n'est pas analyser par l'intrepreteur LUA et est traité comme une donnée binaire. Doit être utiliser pour les données binaires (images principalement) (truel/false).&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' Most gamemodes use [[settings system]] to let server admins to configure it how they like. For instance you could set round time and then use [[get]] and [[set]] to get the value or change it, respectively.&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
Un exemple de fichier ''meta'' utilisant quelques unes de ces balises :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40649</id>
		<title>FR/Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Meta.xml&amp;diff=40649"/>
		<updated>2014-07-10T09:52:37Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le ficher ''meta.xml'' presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
Note: Vous pouvez essayer le generateur de Meta.xml crée par 50p: http://forum.mtasa.com/viewtopic.php?f=91&amp;amp;t=22247&lt;br /&gt;
&lt;br /&gt;
=Balises=&lt;br /&gt;
XML est un format de donnée textuel (par balisage) qui est largement utilisé pour la représentation de donnée. MTA utilise un langage basé sur XML pour décrire les métadonnées des ressources en utilisant les balises suivantes:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Informations sur la ressource. Quelques paramètres possibles (tous paramètres arbitraire peut être utilsé/lu avec[[getResourceInfo]]):&lt;br /&gt;
** '''author:''' L'auteur de la ressource&lt;br /&gt;
** '''version:''' La version de la ressource&lt;br /&gt;
** '''name:''' Le nom de la ressource&lt;br /&gt;
** '''description:''' Une petite description de la ressource&lt;br /&gt;
** '''type:''' Le type de ressource, ça peut être &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; ou &amp;quot;misc&amp;quot;.&lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Le code source de la ressource, les paramètres possibles sont:&lt;br /&gt;
** '''src:''' Le nom du fichier&lt;br /&gt;
** '''type:''' Le type du code source: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' La map pour le gamemode, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier .map (Peut être distant. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' Fichier côté client. Principalement des images, .txd, .col, .dff or .xml files. Ces fichiers seront téléchargés par le client lorsque la ressource sera chargée/lancée (ou lors de la connexion)&lt;br /&gt;
**'''src:''' le nom du fichier (peut être un chemin, ex: &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Ressource(s) utilisée(s) par votre ressource&lt;br /&gt;
**'''resource:''' Nom d'une ressource qui sera chargée&lt;br /&gt;
**'''minversion:''' Version minimum de cette '''resource''' (optionnel)&lt;br /&gt;
**'''maxversion:''' Version maximum de cette '''resource''' (optionnel)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Fichier de configuration (.xml) auquel la ressource peut accéder, les paramètres possibles sont:&lt;br /&gt;
**'''src:''' Nom du fichier de configuration&lt;br /&gt;
**'''type:''' Type de fichier: &amp;quot;client&amp;quot; ou &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' Utilisé ceci pour exporter des fonctions, de votre ressource, qui pourront être utilisées par d'autres ressources [[call]]&lt;br /&gt;
**'''function:''' Nom de la fonction&lt;br /&gt;
**'''type''' Si la fonction est côté client ou serveur (valeurs valides: &amp;quot;server&amp;quot; et &amp;quot;client&amp;quot;)&lt;br /&gt;
**'''http:''' Permettre d'appeler la fonction via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' Le nom du fichier HTTP (peut être un chemin)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' Le fichier html n'est pas analyser par l'intrepreteur LUA et est traité comme une donnée binaire. Doit être utiliser pour les données binaires (images principalement) (truel/false).&lt;br /&gt;
*'''&amp;lt;settings&amp;gt; &amp;lt;setting name=&amp;quot;&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt; &amp;lt;/settings&amp;gt;:''' Most gamemodes use [[settings system]] to let server admins to configure it how they like. For instance you could set round time and then use [[get]] and [[set]] to get the value or change it, respectively.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Un exemple de fichier ''meta'' utilisant quelques unes de ces balises :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; type=&amp;quot;gamemode&amp;quot; name=&amp;quot;Stealth&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
         &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	 &amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/meta&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40627</id>
		<title>FR/Debugage</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40627"/>
		<updated>2014-07-08T21:11:25Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Une erreur un peu plus complexe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quand vous scriptez vous pouvez passer à côté de certaines erreurs qui ne sont pas apparentes au premier coup d’œil. Cette page va essayer de vous indiquer quelques démarches à suivre pour localiser les erreurs.&lt;br /&gt;
&lt;br /&gt;
==Console de Débogage==&lt;br /&gt;
MTA a pour caractéristique de posséder une console de débogage qui comme son nom l'indique vous permet de déceler les erreurs dans les fonctions et scripts. Vous pouvez l'ouvrir en tapant ''debugscript x'' dans la console, ici ''x'' est le niveau de débogage:&lt;br /&gt;
* '''1:''' seulement les erreurs&lt;br /&gt;
* '''2:''' erreurs et warnings&lt;br /&gt;
* '''3:''' erreurs, warnings et messages d'informations&lt;br /&gt;
Ainsi, en tapant ''debugscript 3'' tout les messages seront visibles, cependant le niveau 2 est recommandé la plupart du temps pour le débogage. Quand vous testez vos scripts vous devez avoir le ''debugscript'' à disposition  , cela vous permettra de détecter facilement les fautes d'orthographes dans les fonctions ou toutes autres erreurs aussi simple.&lt;br /&gt;
&lt;br /&gt;
===Exemple===&lt;br /&gt;
L'exemple ci-dessous contient deux erreurs:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;)&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand ce bout de code va être chargé, debugscript va vous renvoyer à peu près ceci:&lt;br /&gt;
{{Debug info|Loading script failed: C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\myResource\script.lua:15: 'then' expected near ´outputChatbox'}}&lt;br /&gt;
Cela signifie que le code ne peut-être analysé/traité, car il y a une erreur de syntaxe. On vous montre le répertoire où se trouve le fichier, vous pouvez donc voir dans quelle ressource ce dernier se trouve ('myResource' dans notre cas) et bien sûr on vous donne le nom du fichier en question. Après le nom du fichier, on a le numéro de la ligne et encore après l'erreur/problème en question. C'est bien plus facile à résoudre maintenant, il manque juste 'then':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A présent le bout de code se charge et ne renvoie aucune erreur, jusqu'à ce qu'un joueur avec le pseudo 'Fedor' fasse son apparition. Le debugscript va nous renvoyer alors:&lt;br /&gt;
{{Debug error|C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\d\script.lua:15: attempt to call global 'outputChatbox' (a nil value)}}&lt;br /&gt;
Cela signifie que la fonction appelée n'existe pas, cela s'explique facilement par le fait que le nom de la fonction est ''outputChatBox'' (avec une capitale ''B''):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatBox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci n'est bien sûr qu'un exemple, il y a une multitude d'autres erreurs et problèmes, mais vous avez au moins une idée du débogage.&lt;br /&gt;
&lt;br /&gt;
==Debug logging==&lt;br /&gt;
You can also turn debug message logging on by editing ''coreconfig.xml'' in your GTA\MTA folder. You should find the following tag:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace that with a tag specifying the file you want to log messages to (file path is relative from the GTA folder):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile&amp;gt;MTA\debugscript.log&amp;lt;/debugfile&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All debug messages will be appended to the specified file from now on. To turn logging off, replace that line with an empty tag again.&lt;br /&gt;
&lt;br /&gt;
==Astuces de déboguage==&lt;br /&gt;
&lt;br /&gt;
Au lieu de foncer tête baisser dans votre code, il existe d'autres stratégies pour débusquer les erreurs. La plupart d'entres elles utilisent des messages/sorties (au niveau de la console) de déboguage qui sont différent suivant les situations.&lt;br /&gt;
&lt;br /&gt;
===Fonctions Utiles===&lt;br /&gt;
Pour commencer, il y a quelques fonctions qui peuvent être utiles pour le ''débogage''.&lt;br /&gt;
* [[outputDebugString]] ou [[outputChatBox]] pour afficher des informations.&lt;br /&gt;
* [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] sur une variable pour la convertir en chaîne de caractères, par exemple lorsque c'est un booléen.&lt;br /&gt;
* [[getElementType]] pour vérifier le type d'un élément de MTA.&lt;br /&gt;
&lt;br /&gt;
===Ajouter un message pour vérifier quand une condition ''if'', ''when'' ou ''how often'' est executée===&lt;br /&gt;
Un exemple typique qui vérifie si une condition ''if''est executée ou non. Il vous suffit d'ajouter un message que vous reconnaîtrez lorsqu'il s'affichera quand la condition sera executée.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (variable1 == variable2) then&lt;br /&gt;
	outputDebugString(&amp;quot;Condition vérifiée&amp;quot;)&lt;br /&gt;
	-- Instruction&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Une autre pratique serait de vérifier quand est-ce que la valeur de la variable est modifiée. Il faut pour cela chercher le moment où la variable est modifiée et ajouter une fonction qui permet l'affichage d'un message juste après.&lt;br /&gt;
&lt;br /&gt;
===Afficher un message pour vérifier la &amp;quot;valeur&amp;quot; d'une variable===&lt;br /&gt;
Prenons le cas ou vous voulez créer un checkpoint (marqueur), mais ce dernier n'apparaît pas à la position attendu. La première chose que vous allez faire sera de vérifier si la fonction [[createMarker]] est executée. Au lieu de faire ceci, vous pouvez vérifier les valeurs qui sont utilisées par la fonction [[createMarker]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
outputChatBox(tostring(x)..&amp;quot; &amp;quot;..tostring(y)..&amp;quot; &amp;quot;..tostring(z))&lt;br /&gt;
createMarker(x,y,z)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Ce code aura pour conséquence de vous afficher un message avec les trois valeurs des variables qui sont utilisées en tant que coordonnées pour le marqueur. Vous pouvez maintenant comparer les valeurs obtenues avec celle désirées. Le [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] vous permettra de vous assurer que les valeurs des variables seront transformées en &amp;quot;string&amp;quot; (chaîne de caractères), même si c'est un boléen.&lt;br /&gt;
&lt;br /&gt;
==Exemple==&lt;br /&gt;
Imaginons que vous créiez un ''colshape'' (figure géométrique bi/tridimensionnelle pour détecter les collisions) quelque part et que vous souhaitiez qu'un joueur reste 10 secondes dans celle-ci avant d'éxecuter un code.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand le joueur entre dans le colshape, le debugscript affiche le message suivant:&lt;br /&gt;
{{Debug error|..[path]: attempt to index global 'colshapeTimer' (a nil value)}}&lt;br /&gt;
Cela signifie que vous voulez stocker une valeur dans un tableau (à la case ''player'') qui n'existe pas. Dans l'exemple, le problème se pose quand vous voulez stocker l'id du timer dans le tableau. Nous devons donc vérifier si le tableau existe et si non en créer un.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci fait il nous reste quand même un ''warning'' (avertissement).Attendez le message et quittez à nouveau le colshape:&lt;br /&gt;
&lt;br /&gt;
{{Debug warning|[..]: Bad argument @ 'killTimer' Line: ..}}&lt;br /&gt;
&lt;br /&gt;
À part ceci (nous en parlerons plus tard) tous semble bien fonctionner. Un joueur entre dans le ''colshape'', le timer se lance, si il reste un message s'affiche, si il quitte le ''colshape'' le timer est arrêté.&lt;br /&gt;
&lt;br /&gt;
===Une erreur un peu plus complexe===&lt;br /&gt;
Cependant, pour une quelconque raison le message est envoyé deux fois quand on reste dans le cercle de collision alors qu'on est dans un véhicule. Puisque c'est le cas on conclu qu'un code est exécuté deux fois, on va déboguer pour vérifier cela.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit&amp;quot;)&lt;br /&gt;
	-- ajout d'un timer pour afficher un message (peut aussi appeler une fonction)&lt;br /&gt;
	-- stockage du timer dans un tableau d'id en utilisant le joueur comme ordre de rangement&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave&amp;quot;)&lt;br /&gt;
	-- arrête le timer quand le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nous remarquons que les deux fonctions rattachées aux événements sont éxécutées deux fois, mais seulement une lorsque qu'on est à pied. On peut donc penser que le véhicule déclenche aussi les événements. Pour confirmer cette théorie , nous allons vérifier la variable ''player'' qui '''devrait''' contenir un ''élément joueur''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- ajout d'un timer pour afficher un message (peut aussi appeler une fonction)&lt;br /&gt;
	-- stockage du timer dans un tableau d'id en utilisant le joueur comme ordre de rangement&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- arrête le timer quand le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le message de débugage nous informe que, l'une des variables ''player'' est un joueur, et que l'autre, est un véhicule. Si nous voulons éxecuter notre code seulement quand un joueur entre dans le ''colshape'', nous devons rajouter un ''if'' (condition) qui stoppera l'éxecution du code si ce n'est pas un joueur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- vérification du type de l'élement&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- ajout d'un message avec le type de l'élement&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- ajout d'un timer pour afficher un message (peut aussi appeler une fonction)&lt;br /&gt;
	-- stockage du timer dans un tableau d'id en utilisant le joueur comme ordre de rangement&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- vérification du type de l'élement&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- ajout d'un message avec le type de l'élement&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- arrête le timer quand le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant le code devrait fonctionner comme nous le souhaitions, mais nous avons toujours l'avertissement mentionné plus tôt. Cela est dû au fait que nous essayons d'arrêter un timer qui , quand le joueur est resté dans le colshape 10 secondes est éxecuté, n'existe plus. Il y a différentes façons de se débarasser de cet avertissement (si on part du principe qu'on sait qu'il n'existe plus à partir d'un certain moment et qu'on peut l'arrêter seulement si il ne s'est pas éxecuté).&lt;br /&gt;
Une des méthodes serait de vérifier si le timer stocker dans le tableau existe. Pour faire cela, nous devons utiliser [[isTimer]] avant d'arrêter le timer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Le code final ressemblerait à ceci:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- vérification du type de l'élement&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- ajout d'un message avec le type de l'élement&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- ajout d'un timer pour afficher un message (peut aussi appeler une fonction)&lt;br /&gt;
	-- stockage du timer dans un tableau d'id en utilisant le joueur comme ordre de rangement&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- vérification du type de l'élement&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- ajout d'un message avec le type de l'élement&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- arrête le timer quand le joueur quitte le colshape&lt;br /&gt;
	if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
		killTimer(colshapeTimer[player])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Debugging Performance Issues==&lt;br /&gt;
&lt;br /&gt;
Si vous serveur utilise plus de ressource qu'il ne devrait ou si vous voulez vous assurez que votre code est efficace, vous pourrez trouver les brebis galeuses avec l'outil ''performancebrowser''. Pour le lancer taper dans votre console &amp;quot;start performancebrowser&amp;quot; si cette ressource n'exite pas assurer de bien la posséder à l'emplacement adequat. Cet outil fourni un bon nombre d'information sur le debugage de perfomance. Fuite de mémoire, perte d'éléments et utilisation intensive du CPU sont facilement décelable via cet outil. Si vous utilisez l'option -d vous pourrez voir quelles fonctions utilisent de manière excéssive le CPU.&lt;br /&gt;
&lt;br /&gt;
Pour accèder au ''performancebrowser'' vous devez entrer cette adresse dans votre navigateur de recherche: http://serverIPHere:serverHTTPPortHere/performancebrowser/ Noterque le / à la fin est obligatoire. Donc par exemple: http://127.0.0.1:22005/performancebrowser/ . Ensuite, vous devez vous logguer en jeu avec un compte administrateur ou un compte ayant accès à la ressource &amp;quot;general.HTTP&amp;quot; . La plupart des informations dont vous aurez besoin se trouvent dans les catégories &amp;quot;Lua timing&amp;quot; et &amp;quot;Lua memory&amp;quot;. Chercher les valeurs qui sont plus élevées que les autres.&lt;br /&gt;
&lt;br /&gt;
===Exemples de code qui posent des problèmes de performances===&lt;br /&gt;
&lt;br /&gt;
L'ajout de données à un tableau sans les supprimer ensuite, même si ça prendra quelques mois ou années avant de poser des problèmes.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local someData = {}&lt;br /&gt;
&lt;br /&gt;
function storeData()&lt;br /&gt;
    someData[source] = true&lt;br /&gt;
    -- Rien ne gère le moment ou le joueur quitte le jeu, c'est donc considéré comme une perte de mémoire.&lt;br /&gt;
    -- Using the Lua timing tab you can detect the RAM usage of each resource.&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, storeData)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Element leaking is possible if you use temporary colshapes for whatever reason and may not destroy them. This would cause bandwidth, CPU and memory performance issues over time.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function useTemporaryCol()&lt;br /&gt;
    local col = createColCircle(some code here)&lt;br /&gt;
    if (normally this should happen) then&lt;br /&gt;
        destroyElement(col)&lt;br /&gt;
    end&lt;br /&gt;
    -- But sometimes it didn't so the script ended but the collision area remained and over time&lt;br /&gt;
    -- you may end up with hundreds to thousands of pointless collision areas. &lt;br /&gt;
    -- The Lua timing tab allows you to see the amount of elements each script has created.&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
High CPU usage resulting in the server FPS dropping so much that the server is unplayable. In under 24 hours this can create havoc on a very busy server. The amount of &amp;quot;refs&amp;quot; in the Lua timing detect this type of build up, surprisingly the Lua timing tab didn't help in this case but Lua memory did.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, function()&lt;br /&gt;
    -- Code for joiner&lt;br /&gt;
    addEventHandler(&amp;quot;onPlayerQuit&amp;quot;, root, function()&lt;br /&gt;
        -- Code for when they have quit&lt;br /&gt;
        -- See the problem? It's bound to root which the event handler is being added again and again and again&lt;br /&gt;
    end)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A function uses up a lot of your CPU because whatever it does takes a long time. This is just some function that takes a long time to complete. Without performancebrowser you'd have no idea its the cause but with performancebrowser you can see that a resource is using lots of CPU in the Lua timing tab. If you then enter: -d into the options edit box it will even tell you what file name and first line of the function that is using up so much CPU.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function someDodgyCode()&lt;br /&gt;
    for i=1, 100000 do&lt;br /&gt;
        -- some code&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[it:Guida al Debug]]&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Debugging]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40626</id>
		<title>FR/Debugage</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40626"/>
		<updated>2014-07-08T21:07:43Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Une erreur un peu plus complexe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quand vous scriptez vous pouvez passer à côté de certaines erreurs qui ne sont pas apparentes au premier coup d’œil. Cette page va essayer de vous indiquer quelques démarches à suivre pour localiser les erreurs.&lt;br /&gt;
&lt;br /&gt;
==Console de Débogage==&lt;br /&gt;
MTA a pour caractéristique de posséder une console de débogage qui comme son nom l'indique vous permet de déceler les erreurs dans les fonctions et scripts. Vous pouvez l'ouvrir en tapant ''debugscript x'' dans la console, ici ''x'' est le niveau de débogage:&lt;br /&gt;
* '''1:''' seulement les erreurs&lt;br /&gt;
* '''2:''' erreurs et warnings&lt;br /&gt;
* '''3:''' erreurs, warnings et messages d'informations&lt;br /&gt;
Ainsi, en tapant ''debugscript 3'' tout les messages seront visibles, cependant le niveau 2 est recommandé la plupart du temps pour le débogage. Quand vous testez vos scripts vous devez avoir le ''debugscript'' à disposition  , cela vous permettra de détecter facilement les fautes d'orthographes dans les fonctions ou toutes autres erreurs aussi simple.&lt;br /&gt;
&lt;br /&gt;
===Exemple===&lt;br /&gt;
L'exemple ci-dessous contient deux erreurs:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;)&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand ce bout de code va être chargé, debugscript va vous renvoyer à peu près ceci:&lt;br /&gt;
{{Debug info|Loading script failed: C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\myResource\script.lua:15: 'then' expected near ´outputChatbox'}}&lt;br /&gt;
Cela signifie que le code ne peut-être analysé/traité, car il y a une erreur de syntaxe. On vous montre le répertoire où se trouve le fichier, vous pouvez donc voir dans quelle ressource ce dernier se trouve ('myResource' dans notre cas) et bien sûr on vous donne le nom du fichier en question. Après le nom du fichier, on a le numéro de la ligne et encore après l'erreur/problème en question. C'est bien plus facile à résoudre maintenant, il manque juste 'then':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A présent le bout de code se charge et ne renvoie aucune erreur, jusqu'à ce qu'un joueur avec le pseudo 'Fedor' fasse son apparition. Le debugscript va nous renvoyer alors:&lt;br /&gt;
{{Debug error|C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\d\script.lua:15: attempt to call global 'outputChatbox' (a nil value)}}&lt;br /&gt;
Cela signifie que la fonction appelée n'existe pas, cela s'explique facilement par le fait que le nom de la fonction est ''outputChatBox'' (avec une capitale ''B''):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatBox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci n'est bien sûr qu'un exemple, il y a une multitude d'autres erreurs et problèmes, mais vous avez au moins une idée du débogage.&lt;br /&gt;
&lt;br /&gt;
==Debug logging==&lt;br /&gt;
You can also turn debug message logging on by editing ''coreconfig.xml'' in your GTA\MTA folder. You should find the following tag:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace that with a tag specifying the file you want to log messages to (file path is relative from the GTA folder):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile&amp;gt;MTA\debugscript.log&amp;lt;/debugfile&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All debug messages will be appended to the specified file from now on. To turn logging off, replace that line with an empty tag again.&lt;br /&gt;
&lt;br /&gt;
==Astuces de déboguage==&lt;br /&gt;
&lt;br /&gt;
Au lieu de foncer tête baisser dans votre code, il existe d'autres stratégies pour débusquer les erreurs. La plupart d'entres elles utilisent des messages/sorties (au niveau de la console) de déboguage qui sont différent suivant les situations.&lt;br /&gt;
&lt;br /&gt;
===Fonctions Utiles===&lt;br /&gt;
Pour commencer, il y a quelques fonctions qui peuvent être utiles pour le ''débogage''.&lt;br /&gt;
* [[outputDebugString]] ou [[outputChatBox]] pour afficher des informations.&lt;br /&gt;
* [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] sur une variable pour la convertir en chaîne de caractères, par exemple lorsque c'est un booléen.&lt;br /&gt;
* [[getElementType]] pour vérifier le type d'un élément de MTA.&lt;br /&gt;
&lt;br /&gt;
===Ajouter un message pour vérifier quand une condition ''if'', ''when'' ou ''how often'' est executée===&lt;br /&gt;
Un exemple typique qui vérifie si une condition ''if''est executée ou non. Il vous suffit d'ajouter un message que vous reconnaîtrez lorsqu'il s'affichera quand la condition sera executée.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (variable1 == variable2) then&lt;br /&gt;
	outputDebugString(&amp;quot;Condition vérifiée&amp;quot;)&lt;br /&gt;
	-- Instruction&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Une autre pratique serait de vérifier quand est-ce que la valeur de la variable est modifiée. Il faut pour cela chercher le moment où la variable est modifiée et ajouter une fonction qui permet l'affichage d'un message juste après.&lt;br /&gt;
&lt;br /&gt;
===Afficher un message pour vérifier la &amp;quot;valeur&amp;quot; d'une variable===&lt;br /&gt;
Prenons le cas ou vous voulez créer un checkpoint (marqueur), mais ce dernier n'apparaît pas à la position attendu. La première chose que vous allez faire sera de vérifier si la fonction [[createMarker]] est executée. Au lieu de faire ceci, vous pouvez vérifier les valeurs qui sont utilisées par la fonction [[createMarker]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
outputChatBox(tostring(x)..&amp;quot; &amp;quot;..tostring(y)..&amp;quot; &amp;quot;..tostring(z))&lt;br /&gt;
createMarker(x,y,z)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Ce code aura pour conséquence de vous afficher un message avec les trois valeurs des variables qui sont utilisées en tant que coordonnées pour le marqueur. Vous pouvez maintenant comparer les valeurs obtenues avec celle désirées. Le [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] vous permettra de vous assurer que les valeurs des variables seront transformées en &amp;quot;string&amp;quot; (chaîne de caractères), même si c'est un boléen.&lt;br /&gt;
&lt;br /&gt;
==Exemple==&lt;br /&gt;
Imaginons que vous créiez un ''colshape'' (figure géométrique bi/tridimensionnelle pour détecter les collisions) quelque part et que vous souhaitiez qu'un joueur reste 10 secondes dans celle-ci avant d'éxecuter un code.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand le joueur entre dans le colshape, le debugscript affiche le message suivant:&lt;br /&gt;
{{Debug error|..[path]: attempt to index global 'colshapeTimer' (a nil value)}}&lt;br /&gt;
Cela signifie que vous voulez stocker une valeur dans un tableau (à la case ''player'') qui n'existe pas. Dans l'exemple, le problème se pose quand vous voulez stocker l'id du timer dans le tableau. Nous devons donc vérifier si le tableau existe et si non en créer un.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci fait il nous reste quand même un ''warning'' (avertissement).Attendez le message et quittez à nouveau le colshape:&lt;br /&gt;
&lt;br /&gt;
{{Debug warning|[..]: Bad argument @ 'killTimer' Line: ..}}&lt;br /&gt;
&lt;br /&gt;
À part ceci (nous en parlerons plus tard) tous semble bien fonctionner. Un joueur entre dans le ''colshape'', le timer se lance, si il reste un message s'affiche, si il quitte le ''colshape'' le timer est arrêté.&lt;br /&gt;
&lt;br /&gt;
===Une erreur un peu plus complexe===&lt;br /&gt;
Cependant, pour une quelconque raison le message est envoyé deux fois quand on reste dans le cercle de collision alors qu'on est dans un véhicule. Puisque c'est le cas on conclu qu'un code est exécuté deux fois, on va déboguer pour vérifier cela.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit&amp;quot;)&lt;br /&gt;
	-- ajout d'un timer pour afficher un message (peut aussi appeler une fonction)&lt;br /&gt;
	-- stockage du timer dans un tableau d'id en utilisant le joueur comme ordre de rangement&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave&amp;quot;)&lt;br /&gt;
	-- arrête le timer quand le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nous remarquons que les deux fonctions rattachées aux événements sont éxécutées deux fois, mais seulement une lorsque qu'on est à pied. On peut donc penser que le véhicule déclenche aussi les événements. Pour confirmer cette théorie , nous allons vérifier la variable ''player'' qui '''devrait''' contenir un ''élément joueur''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- ajout d'un timer pour afficher un message (peut aussi appeler une fonction)&lt;br /&gt;
	-- stockage du timer dans un tableau d'id en utilisant le joueur comme ordre de rangement&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- arrête le timer quand le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le message de débugage nous informe que, l'une des variables ''player'' est un joueur, et que l'autre, est un véhicule. Si nous voulons éxecuter notre code seulement quand un joueur entre dans le ''colshape'', nous devons rajouter un ''if'' (condition) qui stoppera l'éxecution du code si ce n'est pas un joueur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant le code devrait fonctionner comme nous le souhaitions, mais nous avons toujours l'avertissement mentionné plus tôt. Cela est dû au fait que nous essayons d'arrêter un timer qui , quand le joueur est resté dans le colshape 10 secondes est éxecuté, n'existe plus. Il y a différentes façons de se débarasser de cet avertissement (si on part du principe qu'on sait qu'il n'existe plus à partir d'un certain moment et qu'on peut l'arrêter seulement si il ne s'est pas éxecuté).&lt;br /&gt;
Une des méthodes serait de vérifier si le timer stocker dans le tableau existe. Pour faire cela, nous devons utiliser [[isTimer]] avant d'arrêter le timer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Le code final ressemblerait à ceci:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
		killTimer(colshapeTimer[player])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Debugging Performance Issues==&lt;br /&gt;
&lt;br /&gt;
Si vous serveur utilise plus de ressource qu'il ne devrait ou si vous voulez vous assurez que votre code est efficace, vous pourrez trouver les brebis galeuses avec l'outil ''performancebrowser''. Pour le lancer taper dans votre console &amp;quot;start performancebrowser&amp;quot; si cette ressource n'exite pas assurer de bien la posséder à l'emplacement adequat. Cet outil fourni un bon nombre d'information sur le debugage de perfomance. Fuite de mémoire, perte d'éléments et utilisation intensive du CPU sont facilement décelable via cet outil. Si vous utilisez l'option -d vous pourrez voir quelles fonctions utilisent de manière excéssive le CPU.&lt;br /&gt;
&lt;br /&gt;
Pour accèder au ''performancebrowser'' vous devez entrer cette adresse dans votre navigateur de recherche: http://serverIPHere:serverHTTPPortHere/performancebrowser/ Noterque le / à la fin est obligatoire. Donc par exemple: http://127.0.0.1:22005/performancebrowser/ . Ensuite, vous devez vous logguer en jeu avec un compte administrateur ou un compte ayant accès à la ressource &amp;quot;general.HTTP&amp;quot; . La plupart des informations dont vous aurez besoin se trouvent dans les catégories &amp;quot;Lua timing&amp;quot; et &amp;quot;Lua memory&amp;quot;. Chercher les valeurs qui sont plus élevées que les autres.&lt;br /&gt;
&lt;br /&gt;
===Exemples de code qui posent des problèmes de performances===&lt;br /&gt;
&lt;br /&gt;
L'ajout de données à un tableau sans les supprimer ensuite, même si ça prendra quelques mois ou années avant de poser des problèmes.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local someData = {}&lt;br /&gt;
&lt;br /&gt;
function storeData()&lt;br /&gt;
    someData[source] = true&lt;br /&gt;
    -- Rien ne gère le moment ou le joueur quitte le jeu, c'est donc considéré comme une perte de mémoire.&lt;br /&gt;
    -- Using the Lua timing tab you can detect the RAM usage of each resource.&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, storeData)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Element leaking is possible if you use temporary colshapes for whatever reason and may not destroy them. This would cause bandwidth, CPU and memory performance issues over time.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function useTemporaryCol()&lt;br /&gt;
    local col = createColCircle(some code here)&lt;br /&gt;
    if (normally this should happen) then&lt;br /&gt;
        destroyElement(col)&lt;br /&gt;
    end&lt;br /&gt;
    -- But sometimes it didn't so the script ended but the collision area remained and over time&lt;br /&gt;
    -- you may end up with hundreds to thousands of pointless collision areas. &lt;br /&gt;
    -- The Lua timing tab allows you to see the amount of elements each script has created.&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
High CPU usage resulting in the server FPS dropping so much that the server is unplayable. In under 24 hours this can create havoc on a very busy server. The amount of &amp;quot;refs&amp;quot; in the Lua timing detect this type of build up, surprisingly the Lua timing tab didn't help in this case but Lua memory did.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, function()&lt;br /&gt;
    -- Code for joiner&lt;br /&gt;
    addEventHandler(&amp;quot;onPlayerQuit&amp;quot;, root, function()&lt;br /&gt;
        -- Code for when they have quit&lt;br /&gt;
        -- See the problem? It's bound to root which the event handler is being added again and again and again&lt;br /&gt;
    end)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A function uses up a lot of your CPU because whatever it does takes a long time. This is just some function that takes a long time to complete. Without performancebrowser you'd have no idea its the cause but with performancebrowser you can see that a resource is using lots of CPU in the Lua timing tab. If you then enter: -d into the options edit box it will even tell you what file name and first line of the function that is using up so much CPU.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function someDodgyCode()&lt;br /&gt;
    for i=1, 100000 do&lt;br /&gt;
        -- some code&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[it:Guida al Debug]]&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Debugging]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40625</id>
		<title>FR/Debugage</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40625"/>
		<updated>2014-07-08T21:06:25Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Une erreur un peu plus complexe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quand vous scriptez vous pouvez passer à côté de certaines erreurs qui ne sont pas apparentes au premier coup d’œil. Cette page va essayer de vous indiquer quelques démarches à suivre pour localiser les erreurs.&lt;br /&gt;
&lt;br /&gt;
==Console de Débogage==&lt;br /&gt;
MTA a pour caractéristique de posséder une console de débogage qui comme son nom l'indique vous permet de déceler les erreurs dans les fonctions et scripts. Vous pouvez l'ouvrir en tapant ''debugscript x'' dans la console, ici ''x'' est le niveau de débogage:&lt;br /&gt;
* '''1:''' seulement les erreurs&lt;br /&gt;
* '''2:''' erreurs et warnings&lt;br /&gt;
* '''3:''' erreurs, warnings et messages d'informations&lt;br /&gt;
Ainsi, en tapant ''debugscript 3'' tout les messages seront visibles, cependant le niveau 2 est recommandé la plupart du temps pour le débogage. Quand vous testez vos scripts vous devez avoir le ''debugscript'' à disposition  , cela vous permettra de détecter facilement les fautes d'orthographes dans les fonctions ou toutes autres erreurs aussi simple.&lt;br /&gt;
&lt;br /&gt;
===Exemple===&lt;br /&gt;
L'exemple ci-dessous contient deux erreurs:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;)&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand ce bout de code va être chargé, debugscript va vous renvoyer à peu près ceci:&lt;br /&gt;
{{Debug info|Loading script failed: C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\myResource\script.lua:15: 'then' expected near ´outputChatbox'}}&lt;br /&gt;
Cela signifie que le code ne peut-être analysé/traité, car il y a une erreur de syntaxe. On vous montre le répertoire où se trouve le fichier, vous pouvez donc voir dans quelle ressource ce dernier se trouve ('myResource' dans notre cas) et bien sûr on vous donne le nom du fichier en question. Après le nom du fichier, on a le numéro de la ligne et encore après l'erreur/problème en question. C'est bien plus facile à résoudre maintenant, il manque juste 'then':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A présent le bout de code se charge et ne renvoie aucune erreur, jusqu'à ce qu'un joueur avec le pseudo 'Fedor' fasse son apparition. Le debugscript va nous renvoyer alors:&lt;br /&gt;
{{Debug error|C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\d\script.lua:15: attempt to call global 'outputChatbox' (a nil value)}}&lt;br /&gt;
Cela signifie que la fonction appelée n'existe pas, cela s'explique facilement par le fait que le nom de la fonction est ''outputChatBox'' (avec une capitale ''B''):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatBox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci n'est bien sûr qu'un exemple, il y a une multitude d'autres erreurs et problèmes, mais vous avez au moins une idée du débogage.&lt;br /&gt;
&lt;br /&gt;
==Debug logging==&lt;br /&gt;
You can also turn debug message logging on by editing ''coreconfig.xml'' in your GTA\MTA folder. You should find the following tag:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace that with a tag specifying the file you want to log messages to (file path is relative from the GTA folder):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile&amp;gt;MTA\debugscript.log&amp;lt;/debugfile&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All debug messages will be appended to the specified file from now on. To turn logging off, replace that line with an empty tag again.&lt;br /&gt;
&lt;br /&gt;
==Astuces de déboguage==&lt;br /&gt;
&lt;br /&gt;
Au lieu de foncer tête baisser dans votre code, il existe d'autres stratégies pour débusquer les erreurs. La plupart d'entres elles utilisent des messages/sorties (au niveau de la console) de déboguage qui sont différent suivant les situations.&lt;br /&gt;
&lt;br /&gt;
===Fonctions Utiles===&lt;br /&gt;
Pour commencer, il y a quelques fonctions qui peuvent être utiles pour le ''débogage''.&lt;br /&gt;
* [[outputDebugString]] ou [[outputChatBox]] pour afficher des informations.&lt;br /&gt;
* [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] sur une variable pour la convertir en chaîne de caractères, par exemple lorsque c'est un booléen.&lt;br /&gt;
* [[getElementType]] pour vérifier le type d'un élément de MTA.&lt;br /&gt;
&lt;br /&gt;
===Ajouter un message pour vérifier quand une condition ''if'', ''when'' ou ''how often'' est executée===&lt;br /&gt;
Un exemple typique qui vérifie si une condition ''if''est executée ou non. Il vous suffit d'ajouter un message que vous reconnaîtrez lorsqu'il s'affichera quand la condition sera executée.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (variable1 == variable2) then&lt;br /&gt;
	outputDebugString(&amp;quot;Condition vérifiée&amp;quot;)&lt;br /&gt;
	-- Instruction&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Une autre pratique serait de vérifier quand est-ce que la valeur de la variable est modifiée. Il faut pour cela chercher le moment où la variable est modifiée et ajouter une fonction qui permet l'affichage d'un message juste après.&lt;br /&gt;
&lt;br /&gt;
===Afficher un message pour vérifier la &amp;quot;valeur&amp;quot; d'une variable===&lt;br /&gt;
Prenons le cas ou vous voulez créer un checkpoint (marqueur), mais ce dernier n'apparaît pas à la position attendu. La première chose que vous allez faire sera de vérifier si la fonction [[createMarker]] est executée. Au lieu de faire ceci, vous pouvez vérifier les valeurs qui sont utilisées par la fonction [[createMarker]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
outputChatBox(tostring(x)..&amp;quot; &amp;quot;..tostring(y)..&amp;quot; &amp;quot;..tostring(z))&lt;br /&gt;
createMarker(x,y,z)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Ce code aura pour conséquence de vous afficher un message avec les trois valeurs des variables qui sont utilisées en tant que coordonnées pour le marqueur. Vous pouvez maintenant comparer les valeurs obtenues avec celle désirées. Le [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] vous permettra de vous assurer que les valeurs des variables seront transformées en &amp;quot;string&amp;quot; (chaîne de caractères), même si c'est un boléen.&lt;br /&gt;
&lt;br /&gt;
==Exemple==&lt;br /&gt;
Imaginons que vous créiez un ''colshape'' (figure géométrique bi/tridimensionnelle pour détecter les collisions) quelque part et que vous souhaitiez qu'un joueur reste 10 secondes dans celle-ci avant d'éxecuter un code.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand le joueur entre dans le colshape, le debugscript affiche le message suivant:&lt;br /&gt;
{{Debug error|..[path]: attempt to index global 'colshapeTimer' (a nil value)}}&lt;br /&gt;
Cela signifie que vous voulez stocker une valeur dans un tableau (à la case ''player'') qui n'existe pas. Dans l'exemple, le problème se pose quand vous voulez stocker l'id du timer dans le tableau. Nous devons donc vérifier si le tableau existe et si non en créer un.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci fait il nous reste quand même un ''warning'' (avertissement).Attendez le message et quittez à nouveau le colshape:&lt;br /&gt;
&lt;br /&gt;
{{Debug warning|[..]: Bad argument @ 'killTimer' Line: ..}}&lt;br /&gt;
&lt;br /&gt;
À part ceci (nous en parlerons plus tard) tous semble bien fonctionner. Un joueur entre dans le ''colshape'', le timer se lance, si il reste un message s'affiche, si il quitte le ''colshape'' le timer est arrêté.&lt;br /&gt;
&lt;br /&gt;
===Une erreur un peu plus complexe===&lt;br /&gt;
Cependant, pour une quelconque raison le message est envoyé deux fois quand on reste dans le cercle de collision alors qu'on est dans un véhicule. Puisque c'est le cas on conclu qu'un code est exécuté deux fois, on va déboguer pour vérifier cela.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit&amp;quot;)&lt;br /&gt;
	-- ajout d'un timer pour afficher un message (peut aussi appeler une fonction)&lt;br /&gt;
	-- stockage du timer dans un tableau d'id en utilisant le joueur comme ordre de rangement&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave&amp;quot;)&lt;br /&gt;
	-- arrête le timer quand le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nous remarquons que les deux fonctions rattachées aux événements sont éxécutées deux fois, mais seulement une lorsque qu'on est à pied. On peut donc penser que le véhicule déclenche aussi les événements. Pour confirmer cette théorie , nous allons vérifier la variable ''player'' qui '''devrait''' contenir un ''élément joueur''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le message de débugage nous informe que, l'une des variables ''player'' est un joueur, et que l'autre, est un véhicule. Si nous voulons éxecuter notre code seulement quand un joueur entre dans le ''colshape'', nous devons rajouter un ''if'' (condition) qui stoppera l'éxecution du code si ce n'est pas un joueur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant le code devrait fonctionner comme nous le souhaitions, mais nous avons toujours l'avertissement mentionné plus tôt. Cela est dû au fait que nous essayons d'arrêter un timer qui , quand le joueur est resté dans le colshape 10 secondes est éxecuté, n'existe plus. Il y a différentes façons de se débarasser de cet avertissement (si on part du principe qu'on sait qu'il n'existe plus à partir d'un certain moment et qu'on peut l'arrêter seulement si il ne s'est pas éxecuté).&lt;br /&gt;
Une des méthodes serait de vérifier si le timer stocker dans le tableau existe. Pour faire cela, nous devons utiliser [[isTimer]] avant d'arrêter le timer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Le code final ressemblerait à ceci:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
		killTimer(colshapeTimer[player])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Debugging Performance Issues==&lt;br /&gt;
&lt;br /&gt;
Si vous serveur utilise plus de ressource qu'il ne devrait ou si vous voulez vous assurez que votre code est efficace, vous pourrez trouver les brebis galeuses avec l'outil ''performancebrowser''. Pour le lancer taper dans votre console &amp;quot;start performancebrowser&amp;quot; si cette ressource n'exite pas assurer de bien la posséder à l'emplacement adequat. Cet outil fourni un bon nombre d'information sur le debugage de perfomance. Fuite de mémoire, perte d'éléments et utilisation intensive du CPU sont facilement décelable via cet outil. Si vous utilisez l'option -d vous pourrez voir quelles fonctions utilisent de manière excéssive le CPU.&lt;br /&gt;
&lt;br /&gt;
Pour accèder au ''performancebrowser'' vous devez entrer cette adresse dans votre navigateur de recherche: http://serverIPHere:serverHTTPPortHere/performancebrowser/ Noterque le / à la fin est obligatoire. Donc par exemple: http://127.0.0.1:22005/performancebrowser/ . Ensuite, vous devez vous logguer en jeu avec un compte administrateur ou un compte ayant accès à la ressource &amp;quot;general.HTTP&amp;quot; . La plupart des informations dont vous aurez besoin se trouvent dans les catégories &amp;quot;Lua timing&amp;quot; et &amp;quot;Lua memory&amp;quot;. Chercher les valeurs qui sont plus élevées que les autres.&lt;br /&gt;
&lt;br /&gt;
===Exemples de code qui posent des problèmes de performances===&lt;br /&gt;
&lt;br /&gt;
L'ajout de données à un tableau sans les supprimer ensuite, même si ça prendra quelques mois ou années avant de poser des problèmes.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local someData = {}&lt;br /&gt;
&lt;br /&gt;
function storeData()&lt;br /&gt;
    someData[source] = true&lt;br /&gt;
    -- Rien ne gère le moment ou le joueur quitte le jeu, c'est donc considéré comme une perte de mémoire.&lt;br /&gt;
    -- Using the Lua timing tab you can detect the RAM usage of each resource.&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, storeData)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Element leaking is possible if you use temporary colshapes for whatever reason and may not destroy them. This would cause bandwidth, CPU and memory performance issues over time.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function useTemporaryCol()&lt;br /&gt;
    local col = createColCircle(some code here)&lt;br /&gt;
    if (normally this should happen) then&lt;br /&gt;
        destroyElement(col)&lt;br /&gt;
    end&lt;br /&gt;
    -- But sometimes it didn't so the script ended but the collision area remained and over time&lt;br /&gt;
    -- you may end up with hundreds to thousands of pointless collision areas. &lt;br /&gt;
    -- The Lua timing tab allows you to see the amount of elements each script has created.&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
High CPU usage resulting in the server FPS dropping so much that the server is unplayable. In under 24 hours this can create havoc on a very busy server. The amount of &amp;quot;refs&amp;quot; in the Lua timing detect this type of build up, surprisingly the Lua timing tab didn't help in this case but Lua memory did.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, function()&lt;br /&gt;
    -- Code for joiner&lt;br /&gt;
    addEventHandler(&amp;quot;onPlayerQuit&amp;quot;, root, function()&lt;br /&gt;
        -- Code for when they have quit&lt;br /&gt;
        -- See the problem? It's bound to root which the event handler is being added again and again and again&lt;br /&gt;
    end)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A function uses up a lot of your CPU because whatever it does takes a long time. This is just some function that takes a long time to complete. Without performancebrowser you'd have no idea its the cause but with performancebrowser you can see that a resource is using lots of CPU in the Lua timing tab. If you then enter: -d into the options edit box it will even tell you what file name and first line of the function that is using up so much CPU.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function someDodgyCode()&lt;br /&gt;
    for i=1, 100000 do&lt;br /&gt;
        -- some code&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[it:Guida al Debug]]&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Debugging]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40624</id>
		<title>FR/Debugage</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40624"/>
		<updated>2014-07-08T21:02:25Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Une erreur un peu plus complexe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quand vous scriptez vous pouvez passer à côté de certaines erreurs qui ne sont pas apparentes au premier coup d’œil. Cette page va essayer de vous indiquer quelques démarches à suivre pour localiser les erreurs.&lt;br /&gt;
&lt;br /&gt;
==Console de Débogage==&lt;br /&gt;
MTA a pour caractéristique de posséder une console de débogage qui comme son nom l'indique vous permet de déceler les erreurs dans les fonctions et scripts. Vous pouvez l'ouvrir en tapant ''debugscript x'' dans la console, ici ''x'' est le niveau de débogage:&lt;br /&gt;
* '''1:''' seulement les erreurs&lt;br /&gt;
* '''2:''' erreurs et warnings&lt;br /&gt;
* '''3:''' erreurs, warnings et messages d'informations&lt;br /&gt;
Ainsi, en tapant ''debugscript 3'' tout les messages seront visibles, cependant le niveau 2 est recommandé la plupart du temps pour le débogage. Quand vous testez vos scripts vous devez avoir le ''debugscript'' à disposition  , cela vous permettra de détecter facilement les fautes d'orthographes dans les fonctions ou toutes autres erreurs aussi simple.&lt;br /&gt;
&lt;br /&gt;
===Exemple===&lt;br /&gt;
L'exemple ci-dessous contient deux erreurs:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;)&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand ce bout de code va être chargé, debugscript va vous renvoyer à peu près ceci:&lt;br /&gt;
{{Debug info|Loading script failed: C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\myResource\script.lua:15: 'then' expected near ´outputChatbox'}}&lt;br /&gt;
Cela signifie que le code ne peut-être analysé/traité, car il y a une erreur de syntaxe. On vous montre le répertoire où se trouve le fichier, vous pouvez donc voir dans quelle ressource ce dernier se trouve ('myResource' dans notre cas) et bien sûr on vous donne le nom du fichier en question. Après le nom du fichier, on a le numéro de la ligne et encore après l'erreur/problème en question. C'est bien plus facile à résoudre maintenant, il manque juste 'then':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A présent le bout de code se charge et ne renvoie aucune erreur, jusqu'à ce qu'un joueur avec le pseudo 'Fedor' fasse son apparition. Le debugscript va nous renvoyer alors:&lt;br /&gt;
{{Debug error|C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\d\script.lua:15: attempt to call global 'outputChatbox' (a nil value)}}&lt;br /&gt;
Cela signifie que la fonction appelée n'existe pas, cela s'explique facilement par le fait que le nom de la fonction est ''outputChatBox'' (avec une capitale ''B''):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatBox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci n'est bien sûr qu'un exemple, il y a une multitude d'autres erreurs et problèmes, mais vous avez au moins une idée du débogage.&lt;br /&gt;
&lt;br /&gt;
==Debug logging==&lt;br /&gt;
You can also turn debug message logging on by editing ''coreconfig.xml'' in your GTA\MTA folder. You should find the following tag:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace that with a tag specifying the file you want to log messages to (file path is relative from the GTA folder):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile&amp;gt;MTA\debugscript.log&amp;lt;/debugfile&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All debug messages will be appended to the specified file from now on. To turn logging off, replace that line with an empty tag again.&lt;br /&gt;
&lt;br /&gt;
==Astuces de déboguage==&lt;br /&gt;
&lt;br /&gt;
Au lieu de foncer tête baisser dans votre code, il existe d'autres stratégies pour débusquer les erreurs. La plupart d'entres elles utilisent des messages/sorties (au niveau de la console) de déboguage qui sont différent suivant les situations.&lt;br /&gt;
&lt;br /&gt;
===Fonctions Utiles===&lt;br /&gt;
Pour commencer, il y a quelques fonctions qui peuvent être utiles pour le ''débogage''.&lt;br /&gt;
* [[outputDebugString]] ou [[outputChatBox]] pour afficher des informations.&lt;br /&gt;
* [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] sur une variable pour la convertir en chaîne de caractères, par exemple lorsque c'est un booléen.&lt;br /&gt;
* [[getElementType]] pour vérifier le type d'un élément de MTA.&lt;br /&gt;
&lt;br /&gt;
===Ajouter un message pour vérifier quand une condition ''if'', ''when'' ou ''how often'' est executée===&lt;br /&gt;
Un exemple typique qui vérifie si une condition ''if''est executée ou non. Il vous suffit d'ajouter un message que vous reconnaîtrez lorsqu'il s'affichera quand la condition sera executée.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (variable1 == variable2) then&lt;br /&gt;
	outputDebugString(&amp;quot;Condition vérifiée&amp;quot;)&lt;br /&gt;
	-- Instruction&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Une autre pratique serait de vérifier quand est-ce que la valeur de la variable est modifiée. Il faut pour cela chercher le moment où la variable est modifiée et ajouter une fonction qui permet l'affichage d'un message juste après.&lt;br /&gt;
&lt;br /&gt;
===Afficher un message pour vérifier la &amp;quot;valeur&amp;quot; d'une variable===&lt;br /&gt;
Prenons le cas ou vous voulez créer un checkpoint (marqueur), mais ce dernier n'apparaît pas à la position attendu. La première chose que vous allez faire sera de vérifier si la fonction [[createMarker]] est executée. Au lieu de faire ceci, vous pouvez vérifier les valeurs qui sont utilisées par la fonction [[createMarker]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
outputChatBox(tostring(x)..&amp;quot; &amp;quot;..tostring(y)..&amp;quot; &amp;quot;..tostring(z))&lt;br /&gt;
createMarker(x,y,z)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Ce code aura pour conséquence de vous afficher un message avec les trois valeurs des variables qui sont utilisées en tant que coordonnées pour le marqueur. Vous pouvez maintenant comparer les valeurs obtenues avec celle désirées. Le [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] vous permettra de vous assurer que les valeurs des variables seront transformées en &amp;quot;string&amp;quot; (chaîne de caractères), même si c'est un boléen.&lt;br /&gt;
&lt;br /&gt;
==Exemple==&lt;br /&gt;
Imaginons que vous créiez un ''colshape'' (figure géométrique bi/tridimensionnelle pour détecter les collisions) quelque part et que vous souhaitiez qu'un joueur reste 10 secondes dans celle-ci avant d'éxecuter un code.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand le joueur entre dans le colshape, le debugscript affiche le message suivant:&lt;br /&gt;
{{Debug error|..[path]: attempt to index global 'colshapeTimer' (a nil value)}}&lt;br /&gt;
Cela signifie que vous voulez stocker une valeur dans un tableau (à la case ''player'') qui n'existe pas. Dans l'exemple, le problème se pose quand vous voulez stocker l'id du timer dans le tableau. Nous devons donc vérifier si le tableau existe et si non en créer un.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci fait il nous reste quand même un ''warning'' (avertissement).Attendez le message et quittez à nouveau le colshape:&lt;br /&gt;
&lt;br /&gt;
{{Debug warning|[..]: Bad argument @ 'killTimer' Line: ..}}&lt;br /&gt;
&lt;br /&gt;
À part ceci (nous en parlerons plus tard) tous semble bien fonctionner. Un joueur entre dans le ''colshape'', le timer se lance, si il reste un message s'affiche, si il quitte le ''colshape'' le timer est arrêté.&lt;br /&gt;
&lt;br /&gt;
===Une erreur un peu plus complexe===&lt;br /&gt;
Cependant, pour une quelconque raison le message est envoyé deux fois quand on reste dans le cercle de collision alors qu'on est dans un véhicule. Puisque c'est le cas on conclu qu'un code est exécuté deux fois, on va déboguer pour vérifier cela.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit&amp;quot;)&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave&amp;quot;)&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nous remarquons que les deux fonctions rattachées aux événements sont éxécutées deux fois, mais seulement une lorsque qu'on est à pied. On peut donc penser que le véhicule déclenche aussi les événements. Pour confirmer cette théorie , nous allons vérifier la variable ''player'' qui '''devrait''' contenir un ''élément joueur''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le message de débugage nous informe que, l'une des variables ''player'' est un joueur, et que l'autre, est un véhicule. Si nous voulons éxecuter notre code seulement quand un joueur entre dans le ''colshape'', nous devons rajouter un ''if'' (condition) qui stoppera l'éxecution du code si ce n'est pas un joueur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant le code devrait fonctionner comme nous le souhaitions, mais nous avons toujours l'avertissement mentionné plus tôt. Cela est dû au fait que nous essayons d'arrêter un timer qui , quand le joueur est resté dans le colshape 10 secondes est éxecuté, n'existe plus. Il y a différentes façons de se débarasser de cet avertissement (si on part du principe qu'on sait qu'il n'existe plus à partir d'un certain moment et qu'on peut l'arrêter seulement si il ne s'est pas éxecuté).&lt;br /&gt;
Une des méthodes serait de vérifier si le timer stocker dans le tableau existe. Pour faire cela, nous devons utiliser [[isTimer]] avant d'arrêter le timer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Le code final ressemblerait à ceci:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
		killTimer(colshapeTimer[player])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Debugging Performance Issues==&lt;br /&gt;
&lt;br /&gt;
Si vous serveur utilise plus de ressource qu'il ne devrait ou si vous voulez vous assurez que votre code est efficace, vous pourrez trouver les brebis galeuses avec l'outil ''performancebrowser''. Pour le lancer taper dans votre console &amp;quot;start performancebrowser&amp;quot; si cette ressource n'exite pas assurer de bien la posséder à l'emplacement adequat. Cet outil fourni un bon nombre d'information sur le debugage de perfomance. Fuite de mémoire, perte d'éléments et utilisation intensive du CPU sont facilement décelable via cet outil. Si vous utilisez l'option -d vous pourrez voir quelles fonctions utilisent de manière excéssive le CPU.&lt;br /&gt;
&lt;br /&gt;
Pour accèder au ''performancebrowser'' vous devez entrer cette adresse dans votre navigateur de recherche: http://serverIPHere:serverHTTPPortHere/performancebrowser/ Noterque le / à la fin est obligatoire. Donc par exemple: http://127.0.0.1:22005/performancebrowser/ . Ensuite, vous devez vous logguer en jeu avec un compte administrateur ou un compte ayant accès à la ressource &amp;quot;general.HTTP&amp;quot; . La plupart des informations dont vous aurez besoin se trouvent dans les catégories &amp;quot;Lua timing&amp;quot; et &amp;quot;Lua memory&amp;quot;. Chercher les valeurs qui sont plus élevées que les autres.&lt;br /&gt;
&lt;br /&gt;
===Exemples de code qui posent des problèmes de performances===&lt;br /&gt;
&lt;br /&gt;
L'ajout de données à un tableau sans les supprimer ensuite, même si ça prendra quelques mois ou années avant de poser des problèmes.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local someData = {}&lt;br /&gt;
&lt;br /&gt;
function storeData()&lt;br /&gt;
    someData[source] = true&lt;br /&gt;
    -- Rien ne gère le moment ou le joueur quitte le jeu, c'est donc considéré comme une perte de mémoire.&lt;br /&gt;
    -- Using the Lua timing tab you can detect the RAM usage of each resource.&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, storeData)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Element leaking is possible if you use temporary colshapes for whatever reason and may not destroy them. This would cause bandwidth, CPU and memory performance issues over time.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function useTemporaryCol()&lt;br /&gt;
    local col = createColCircle(some code here)&lt;br /&gt;
    if (normally this should happen) then&lt;br /&gt;
        destroyElement(col)&lt;br /&gt;
    end&lt;br /&gt;
    -- But sometimes it didn't so the script ended but the collision area remained and over time&lt;br /&gt;
    -- you may end up with hundreds to thousands of pointless collision areas. &lt;br /&gt;
    -- The Lua timing tab allows you to see the amount of elements each script has created.&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
High CPU usage resulting in the server FPS dropping so much that the server is unplayable. In under 24 hours this can create havoc on a very busy server. The amount of &amp;quot;refs&amp;quot; in the Lua timing detect this type of build up, surprisingly the Lua timing tab didn't help in this case but Lua memory did.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, function()&lt;br /&gt;
    -- Code for joiner&lt;br /&gt;
    addEventHandler(&amp;quot;onPlayerQuit&amp;quot;, root, function()&lt;br /&gt;
        -- Code for when they have quit&lt;br /&gt;
        -- See the problem? It's bound to root which the event handler is being added again and again and again&lt;br /&gt;
    end)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A function uses up a lot of your CPU because whatever it does takes a long time. This is just some function that takes a long time to complete. Without performancebrowser you'd have no idea its the cause but with performancebrowser you can see that a resource is using lots of CPU in the Lua timing tab. If you then enter: -d into the options edit box it will even tell you what file name and first line of the function that is using up so much CPU.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function someDodgyCode()&lt;br /&gt;
    for i=1, 100000 do&lt;br /&gt;
        -- some code&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[it:Guida al Debug]]&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Debugging]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40623</id>
		<title>FR/Debugage</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40623"/>
		<updated>2014-07-08T21:01:56Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Une erreur un peu plus complexe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quand vous scriptez vous pouvez passer à côté de certaines erreurs qui ne sont pas apparentes au premier coup d’œil. Cette page va essayer de vous indiquer quelques démarches à suivre pour localiser les erreurs.&lt;br /&gt;
&lt;br /&gt;
==Console de Débogage==&lt;br /&gt;
MTA a pour caractéristique de posséder une console de débogage qui comme son nom l'indique vous permet de déceler les erreurs dans les fonctions et scripts. Vous pouvez l'ouvrir en tapant ''debugscript x'' dans la console, ici ''x'' est le niveau de débogage:&lt;br /&gt;
* '''1:''' seulement les erreurs&lt;br /&gt;
* '''2:''' erreurs et warnings&lt;br /&gt;
* '''3:''' erreurs, warnings et messages d'informations&lt;br /&gt;
Ainsi, en tapant ''debugscript 3'' tout les messages seront visibles, cependant le niveau 2 est recommandé la plupart du temps pour le débogage. Quand vous testez vos scripts vous devez avoir le ''debugscript'' à disposition  , cela vous permettra de détecter facilement les fautes d'orthographes dans les fonctions ou toutes autres erreurs aussi simple.&lt;br /&gt;
&lt;br /&gt;
===Exemple===&lt;br /&gt;
L'exemple ci-dessous contient deux erreurs:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;)&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand ce bout de code va être chargé, debugscript va vous renvoyer à peu près ceci:&lt;br /&gt;
{{Debug info|Loading script failed: C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\myResource\script.lua:15: 'then' expected near ´outputChatbox'}}&lt;br /&gt;
Cela signifie que le code ne peut-être analysé/traité, car il y a une erreur de syntaxe. On vous montre le répertoire où se trouve le fichier, vous pouvez donc voir dans quelle ressource ce dernier se trouve ('myResource' dans notre cas) et bien sûr on vous donne le nom du fichier en question. Après le nom du fichier, on a le numéro de la ligne et encore après l'erreur/problème en question. C'est bien plus facile à résoudre maintenant, il manque juste 'then':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A présent le bout de code se charge et ne renvoie aucune erreur, jusqu'à ce qu'un joueur avec le pseudo 'Fedor' fasse son apparition. Le debugscript va nous renvoyer alors:&lt;br /&gt;
{{Debug error|C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\d\script.lua:15: attempt to call global 'outputChatbox' (a nil value)}}&lt;br /&gt;
Cela signifie que la fonction appelée n'existe pas, cela s'explique facilement par le fait que le nom de la fonction est ''outputChatBox'' (avec une capitale ''B''):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatBox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci n'est bien sûr qu'un exemple, il y a une multitude d'autres erreurs et problèmes, mais vous avez au moins une idée du débogage.&lt;br /&gt;
&lt;br /&gt;
==Debug logging==&lt;br /&gt;
You can also turn debug message logging on by editing ''coreconfig.xml'' in your GTA\MTA folder. You should find the following tag:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace that with a tag specifying the file you want to log messages to (file path is relative from the GTA folder):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile&amp;gt;MTA\debugscript.log&amp;lt;/debugfile&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All debug messages will be appended to the specified file from now on. To turn logging off, replace that line with an empty tag again.&lt;br /&gt;
&lt;br /&gt;
==Astuces de déboguage==&lt;br /&gt;
&lt;br /&gt;
Au lieu de foncer tête baisser dans votre code, il existe d'autres stratégies pour débusquer les erreurs. La plupart d'entres elles utilisent des messages/sorties (au niveau de la console) de déboguage qui sont différent suivant les situations.&lt;br /&gt;
&lt;br /&gt;
===Fonctions Utiles===&lt;br /&gt;
Pour commencer, il y a quelques fonctions qui peuvent être utiles pour le ''débogage''.&lt;br /&gt;
* [[outputDebugString]] ou [[outputChatBox]] pour afficher des informations.&lt;br /&gt;
* [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] sur une variable pour la convertir en chaîne de caractères, par exemple lorsque c'est un booléen.&lt;br /&gt;
* [[getElementType]] pour vérifier le type d'un élément de MTA.&lt;br /&gt;
&lt;br /&gt;
===Ajouter un message pour vérifier quand une condition ''if'', ''when'' ou ''how often'' est executée===&lt;br /&gt;
Un exemple typique qui vérifie si une condition ''if''est executée ou non. Il vous suffit d'ajouter un message que vous reconnaîtrez lorsqu'il s'affichera quand la condition sera executée.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (variable1 == variable2) then&lt;br /&gt;
	outputDebugString(&amp;quot;Condition vérifiée&amp;quot;)&lt;br /&gt;
	-- Instruction&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Une autre pratique serait de vérifier quand est-ce que la valeur de la variable est modifiée. Il faut pour cela chercher le moment où la variable est modifiée et ajouter une fonction qui permet l'affichage d'un message juste après.&lt;br /&gt;
&lt;br /&gt;
===Afficher un message pour vérifier la &amp;quot;valeur&amp;quot; d'une variable===&lt;br /&gt;
Prenons le cas ou vous voulez créer un checkpoint (marqueur), mais ce dernier n'apparaît pas à la position attendu. La première chose que vous allez faire sera de vérifier si la fonction [[createMarker]] est executée. Au lieu de faire ceci, vous pouvez vérifier les valeurs qui sont utilisées par la fonction [[createMarker]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
outputChatBox(tostring(x)..&amp;quot; &amp;quot;..tostring(y)..&amp;quot; &amp;quot;..tostring(z))&lt;br /&gt;
createMarker(x,y,z)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Ce code aura pour conséquence de vous afficher un message avec les trois valeurs des variables qui sont utilisées en tant que coordonnées pour le marqueur. Vous pouvez maintenant comparer les valeurs obtenues avec celle désirées. Le [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] vous permettra de vous assurer que les valeurs des variables seront transformées en &amp;quot;string&amp;quot; (chaîne de caractères), même si c'est un boléen.&lt;br /&gt;
&lt;br /&gt;
==Exemple==&lt;br /&gt;
Imaginons que vous créiez un ''colshape'' (figure géométrique bi/tridimensionnelle pour détecter les collisions) quelque part et que vous souhaitiez qu'un joueur reste 10 secondes dans celle-ci avant d'éxecuter un code.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand le joueur entre dans le colshape, le debugscript affiche le message suivant:&lt;br /&gt;
{{Debug error|..[path]: attempt to index global 'colshapeTimer' (a nil value)}}&lt;br /&gt;
Cela signifie que vous voulez stocker une valeur dans un tableau (à la case ''player'') qui n'existe pas. Dans l'exemple, le problème se pose quand vous voulez stocker l'id du timer dans le tableau. Nous devons donc vérifier si le tableau existe et si non en créer un.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci fait il nous reste quand même un ''warning'' (avertissement).Attendez le message et quittez à nouveau le colshape:&lt;br /&gt;
&lt;br /&gt;
{{Debug warning|[..]: Bad argument @ 'killTimer' Line: ..}}&lt;br /&gt;
&lt;br /&gt;
À part ceci (nous en parlerons plus tard) tous semble bien fonctionner. Un joueur entre dans le ''colshape'', le timer se lance, si il reste un message s'affiche, si il quitte le ''colshape'' le timer est arrêté.&lt;br /&gt;
&lt;br /&gt;
===Une erreur un peu plus complexe===&lt;br /&gt;
Cependant, pour une quelconque raison le message est envoyé deux fois quand on reste dans le cercle de collision alors qu'on est dans un véhicule. Since it would appear some code is executed twice, we add debug messages to check this.Puisque c'est le cas on conclu qu'un code est exécuté deux fois, on va déboguer pour vérifier cela.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit&amp;quot;)&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave&amp;quot;)&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nous remarquons que les deux fonctions rattachées aux événements sont éxécutées deux fois, mais seulement une lorsque qu'on est à pied. On peut donc penser que le véhicule déclenche aussi les événements. Pour confirmer cette théorie , nous allons vérifier la variable ''player'' qui '''devrait''' contenir un ''élément joueur''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le message de débugage nous informe que, l'une des variables ''player'' est un joueur, et que l'autre, est un véhicule. Si nous voulons éxecuter notre code seulement quand un joueur entre dans le ''colshape'', nous devons rajouter un ''if'' (condition) qui stoppera l'éxecution du code si ce n'est pas un joueur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant le code devrait fonctionner comme nous le souhaitions, mais nous avons toujours l'avertissement mentionné plus tôt. Cela est dû au fait que nous essayons d'arrêter un timer qui , quand le joueur est resté dans le colshape 10 secondes est éxecuté, n'existe plus. Il y a différentes façons de se débarasser de cet avertissement (si on part du principe qu'on sait qu'il n'existe plus à partir d'un certain moment et qu'on peut l'arrêter seulement si il ne s'est pas éxecuté).&lt;br /&gt;
Une des méthodes serait de vérifier si le timer stocker dans le tableau existe. Pour faire cela, nous devons utiliser [[isTimer]] avant d'arrêter le timer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Le code final ressemblerait à ceci:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
		killTimer(colshapeTimer[player])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Debugging Performance Issues==&lt;br /&gt;
&lt;br /&gt;
Si vous serveur utilise plus de ressource qu'il ne devrait ou si vous voulez vous assurez que votre code est efficace, vous pourrez trouver les brebis galeuses avec l'outil ''performancebrowser''. Pour le lancer taper dans votre console &amp;quot;start performancebrowser&amp;quot; si cette ressource n'exite pas assurer de bien la posséder à l'emplacement adequat. Cet outil fourni un bon nombre d'information sur le debugage de perfomance. Fuite de mémoire, perte d'éléments et utilisation intensive du CPU sont facilement décelable via cet outil. Si vous utilisez l'option -d vous pourrez voir quelles fonctions utilisent de manière excéssive le CPU.&lt;br /&gt;
&lt;br /&gt;
Pour accèder au ''performancebrowser'' vous devez entrer cette adresse dans votre navigateur de recherche: http://serverIPHere:serverHTTPPortHere/performancebrowser/ Noterque le / à la fin est obligatoire. Donc par exemple: http://127.0.0.1:22005/performancebrowser/ . Ensuite, vous devez vous logguer en jeu avec un compte administrateur ou un compte ayant accès à la ressource &amp;quot;general.HTTP&amp;quot; . La plupart des informations dont vous aurez besoin se trouvent dans les catégories &amp;quot;Lua timing&amp;quot; et &amp;quot;Lua memory&amp;quot;. Chercher les valeurs qui sont plus élevées que les autres.&lt;br /&gt;
&lt;br /&gt;
===Exemples de code qui posent des problèmes de performances===&lt;br /&gt;
&lt;br /&gt;
L'ajout de données à un tableau sans les supprimer ensuite, même si ça prendra quelques mois ou années avant de poser des problèmes.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local someData = {}&lt;br /&gt;
&lt;br /&gt;
function storeData()&lt;br /&gt;
    someData[source] = true&lt;br /&gt;
    -- Rien ne gère le moment ou le joueur quitte le jeu, c'est donc considéré comme une perte de mémoire.&lt;br /&gt;
    -- Using the Lua timing tab you can detect the RAM usage of each resource.&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, storeData)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Element leaking is possible if you use temporary colshapes for whatever reason and may not destroy them. This would cause bandwidth, CPU and memory performance issues over time.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function useTemporaryCol()&lt;br /&gt;
    local col = createColCircle(some code here)&lt;br /&gt;
    if (normally this should happen) then&lt;br /&gt;
        destroyElement(col)&lt;br /&gt;
    end&lt;br /&gt;
    -- But sometimes it didn't so the script ended but the collision area remained and over time&lt;br /&gt;
    -- you may end up with hundreds to thousands of pointless collision areas. &lt;br /&gt;
    -- The Lua timing tab allows you to see the amount of elements each script has created.&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
High CPU usage resulting in the server FPS dropping so much that the server is unplayable. In under 24 hours this can create havoc on a very busy server. The amount of &amp;quot;refs&amp;quot; in the Lua timing detect this type of build up, surprisingly the Lua timing tab didn't help in this case but Lua memory did.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, function()&lt;br /&gt;
    -- Code for joiner&lt;br /&gt;
    addEventHandler(&amp;quot;onPlayerQuit&amp;quot;, root, function()&lt;br /&gt;
        -- Code for when they have quit&lt;br /&gt;
        -- See the problem? It's bound to root which the event handler is being added again and again and again&lt;br /&gt;
    end)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A function uses up a lot of your CPU because whatever it does takes a long time. This is just some function that takes a long time to complete. Without performancebrowser you'd have no idea its the cause but with performancebrowser you can see that a resource is using lots of CPU in the Lua timing tab. If you then enter: -d into the options edit box it will even tell you what file name and first line of the function that is using up so much CPU.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function someDodgyCode()&lt;br /&gt;
    for i=1, 100000 do&lt;br /&gt;
        -- some code&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[it:Guida al Debug]]&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Debugging]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40622</id>
		<title>Page d'accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Page_d%27accueil&amp;diff=40622"/>
		<updated>2014-07-08T20:59:25Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Programmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background: #FFEEAA; padding: 5px; float:right; width: 30%;&amp;quot;&amp;gt;Dernière version stable de '''Multi Theft Auto: San Andreas''' est '''{{Current Version|full}}'''. Rendez-vous sur la [http://mtasa.com/ page principale] pour la télécharger.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Vous pouvez aussi télécharger une [http://nightly.mtasa.com/ beta] pour avoir la dernière version ( non stable ).&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Bienvenue sur le wiki de Multi Theft Auto. Sur ce wiki, vous trouverez toutes les informations sur Multi Theft Auto.&lt;br /&gt;
&lt;br /&gt;
Il y a [[How you can help|différents moyens de nous aider]]: créer une map, un gamemode, rediger des articles sur des fonctions, écrire un exemple, écrire un tutorial ou juste jouer à MTA et nous rapportez les bugs trouvés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
====Pour commencer====&lt;br /&gt;
&lt;br /&gt;
* [[FR/Manuel_Client|Manuel Client]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:DrawKiie DrawKiie] )&lt;br /&gt;
* [[FR/Manuel_Serveur|Manuel Serveur]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Problemes_connus|Problèmes connus]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/Migrer_de_MTARace_a_MTASA_1.0.x|Migrer de MTA:Race à MTA:SA 1.0.x]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
* [[FR/A propos des Map|A propos des Map]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche] )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Programmer====&lt;br /&gt;
&lt;br /&gt;
* [[FR/Introduction_Programmation|Introduction: La programmation]]&lt;br /&gt;
* [[FR/Introduction_GUI|Introduction: Le GUI]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:FatalTeror FatalTerror] )&lt;br /&gt;
* [[FR/Debugage|Tutoriel: Le débugage]] - Comment trouver les erreurs dans son script&lt;br /&gt;
* [[FR/Ressources|Introduction: Les ressources]] (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[FR/Ressource_Acces_Internet|Introduction: L'accès depuis internet]] - Comment créer un site à partir d'une ressource (Traduction : [http://wiki.multitheftauto.com/wiki/User:Myk3L Myk3L])&lt;br /&gt;
** [[:Category:Resource|Catalogue des ressources]] &lt;br /&gt;
** [[FR/Meta.xml|Meta.xml]] - Derière chaque ressource ce trouve une meta pour la définir&lt;br /&gt;
** [[FR/ACL|ACL]] - Access Control List, pour définir les autorisations&lt;br /&gt;
* [[FR/Ecrire_Gamemode|Créer un gamemode]] ( Traduction: [http://wiki.multitheftauto.com/wiki/User:Rouche Rouche])&lt;br /&gt;
* [[FR/Fonctions_Utiles|Fonctions Utiles]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bases de données====&lt;br /&gt;
Cette section décrit toutes les capacités fournies par le LUA/MTA ou par les ressources.&lt;br /&gt;
* [[:Category:Resource|Catalogue des ressources]] - Vous devriez le lire pour réaliser un script approprié.&lt;br /&gt;
* [[FR/Les_scripts_clients| Les scripts clients]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Aide générale du LUA====&lt;br /&gt;
Des pages conçues pour aider votre compréhension du Lua&lt;br /&gt;
*[http://www.lua.org/pil/index.html &amp;quot;Programming in Lua&amp;quot;]&lt;br /&gt;
**[http://www.lua.org/manual/5.1/#index Les fonctions Lua]&lt;br /&gt;
*[http://lua-users.org/wiki/TutorialDirectory wiki Lua]&lt;br /&gt;
*[http://nixstaller.berlios.de/manual/0.2/nixstaller_9.html Un guide général au Lua de Nixstaller]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; style=&amp;quot;vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Map Editor====&lt;br /&gt;
*[[Resource:Editor|Manuel]]&lt;br /&gt;
*[[Resource:Editor/EDF|Editor Definition Format]]&lt;br /&gt;
*[[Resource:Editor/Plugins|Plugins]]&lt;br /&gt;
*[[Resource:Editor#FAQ|Questions Fréquentes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Développer Multi Theft Auto====&lt;br /&gt;
* [[FR/Compiler_MTASA|Compiler MTASA sur Windows]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_Mac_OS_X|Compiler MTASA sur Mac OS X]]&lt;br /&gt;
* [[FR/Compiler_MTASA_Server_sur_GNU_Linux|Compiler MTASA sur GNU/Linux]]&lt;br /&gt;
* [[FR/Directives_de_codage|Directives de codage]]&lt;br /&gt;
* [http://code.google.com/p/mtasa-blue Google Code SVN]&lt;br /&gt;
* [[FR/Roadmap|Roadmap]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px; background:#CCCCFF;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Références====&lt;br /&gt;
* [[FR/Fonctions_Clients|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Clients|Events Clients]]&lt;br /&gt;
* [[FR/Fonctions_Serveurs|Fonctions Clients]]&lt;br /&gt;
* [[FR/Events_Serveurs|Events Clients]]&lt;br /&gt;
&amp;lt;!-- Incomplet * [[Module functions|Server-side external module scripting functions list]] --&amp;gt;&lt;br /&gt;
* [[FR/MTA Classes|MTA Classes]] - Les descriptions détaillées de tous les types personnalisés MTA&lt;br /&gt;
** [[FR/Element|MTA Elements]] / [[Element tree]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px dotted #AAAAAA;padding:4px 8px 8px 8px;margin:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[[Id|ID Listes]]====&lt;br /&gt;
*[[FR/Animations|Animations]]&lt;br /&gt;
*[[FR/Skins_Personnages|Skins Personnages]]&lt;br /&gt;
*[[FR/Vetements_CJ|Vêtements CJ]]&lt;br /&gt;
*[[FR/Garage|Garage IDs]]&lt;br /&gt;
*[[FR/Interieurs_IDs|Intérieurs IDs]]&lt;br /&gt;
*[[FR/Materiel_IDs|Matériel IDs]]&lt;br /&gt;
*[[FR/Projectiles|Projectiles]]&lt;br /&gt;
*[[FR/Radar Blips|Radar Blips]]&lt;br /&gt;
*[[FR/Sons|Sons]]&lt;br /&gt;
*[[FR/Vehicule_IDs|ID des véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Couleurs|Couleurs véhicules]]&lt;br /&gt;
*[[FR/Vehicule_Upgrades|Tuning IDs]]&lt;br /&gt;
*[[FR/Armes|Armes]]&lt;br /&gt;
*[[FR/Meteos|Météos]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
{{Languages list|fr}}&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40621</id>
		<title>FR/Debugage</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40621"/>
		<updated>2014-07-08T20:57:24Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Astuces de déboguage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quand vous scriptez vous pouvez passer à côté de certaines erreurs qui ne sont pas apparentes au premier coup d’œil. Cette page va essayer de vous indiquer quelques démarches à suivre pour localiser les erreurs.&lt;br /&gt;
&lt;br /&gt;
==Console de Débogage==&lt;br /&gt;
MTA a pour caractéristique de posséder une console de débogage qui comme son nom l'indique vous permet de déceler les erreurs dans les fonctions et scripts. Vous pouvez l'ouvrir en tapant ''debugscript x'' dans la console, ici ''x'' est le niveau de débogage:&lt;br /&gt;
* '''1:''' seulement les erreurs&lt;br /&gt;
* '''2:''' erreurs et warnings&lt;br /&gt;
* '''3:''' erreurs, warnings et messages d'informations&lt;br /&gt;
Ainsi, en tapant ''debugscript 3'' tout les messages seront visibles, cependant le niveau 2 est recommandé la plupart du temps pour le débogage. Quand vous testez vos scripts vous devez avoir le ''debugscript'' à disposition  , cela vous permettra de détecter facilement les fautes d'orthographes dans les fonctions ou toutes autres erreurs aussi simple.&lt;br /&gt;
&lt;br /&gt;
===Exemple===&lt;br /&gt;
L'exemple ci-dessous contient deux erreurs:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;)&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand ce bout de code va être chargé, debugscript va vous renvoyer à peu près ceci:&lt;br /&gt;
{{Debug info|Loading script failed: C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\myResource\script.lua:15: 'then' expected near ´outputChatbox'}}&lt;br /&gt;
Cela signifie que le code ne peut-être analysé/traité, car il y a une erreur de syntaxe. On vous montre le répertoire où se trouve le fichier, vous pouvez donc voir dans quelle ressource ce dernier se trouve ('myResource' dans notre cas) et bien sûr on vous donne le nom du fichier en question. Après le nom du fichier, on a le numéro de la ligne et encore après l'erreur/problème en question. C'est bien plus facile à résoudre maintenant, il manque juste 'then':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A présent le bout de code se charge et ne renvoie aucune erreur, jusqu'à ce qu'un joueur avec le pseudo 'Fedor' fasse son apparition. Le debugscript va nous renvoyer alors:&lt;br /&gt;
{{Debug error|C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\d\script.lua:15: attempt to call global 'outputChatbox' (a nil value)}}&lt;br /&gt;
Cela signifie que la fonction appelée n'existe pas, cela s'explique facilement par le fait que le nom de la fonction est ''outputChatBox'' (avec une capitale ''B''):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatBox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci n'est bien sûr qu'un exemple, il y a une multitude d'autres erreurs et problèmes, mais vous avez au moins une idée du débogage.&lt;br /&gt;
&lt;br /&gt;
==Debug logging==&lt;br /&gt;
You can also turn debug message logging on by editing ''coreconfig.xml'' in your GTA\MTA folder. You should find the following tag:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace that with a tag specifying the file you want to log messages to (file path is relative from the GTA folder):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile&amp;gt;MTA\debugscript.log&amp;lt;/debugfile&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All debug messages will be appended to the specified file from now on. To turn logging off, replace that line with an empty tag again.&lt;br /&gt;
&lt;br /&gt;
==Astuces de déboguage==&lt;br /&gt;
&lt;br /&gt;
Au lieu de foncer tête baisser dans votre code, il existe d'autres stratégies pour débusquer les erreurs. La plupart d'entres elles utilisent des messages/sorties (au niveau de la console) de déboguage qui sont différent suivant les situations.&lt;br /&gt;
&lt;br /&gt;
===Fonctions Utiles===&lt;br /&gt;
Pour commencer, il y a quelques fonctions qui peuvent être utiles pour le ''débogage''.&lt;br /&gt;
* [[outputDebugString]] ou [[outputChatBox]] pour afficher des informations.&lt;br /&gt;
* [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] sur une variable pour la convertir en chaîne de caractères, par exemple lorsque c'est un booléen.&lt;br /&gt;
* [[getElementType]] pour vérifier le type d'un élément de MTA.&lt;br /&gt;
&lt;br /&gt;
===Ajouter un message pour vérifier quand une condition ''if'', ''when'' ou ''how often'' est executée===&lt;br /&gt;
Un exemple typique qui vérifie si une condition ''if''est executée ou non. Il vous suffit d'ajouter un message que vous reconnaîtrez lorsqu'il s'affichera quand la condition sera executée.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (variable1 == variable2) then&lt;br /&gt;
	outputDebugString(&amp;quot;Condition vérifiée&amp;quot;)&lt;br /&gt;
	-- Instruction&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Une autre pratique serait de vérifier quand est-ce que la valeur de la variable est modifiée. Il faut pour cela chercher le moment où la variable est modifiée et ajouter une fonction qui permet l'affichage d'un message juste après.&lt;br /&gt;
&lt;br /&gt;
===Afficher un message pour vérifier la &amp;quot;valeur&amp;quot; d'une variable===&lt;br /&gt;
Prenons le cas ou vous voulez créer un checkpoint (marqueur), mais ce dernier n'apparaît pas à la position attendu. La première chose que vous allez faire sera de vérifier si la fonction [[createMarker]] est executée. Au lieu de faire ceci, vous pouvez vérifier les valeurs qui sont utilisées par la fonction [[createMarker]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
outputChatBox(tostring(x)..&amp;quot; &amp;quot;..tostring(y)..&amp;quot; &amp;quot;..tostring(z))&lt;br /&gt;
createMarker(x,y,z)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Ce code aura pour conséquence de vous afficher un message avec les trois valeurs des variables qui sont utilisées en tant que coordonnées pour le marqueur. Vous pouvez maintenant comparer les valeurs obtenues avec celle désirées. Le [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] vous permettra de vous assurer que les valeurs des variables seront transformées en &amp;quot;string&amp;quot; (chaîne de caractères), même si c'est un boléen.&lt;br /&gt;
&lt;br /&gt;
==Exemple==&lt;br /&gt;
Imaginons que vous créiez un ''colshape'' (figure géométrique bi/tridimensionnelle pour détecter les collisions) quelque part et que vous souhaitiez qu'un joueur reste 10 secondes dans celle-ci avant d'éxecuter un code.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand le joueur entre dans le colshape, le debugscript affiche le message suivant:&lt;br /&gt;
{{Debug error|..[path]: attempt to index global 'colshapeTimer' (a nil value)}}&lt;br /&gt;
Cela signifie que vous voulez stocker une valeur dans un tableau (à la case ''player'') qui n'existe pas. Dans l'exemple, le problème se pose quand vous voulez stocker l'id du timer dans le tableau. Nous devons donc vérifier si le tableau existe et si non en créer un.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci fait il nous reste quand même un ''warning'' (avertissement).Attendez le message et quittez à nouveau le colshape:&lt;br /&gt;
&lt;br /&gt;
{{Debug warning|[..]: Bad argument @ 'killTimer' Line: ..}}&lt;br /&gt;
&lt;br /&gt;
À part ceci (nous en parlerons plus tard) tous semble bien fonctionner. Un joueur entre dans le ''colshape'', le timer se lance, si il reste un message s'affiche, si il quitte le ''colshape'' le timer est arrêté.&lt;br /&gt;
&lt;br /&gt;
===Une erreur un peu plus complexe===&lt;br /&gt;
Cependant, pour une quelconque raison le message est envoyé deux fois quand on reste dans le cercle de collision alors qu'on est dans un véhicule. Since it would appear some code is executed twice, we add debug messages to check this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit&amp;quot;)&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave&amp;quot;)&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nous remarquons que les deux fonctions rattachées aux événements sont éxécutées deux fois, mais seulement une lorsque qu'on est à pied. On peut donc penser que le véhicule déclenche aussi les événements. Pour confirmer cette théorie , nous allons vérifier la variable ''player'' qui '''devrait''' contenir un ''élément joueur''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le message de débugage nous informe que, l'une des variables ''player'' est un joueur, et que l'autre, est un véhicule. Si nous voulons éxecuter notre code seulement quand un joueur entre dans le ''colshape'', nous devons rajouter un ''if'' (condition) qui stoppera l'éxecution du code si ce n'est pas un joueur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant le code devrait fonctionner comme nous le souhaitions, mais nous avons toujours l'avertissement mentionné plus tôt. Cela est dû au fait que nous essayons d'arrêter un timer qui , quand le joueur est resté dans le colshape 10 secondes est éxecuté, n'existe plus. Il y a différentes façons de se débarasser de cet avertissement (si on part du principe qu'on sait qu'il n'existe plus à partir d'un certain moment et qu'on peut l'arrêter seulement si il ne s'est pas éxecuté).&lt;br /&gt;
Une des méthodes serait de vérifier si le timer stocker dans le tableau existe. Pour faire cela, nous devons utiliser [[isTimer]] avant d'arrêter le timer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Le code final ressemblerait à ceci:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
		killTimer(colshapeTimer[player])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging Performance Issues==&lt;br /&gt;
&lt;br /&gt;
Si vous serveur utilise plus de ressource qu'il ne devrait ou si vous voulez vous assurez que votre code est efficace, vous pourrez trouver les brebis galeuses avec l'outil ''performancebrowser''. Pour le lancer taper dans votre console &amp;quot;start performancebrowser&amp;quot; si cette ressource n'exite pas assurer de bien la posséder à l'emplacement adequat. Cet outil fourni un bon nombre d'information sur le debugage de perfomance. Fuite de mémoire, perte d'éléments et utilisation intensive du CPU sont facilement décelable via cet outil. Si vous utilisez l'option -d vous pourrez voir quelles fonctions utilisent de manière excéssive le CPU.&lt;br /&gt;
&lt;br /&gt;
Pour accèder au ''performancebrowser'' vous devez entrer cette adresse dans votre navigateur de recherche: http://serverIPHere:serverHTTPPortHere/performancebrowser/ Noterque le / à la fin est obligatoire. Donc par exemple: http://127.0.0.1:22005/performancebrowser/ . Ensuite, vous devez vous logguer en jeu avec un compte administrateur ou un compte ayant accès à la ressource &amp;quot;general.HTTP&amp;quot; . La plupart des informations dont vous aurez besoin se trouvent dans les catégories &amp;quot;Lua timing&amp;quot; et &amp;quot;Lua memory&amp;quot;. Chercher les valeurs qui sont plus élevées que les autres.&lt;br /&gt;
&lt;br /&gt;
===Exemples de code qui posent des problèmes de performances===&lt;br /&gt;
&lt;br /&gt;
L'ajout de données à un tableau sans les supprimer ensuite, même si ça prendra quelques mois ou années avant de poser des problèmes.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local someData = {}&lt;br /&gt;
&lt;br /&gt;
function storeData()&lt;br /&gt;
    someData[source] = true&lt;br /&gt;
    -- Rien ne gère le moment ou le joueur quitte le jeu, c'est donc considéré comme une perte de mémoire.&lt;br /&gt;
    -- Using the Lua timing tab you can detect the RAM usage of each resource.&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, storeData)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Element leaking is possible if you use temporary colshapes for whatever reason and may not destroy them. This would cause bandwidth, CPU and memory performance issues over time.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function useTemporaryCol()&lt;br /&gt;
    local col = createColCircle(some code here)&lt;br /&gt;
    if (normally this should happen) then&lt;br /&gt;
        destroyElement(col)&lt;br /&gt;
    end&lt;br /&gt;
    -- But sometimes it didn't so the script ended but the collision area remained and over time&lt;br /&gt;
    -- you may end up with hundreds to thousands of pointless collision areas. &lt;br /&gt;
    -- The Lua timing tab allows you to see the amount of elements each script has created.&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
High CPU usage resulting in the server FPS dropping so much that the server is unplayable. In under 24 hours this can create havoc on a very busy server. The amount of &amp;quot;refs&amp;quot; in the Lua timing detect this type of build up, surprisingly the Lua timing tab didn't help in this case but Lua memory did.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, function()&lt;br /&gt;
    -- Code for joiner&lt;br /&gt;
    addEventHandler(&amp;quot;onPlayerQuit&amp;quot;, root, function()&lt;br /&gt;
        -- Code for when they have quit&lt;br /&gt;
        -- See the problem? It's bound to root which the event handler is being added again and again and again&lt;br /&gt;
    end)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A function uses up a lot of your CPU because whatever it does takes a long time. This is just some function that takes a long time to complete. Without performancebrowser you'd have no idea its the cause but with performancebrowser you can see that a resource is using lots of CPU in the Lua timing tab. If you then enter: -d into the options edit box it will even tell you what file name and first line of the function that is using up so much CPU.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function someDodgyCode()&lt;br /&gt;
    for i=1, 100000 do&lt;br /&gt;
        -- some code&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[it:Guida al Debug]]&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Debugging]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40620</id>
		<title>FR/Debugage</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FR/Debugage&amp;diff=40620"/>
		<updated>2014-07-08T20:55:59Z</updated>

		<summary type="html">&lt;p&gt;V1ncenzo: /* Astuces de Déboggage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quand vous scriptez vous pouvez passer à côté de certaines erreurs qui ne sont pas apparentes au premier coup d’œil. Cette page va essayer de vous indiquer quelques démarches à suivre pour localiser les erreurs.&lt;br /&gt;
&lt;br /&gt;
==Console de Débogage==&lt;br /&gt;
MTA a pour caractéristique de posséder une console de débogage qui comme son nom l'indique vous permet de déceler les erreurs dans les fonctions et scripts. Vous pouvez l'ouvrir en tapant ''debugscript x'' dans la console, ici ''x'' est le niveau de débogage:&lt;br /&gt;
* '''1:''' seulement les erreurs&lt;br /&gt;
* '''2:''' erreurs et warnings&lt;br /&gt;
* '''3:''' erreurs, warnings et messages d'informations&lt;br /&gt;
Ainsi, en tapant ''debugscript 3'' tout les messages seront visibles, cependant le niveau 2 est recommandé la plupart du temps pour le débogage. Quand vous testez vos scripts vous devez avoir le ''debugscript'' à disposition  , cela vous permettra de détecter facilement les fautes d'orthographes dans les fonctions ou toutes autres erreurs aussi simple.&lt;br /&gt;
&lt;br /&gt;
===Exemple===&lt;br /&gt;
L'exemple ci-dessous contient deux erreurs:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;)&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand ce bout de code va être chargé, debugscript va vous renvoyer à peu près ceci:&lt;br /&gt;
{{Debug info|Loading script failed: C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\myResource\script.lua:15: 'then' expected near ´outputChatbox'}}&lt;br /&gt;
Cela signifie que le code ne peut-être analysé/traité, car il y a une erreur de syntaxe. On vous montre le répertoire où se trouve le fichier, vous pouvez donc voir dans quelle ressource ce dernier se trouve ('myResource' dans notre cas) et bien sûr on vous donne le nom du fichier en question. Après le nom du fichier, on a le numéro de la ligne et encore après l'erreur/problème en question. C'est bien plus facile à résoudre maintenant, il manque juste 'then':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatbox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A présent le bout de code se charge et ne renvoie aucune erreur, jusqu'à ce qu'un joueur avec le pseudo 'Fedor' fasse son apparition. Le debugscript va nous renvoyer alors:&lt;br /&gt;
{{Debug error|C:\&amp;lt;server path&amp;gt;\mods\deathmatch\resources\d\script.lua:15: attempt to call global 'outputChatbox' (a nil value)}}&lt;br /&gt;
Cela signifie que la fonction appelée n'existe pas, cela s'explique facilement par le fait que le nom de la fonction est ''outputChatBox'' (avec une capitale ''B''):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (getPlayerName(player) == &amp;quot;Fedor&amp;quot;) then&lt;br /&gt;
	outputChatBox(&amp;quot;Hello Fedor&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci n'est bien sûr qu'un exemple, il y a une multitude d'autres erreurs et problèmes, mais vous avez au moins une idée du débogage.&lt;br /&gt;
&lt;br /&gt;
==Debug logging==&lt;br /&gt;
You can also turn debug message logging on by editing ''coreconfig.xml'' in your GTA\MTA folder. You should find the following tag:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace that with a tag specifying the file you want to log messages to (file path is relative from the GTA folder):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;debugfile&amp;gt;MTA\debugscript.log&amp;lt;/debugfile&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All debug messages will be appended to the specified file from now on. To turn logging off, replace that line with an empty tag again.&lt;br /&gt;
&lt;br /&gt;
==Debug strategies==&lt;br /&gt;
There are several strategies that support finding errors, apart from going through the code of course. Most of them include outputting debug messages, with differing information depending on the situtation.&lt;br /&gt;
Au lieu de foncer tête baisser dans votre code, il existe d'autres stratégies pour débusquer les erreurs. La plupart d'entres elles utilisent des messages/sorties (au niveau de la console) de déboggage qui sont différent suivant les situations.&lt;br /&gt;
&lt;br /&gt;
===Fonctions Utiles===&lt;br /&gt;
Pour commencer, il y a quelques fonctions qui peuvent être utiles pour le ''débogage''.&lt;br /&gt;
* [[outputDebugString]] ou [[outputChatBox]] pour afficher des informations.&lt;br /&gt;
* [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] sur une variable pour la convertir en chaîne de caractères, par exemple lorsque c'est un booléen.&lt;br /&gt;
* [[getElementType]] pour vérifier le type d'un élément de MTA.&lt;br /&gt;
&lt;br /&gt;
===Ajouter un message pour vérifier quand une condition ''if'', ''when'' ou ''how often'' est executée===&lt;br /&gt;
Un exemple typique qui vérifie si une condition ''if''est executée ou non. Il vous suffit d'ajouter un message que vous reconnaîtrez lorsqu'il s'affichera quand la condition sera executée.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (variable1 == variable2) then&lt;br /&gt;
	outputDebugString(&amp;quot;Condition vérifiée&amp;quot;)&lt;br /&gt;
	-- Instruction&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Une autre pratique serait de vérifier quand est-ce que la valeur de la variable est modifiée. Il faut pour cela chercher le moment où la variable est modifiée et ajouter une fonction qui permet l'affichage d'un message juste après.&lt;br /&gt;
&lt;br /&gt;
===Afficher un message pour vérifier la &amp;quot;valeur&amp;quot; d'une variable===&lt;br /&gt;
Prenons le cas ou vous voulez créer un checkpoint (marqueur), mais ce dernier n'apparaît pas à la position attendu. La première chose que vous allez faire sera de vérifier si la fonction [[createMarker]] est executée. Au lieu de faire ceci, vous pouvez vérifier les valeurs qui sont utilisées par la fonction [[createMarker]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
outputChatBox(tostring(x)..&amp;quot; &amp;quot;..tostring(y)..&amp;quot; &amp;quot;..tostring(z))&lt;br /&gt;
createMarker(x,y,z)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Ce code aura pour conséquence de vous afficher un message avec les trois valeurs des variables qui sont utilisées en tant que coordonnées pour le marqueur. Vous pouvez maintenant comparer les valeurs obtenues avec celle désirées. Le [http://www.lua.org/manual/5.1/manual.html#pdf-tostring tostring()] vous permettra de vous assurer que les valeurs des variables seront transformées en &amp;quot;string&amp;quot; (chaîne de caractères), même si c'est un boléen.&lt;br /&gt;
&lt;br /&gt;
==Exemple==&lt;br /&gt;
Imaginons que vous créiez un ''colshape'' (figure géométrique bi/tridimensionnelle pour détecter les collisions) quelque part et que vous souhaitiez qu'un joueur reste 10 secondes dans celle-ci avant d'éxecuter un code.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand le joueur entre dans le colshape, le debugscript affiche le message suivant:&lt;br /&gt;
{{Debug error|..[path]: attempt to index global 'colshapeTimer' (a nil value)}}&lt;br /&gt;
Cela signifie que vous voulez stocker une valeur dans un tableau (à la case ''player'') qui n'existe pas. Dans l'exemple, le problème se pose quand vous voulez stocker l'id du timer dans le tableau. Nous devons donc vérifier si le tableau existe et si non en créer un.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- défini un timer pour afficher un message (le timer peut très bien éxécuter une fonction)&lt;br /&gt;
	-- stocke l'id du timer dans un tableau en utilisant le joueur (''player'') comme index/case.&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;Le joueur est depuis 10 secondes dans le colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- arrête le timer dès que le joueur quitte le colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ceci fait il nous reste quand même un ''warning'' (avertissement).Attendez le message et quittez à nouveau le colshape:&lt;br /&gt;
&lt;br /&gt;
{{Debug warning|[..]: Bad argument @ 'killTimer' Line: ..}}&lt;br /&gt;
&lt;br /&gt;
À part ceci (nous en parlerons plus tard) tous semble bien fonctionner. Un joueur entre dans le ''colshape'', le timer se lance, si il reste un message s'affiche, si il quitte le ''colshape'' le timer est arrêté.&lt;br /&gt;
&lt;br /&gt;
===Une erreur un peu plus complexe===&lt;br /&gt;
Cependant, pour une quelconque raison le message est envoyé deux fois quand on reste dans le cercle de collision alors qu'on est dans un véhicule. Since it would appear some code is executed twice, we add debug messages to check this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit&amp;quot;)&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave&amp;quot;)&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nous remarquons que les deux fonctions rattachées aux événements sont éxécutées deux fois, mais seulement une lorsque qu'on est à pied. On peut donc penser que le véhicule déclenche aussi les événements. Pour confirmer cette théorie , nous allons vérifier la variable ''player'' qui '''devrait''' contenir un ''élément joueur''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- ajout d'un message de debugage avec le type de l'élément&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le message de débugage nous informe que, l'une des variables ''player'' est un joueur, et que l'autre, est un véhicule. Si nous voulons éxecuter notre code seulement quand un joueur entre dans le ''colshape'', nous devons rajouter un ''if'' (condition) qui stoppera l'éxecution du code si ce n'est pas un joueur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant le code devrait fonctionner comme nous le souhaitions, mais nous avons toujours l'avertissement mentionné plus tôt. Cela est dû au fait que nous essayons d'arrêter un timer qui , quand le joueur est resté dans le colshape 10 secondes est éxecuté, n'existe plus. Il y a différentes façons de se débarasser de cet avertissement (si on part du principe qu'on sait qu'il n'existe plus à partir d'un certain moment et qu'on peut l'arrêter seulement si il ne s'est pas éxecuté).&lt;br /&gt;
Une des méthodes serait de vérifier si le timer stocker dans le tableau existe. Pour faire cela, nous devons utiliser [[isTimer]] avant d'arrêter le timer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
	killTimer(colshapeTimer[player])&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Le code final ressemblerait à ceci:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function colShapeHit(player)&lt;br /&gt;
	if (colshapeTimer == nil) then&lt;br /&gt;
		colshapeTimer = {}&lt;br /&gt;
	end&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeHit &amp;quot;..getElementType(player))&lt;br /&gt;
	-- set a timer to output a message (could as well execute another function)&lt;br /&gt;
	-- store the timer id in a table, using the player as index&lt;br /&gt;
	colshapeTimer[player] = setTimer(outputChatBox,10000,1,&amp;quot;The player stayed 10 seconds in the colshape!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeHit&amp;quot;,getRootElement(),colShapeHit)&lt;br /&gt;
&lt;br /&gt;
function colShapeLeave(player)&lt;br /&gt;
	-- add a check for the element type&lt;br /&gt;
	if (getElementType(player) ~= &amp;quot;player&amp;quot;) then return end&lt;br /&gt;
	-- add a debug message, with the element type&lt;br /&gt;
	outputDebugString(&amp;quot;colShapeLeave &amp;quot;..getElementType(player))&lt;br /&gt;
	-- kill the timer when the player leaves the colshape&lt;br /&gt;
	if (isTimer(colshapeTimer[player])) then&lt;br /&gt;
		killTimer(colshapeTimer[player])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onColShapeLeave&amp;quot;,getRootElement(),colShapeLeave)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging Performance Issues==&lt;br /&gt;
&lt;br /&gt;
Si vous serveur utilise plus de ressource qu'il ne devrait ou si vous voulez vous assurez que votre code est efficace, vous pourrez trouver les brebis galeuses avec l'outil ''performancebrowser''. Pour le lancer taper dans votre console &amp;quot;start performancebrowser&amp;quot; si cette ressource n'exite pas assurer de bien la posséder à l'emplacement adequat. Cet outil fourni un bon nombre d'information sur le debugage de perfomance. Fuite de mémoire, perte d'éléments et utilisation intensive du CPU sont facilement décelable via cet outil. Si vous utilisez l'option -d vous pourrez voir quelles fonctions utilisent de manière excéssive le CPU.&lt;br /&gt;
&lt;br /&gt;
Pour accèder au ''performancebrowser'' vous devez entrer cette adresse dans votre navigateur de recherche: http://serverIPHere:serverHTTPPortHere/performancebrowser/ Noterque le / à la fin est obligatoire. Donc par exemple: http://127.0.0.1:22005/performancebrowser/ . Ensuite, vous devez vous logguer en jeu avec un compte administrateur ou un compte ayant accès à la ressource &amp;quot;general.HTTP&amp;quot; . La plupart des informations dont vous aurez besoin se trouvent dans les catégories &amp;quot;Lua timing&amp;quot; et &amp;quot;Lua memory&amp;quot;. Chercher les valeurs qui sont plus élevées que les autres.&lt;br /&gt;
&lt;br /&gt;
===Exemples de code qui posent des problèmes de performances===&lt;br /&gt;
&lt;br /&gt;
L'ajout de données à un tableau sans les supprimer ensuite, même si ça prendra quelques mois ou années avant de poser des problèmes.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local someData = {}&lt;br /&gt;
&lt;br /&gt;
function storeData()&lt;br /&gt;
    someData[source] = true&lt;br /&gt;
    -- Rien ne gère le moment ou le joueur quitte le jeu, c'est donc considéré comme une perte de mémoire.&lt;br /&gt;
    -- Using the Lua timing tab you can detect the RAM usage of each resource.&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, storeData)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Element leaking is possible if you use temporary colshapes for whatever reason and may not destroy them. This would cause bandwidth, CPU and memory performance issues over time.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function useTemporaryCol()&lt;br /&gt;
    local col = createColCircle(some code here)&lt;br /&gt;
    if (normally this should happen) then&lt;br /&gt;
        destroyElement(col)&lt;br /&gt;
    end&lt;br /&gt;
    -- But sometimes it didn't so the script ended but the collision area remained and over time&lt;br /&gt;
    -- you may end up with hundreds to thousands of pointless collision areas. &lt;br /&gt;
    -- The Lua timing tab allows you to see the amount of elements each script has created.&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
High CPU usage resulting in the server FPS dropping so much that the server is unplayable. In under 24 hours this can create havoc on a very busy server. The amount of &amp;quot;refs&amp;quot; in the Lua timing detect this type of build up, surprisingly the Lua timing tab didn't help in this case but Lua memory did.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerJoin&amp;quot;, root, function()&lt;br /&gt;
    -- Code for joiner&lt;br /&gt;
    addEventHandler(&amp;quot;onPlayerQuit&amp;quot;, root, function()&lt;br /&gt;
        -- Code for when they have quit&lt;br /&gt;
        -- See the problem? It's bound to root which the event handler is being added again and again and again&lt;br /&gt;
    end)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A function uses up a lot of your CPU because whatever it does takes a long time. This is just some function that takes a long time to complete. Without performancebrowser you'd have no idea its the cause but with performancebrowser you can see that a resource is using lots of CPU in the Lua timing tab. If you then enter: -d into the options edit box it will even tell you what file name and first line of the function that is using up so much CPU.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function someDodgyCode()&lt;br /&gt;
    for i=1, 100000 do&lt;br /&gt;
        -- some code&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[it:Guida al Debug]]&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[ru:Debugging]]&lt;/div&gt;</summary>
		<author><name>V1ncenzo</name></author>
	</entry>
</feed>