25.11.2011, 15:23
Olha, se vc ta comeзando um GM do 0, eu te aconselho a usar sscanf, Strtok nгo й seguro alйm de ser lento entre outros problemas...
@edit
Sua OnPlayerCommandText em sscanf
Se quiser usar desse jeito tera que instalar o plugin sscanf
Se usar sscanf e tiver qualquer duvida sinta-se а vontade pra me enviar MP's.
@edit2
Tutorial de como usar sscanf a unica diferenзa й que nesse tutorial mostra usando ZCMD, mas nгo tem muita diferenзa (EM FORMA DE USO NГO OPTIMIZAЗГO) ZCMD pra strcmp, por exemplo:
if(!strcmp(cmd, "/dar", true))
CMD:dar(playerid, params)
ambos sгo iguais com 2 formas diferentes.
@edit
Sua OnPlayerCommandText em sscanf
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[50 char], params[100 char], PlayerB;
unformat(cmdtext, "s[50]S( )[100]",cmd,params);
if(strcmp(cmd, "/convidar", true) == 0)
{
if(sscanf(params, "u", PlayerB)) return SendClientMessage(playerid, -1, "Uso correto: /convidar [id]");
if(!IsPlayerConnected(PlayerB)) return SendClientMessage(playerid, Branco, "Este jogador nгo estб conectado");
if(PlayerInfo[playerid][PMilitar] >= 6)
{
PlayerInfo[PlayerB][PMilitar] = 1;
SendClientMessage(PlayerB, Branco, "Vocк entrou а Polнcia Militar");
SetPlayerColor(PlayerB, Cor_PMilitar);
return 1;
}
else if(PlayerInfo[playerid][Groove] >= 6)
{
PlayerInfo[PlayerB][Groove] = 1;
SendClientMessage(PlayerB, Branco, "Vocк entrou а Groove");
SetPlayerColor(PlayerB, Cor_Groove);
return 1;
}
else if(PlayerInfo[playerid][Ballas] >= 6)
{
PlayerInfo[PlayerB][Ballas] = 1;
SendClientMessage(PlayerB, Branco, "Vocк entrou aos Ballas");
SetPlayerColor(PlayerB, Cor_Ballas);
return 1;
}
return 1;
}
if(strcmp(cmd, "/demitir", true) == 0)
{
if(sscanf(params, "u", PlayerB)) return SendClientMessage(playerid, -1, "Uso correto: /demitir [id]");
new string[47];
GetPlayerName(playerid, string, 24);
if(!IsPlayerConnected(PlayerB)) return SendClientMessage(playerid, Branco, "Este jogador nгo estб conectado");
if(PlayerInfo[playerid][PMilitar] >= 6)
{
if(PlayerInfo[PlayerB][PMilitar] < 1) return SendClientMessage(playerid, Branco, "Este jogador nгo й da sua organizaзгo");
PlayerInfo[PlayerB][PMilitar] = 0;
format(string, sizeof(string), "Vocк foi demitido por %s", string);
SendClientMessage(PlayerB, Branco, string);
return 1;
}
else if(PlayerInfo[playerid][Groove] >= 6)
{
if(PlayerInfo[PlayerB][Groove] < 1) return SendClientMessage(playerid, Branco, "Este jogador nгo й da sua organizaзгo");
PlayerInfo[PlayerB][Groove] = 0;
format(string, sizeof(string), "Vocк foi demitido por %s", string);
SendClientMessage(PlayerB, Branco, string);
return 1;
}
else if(PlayerInfo[playerid][Ballas] >= 6)
{
if(PlayerInfo[PlayerB][Ballas] < 1) return SendClientMessage(playerid, Branco, "Este jogador nгo й da sua organizaзгo");
PlayerInfo[PlayerB][Ballas] = 0;
format(string, sizeof(string), "Vocк foi demitido por %s", string);
SendClientMessage(PlayerB, Branco, string);
return 1;
}
return 1;
}
if(strcmp(cmd, "/promover", true) == 0)
{
new level;
if(sscanf(params, "ud", PlayerB, level))
return SendClientMessage(playerid, -1, "Uso correto: /promover [id] [cargo]");
if(level < 1 || level > 6) return SendClientMessage(playerid, Branco, "O level deve ser maior que 0 e menor que 7");
new string[58];
GetPlayerName(playerid, string, 24);
if(PlayerInfo[playerid][PMilitar] >= 6)
{
if(PlayerInfo[PlayerB][PMilitar] < 1) return SendClientMessage(playerid, Branco, "Este jogador nгo й da sua org");
PlayerInfo[PlayerB][PMilitar] = level;
format(string, sizeof(string), "Vocк foi promovido a level %d por %s", level, string););
SendClientMessage(PlayerB, Branco, string);
return 1;
}
else if(PlayerInfo[playerid][Groove] >= 6)
{
if(PlayerInfo[PlayerB][Groove] < 1) return SendClientMessage(playerid, Branco, "Este jogador nгo й da sua org");
PlayerInfo[PlayerB][Groove] = level;
format(string, sizeof(string), "Vocк foi promovido a level %d por %s", level, string););
SendClientMessage(PlayerB, Branco, string);
return 1;
}
else if(PlayerInfo[playerid][Ballas] >= 6)
{
if(PlayerInfo[PlayerB][Ballas] < 1) return SendClientMessage(playerid, Branco, "Este jogador nгo й da sua org");
PlayerInfo[PlayerB][Ballas] = level;
format(string, sizeof(string), "Vocк foi promovido a level %d por %s", level, string););
SendClientMessage(PlayerB, Branco, string);
return 1;
}
return 1;
}
return 0;
}
Se usar sscanf e tiver qualquer duvida sinta-se а vontade pra me enviar MP's.
@edit2
Tutorial de como usar sscanf a unica diferenзa й que nesse tutorial mostra usando ZCMD, mas nгo tem muita diferenзa (EM FORMA DE USO NГO OPTIMIZAЗГO) ZCMD pra strcmp, por exemplo:
if(!strcmp(cmd, "/dar", true))
CMD:dar(playerid, params)
ambos sгo iguais com 2 formas diferentes.