Composition d`une ligne de mapping

Transcription

Composition d`une ligne de mapping
Composition d’une ligne de mapping
‘Type de composant’(‘ID du composant’, ‘Position X’, ‘Position Y’, ‘Position Z ‘, ‘Rotation X-Z’, ‘Rotation R-Y’, ‘Rotation R-Z’,
‘World ID’, ‘Interior ID’, ‘Player ID ‘, ‘Float Distance’, ‘Float Distance’);
_________________________________________________________________________________________________________
Les types de composants les plus répandu :
• CreateObject
• CreatePickup
• CreateDynamicObject
• RemoveBuildingForPlayer
• CreateActor
_________________________________________________________________________________________________________
_________________________________________________________________________________________________________
Les ID de composant les plus répandu :
• Les objets (https://wiki.sa-mp.com/wiki/Model_ID)
• Les pickup/icon (https://wiki.sa-mp.com/wiki/Pickup_IDs)
• Les playerid (Correspond à l’ID du joueur)
_________________________________________________________________________________________________________
_________________________________________________________________________________________________________
La position X correspond à l’axe horizontal Est > Ouest / Ouest > Est.
La position Y correspond à l’axe horizontal Nord > Sud / Sud > Nord.
La position Z correspond à l’axe vertical Haut > Bas / Bas > Haut.
_________________________________________________________________________________________________________
_________________________________________________________________________________________________________
La rotation R-Z correspond à la rotation sur l’axe Z de lui-même (Cela modifie la rotation de l’objet sur sa face du dessus ou du
bas). Il s’agit de la rotation la plus commune.
La rotation R-Y correspond à la rotation sur l’axe Y de lui-même (Cela modifie la rotation de l’objet sur sa face droite ou gauche).
La rotation R-X correspond à la rotation sur l’axe X de lui-même (Cela modifie la rotation de l’objet sur sa face avant ou arrière).
_________________________________________________________________________________________________________
_________________________________________________________________________________________________________
Le World ID correspond à un monde virtuel définit par son ID. Pour voir un mapping ou un joueur il est nécessaire de se trouver
dans le même World ID que lui.
L’Interior ID correspond à un intérieur virtuel définit par son ID. Vous pouvez être au même endroit qu’un joueur, dans le même
World ID, vous pourrais lui parler mais pas le voir s’il n’est pas dans le même Interior ID que vous.
Le Player ID ne relève pas du mapping, il est plus utile dans le cadre d’un script système.
Le Float Distance correspond à la distance d’affichage d’un type de composant. La valeur est réglée par défaut sur 300, ce qui
correspond à 300 mètres. Il est possible de la modifier par exemple avec 600, vous apercevrais donc le type de composant en
question à partir de 600 mètres. Le Float Distance se trouve à deux reprises dans le code mais ce doit d’être identique lorsqu’on
le modifie.
Dans chacun des cas (World ID/Interior ID/Player ID) mettre « -1 » définit qu’il se situe dans chacun des espaces. Dans le cas
d’un mapping attaché au World ID -1, si je vais dans le World ID 47 je le verrais également.
_________________________________________________________________________________________________________
Détail d’un script mapping
Le CreateObject :
Forme basique d’un script mapping. Doit être évité car elle est chargée directement par le serveur est peut-être sujet à des
latence autant coté serveur que client. De plus, les CreateObject sont limité en nombre.
Exemple : CreateObject(‘ID du composant’, ‘Position X’, ‘Position Y’, ‘Position Z ‘, ‘Rotation X-Z’, ‘Rotation R-Y’, ‘Rotation R-Z’,
‘World ID’, ‘Interior ID’, ‘Player ID ‘, ‘Float Distance’, ‘Float Distance’);
Le CreateDynamicObject :
Forme évolué d’un script mapping. Adapté à un multi-joueurs car chargé coté clients dans un rayon définit autour de lui.
L’avantage c’est qu’ils ne sont pas limités en nombre, cependant une zone surchargée peut entrainer un problème d’affichage,
de synchronisation, de freeze ou de latence. Il est conseillé de ne pas dépasser les 500 objets par zone.
Exemple : CreateDynamicObject(‘ID du composant’, ‘Position X’, ‘Position Y’, ‘Position Z ‘, ‘Rotation X-Z’, ‘Rotation R-Y’,
‘Rotation R-Z’, ‘World ID’, ‘Interior ID’, ‘Player ID ‘, ‘Float Distance’, ‘Float Distance’);
Le RemoveBuildingForPlayer :
Efface un objet sur la carte par défaut de San Andreas. Cela permet notamment d’aménager une zone par exemple. Il est
déconseillé de beaucoup l’utilisé car le nombre de RemoveBuildingForPlayer est limité.
Exemple : RemoveBuildingForPlayer(‘ID du composant’, ‘Position X’, ‘Position Y’, ‘Position Z ‘, ‘Rotation X-Z’, ‘Rotation R-Y’,
‘Rotation R-Z’, ‘World ID’, ‘Interior ID’, ‘Player ID ‘, ‘Float Distance’, ‘Float Distance’);
Le texturage
Afin d’être lu par le GM ou le FS il est d’abord nécessaire de mettre « new tmpobjid; » avant le code. Il est nécessaire qu’une
seule fois sur tout le GM ou tout le FS, sinon une erreur sera détectée lors de la compilation.
Exemple :
new tmpobjid;
// Et ici le code du mapping
L’objet texturé c’est un objet classique, une ligne de code, avec en dessous une autre ligne de code qui définit sont texturage.
Chaque ligne de code d’objet doit cependant être précédé de « tmpobjid = ».
Un objet texturé ce présente donc comme ceci :
new tmpobjid;
tmpobjid = ‘Type de composant’(‘ID du composant’, ‘Position X’, ‘Position Y’, ‘Position Z ‘, ‘Rotation X-Z’, ‘Rotation R-Y’,
‘Rotation R-Z’, ‘World ID’, ‘Interior ID’, ‘Player ID ‘, ‘Float Distance’, ‘Float Distance’);
SetDynamicObjectMaterial(tmpobjid, ‘materialindex’, ‘modelid’, ‘txdname[]’, ‘texturename[]’, ‘materialcolor’)
_________________________________________________________________________________________________________
‘SetDynamicObjectMaterial’ ne bouge pas, ce composant permet de définir au script qu’une texture va être appliqué.
_________________________________________________________________________________________________________
_________________________________________________________________________________________________________
‘tmpobjid’ ne bouge pas, cela indique que c’est l’objet sur la ligne du dessus qui va être modifié.
_________________________________________________________________________________________________________
_________________________________________________________________________________________________________
‘materialindex’ correspond au « slot » de l’objet qui va être modifié. Plusieurs surfaces sont modifiables sur un objet, le slot
permet de cibler la partie de l’objet en question qu’il faudra modifier.
‘modelid’ correspond à l’ID de la texture qui sera appliqué sur le slot en question.
‘txdname[]’ correspond au nom du TXD.
‘texturename[]’ correspond au nom de la texture.
‘materialcolor’ correspond au code HEX color. Cela permet de modifier la couleur et la transparence d’un objet.
________________________________________________________________________________________________________
Un objet texturé prendra donc un minimum de deux lignes. La modification d’un slot sur un objet ouvre une nouvelle ligne,
modifier 2 slots sur un objet prendra donc 3 lignes de code et ainsi de suite.
Il est possible de changer qu’une seule texture par slots, cependant changer sa couleur n’ouvre pas une nouvelle ligne car celleci est déjà pris en compte sur la ligne.
Exemple :
new tmpobjid;
tmpobjid = ‘Type de composant’(‘ID du composant’, ‘Position X’, ‘Position Y’, ‘Position Z ‘, ‘Rotation X-Z’, ‘Rotation R-Y’,
‘Rotation R-Z’, ‘World ID’, ‘Interior ID’, ‘Player ID ‘, ‘Float Distance’, ‘Float Distance’);
SetDynamicObjectMaterial(tmpobjid, ‘0’, ‘Textureid’, ‘TXDNom’, ‘Texturenom’, ‘Codecouleur’)
SetDynamicObjectMaterial(tmpobjid, ‘1’, ‘Textureid’, ‘TXDNom’, ‘Texturenom’, ‘Codecouleur’)
SetDynamicObjectMaterial(tmpobjid, ‘2’, ‘Textureid’, ‘TXDNom’, ‘Texturenom’, ‘Codecouleur’)
L’exemple ci-dessus démontre donc qu’un seul objet peut prendre de nombreuses lignes à lui seul en fonction de comment il est
modifié.
Il est également possible d’écrire un texte sur un objet, cela allonge légèrement la ligne de code. Il est cependant recommandé
d’utiliser un objet transparent afin de pouvoir écrire un texte et le placer comme on le souhaite sans contrainte.
Exemple :
new tmpobjid;
tmpobjid = ‘Type de composant’(‘ID du composant’, ‘Position X’, ‘Position Y’, ‘Position Z ‘, ‘Rotation X-Z’, ‘Rotation R-Y’,
‘Rotation R-Z’, ‘World ID’, ‘Interior ID’, ‘Player ID ‘, ‘Float Distance’, ‘Float Distance’);
SetDynamicObjectMaterialText(tmpobjid, ‘materialindex’, ‘text[]’, ‘materialsize’, ‘fontface’, ‘fontsize’, ‘bold’, ‘fontcolor’,
‘backcolor’, ‘textalignment’) ;
_________________________________________________________________________________________________________
‘SetDynamicObjectMaterialText’ ne bouge pas, ce composant permet de définir au script qu’un texte va être appliqué.
_________________________________________________________________________________________________________
_________________________________________________________________________________________________________
‘tmpobjid’ ne bouge pas, cela indique que c’est l’objet sur la ligne du dessus qui va être modifié.
_________________________________________________________________________________________________________
_________________________________________________________________________________________________________
‘materialindex’ correspond au « slot » de l’objet qui va être modifié. Plusieurs surfaces sont modifiables sur un objet, le slot
permet de cibler la partie de l’objet en question qu’il faudra modifier.
‘text[]’ correspond au texte qui sera écrit.
‘materialsize’ correspond à la taille de l’objet sur le quel l’écriture sera appliqué.
‘fontface’ correspond à la police d’écriture qui sera utilisé.
‘fontsize’ correspond à la taille de la police d’écriture.
‘bold’ permet de définir si le texte sera écrit en gras ou non.
‘fontcolor’ correspond à la couleur de la police d’écriture.
‘backcolor’ correspond à la couleur de fond derrière la police d’écriture.
‘textalignment’ correspond à l’alignement du texte par rapport à l’objet.
_________________________________________________________________________________________________________
Il n’est pas obligatoire d’utiliser la totalité des éléments comme le ‘textalignment’ ou le ‘materialsize’ .
Exemple :
new tmpobjid;
tmpobjid = ‘Type de composant’(‘ID du composant’, ‘Position X’, ‘Position Y’, ‘Position Z ‘, ‘Rotation X-Z’, ‘Rotation R-Y’,
‘Rotation R-Z’, ‘World ID’, ‘Interior ID’, ‘Player ID ‘, ‘Float Distance’, ‘Float Distance’);
SetDynamicObjectMaterialText(tmpobjid, ‘Slotid’, ‘Texte’, ‘Policetype’, ‘Policetaille’, ‘Policegras’, ‘Policecouleur’,
‘Couleurfond’);

Documents pareils