GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Falcon le 10 Janvier 2010, 18:57:09

Titre: Nombre de spawns dépendant du nombre de joueurs connectés
Posté par: Falcon le 10 Janvier 2010, 18:57:09
Bonjour,

Voilà, je suis débutant sous PAWNO et j'ai voulu réaliser un script (à priori pas trop compliqué) qui permettrait de définir le nombre de spawns en fonction du nombre de joueurs connectés.

Cela serait pour éviter à la fois les spawnkills ainsi que de devoir traverser toute la map pour trouver un joueur.

J'ai réalisé ce script. Pouvez-vous s'il vous plaît me dire s'il est correct et, dans le cas contraire, ce qui cloche?

Merci, Falcon.

#define FILTERSCRIPT

#include <a_samp>

new NombreJoueursConnectes[MAX_PLAYERS];

new Float:Spawns1Joueur[2][3] = { // 2 positions aléatoires (si nbre de joueurs connectés est compris entre 6 et 10)
{1958.3783,1343.1572,15.3746},
{2199.6531,1393.3678,10.8203}
};

new Float:Spawns2Joueur[3][3] = { // 3 positions aléatoires (si nbre de joueurs connectés est compris entre 11 et 15)
{1958.3783,1343.1572,15.3746},
{2199.6531,1393.3678,10.8203},
{2483.5977,1222.0825,10.8203}
};

new Float:Spawns3Joueur[4][3] = { // 3 positions aléatoires (si nbre de joueurs connectés est compris entre 16 et 20)
{1958.3783,1343.1572,15.3746},
{2199.6531,1393.3678,10.8203},
{2637.2712,1129.2743,11.1797},
{2483.5977,1222.0825,10.8203}
};

new Float:Spawns4Joueur[5][3] = { // 5 positions aléatoires (si nbre de joueurs connectés est strictement supérieur à 20)
{1958.3783,1343.1572,15.3746},
{2199.6531,1393.3678,10.8203},
{2637.2712,1129.2743,11.1797},
{2637.2712,1129.2743,11.1797},
{2483.5977,1222.0825,10.8203}
};

public OnFilterScriptInit()
{
print("\n--------------------------------------");
print("Random Spawn by Falcon");
print("--------------------------------------\n");
return 1;
}

public OnPlayerConnect(playerid) // Quand un joueur se connecte
{
NombreJoueursConnectes[playerid]++; // Nombre de joueurs connectés : +1
return 1;
}

public OnPlayerSpawn(playerid)
{
new rand1 = random(sizeof(Spawns1Joueur));
new rand2 = random(sizeof(Spawns2Joueur));
new rand3 = random(sizeof(Spawns3Joueur));
new rand4 = random(sizeof(Spawns4Joueur));

if(NombreJoueursConnectes[playerid]<=5) // Si le nombre de joueurs connectés est inférieur ou égal à 5
{
SetPlayerPos(playerid, 1523.5126,-1012.0200,24.0504); // Le joueur apparaitra aux positions définies
}
else if(NombreJoueursConnectes[playerid]>>5 && NombreJoueursConnectes[playerid]<=10) // Si le nombre de joueurs connectés est compris entre 6 et 10
{
    SetPlayerPos(playerid, Spawns1Joueur[rand1][0], Spawns1Joueur[rand1][1], Spawns1Joueur[rand1][2]); // Le joueur apparaitra aléatoirement à une des 2 positions définies
}
else if(NombreJoueursConnectes[playerid]>>10 && NombreJoueursConnectes[playerid]<=15) // Si le nombre de joueurs connectés est compris entre 11 et 15
{
    SetPlayerPos(playerid, Spawns2Joueur[rand2][0], Spawns2Joueur[rand2][1], Spawns2Joueur[rand2][2]); // Le joueur apparaitra aléatoirement à une des 3 positions définies
}
else if(NombreJoueursConnectes[playerid]>>15 && NombreJoueursConnectes[playerid]<=20) // Si le nombre de joueurs connectés est compris entre 16 et 20
{
    SetPlayerPos(playerid, Spawns3Joueur[rand3][0], Spawns3Joueur[rand3][1], Spawns3Joueur[rand3][2]); // Le joueur apparaitra aléatoirement à une des 4 positions définies
}
else // Si le nombre de joueurs connectés est strictement supérieur à 20
{
    SetPlayerPos(playerid, Spawns4Joueur[rand4][0], Spawns4Joueur[rand4][1], Spawns4Joueur[rand4][2]); // Le joueur apparaitra aléatoirement à une des 4 positions définies
}
return 1;
}

public OnPlayerDisconnect(playerid) // Quand un joueur se déconnecte
{
NombreJoueursConnectes[playerid]++; // Nombre de joueurs connectés : -1
return 1;
}

Titre: Re : Nombre de spawns dépendant du nombre de joueurs connectés
Posté par: Diablo62 le 11 Janvier 2010, 00:37:56
Salut.

Je n'ai pas testé et donc je ne sais pas s'il fonctionne bien ou non. Cependant il y a quelques petits points qui me chiffonnes:

Tout d'abord il y a ça : " if(NombreJoueursConnectes[playerid]>>5 ". Je n'avais encore jamais vu >>. Si tu veux que ce soit supérieur à un Nombre, il suffit d'en mettre 1
Ensuite, dans OnPlayerConnect(playerid) tu écrit NombreJoueursConnectes[playerid]++ (chose qui à l'air juste ), mais dans OnPlayerDisconnect(playerid) tu remet  ++ (ce qui augmente encore le nombre de joueurs). Essaye plutôt de mettre -- à la place ;)

Pour le reste, je n'ai pas regarder en profondeur ni même Tester donc je ne suis pas sur d'avoir raison ;)
Titre: Re : Nombre de spawns dépendant du nombre de joueurs connectés
Posté par: Ssk le 11 Janvier 2010, 08:17:02
Ton code ne fonctionnera strictement pas ^^
enfin presque mais pas comme tu le veut  lol


Sinon voila ma func. pour savoir combien de joueur sont connecté

public CombienDeConnecter();
public CombienDeConnecter()
{
new connecter = NULL;
for(new i = 0; i < MAX_PLAYERS;i++)
{
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
        connecter ++;
    }
}
return connecter;
}

On l' utilise comme ca

if(CombienDeConnecter() > 5){}

Ton code c' est un FS ?
Si, non retire le #define FILTERSCRIPT


Sinon pas besoin de crée plusieurs tableau pour stocker les positions ^^

tu peut en faire qu' un seul et ca suffira
Titre: Re : Nombre de spawns dépendant du nombre de joueurs connectés
Posté par: FuSion le 11 Janvier 2010, 10:58:31
Tu as commis une petite erreur sasuke, forward CombienDeConnecter(); pour la premiere non ?
Titre: Re : Nombre de spawns dépendant du nombre de joueurs connectés
Posté par: Ssk le 11 Janvier 2010, 14:06:11
c' est la même chose ^^

public function();
private function();
forward function();


Je ne suis pas sûr pour private ^^
Titre: Re : Nombre de spawns dépendant du nombre de joueurs connectés
Posté par: Falcon le 13 Janvier 2010, 17:10:31
Bonjour,

Merci beaucoup de vos réponses.
Je vais regarder ça plus attentivement et si jamais je ne comprends pas je reposterai un message sur le même topic.

PS : Je ne vois pas bien comment on ne peut faire qu'un seul tableau et, de plus, en compilant, il me dit qu'il ne connait pas "NULL".

Merci encore, ++

Falcon
Titre: Re : Nombre de spawns dépendant du nombre de joueurs connectés
Posté par: S!m le 13 Janvier 2010, 18:53:43
Salut,

NULL c'est 0 en fait (dans ce cas)

c un nombre vide, tous les bits sont à 0...

++Sim++
Titre: Re : Nombre de spawns dépendant du nombre de joueurs connectés
Posté par: Ssk le 13 Janvier 2010, 20:42:22
Arg ouais j' ai oublié qu' en pawn il y a pas de NULL ^^