Sziasztok!
Nem sûrûn szoktam segítséget kérni,de igazán nagy bajban vagyok...
A készülõ fizikus frakcióm nem ment zcmdben, ezért át kell írnom strcmp-re, amihez strtokot használok...
Nem nagyon értem, ma kezdtem el tanulni, és jó leírást nem is találtam rá...
Kérem,hogy valaki javítsa ki nekem ezt:
public OnPlayerCommandText(playerid, cmdtext[])
{
new idx;
new cmd[256];
new params[128];
params = strtok(cmdtext, idx);
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, \"/fizikusad\", true) == 0) {
{
if(IsPlayerAdmin(playerid))
{
new PID, name[MAX_PLAYER_NAME], rang;
if(strln(params)) return SendClientMessage(playerid, 0xFF0000AA, \"Használat /fizikusad <ID/Játékos név> <Rang>\");
if(PID == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFF0000AA, \"Rossz ID/Név\");
if(playerid == PID) return SendClientMessage(playerid, COLOR_RED, \"Magadnak nem adhatsz fizikus jogot!\");
if(rang < 0 || rang > 7) return SendClientMessage(playerid, COLOR_RED, \"A Rang csak 1-7 között lehet!\");
GetPlayerName(PID, name, MAX_PLAYER_NAME);
format(rangfile, sizeof(rangfile), \"/fizrang/%s.ini\", name);
if(!dini_Exists(rangfile))
{
dini_Create(rangfile);
dini_IntSet(rangfile, \"Rang\", rang);
}
SetPVarInt(PID, \"Fizikus\", Munka_Fizikus);
SendClientMessage(PID, blue, \"Egy Admin kinevezett fizikusnak!\");
}
return 1;
}
if(strcmp(cmd, \"/feltalal\", true) == 0) {
{
if(strln(params)) return SendClientMessage(playerid, COLOR_RED, \"HIBA:Használat: /feltalal <Név>\");
GetPlayerName(playerid, neve, MAX_PLAYER_NAME);
format(Str, sizeof(Str), \"%s Fizikus feltalálta a/az %s-t!\", neve, feltalalt, Str);
SendClientMessageToAll(COLOR_GREEN, Str);
GivePlayerMoney(playerid, 2550000);
return 1;
}
if(strcmp(cmd, \"/fizikusnaktanulok\", true) == 0) {
{
SendClientMessage(playerid, COLOR_BLUE, \"Felvettek a Tudomány Egyetemre!\");
return 1;
}
if(strcmp(cmd, \"/vizsgaz\", true) == 0) {
{
SendClientMessage(playerid, COLOR_RED, \"Szólj egy Adminnak hogy vizsgázni szeretnél!\");
SendClientMessage(playerid, COLOR_RED, \"((Fizikus rangot fog adni,ha levizsgáztál!))\");
return 1;
}
if(strcmp(cmd, \"/tesztkerdesek\", true) == 0) {
{
GivePlayerMoney(playerid, -50000);
SendClientMessage(playerid, COLOR_GREEN, \"Kérdések:\");
SendClientMessage(playerid, COLOR_GREEN, \"1.Mûveltségi:fizikai/kémiai kérdés:Mi a víz képlete?\");
SendClientMessage(playerid, COLOR_GREEN, \"2.Kirõl nevezték el a Newton mértékegységet?\");
SendClientMessage(playerid, COLOR_GREEN, \"3.Ki a híres példaképe az egyetemnek?\");
SendClientMessage(playerid, COLOR_GREEN, \"4.OOC((Szabad e feltalálni dolgot,ha nem elérhetõ az adminisztrátor?))\");
SendClientMessage(playerid, COLOR_GREEN, \"5.Eddig feltalált dolgok?\");
SendClientMessage(playerid, COLOR_GREEN, \"6.Melyik híres fizikussal dolgozhatsz együtt?\");
SendClientMessage(playerid, COLOR_GREEN, \"7.Melyik híres fizikus tanult ezen az egyetemen?\");
SendClientMessage(playerid, COLOR_GREEN, \"8.Mûveltségi kérdés:Ki írta a Toldit?\");
return 1;
}
if(strcmp(cmd, \"/tesztvalaszok\", true) == 0) {
{
GivePlayerMoney(playerid, -150000);
SendClientMessage(playerid, COLOR_GREEN, \"Válaszok:\");
SendClientMessage(playerid, COLOR_GREEN, \"1.H2O -> Hidrogén 2 Oxigén\");
SendClientMessage(playerid, COLOR_GREEN, \"2.Sir Isaac Newton\");
SendClientMessage(playerid, COLOR_GREEN, \"3.Sir Isaac Newton, Albert Einstein\");
SendClientMessage(playerid, COLOR_GREEN, \"4. OOC((Nem!))\");
SendClientMessage(playerid, COLOR_GREEN, \"5.Téglák,épületek,víz,áram,villanyberendezések\");
SendClientMessage(playerid, COLOR_GREEN, \"6.Sir Isaac Newton\");
SendClientMessage(playerid, COLOR_GREEN, \"7.Albert Einstein\");
SendClientMessage(playerid, COLOR_GREEN, \"8.Arany János\");
return 1;
}
if(strcmp(cmd, \"/fc\", true) == 0) {
{
new Szoveg[128];
if(strln(params)) return SendClientMessage(playerid,0x00FF00,\"HIBA: /fc [szöveg]\");
GetPlayerName(playerid, neve, MAX_PLAYER_NAME);
format(Szoveg, sizeof(Szoveg), \"*%s mondja(rádió): %s\", neve, Szoveg);
SendClientMessageToAll(0x33CCFFAA, Szoveg);
return 1;
}
public OnPlayerSpawn(playerid)
{
new nev[MAX_PLAYER_NAME];
GetPlayerName(playerid, nev, sizeof(nev));
format(rangfile, sizeof(rangfile), \"/fizrang/%s.ini\", nev);
if(dini_Exists(rangfile))
{
new rang;
rang = dini_Int(rangfile, \"Rang\");
if(rang == 1) return SetPVarInt(playerid, \"Tanuló\", 1 && SetPVarInt(playerid, \"Fizikus\", Munka_Fizikus));
if(rang == 2) return SetPVarInt(playerid, \"Feltaláló\", 1 && SetPVarInt(playerid, \"Fizikus\", Munka_Fizikus));
if(rang == 3) return SetPVarInt(playerid, \"Kémikus\", 1 && SetPVarInt(playerid, \"Fizikus\", Munka_Fizikus));
if(rang == 4) return SetPVarInt(playerid, \"Geológus\", 1 && SetPVarInt(playerid, \"Fizikus\", Munka_Fizikus));
if(rang == 5) return SetPVarInt(playerid, \"Biológus\", 1 && SetPVarInt(playerid, \"Fizikus\", Munka_Fizikus));
if(rang == 6) return SetPVarInt(playerid, \"AlbertEinstein\", 1 && SetPVarInt(playerid, \"Fizikus\", Munka_Fizikus));
if(rang == 7) return SetPVarInt(playerid, \"SirIsaacNewton\", 1 && SetPVarInt(playerid, \"Fizikus\", Munka_Fizikus));
}
else
{
SetPVarInt(playerid, \"Fizikus\", Munka_Nincs);
}
return 1;
}
Ha lehet leírást is linkeljetek!Köszi!
Nem nagyon értek az strtok-hoz, de sztem a
new params[128];
params = strtok(cmdtext, idx);
sorokat minden olyan parancshoz be kéne raknod, ahol használni akarod.
Nekem így mûködött
public OnPlayerCommandText(playerid, cmdtext[])
{
new idx;
new cmd[256];
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, \"/feltalal\", true) == 0)
{
new params[256], neve[MAX_PLAYER_NAME];
params = strtok(cmdtext, idx);
if(!strlen(params) || strlen(params) < 5) return SendClientMessage(playerid, COLOR_RED, \"HIBA:Használat: /feltalal <Név>\");
GetPlayerName(playerid, neve, MAX_PLAYER_NAME);
format(Str, sizeof(Str), \"%s Fizikus feltalálta a/az %s-t!\", neve, feltalalt, Str);
SendClientMessageToAll(COLOR_GREEN, Str);
GivePlayerMoney(playerid, 2550000);
return 1;
}
return 0;
}
Illetve van pár helyesírási hiba, mint pl \'strln --> strlen\'
És van, ahol 2x nyitsz/zársz le egy parancsot.
if(strcmp(cmd, \"/fizikusad\", true) == 0) {
{
[/quote]
Megjegyzés: Ajánlom az sscanf include / plugin használatát, hozzá a ZCMD parancsfeldolgozót