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
-
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 ?
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;
}
}
-
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;
}
-
C'est gentil mais j'ai rien compris !
-
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
-
je ne voit pas en quoi mes fonction sont complexe :s
-
si même moi j'ai comprit , tout le monde peut comprendre ^^