Szerző Téma: Megint SSCANF, most ZCMD mellett  (Megtekintve 900 alkalommal)

Megint SSCANF, most ZCMD mellett
« Dátum: 2011. Január 13. - 13:53:48 »
0 Show voters
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.

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
Megint SSCANF, most ZCMD mellett
« Válasz #1 Dátum: 2011. Január 13. - 13:58:04 »
0 Show voters
Csinálj egy miniszkriptet, amiben csak egy parancsot csinálsz, zcmdvel( vagy dcmdvel, te tudod ) és sscanf-al, és nézd meg, hogy úgy mûködik-e.

Megint SSCANF, most ZCMD mellett
« Válasz #2 Dátum: 2011. Január 13. - 14:03:20 »
0 Show voters
Ok, köszi.
Azt furcsáltam, hogy leszedtem egy adminscriptet eredeti forumról, ugyan így volt megíva.. Az mûködött, ez meg nem..

Megint SSCANF, most ZCMD mellett
« Válasz #3 Dátum: 2011. Január 13. - 22:55:49 »
0 Show voters
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?

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Megint SSCANF, most ZCMD mellett
« Válasz #4 Dátum: 2011. Január 14. - 12:49:33 »
0 Show voters
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:)

Megint SSCANF, most ZCMD mellett
« Válasz #5 Dátum: 2011. Január 14. - 14:08:13 »
0 Show voters
Ahha.
Kösz DrAkE
Már csk azt nem értem, hogy egy csomó scriptben miért van \"méter\" a sztring után.
Zárok.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal