• 20 Mai 2024, 15:29:06


Auteur Sujet: [INC] streamer extended - Ajout de fonctions au streamer d'Incognito  (Lu 3301 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne S4T3K

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


La majorité des fonctions de cette include ne serviront à rien pour les personnes qui considèrent que le streamer c'est juste une façon différente de créer des objets. On peut considérer ça, mais c'est en réalité un peu plus complexe que ça : ça permet de créer des objets dans un/plusieurs virtualworld, dans un ou plusieurs intérieurs virtuels, etc. Ca permet également de ne plus avoir la limite de 1000 objets créables via CreateObject. Et ça ne s'applique pas qu'aux objets !

Avant tout, l'include n'est pas terminée : je n'avais pas le temps de la terminer complètement (elle est à moitié faite, libre à ceux qui veulent la continuer, sachant qu'il suffit de se baser sur le travail déjà fait pour comprendre comment fabriquer de nouvelles fonctions) donc je la partage (elle a déjà été partagée sur le forum samp) à moitié faite. Pour l'instant, elle inclut déjà pas mal de natives, qui sont (désolé si le code est trop grand, signalez le moi je le mettrais sur pastebin)

Lien pastebin : http://pastebin.com/XHYM3diX

Code: (pawn) [Sélectionner]

/****************
    CountAreas
    ****************/

native CountDynamicPolygons();
native CountDynamicCubes();
native CountDynamicSpheres();
native CountDynamicRectangles();
native CountDynamicCircles();

    /*****************
        Objects
    *****************/
native GetDynamicObjectModel(objectid);
native SetDynamicObjectModel(objectid, modelid);
native GetDynamicObjectStreamParams(objectid, &worldid, &interiorid, &playerid);
native SetDynamicObjectStreamParams(objectid, worldid = -1, interiorid = -1, playerid = -1);
native Float:GetDynamicObjectStreamDistance(objectid);
native Float:GetDynamicObjectDrawDistance(objectid);
native SetDynamicObjectStreamDistance(objectid, Float:streamdistance);
native SetDynamicObjectDrawDistance(objectid, Float:drawdistance);
native IsPlayerInRangeOfDynamicObject(playerid, objectid, Float:radi = 5.0);
native IsDynamicObjectInRangeOfPoint(objectid, Float:x, Float:y, Float:z, Float:radi = 5.0);
native GetNearestObjectFromObject(objectid, Float:radi = 0.3);
native GetNearestObjectFromVehicle(objectid, vehicleid, Float:radi = 1.0);
native GetNearestObjectFromPlayer(objectid, playerid, Float:radi = 0.5);
native GetNearestObjectFromPickup(objectid, pickupid, Float:radi = 1.0);

    /*****************
        Pickups
    *****************/
   
native GetDynamicPickupPos(pickupid, &Float:x, &Float:y, &Float:z);
native SetDynamicPickupPos(pickupid, Float:x, Float:y, Float:z);
native GetDynamicPickupType(pickupid);
native SetDynamicPickupType(pickupid, type);
native GetDynamicPickupStreamParams(pickupid, &worldid, &interiorid, &playerid);
native SetDynamicPickupStreamParams(pickupid, worldid = -1, interiorid = -1, playerid = -1);
native GetDynamicPickupModel(pickupid);
native SetDynamicPickupModel(pickupid, modelid);
native Float:GetDynamicPickupStreamDistance(pickupid);
native SetDynamicPickupStreamDistance(pickupid, Float:strdistance);
native IsPlayerInRangeOfDynamicPickup(playerid, pickupid, Float:range = 3.0);
native IsDynamicPickupInRangeOfPoint(pickupid, Float:x, Float:y, Float:z, Float:range = 3.0);

    /******************
        Checkpoints
    ******************/
   
native GetDynamicCPPos(checkpointid, &Float:x, &Float:y, &Float:z);
native SetDynamicCPPos(checkpointid, Float:x, Float:y, Float:z);
native Float:GetDynamicCPSize(checkpointid);
native SetDynamicCPSize(checkpointid, Float:size);
native GetDynamicCPStreamParams(checkpointid, &worldid, &interiorid, &playerid);
native SetDynamicCPStreamParams(checkpointid, worldid = -1, interiorid = -1, playerid = -1);
native Float:GetDynamicCPStreamDistance(checkpointid);
native SetDynamicCPStreamDistance(checkpointid, Float:streamdistance);
native IsDynamicObjectInRangeOfCP(objectid, checkpointid, Float:range = 5.0);
native IsDynamicCPInRangeOfPoint(checkpointid, Float:x, Float:y, Float:z, Float:range = 5.0);

    /**********************
        Race checkpoints
    **********************/
   
native GetDynamicRaceCPType(checkpointid);
native SetDynamicRaceTPType(checkpointid, type);
native GetDynamicRCPPos(checkpointid, &Float:x, &Float:y, &Float:z);
native GetDynamicRCPNextPos(checkpointid, &Float:x, &Float:y, &Float:z);
native SetDynamicRCPPos(checkpointid, Float:x, Float:y, Float:z);
native SetDynamicRCPNextPos(checkpointid, Float:x, Float:y, Float:z);
native Float:GetDynamicRCPSize(checkpointid);
native SetDynamicRCPSize(checkpointid, Float:size);
native GetDynamicRCPStreamParams(checkpointid, &worldid, &interiorid, &playerid);
native SetDynamicRCPStreamParams(checkpointid, worldid = -1, interiorid = -1, playerid = -1);
native Float:GetDynamicRCPStreamDistance(checkpointid);
native SetDynamicRCPStreamDistance(checkpointid, Float:streamdistance);



Seul bug que j'ai pas réussi à patcher : A la compilation de l'include, au niveau de la macro S_CreateDynamic3DTextLabel, j'ai une erreur 203 : tag mismatch, avis à ceux qui savent comment réparer ça.

Crédits :


Incognito : Streamer
Patrick_, Vince : GetDistanceBetweenPoints (avec le VectorSize), aide sur l'utilisation de la fonction
Moi : Bah toute les fonctions déjà créées


Pré-requis :


SAMP 0.3z (ne fonctionne pas sur les versions antérieures)
"Streamer plugin" d'incognito

« Modifié: 08 Juin 2014, 20:09:25 par S4T3K »

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Pour le tag mismatch, il faut que la variable qui va contenir l'index d'un 3D Text Label soit créée avec le tag Text:, c'est pas très bien documenté mais c'est comme ça que je résous le problème de mon côté.

En tout cas, merci du partage, mais avec un lien ce serait un peu mieux. :)

Hors ligne S4T3K

  • *
  • Nouveau
  • Messages: 20
    • Voir le profil
Oh putain, j'étais tellement crevé ce matin que j'ai oublié le lien.
J'édite ça tout de suite après t'avoir répondu :

Pour qu'une variable contienne un texte 3D, le tag n'est pas Text: (Textdraws) mais Text3D. On peut voir dans l'enum tInfo que j'ai bien déclaré "label" avec le tag 3DText, c'est ça que je comprends pas trop.

Je mets le lien tout de suite, désolé.
« Modifié: 08 Juin 2014, 22:00:59 par S4T3K »

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
J'ai énormément d'avertissements avec les textes 3D de mon côté, lorsque je développe. Par habitude et à force de ne pas savoir d'où ça vient (même les bêta-testeurs du forum SA-MP ne savent pas trop), je les ignore. Il pourrait s'agir d'un bug du compilateur mais dans l'hypothèse où tu trouves la solution, n'hésites pas à la partager, ça m'intéresse. ;)

Hors ligne S4T3K

  • *
  • Nouveau
  • Messages: 20
    • Voir le profil
@Gzsume Si tu es toujours intéressé par la solution, j'ai fini par la trouver hier soir.

Le warning à la compilation est parti, donc ça peut vouloir dire que c'est enfin la bonne solution.

J'ai simplement refait la macro "S_CreateDynamic3DTextLabel" en lui faisant retourner l'ID du label créé, attaché à InfoLabel[l][label] et j'ai rajouté le tag "Text3D:" devant le nom de la fonction. Je MàJ le pastebin tout de suite.