Mint az ajánlottátok, dcmd után ZCMD használata mellett próbáltam meg sscanf függvényt használni.
Ugyan az a reakciója, mint dcmd mellett, tehát az elsõ paramétert elfogadja, a másik után SERVER:Unknown Command a válasz.
Hogy ne mindíg a \"/ban\" paranccsal jöjjek, most a szintén nem mûködõ \"/freeze\" parancsot adom példának.
CMD:freeze(playerid, params[]) {
new string[128], result[64], player1;
if(PlayerInfo[playerid][AdminLevel] < 2) return SendLevelError(playerid, 2);
if(sscanf(params, \"ds[100]\", player1, result)) return SendUsageError(playerid, \"/freeze [id] [reason]\");
if(!IsPlayerConnected(player1)) return SendCommandError(playerid, 0);
SendCommandMessage(playerid, player1, \"Freeze\", result);
TogglePlayerControllable(player1,false);
PlayerInfo[player1][Freezed] = 1;
PlayerPlaySound(player1,1057,0.0,0.0,0.0);
format(string, sizeof(string),\"You have been Freezed!\\nBy Admin, %s\\n\\n temp: %s\\n\\nNext time follow the Rules!\", PlayerName(playerid), result);
ShowPlayerDialog(player1, 204, DIALOG_STYLE_MSGBOX, \"You have been Freezed\", string, \"Ok\", \"\");
return 1;
}
Válaszokat elõre is köszönöm.
Bocs a dupla portért..
Szoval, csináltam alap scripteket, amikben megnéztem, hogy hány paraméter után nem mûxik az sscanf.
Paraméter nélkül mûködik.
1 paraméterrel mûködik.
2 paraméterrel már nem mûködik
3 paraméterrel sem mûködik
Scriptek.
Paraméter nélkül.
#include <a_samp>
#include <zcmd>
#include <sscanf>
CMD:mycommand(playerid, params[]) {
SendClientMessage(playerid, 0xFFFFFFAA, \"Its my command\");
return 1;
}
1 paraméterrel
#include <a_samp>
#include <zcmd>
#include <sscanf>
CMD:mycommand(playerid, params[]) {
new player1, name[32], string[128];
if(sscanf(params, \"d\", player1)) return SendClientMessage(playerid, 0xFFFFAAAA, \"Bazdmeg!\");
GetPlayerName(player1, name, sizeof(name));
format(string, sizeof(string), \"%s %d\", name, player1);
SendClientMessage(playerid, 0xFFFFFFAA, string);
return 1;
}
2 paraméterrel
#include <a_samp>
#include <zcmd>
#include <sscanf>
CMD:mycommand(playerid, params[]) {
new player1, name[32], string[128], result[32];
if(sscanf(params, \"ds[32]\", player1, result)) return SendClientMessage(playerid, 0xFFFFAAAA, \"Bazdmeg\");
GetPlayerName(player1, name, sizeof(name));
format(string, sizeof(string), \"%s %d %s\", name, player1, result);
SendClientMessage(playerid, 0xFFFFFFAA, string);
return 1;
}
3 paraméterrel
#include <a_samp>
#include <zcmd>
#include <sscanf>
CMD:mycommand(playerid, params[]) {
new player1, player2, string[128], name[32], pname[32], result[64];
if(sscanf(params, \"dds[64]\", player1, player2, result)) return SendClientMessage(playerid, 0xFFFFAAAA, \"Bazdmeg!\");
GetPlayerName(player1, name, sizeof(name)); GetPlayerName(player2, pname, sizeof(pname));
format(string, sizeof(string), \"%s %d %s %d %s\", name, player1, pname, player2, result);
SendClientMessage(playerid, 0xFFFFFFAA, string);
return 1;
}
Esetleg az lehet baj, hogy a kód formát használom?
CMD:mycommand(playerid, params[]) {
new player1, name[MAX_PLAYER_NAME], string[128], result[32];
if(sscanf(params, \"us\", player1, result)) return SendClientMessage(playerid, 0xFFFFAAAA, \"***dmeg\");
else if(player1 == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFFFFAAAA, \"Nincs ilyen játékos.\");
GetPlayerName(player1, name, sizeof(name));
format(string, sizeof(string), \"%s %s\", name, result);
SendClientMessage(playerid, 0xFFFFFFAA, string);
return 1;
}
Remélem ebbõl kitudod következtetni hol hibáztál:)