• 03 Mai 2024, 02:57:20


Auteur Sujet: [INC] s_accessoires_fix - Fix du bug zoom-accessoires et ajout de fonctions  (Lu 3073 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne S4T3K

  • *
  • Nouveau
  • Messages: 20
    • Voir le profil



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

Voilà.
« Modifié: 07 Juin 2014, 12:22:07 par S4T3K »

Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
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 *-*

Hors ligne S4T3K

  • *
  • Nouveau
  • Messages: 20
    • Voir le profil
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.