GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: ShaDowxx™ le 12 Février 2011, 16:40:20

Titre: Problème pseudo DM
Posté par: ShaDowxx™ le 12 Février 2011, 16:40:20
Bonjour aujourd'hui j'ai un gros bug et je vous explique :

Imaginons qu'un joueur arrive sur le dm et qu'un autre le rejoint. Ce joueur s'appelle Pédobear et l'autre Leatherface ben le deuxième joueur s'apelle Pédobear pouvez-vous me dire pourquoi le code bug ?

Code: (pawn) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{
{
if (strcmp("/dm1", cmdtext, true, 10) == 0)
{
    if( DM[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_RED, "Vous êtes déjà en DM1 ! ");
    return 1;
    }
    if (DM[playerid] == 0)
    {
    new rand = random(sizeof(dm1));
DM[playerid] = 1;
SetPlayerPos(playerid, dm1[rand][0], dm1[rand][1], dm1[rand][2]);
new name[ MAX_PLAYER_NAME ] = "";
new msg[900];
GetPlayerName( playerid, name, MAX_PLAYER_NAME );
format(name, sizeof(name), "%s a rejoint le DM1 (/dm1)", name, playerid);
SendClientMessageToAll(COLOR_GREEN, name);
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
format(msg, sizeof(msg), "[DM1]%s", PlayerName);
SetPlayerName(playerid, msg);
GivePlayerWeapon(playerid,26,2500);
return 1;
}
return 1;
}
if (strcmp("/dmq", cmdtext, true, 10) == 0)
{
    if (DM[playerid] == 0)
    {
SendClientMessage(playerid, COLOR_RED, "Vous pouvez utiliser cette commande que en DM !");
return 1;
}
if (DM[playerid] == 1)
{
    DM[playerid] = 0;
SpawnPlayer(playerid);
SetPlayerName(playerid, PlayerName);
new name[ MAX_PLAYER_NAME ] = "";
GetPlayerName( playerid, name, MAX_PLAYER_NAME );
format(name, sizeof(name),"%s n'est plus en DM", name, playerid);
SendClientMessageToAll(COLOR_GREEN, name);
ResetPlayerWeapons(playerid);
return 1;
}
return 1;
}
return 0;
}
}
Titre: Re : Problème pseudo DM
Posté par: cristab le 12 Février 2011, 16:54:36


dans vos declaration de variable ajouter c'est deux la
new initialname[MAX_PLAYERS][MAX_PLAYER_NAME];
new playerfinal[32];//32 pris au hazard mais sa ne bug pas avec plus il y a des chance que sa bug

en bas de votre script

SetInitialname(playerid)
{
SetPlayerName(playerid,initialname[playerid]);
}
SetBeforName(tag[],playerid)
{
format(playerfinal, 32, "%s%s",tag, initialname[playerid]);
SetPlayerName(playerid, playerfinal);
}
SetAfterName(tag[],playerid)
{
format(playerfinal, 32, "%s%s", initialname[playerid],tag);
SetPlayerName(playerid, playerfinal);
}

dans le onplayerconnect
GetPlayerName(playerid, initialname[playerid], MAX_PLAYER_NAME);
par exemple dans votre commande /dm vous l'utiliser comme ceci SetBeforName("[DM]",playerid);

sinon voila 3 commande pour tester

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/reset", cmdtext, true) == 0)
{
SetInitialname(playerid);
return 1;
}
    if (strcmp("/after", cmdtext, true) == 0)
{
SetAfterName("[dm1]",playerid);
return 1;
}
if (strcmp("/befor", cmdtext, true) == 0)
{
SetBeforName("[dm1]",playerid);
return 1;
}
return 0;
}
Titre: Re : Problème pseudo DM
Posté par: ShaDowxx™ le 13 Février 2011, 09:56:05
C'est gentil mais j'ai rien compris !
Titre: Re : Problème pseudo DM
Posté par: babaorum59 le 13 Février 2011, 10:19:44
c'est simple ^^
les new tu les cole ou tu veut
comme le SetInitialname(playerid)

les commande tu les modifie comme tu veut et le tours est jouer
Titre: Re : Problème pseudo DM
Posté par: cristab le 13 Février 2011, 10:28:17
je ne voit pas en quoi mes fonction sont complexe :s
Titre: Re : Problème pseudo DM
Posté par: babaorum59 le 13 Février 2011, 11:18:49
si même moi j'ai comprit , tout le monde peut comprendre ^^