GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Leonidas300 le 04 Décembre 2010, 18:13:33

Titre: Gestion des joueurs en braquage[Résolut]
Posté par: Leonidas300 le 04 Décembre 2010, 18:13:33
Salut, voilà, j'ai terminer mon système de braquage, qui ma pris beaucoup de temps d'ailleurs ^^, enfin osef, je voulais vous demander, si il été possible que quand je tappe la Commande /braquage, il doit obligatoirement avoir 2 personnes proches de moi ( 1 Mettre ), en gros les 3 personnes braquent la banques en même temps, ( je vais crée un public pour envoyer les messages à tous ceux qui ont /braquer aussi )
Donc voilà, si on pouvais m'éxpliquez merci
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Xartrick le 04 Décembre 2010, 18:18:54
Google.fr "site:http://sa-mp.com/ Proximity" (http://www.google.fr/#hl=fr&q=site:http://sa-mp.com/+Proximity)
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: scott1 le 04 Décembre 2010, 18:20:00
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
new braqueur = 0;
for (new i=0; i<=MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
if(IsPlayerInRangeOfPoint(i,5.0,x,y,z) { braqueur++; }
}
}
return 1;

Perso je ferais si les 3 personne font /braquer
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Leonidas300 le 04 Décembre 2010, 18:25:16
non tu as pas compris, je veux juste un système pour pouvoir dire si y'a bien 2 personnes avec mois ( à coté de moi ) pour pouvoir /braquer et faire un } else { il manque %d personnes à côté de vous } ( 1-2 )

merci de m'aider
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: scott1 le 04 Décembre 2010, 18:26:50
Je t'ai donné un bout de code, s'est ce qu'il te faut, je ne vais pas te faire tout ;)

Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Leonidas300 le 04 Décembre 2010, 18:37:02
Ah merci scoot, je parlais pas à toi mais au post avant le tien de je sais plus qui, en tout cas merci, je vais essayer de me débrouiller :D
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: chneubeul le 04 Décembre 2010, 18:41:26
Salut,

Tu peut créé un tableau par exemple :

EnBraquage[MAX_PLAYERS]
 et une variable qui compte les joueurs qui braque :

new countbraqueur=0;
puis quand un joueur va taper une commande tu fais :

GetPlayerPos(playerid, X, Y, Z);
for(new i=0; i<MAX_PLAYERS; i++)
{
    if(EnBraquage[i] && IsPlayerInRangeOfPoint(i, 1.0, X, Y, Z))
    {
          countbraqueur++;
    }
}
if(countbraqueur >= 2)
{
    // 2 joueur autour de playerid
}

[code]

Edit : J'ai fait la même chose que scott désolé ^^[/code]
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Xartrick le 04 Décembre 2010, 18:41:49
Il y à une autre solution, voici un exemple !

Citation de: Exemple
Player1 (ID: 1), Player2 (ID: 2), et Player3 (ID: 3), veulent faire un braquage.
Player1 est le leader et Player2 et Player3 sont ses assistants.


Player1: /braquage
Serveur à Player1: Vous avez démarré l'évènement "braquage"
Serveur à Player1: Ils vous faut deux assistants
Player2: /assister 1
Serveur à Player1: Vous avez 1 assistants, il vous en manque plus qu'un !
Player3: /assister 1
Serveur à Player1: Vous avez 2 assistants ! Le braquage commence !
Serveur à Player2: Le braquage commence !
Serveur à Player3: Le braquage commence !

Voilà, je pense que tu as compris mon système, un système d'assistance, tu pourra faire une vérification de distance avec GetDistanceFromMeToPoint avec comme valeur, les coordonnées du joueur cible (Player1 ici).
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: chneubeul le 04 Décembre 2010, 18:43:49
Pas mal Xartrik. Par ton système on pourrais mettre un menu, avec un message qui informe le joueur qu'une fois entrainé dans le braquage des poursuites lourdes sans suis, bref genre un dialogue et tout.. ça pourrais être pas mal :)
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Xartrick le 04 Décembre 2010, 18:45:26
Oui, on peut faire un très bon code mais  avec vôtre système, des personnes qui se trouve dans la banque pourrait faire partie du braquage sans avoir rien demandé !
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Leonidas300 le 04 Décembre 2010, 18:48:12
Et si je veux que seulement les personnes qui sont à 1 mettre de celui qui a /braquer sont dans le braquage ?

aussi je vais devoir crée un autre truc pour remplacé le SendClientMessage, pour que les messages soit envoyé à tous les braqueurs ( les 3 ) ?
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Xartrick le 04 Décembre 2010, 18:50:45
Avec mon système, tu as simplement à tester une distance avec GetDistanceFromMeToPoint.
Et pour que tu envoi le message au 3 braqueurs, tu met leurs trois ID dans un tableau et tu fait un boucle pour leur envoyer.
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: scott1 le 04 Décembre 2010, 19:58:13
Jusqu'a preuve du contraire,

GetDistanceFromMeToPoint est pour les npc
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Xartrick le 04 Décembre 2010, 20:23:37
Exactement, son nom est trompeur.
Je pensais que cette fonction comparé la distance entre nous est une coordonnée précise.
Maintenant, il faut trouver une méthode pour trouver la distance entre deux personnes !

EDIT: J'ai trouvé ceci:


stock Float:GetDistanceBetweenPoints(Float:X, Float:Y, Float:Z, Float:PointX, Float:PointY, Float:PointZ)
{
return floatsqroot(floatadd(floatadd(floatpower(floatsub(X, PointX), 2.0), floatpower(floatsub(Y, PointY), 2.0)), floatpower(floatsub(Z, PointZ), 2.0)));
}

stock Float:GetDistanceBetweenPlayers(playerid, otherplayerid)
{
new Float:X[2], Float:Y[2], Float:Z[2];

GetPlayerPos(playerid, X[0], Y[0], Z[0]);
GetPlayerPos(otherplayerid, X[1], Y[1], Z[1]);

return GetDistanceBetweenPoints(X[0], Y[0], Z[0], X[1], Y[1], Z[1]);
}

Par Gabriel "Larcius" Cordes.
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: scott1 le 04 Décembre 2010, 20:29:29
Voila ma fonction


public GetDistanceBetweenPlayers(playerid,giveplayerid, Float:radi)
{
    new Float:x, Float:y, Float:z;
GetPlayerPos(giveplayerid, x, y, z);
if(IsPlayerInRangeOfPoint(playerid,radi,x,y,z)) { return 1; }
return 0;
}
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Brian Turner le 04 Décembre 2010, 20:34:35
Celle de scott1 et quand meme plus simple.
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Xartrick le 04 Décembre 2010, 20:36:56
Exactement Brian_Turner !
Leonidas300, tu as maintenant tout ce qui te faut pour ton code, bonne chance !
N'hésite pas à demander de l'aide si tu rencontre des problèmes ;).
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: chneubeul le 04 Décembre 2010, 23:24:23
Xartrik, le code premier code, qui à été proposer, vérifie les gens qui sont en braquage. :)

Scott, ta fonction serais plutôt IsPlayerInRangeOfPlayer  :happy
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Xartrick le 04 Décembre 2010, 23:49:37
Non, le premier système donnée par scott1 vérifie seulement si le joueur est connecté et si il est proche !
Quand je parle de ceci, je veux dire par là que si des personnes sont proches du braqueur, il pourrait être pris comme assistant sans le vouloir, c'est pour cela qu'il est préférable d'utiliser mon système.
Ou alors, en améliorant le système donné par scott1 en ajoutant une demande aux joueurs proches en leur demandant si ils sont d'accord, oui ou non, de participer au braquage.
Je recommande toujours mon système qui est le plus simple à mon avis.
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: scott1 le 05 Décembre 2010, 00:18:29
Le systeme de Xartick est le meilleur et d'ailleurs celui que j'utilisais.

Je n'ai fait que te donner un bout de code qui correspondait a ta demande
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Leonidas300 le 05 Décembre 2010, 01:21:51
Bon merci à tous de votre aide, voilà mon code:

Code: (pawn) [Sélectionner]
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
for(new i=0; i<MAX_PLAYERS; i++)
{
            if(EnBraquage[i] && IsPlayerInRangeOfPoint(i, 1.0, x, y, z))
            {
          countbraqueur++;
           }
}
Code: (pawn) [Sélectionner]
if(countbraqueur >= 2)
{
                         MONCODE
                        }
else
{
SendClientMessage(playerid, COLOR_RED, "Il doit y avoir 2 personnes proches du coffres avec vous!");
return 1;
}

Code: (pawn) [Sélectionner]
public Envoyeraceuxquibraques(color, string[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
  if(EnBraquage[i])
{
SendClientMessage(i, color, string);
}
}
}
}

NB: petit éxemple de l'utilisation de se public :

Code: (pawn) [Sélectionner]
format(string, sizeof(string), "Vous essayez d'ouvir le coffre, vous devez attendre pendant 5 minutes!");
Envoyeraceuxquibraques(COLOR_YELLOW, string);
format(string, sizeof(string), "L'alarme c'est déclanché, la police est maintenant avértis de votre braquage!");
Envoyeraceuxquibraques(COLOR_YELLOW, string);


Gros merci à vous
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: Xartrick le 05 Décembre 2010, 01:24:00
Tu as donc choisi la méthode de scott1, tu risque d'avoir des problèmes avec les personnes qui seront proches mais pas consentant !
Titre: Re : Petite questions (Durs à éxpliquer en titre)
Posté par: S!m le 05 Décembre 2010, 01:47:53
Salut,

pour ton titre, tu aurais pu faire un effort, il me parait assez simple de faire un titre : Gestion des joueurs en braquage

++Sim++
Titre: Re : Gestion des joueurs en braquage
Posté par: Leonidas300 le 05 Décembre 2010, 02:11:33
Voilà édit
Titre: Re : Gestion des joueurs en braquage
Posté par: scott1 le 05 Décembre 2010, 02:15:29
Maintenant réedit et met résolut ^^
Titre: Re : Gestion des joueurs en braquage
Posté par: Leonidas300 le 05 Décembre 2010, 02:23:58
lol ^^ en tout cas merci, HS : Scoot, tu peux me donner l'id ou le nom de l'object pour la ramp mécanicien dans l'autre sujet ? j'en ai trop marre de chercher de partout depuis 2 jours s'teuplaît
Titre: Re : Gestion des joueurs en braquage[Résolut]
Posté par: Karting06 le 05 Décembre 2010, 07:46:54
Pauvre, on te répond pour tout sauf pour l'objet.Désolé mais moi je ne le connais pas !
(http://www.gtaonline.fr/forums/Themes/proton/images/warnwarn.gif) freepost
Titre: Re : Re : Petite questions (Durs à éxpliquer en titre)
Posté par: chneubeul le 05 Décembre 2010, 09:56:59
Tu as donc choisi la méthode de scott1, tu risque d'avoir des problèmes avec les personnes qui seront proches mais pas consentant !

On test si la personne à sa variable EnBraquage = 1.. donc consentant x')
Titre: Re : Gestion des joueurs en braquage[Résolut]
Posté par: Leonidas300 le 05 Décembre 2010, 12:22:55
Ouais enfin en tout cas merci j'ai testé tout est OK sur le jeux (( même si en local je peux pas testé avec 2 personnes ^^ ))
Titre: Re : Gestion des joueurs en braquage[Résolut]
Posté par: Karting06 le 05 Décembre 2010, 19:22:24
Vous m'enervez avec votre freepost. Je reviendrai plus! Adieu
(http://www.gtaonline.fr/forums/Themes/proton/images/warnwarn.gif) Tu es libre de partir, on ne met pas de chaines à personne...
Toutefois, free-post
Titre: Re : Gestion des joueurs en braquage[Résolut]
Posté par: Leonidas300 le 05 Décembre 2010, 19:38:24
moi se qui m'énérve c'est les personnes qui se croient modérateurs/admin forum
Titre: Re : Gestion des joueurs en braquage[Résolut]
Posté par: Lacuisse le 05 Décembre 2010, 19:39:54
Merci de régler vos problèmes en pm.

++