Szerző Téma: Strtok  (Megtekintve 894 alkalommal)

Nem elérhető Rexii

  • 471
    • Profil megtekintése
Strtok
« Dátum: 2012. április 20. - 21:25:13 »
0 Show voters
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!

Strtok
« Válasz #1 Dátum: 2012. április 21. - 10:01:38 »
0 Show voters
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

Nem elérhető Rexii

  • 471
    • Profil megtekintése
Strtok
« Válasz #2 Dátum: 2012. április 22. - 12:49:38 »
0 Show voters
Köszi!Igaz, tényleg :D Nem vettem észre,köszi!
 
Idézetet írta: TengeriMalac date=1334995298\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"20451\" data-ipsquote-contentclass=\"forums_Topic
Megjegyzés: Ajánlom az sscanf include / plugin használatát, hozzá a ZCMD parancsfeldolgozót
 
Igen, én is úgy szoktam scriptelni,csak az én házi teszt szerveremen nem mûködik soha!

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Strtok
« Válasz #3 Dátum: 2012. április 22. - 12:54:11 »
0 Show voters
Idézetet írta: Rexii date=1335091778\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"20451\" data-ipsquote-contentclass=\"forums_Topic
Köszi!Igaz, tényleg :D Nem vettem észre,köszi!
 

Megjegyzés: Ajánlom az sscanf include / plugin használatát, hozzá a ZCMD parancsfeldolgozót
 
Igen, én is úgy szoktam scriptelni,csak az én házi teszt szerveremen nem mûködik soha!
 
[/quote]
Csatlakoztass NPC-t, hogy ne neked jusson a legkisebb ID, az szokott bugolni.

Strtok
« Válasz #4 Dátum: 2012. április 22. - 14:16:21 »
0 Show voters
Fuck The Plugin.
én a kód formát használom, és tökéletesen meg vagyok vele elégedve.  :)

Strtok
« Válasz #5 Dátum: 2012. április 22. - 19:42:49 »
0 Show voters
Írtam az strtok használatáról egy kis szösszenetet, ha gondolod olvasd el, hátha az én leírásom alapján könnyebben megérted használatát.
http://sampforum.hu/index.php?topic=24788.msg261637#msg261637

Nem elérhető Rexii

  • 471
    • Profil megtekintése
Strtok
« Válasz #6 Dátum: 2012. április 23. - 13:53:51 »
0 Show voters
Idézetet írta: ɐʞzssǝlosz date=1335116569\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"20451\" data-ipsquote-contentclass=\"forums_Topic
Írtam az strtok használatáról egy kis szösszenetet, ha gondolod olvasd el, hátha az én leírásom alapján könnyebben megérted használatát.
http://sampforum.hu/index.php?topic=24788.msg261637#msg261637
 
Köszönöm szépen!

Strtok
« Válasz #7 Dátum: 2012. április 23. - 16:29:18 »
0 Show voters
Idézetet írta: Rexii date=1335182031\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"20451\" data-ipsquote-contentclass=\"forums_Topic


Írtam az strtok használatáról egy kis szösszenetet, ha gondolod olvasd el, hátha az én leírásom alapján könnyebben megérted használatát.
http://sampforum.hu/index.php?topic=24788.msg261637#msg261637
 
Köszönöm szépen!
 
[/quote]
Téma zárható?

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal