• 17 Avril 2025, 20:54:50


Auteur Sujet: Random de positions  (Lu 1057 fois)

0 Membres et 1 Invité sur ce sujet

DexX

  • Invité
Random de positions
« le: 14 Juillet 2011, 22:58:14 »
Bonsoir à tous,

J'ai crée un intérieur de prison (Mapping) avec 21 cellules.

J'aimerais, lorsqu'on tape la commande /jail, que le joueur soit téléporté dans une cellule. Jusque là sa va (Simple SetPlayerPos). J'aimerais modifier un peu cela de tel sorte que si nous mettons plusieurs joueurs en prison, ils ne se retrouvent pas tous dans la même cellule.

J'aimerais donc savoir comment faire pour qu'il soit téléporter dans une cellule aléatoire après l'exécution de la commande mais sans qu'il y est plusieurs joueurs dans la même.

J'ai pensé à la méthode du Random mais pour faire en sorte qu'ils ne soient pas plusieurs dans la même cellule, je ne vois pas trop ...  :-[.

Merci d'avance de vos aides.

Amicalement,
DexX

Hors ligne Pixect

  • Verbal Criminal
  • *
  • Tueur en série
  • ser la fèt isi, tqvu
  • Messages: 219
    • Voir le profil
Re : Random de positions
« Réponse #1 le: 14 Juillet 2011, 23:15:37 »
Salut,

Crée un tableau contenant les positions (X, Y, Z et l'angle).

Exemple:
Code: (pawn) [Sélectionner]
<?php

new Float:JailPositions[][4] =
{
    {
1234.5671234.5671234.5671234.567}, // On initialise une positon avec l'ordre suivant: X, Y, Z, Angle.
    // Etc.
};

Dans la commande /jail, tu utilises ensuite ce code de manière à générer aléatoirement les positions du tableau JailPositions:
Code: (pawn) [Sélectionner]
<?php

if(strcmp(cmdtext"/jail"true5) == 0// Je ne sais pas si tu utilises cette méthode, DCMD ou autre. À toi de changer par la suite. ^^
{
    new 
jPos random(sizeof(JailPositions)); // On initialise la variable "jPos" contenant une position aléatoire.
    
SetPlayerPos(playeridJailPositions[jPos][0], JailPosition[jPos][1], JailPositions[jPos][2]); // On positionne le joueur. "jPos" sert à indiquer que l'on utilise à chaque fois la même position. 0, 1 et 2 correspondent à "X", "Y" et "Z".
    
SetPlayerFacingAngle(playeridJailPositions[jPos][3]); // On change l'angle du joueur. Encore une fois, "jPos" indique que l'on utilise la même position. 3 correspond à "Angle".
    
return 1;
}
// Etc.

En espérant que cela t'aide. ;)
++


Citation de: Stéphane ARLEN
« Défendre le c cédille majuscule n’est-il pas vain ? Ca m’isole, comme disent les fous. »

S'il vous plaît, passez par ici si vous avez le temps.

Hors ligne Xolokos

  • PAWN/XHTML/CSS/PHP/SQL/JS
  • *
  • Grand Banditisme
  • What are you waiting for ?
  • Messages: 681
    • Voir le profil
Re : Random de positions
« Réponse #2 le: 15 Juillet 2011, 10:46:04 »
DrawKiie a raison mais si il j'ai 2 joueurs vu qu'il y a 21 cellules il a 1/21 de retombé dans la même sinon tu fait une variable telle que :

[code]new Jailled; // La tu créer ta varialbe tout en haut.

if(strcmp(cmdtext, "/jail", true, 5) == 0)
{
    Jailled++;//Tu l'incrément revien a fait +1
    if(Jailled == 1)
    {
    SetPlayerPos(playerid, X,Y, Z);//La tu met la position si il y a un seul joueur
    SetPlayerFacingAngle(playerid, ANGLE);//Idem
    }
    else if (Jailled == 2)
    {
    SetPlayerPos(playerid, X,Y, Z);//La tu met la position si il y a 2 joueurs etc
    SetPlayerFacingAngle(playerid, ANGLE);//Idem
    }
    return 1;
}

if(strcmp(cmdtext, "/unjail", true, 5) == 0)
{
    Jailled--;//-1
    SetPlayerPos(playerid, X,Y, Z);//La si tu le libère
    SetPlayerFacingAngle(playerid, ANGLE);//Idem
    return 1;
}
Je pense que t'es tranquille comme ça ?[/code]
« Modifié: 15 Juillet 2011, 10:48:01 par Xolokos »
Nippah !

Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : Random de positions
« Réponse #3 le: 15 Juillet 2011, 12:37:30 »
Salut,

Tu peux faire un mix des deux sinon :

<?php

new Jailled 0// La tu créer ta varialbe tout en haut.
new Float:JailPositions[][3] =
{
    {
1234.5671234.5671234.5671234.567}, // On initialise une positon avec l'ordre suivant: X, Y, Z, Angle.
    // Etc.
};

if(
strcmp(cmdtext"/jail"true5) == 0
{
    
SetPlayerPos(playeridJailPosition[Jailled][0],JailPosition[Jailled][1],JailPosition[Jailled][2]);//La tu met la position si il y a un seul joueur
    
SetPlayerFacingAngle(playeridJailPosition[Jailled][3]);//Idem
    
Jailled++;//Tu l'incrément revien a fait +1
    
return 1;
}

if(
strcmp(cmdtext"/unjail"true5) == 0
{
    
Jailled--;//-1
    
SetPlayerPos(playeridX,YZ);//La si tu le libère
    
SetPlayerFacingAngle(playeridANGLE);//Idem
    
return 1;
}

Je n'ai pas testé, le code est a verifier !

Spiirou
++

DexX

  • Invité
Re : Random de positions
« Réponse #4 le: 15 Juillet 2011, 13:23:24 »
Bonjour,

Merci de votre aide. C'est comme cela que je pensais faire.

Mais en faite pour l'histoire des deux joueurs, ce que je veux dire par là, c'est que je vais jail un joueur. Il va spawn dans une cellule aléatoirement. Si je jail un autre joueur, il ne faudrait pas qu'il soit dans la même cellule que le premier joueur jail. C'est sa que je veux dire...^^.

Hors ligne Xolokos

  • PAWN/XHTML/CSS/PHP/SQL/JS
  • *
  • Grand Banditisme
  • What are you waiting for ?
  • Messages: 681
    • Voir le profil
Re : Random de positions
« Réponse #5 le: 15 Juillet 2011, 19:45:24 »
Ma méthode est bien je pense.
Nippah !

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : Random de positions
« Réponse #6 le: 16 Juillet 2011, 00:47:53 »
Salut,

Ma méthode est bien je pense.

ta méthode comporte deux problèmes:

 - Code relativement long dès que tu as 4 - 5 positions et plus.
 - difficile de modifier les positions, leur nombre etc...

La méthode de spiirou permet de pouvoir modifier les positions en ne touchant qu'un tableau de données.
Toutefois, spiirou a fait une erreur dans sa déclaration de son tableau, il aurait dû faire:

#define MAX_POSITIONS_JAIL   (4)//nombre max de positions
new Float:JailPositions[MAX_POSITIONS][4] =//4 éléments par position
{
    {1234.567, 1234.567, 1234.567, 1234.567}, // On initialise une positon avec l'ordre suivant: X, Y, Z, Angle.
    // Etc.
};

bonne chance

++Sim++





Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : Random de positions
« Réponse #7 le: 16 Juillet 2011, 00:51:21 »
Ah oui, désolé pour les erreurs. Ça fait un bout de temps que je n'ai pas touché au pawn ^^'

Bonne chance DexX :)
Spiirou

Hors ligne Xolokos

  • PAWN/XHTML/CSS/PHP/SQL/JS
  • *
  • Grand Banditisme
  • What are you waiting for ?
  • Messages: 681
    • Voir le profil
Re : Random de positions
« Réponse #8 le: 16 Juillet 2011, 11:03:47 »
Mais il y a toujours 1/21 position qu'un joueur retombe dans la même cellule ...
Nippah !

Hors ligne spiirou

  • *
  • L'avenir appartient à ceux qui se lèvent
  • Messages: 866
    • Voir le profil
Re : Random de positions
« Réponse #9 le: 16 Juillet 2011, 12:28:21 »
Donc, en fait, toi tu n'as pas compris ce qu'il veut ! :)
Lui il veut simplement qu'il n'y ai jamais plus d'un joueur par cellule, et pour cela, mon code est correct ( avec la correction de Sim :D ) et plus propre que le tien

Spiirou
++

DexX

  • Invité
Re : Random de positions
« Réponse #10 le: 16 Juillet 2011, 15:06:52 »
Merci Spiirou ;).

Merci à tous :).