GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Showroom SA:MP => Discussion démarrée par: S4T3K le 07 Juin 2014, 11:54:11

Titre: [INC] s_accessoires_fix - Fix du bug zoom-accessoires et ajout de fonctions
Posté par: S4T3K le 07 Juin 2014, 11:54:11
(http://uppix.net/8/f/e/567043621f82b37ccb2400a62818a.png) (http://gtaonline.fr)


Yo.

C'est une include que je tiens vraiment à voir sur un maximum de serveurs, aussi bien RP que DM, car quand on a des accessoires (du genre des lunettes) et qu'on vise avec l'appareil photo ou le sniper, on a l'accessoire qui apparaît sur l'écran selon l'index ou la partie du corps sur lequel il est attaché.

L'include répare ça et rajoute même des fonctions utiles sur les accessoires comme "GetAttachedObjectModelByIndex" et autres.
Le fonctionnement est assez simple : j'ai créé une fonction appelée S_SetPlayerAttachedObject qui attache l'objet au joueur et qui stocke toutes les infos passées en paramètre dans un tableau ayant dix cases par joueur (une case par index), et lorsque le joueur vise (if(HOLDING(KEY_HANDBRAKE)), ça retire tous les accessoires équipés, puis lorsqu'il arrête de viser (if(RELEASED(KEY_HANDBRAKE)), ça lui remet.

Pré-requis

• y_hooks (YSI - Y_Less)


Liste des fonctions ajoutées :

Code: (pawn) [Sélectionner]

native GetPlayerAttachedObject(playerid, index); // Retourne l'id du model sur l'index, 0 si il n'y en a pas
native GetPlayerBodyPartUsed(playerid, index); // Retourne la partie du corps sur l'index,
native GetPlayerIndexByModel(playerid, model); // Retourne l'index qu'utilise le model, -1 si il n'est jamais utilisé
native GetPlayerAccOffSet(playerid, index, &Float:offsetX, &Float:offsetY, &Float:offsetZ); // Passe par référence les offset x, y et z de l'accessoire utilisé par l'index, retourne 0 si il n'est pas utilisé
native GetPlayerAccRot(playerid, index, &Float:rotX, &Float:rotY, &Float:rotZ); // Passe par référence les valeurs de rotation x, y et z de l'accessoire utilisé par l'index, retourne 0 si il n'est pas utilisé
native GetPlayerAccScale(playerid, index, &Float:scaleX, &Float:scaleY, &Float:scaleZ); // Passe par référence l'échelonnage x, y et z de l'accessoire utilisé par l'index, retourne 0 si il n'est pas utilisé
native GetPlayerAccMaterial(playerid, index, &col1, &col2); // Passe par référence les couleurs "matérielles" de l'accessoire utilisé par l'index, retourne 0 si il n'est pas utilisé
native RemovePlayerAttachedObjectModel(playerid, modelid); // Enlève un accessoire attaché au joueur en spécifiant son model et non plus son index, retourne 0 si le model n'est pas attaché au joueur. Retourne 1 si l'accessoire a été enlevé correctement (note qu'il enlève tous les models attachés au joueur correspondant à ce modelid, pas seulement le premier).

Pour utilisé l'include, ne rajoutez que

Code: (pawn) [Sélectionner]

#include <s_zoom_fix>


Juste en dessous de l'include a_samp.
Et utilisez les fonctions classiques pour attacher et retirer un objet, ou utilisez les fonctions ajoutées de façon tout à fait normale.

Lien du pastebin : http://pastebin.com/CSdYGAEq (http://pastebin.com/CSdYGAEq)

Voilà.
Titre: Re : [INC] s_accessoires_fix - Fix du bug zoom-accessoires et ajout de fonctions
Posté par: CarCrasher le 11 Juin 2014, 09:22:38
Merci :laugh:
Mon serveur marche à fond sur la personnalisation qu'on peut apporter, et bon pendant les guerres des gangs, des Minijeux et tout ça, c'est assez énervant de devoir revirer tous ses vêtements avant de pouvoir tirer un coup (De sniper :smile: ), plein de gens se plaignaient de ça *-*
Titre: Re : [INC] s_accessoires_fix - Fix du bug zoom-accessoires et ajout de fonctions
Posté par: S4T3K le 12 Juin 2014, 17:41:23
Je viens de fixer un petit bug qui permet maintenant l'utilisation propre de l'include.

Par contre, vous ne pouvez plus utiliser les fonctions "traditionnelles". Utilisez à la place soit directement S_SetPlayerAttachedObject et S_RemovePlayerAttached object, soit FIX_Attached_Object et FIX_Remove_Attached.