• 05 Juin 2026, 09:42:41


Auteur Sujet: [Tuto] PlayerToPoint  (Lu 4365 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne inbox

  • *
  • Tueur en série
  • Messages: 214
    • Voir le profil
    • Blog sur Gta
[Tuto] PlayerToPoint
« le: 30 Décembre 2008, 14:58:16 »
Bonjour,

Voici un petit Tuto pour la fonction PlayerToPoint

Un exemple précis "Je Veux dire Bonjour tout le monde" avec la fonction PlayerToPoint
Si le joueur n'est pas a l'endroit précis il ne peut pas lancer le message

Voici un Exemple
            if(strcmp(cmdtext, "/message", true) == 0)
            {
            if(PlayerToPoint(playerid,10.0,2055.0913,1922.8147,12.1718))
            {
            SendClientMessageToAll(0xFFFF00AA,"Bonjour tout le monde !");
            }else{
            SendClientMessage(playerid,COLOR_WHITE,"vous êtes trop loin (Suivez le point Rouge)");
            SetPlayerCheckpoint(playerid, 2055.0913,1922.8147,12.1718, 3.0);
            }
            return 1;
            }

Le forward a mettre en haut de votre GM
forward PlayerToPoint (playerid, Float:radi, Float:x, Float:y, Float:z);

La fonction vous pouvez le mettre en bas de votre GM si vous le souhaitez.
public PlayerToPoint(playerid, Float:radi, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}

Voila j'espère que le Tuto vous plaira :)

Cordialement,
« Modifié: 30 Décembre 2008, 15:24:34 par inbox »
signature hors-normes (image trop grande)

Hors ligne NatiVe™

  • *
  • Messages: 7977
    • Voir le profil
Re : [Tuto] PlayerToPoint
« Réponse #1 le: 30 Décembre 2008, 15:18:52 »
GG mais ..

Tu dit "bonjour tout le monde" avec la fonction SendClientMessage(); toi ? Met un ToAll :P

NV. 8)



Tu vois avant? Bah j'étais là encore avant!

Hors ligne inbox

  • *
  • Tueur en série
  • Messages: 214
    • Voir le profil
    • Blog sur Gta
Re : [Tuto] PlayerToPoint
« Réponse #2 le: 30 Décembre 2008, 15:23:45 »
LoL
non c'est un Exemple je me suis planter c'est tout :)

Je modifie.

Cordialement,
signature hors-normes (image trop grande)

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [Tuto] PlayerToPoint
« Réponse #3 le: 30 Décembre 2008, 15:51:36 »
Salut,

Superbe tuto, par contre j'ai cru remarqué une petite chose qui m'agace...ta fonction pourrait être légèrement optimisée..
et n'a aucunement besoin d'être public (rappel: les public ne sont nécessaire que pour une fonction utilisée dans un timer ou un CallRemoteFunction)

premièrement on remplace le public par un stock (puisqu'il s'agit de l'ajout d'une fonction utile, on ne s'en servira peut-être pas mais il est pratique de l'avoir en "réserve" on pourrait même la mettre dans un include)

ensuite, tu crée énormément de nouvelle variables inutiles, ne jamais oublié que chaque variable peut être réutilisée,

ta fonction cherche pour un cube, on aura plutôt tendance à vouloir une sphere (qui sera un vrai playerToPoint, ceci serait plutôt un IsPlayerInCube)

rien de plus à dire, bon tuto, mais un code propre serait tout de même préférable...

ne pas oublié que la fonction floatpower utilise un algorithme complexe et pour un exposant petit tel que deux, il est plus avantageux d'utiliser la multiplication il en est de même pour la fonction floatsqroot

stock PlayerToPoint(playerid, Float:radi, Float:x, Float:y, Float:z)
{
new Float:posx, Float:posy, Float:posz;
GetPlayerPos(playerid, posx, posy, posz);
x -= posx;
y -= posy;
z -= posz;
if (x*x + y*y + z*z <= radi*radi)
{
return 1;
}
return 0;
}

alors voilà la fonction résultante de ces modification, et merci Y_Less pour toutes ces connaissances très utiles ^^

++Sim++





Hors ligne inbox

  • *
  • Tueur en série
  • Messages: 214
    • Voir le profil
    • Blog sur Gta
Re : [Tuto] PlayerToPoint
« Réponse #4 le: 30 Décembre 2008, 16:35:00 »
Salut,

La fonction public n'est pas de moi mais de Y_less du forum Samp
j'ai rien changer dedans c'est a vous de le faire comme bon vous semble :)

Chacun code comme il veut.

Cordialement,
signature hors-normes (image trop grande)

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : [Tuto] PlayerToPoint
« Réponse #5 le: 30 Décembre 2008, 16:43:59 »
GG pour ton tuto ;)

++
nikko

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [Tuto] PlayerToPoint
« Réponse #6 le: 30 Décembre 2008, 18:48:11 »
salut,

c possible, le public aurait un avantage, de pouvoir s'en servir dans un autre script, mais c'est bien plus simple et rapide de la mettre à chaque script

la mienne vien de son énorme tutoriel sur l'optimisation de code:http://forum.sa-mp.com/index.php?topic=79810.0

++Sim++





Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : [Tuto] PlayerToPoint
« Réponse #7 le: 30 Décembre 2008, 19:29:13 »
A propos du tuto de Y_Less je pense qu'il serait bien que quelqu'un le traduise et le mete sur ce site sa pourait aidé beaucoup de gens je pense perso j'suis pas assé bon en anglais pour le faire mais si quelqu'un est bon en anglais et a la motivation de le faire sa serait bien :)

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : [Tuto] PlayerToPoint
« Réponse #8 le: 30 Décembre 2008, 23:23:07 »
A propos du tuto de Y_Less je pense qu'il serait bien que quelqu'un le traduise et le mete sur ce site sa pourait aidé beaucoup de gens je pense perso j'suis pas assé bon en anglais pour le faire mais si quelqu'un est bon en anglais et a la motivation de le faire sa serait bien :)

c'est certains,
J'ai fait certaines notions de bases (pas d'optimisation) en m'aidant sur les trucs que je connais moins de son tuto sur les keywords...

++Sim++