Szerző Téma: Segítség.  (Megtekintve 1454 alkalommal)

Segítség.
« Dátum: 2017. augusztus 18. - 19:59:46 »
0 Show voters

  •    Hali

    Valaki tudna segíteni? \"?\" amikor beirom az IDt és elküldöm a parancsot kiírja ,hogy unknown command és nem hajtsa végre a feladatot





    CMD:rendorad(playerid,params[])
    {
    if(pInfo[playerid][Admin] >=5)
    {
    new id,szint;
    if(sscanf(params,\"uds[28]\",id)) return SendClientMessage(playerid,COLOR_RED,\"Használat:/rendorad [iD] [szint(0-5)]\");
    if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_RED,IDHIBA);
    format(szFormat,sizeof(szFormat),\"%s rendőrré nevezte ki %s -t \",GetName(playerid),GetName(id));
    SendClientMessageToAll(-1,szFormat);
    pInfo[id][Frakcio] = 1;
    pInfo[id][Frakcioszint] = 1;

    }
    else
    return SendClientMessage(playerid,COLOR_RED,ADMINHIBA);
    return 1;
    }


Segítség.
« Válasz #1 Dátum: 2017. augusztus 18. - 20:20:11 »
0 Show voters
if(sscanf(params,\"uds[28]\",id))
 
3 típus van megadva, u = játékosID/Név, d = decimális, egész szám, s[28] = string. Illetve csak 1-be töltöd bele.
 
Gondolom, neked csak \"ud\" kell, azaz a játékos neve, és egy szám, ami a szintet jelzi. De akkor azt is tárolni kell.
 
if(sscanf(params,\"ud\",id,szint))

Segítség.
« Válasz #2 Dátum: 2017. augusztus 18. - 20:23:32 »
0 Show voters
Kód végén nem kell return, 
else
return SendClientMessage(playerid,COLOR_RED,ADMINHIBA)
 
Helyette :
 
return SendClientMessage(playerid,COLOR_RED,ADMINHIBA)
 
 

Segítség.
« Válasz #3 Dátum: 2017. augusztus 18. - 21:03:41 »
0 Show voters
A kód végére kell a return 1; mivel akkor hibát fog kiirni, hogy cmd_rendorad should a return value.
 
 

Segítség.
« Válasz #4 Dátum: 2017. augusztus 18. - 21:12:24 »
0 Show voters
Nem,az adminszintes ifnek az else részét nézd még, van ott égybol felesleges \"return else\".Nem a return 1-re gondoltam. 
« Utoljára szerkesztve: 2017. augusztus 18. - 21:12:42 írta zsolti125 »

Segítség.
« Válasz #5 Dátum: 2017. augusztus 18. - 21:38:04 »
0 Show voters
Így gondolta a kódot szerintem, és ott még mindig kell. Csak a tabsize miatt nem látszik, alapból így nézne ki a kód.
 
\"gviMzTM.png\"
« Utoljára szerkesztve: 2017. augusztus 18. - 21:38:19 írta Naretev »

Segítség.
« Válasz #6 Dátum: 2017. augusztus 18. - 22:15:02 »
0 Show voters
De felesleges a return az adminszintes ifnél 
 
 
 
if(pInfo[playerid][Admin] asd asd)
 
{
 
//HA megvan az adminja akkor megy tovább 
 
}
 
else SCM(blabla)
 
vagy:
 
if(pInfo[playerid][Admin] asd asd)
 
{
 
//HA megvan az adminja akkor megy tovább 
 
}
 
else
 
{
 
SCM(blabla)
 
}

Segítség.
« Válasz #7 Dátum: 2017. augusztus 18. - 22:27:20 »
0 Show voters
Nem felesleges, mivel hogyha később akarja bővíteni a kódot akkor annál a résznél kifog lépni.
 
itt egy pld.
 

if(pInfo[playerid][pAdmin] < 2) return SendClientMessage(playerid,-1,\"Az admin szint nemjó :C\");
GivePlayerMoney(playerid,100);
// VAGY
if(pInfo[playerid][pAdmin] < 2) SendClientMessage(playerid,-1,\"Az adminszint nemjó :C\");
GivePlayerMoney(playerid,100);

 
Az a return sokat jelent mivel ott visszatér azzal az értékkel, nem engedi a kódot tovább futni. Ergó csak akkor fut le az a rész ha a feltétel hamis. Fordított logika.
 
És ő is ugyanezt csinálja csak nem fordítottan, ő először igaz feltételt keres, majd hogyha hamis akkor ott megállítja a kódot. Igaz,hogy az ő esetében az nem futna le, de hogyha ezt tovább bővíti majd valamivel lefelé, akkor viszont hasznos lesz.

Segítség.
« Válasz #8 Dátum: 2017. augusztus 19. - 08:01:05 »
0 Show voters
Hianyzik a \"szint\".
 
new id,szint;
if(sscanf(params,\"uds[28]\",id)) return SendClientMessage(playerid,COLOR_RED,\"Használat:/rendorad [iD] [szint(0-5)]\");
 
Igy lesz jo.
 
if(sscanf(params,\"ud\", id, szint)) return SendClientMessage(playerid,COLOR_RED,\"Használat:/rendorad [iD] [szint(0-5)]\");
 
pInfo[id][Frakcio] = 1;
pInfo[id][Frakcioszint] = szint;
« Utoljára szerkesztve: 2017. augusztus 19. - 08:03:44 írta Gergely »
server.redcountystories.org:7777

Nem elérhető kos

  • 292
    • Profil megtekintése
Segítség.
« Válasz #9 Dátum: 2017. augusztus 20. - 10:16:16 »
0 Show voters
if(sscanf(params,\"uds[28]\",id)) return SendClientMessage(playerid,COLOR_RED,\"Használat:/rendorad [iD] [szint(0-5)]\");
 
Helyette:
 
If(sscanf(params,\"ui\",id,szam)) return blablabla
 
if(pInfo[playerid][Admin] >=5)
 
Helyette:
 
If(pInfo[playerid][Admin] >= 5)
 
{
 
Blablabla
 
}
 
else
 
{
 
Bla bla bla
 
}
 
 
 
Vagy: (!) Jel
 
If(!pInfo[playerid][Admin] >= 5) return blablabla
 
{
 
Blablabla
 
}

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal