Szerző Téma: Sscanf probléma  (Megtekintve 1221 alkalommal)

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Sscanf probléma
« Dátum: 2015. szeptember 18. - 19:51:46 »
0 Show voters
Sziasztok !
Egy újfajta parancs módon dolgozok ( nekem új ), hogy ne csak ID-t lehessen hanem Nevet is beirni paraméternek,nos ezzel gyült meg a bajom, hogyha nincs fent az adott nevű/id-jű játékos akkor nem küldi el neki azt az üzenetet, és konzolba irja ezt :
sscanf warning: Format specifier does not match parameter count.

 
Itt a parancs :
 

CMD:makeadmin(playerid,params[])
{
new id;
if(pInfo[playerid][Admin] >= ADMIN_FOADMIN)
{
if(sscanf(params,\"u\",id)) return SendClientMessage(playerid, -1,\"\"SZ_PIROS\"[ \"SZERVER_NEV\" ]\"SZ_FEHER\" Használat : /makeadmin [ Név/ID ]\");
{
   if(Logged[id] == 1)
   {
      SendClientMessage(playerid, -1,\"\"SZ_PIROS\"[ \"SZERVER_NEV\" ]\"SZ_FEHER\" Lefut a parancs !\");
   }
   else SendClientMessage(playerid, -1,\"\"SZ_PIROS\"[ \"SZERVER_NEV\" ]\"SZ_FEHER\" Ez a játékos nem online !\");
}
}
else SendClientMessage(playerid, -1,\"\"SZ_PIROS\"[ \"SZERVER_NEV\" ]\"SZ_FEHER\" Ehhez a parancshoz nincs jogosultságod !\");
return 1;
}

Sscanf probléma
« Válasz #1 Dátum: 2015. szeptember 18. - 20:19:02 »
0 Show voters
if(sscanf(params,\"u\",id)) 
// Csere ->
if(sscanf(params, \"u\", params[0]))
id = params[0];

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Sscanf probléma
« Válasz #2 Dátum: 2015. szeptember 18. - 20:33:27 »
0 Show voters
Változatlan.
Gondolom az lehet a hiba hogyha beirja hogy KisPista, akkor igy helyetessíti be Logged[KisPista] == 1, ugye bár ez helytelen ezért nem fut le, de ez csak elmélet.

Sscanf probléma
« Válasz #3 Dátum: 2015. szeptember 18. - 21:13:49 »
0 Show voters
Szia!! nekem így van nézd meg. Remélem jó!
Globális változóként hozd létre! Ez ugye a másik játékoshoz jó gondolom érted
 
new JatekosID;

 
ezt pedig a parancshoz
 

       new Szint;
    if(sscanf(params, \"id\", JatekosID, Szint))
      return SendClientMessage(playerid, FEHER, \"Használat: /adminad [iD] [szint]\");
    if(!IsPlayerConnected(JatekosID))
      return SendClientMessage(playerid, PIROS, \"A játékos nem elérhető!\");

Sscanf probléma
« Válasz #4 Dátum: 2015. szeptember 18. - 23:07:09 »
0 Show voters
CMD:makeadmin(playerid, params[])
{
        if(pInfo[playerid][Admin] < ADMIN_FOADMIN) return SendClientMessage(playerid, SZ_PIROS, \"[ \"SZERVER_NEV\" ]\"SZ_FEHER\" Ehhez a parancshoz nincs jogosultságod !\");
if(sscanf(params, \"u\", params[0])) return SendClientMessage(playerid, SZ_PIROS, \"[ \"SZERVER_NEV\" ]\"SZ_FEHER\" Használat : /makeadmin [ Név/ID ]\");
if(!Logged(params[0])) return SendClientMessage(playerid, SZ_PIROS, \"[ \"SZERVER_NEV\" ]\"SZ_FEHER\" Ez a játékos nem online !\");
       
SendClientMessage(playerid, SZ_PIROS, \"[ \"SZERVER_NEV\" ]\"SZ_FEHER\" Lefut a parancs !\");
        return 1;
}
« Utoljára szerkesztve: 2015. szeptember 19. - 12:13:02 írta Hawkz »

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Sscanf probléma
« Válasz #5 Dátum: 2015. szeptember 19. - 12:06:11 »
0 Show voters
Változatlan, ugyan az a hibája van, másmódon megtudnám csinálni de úgy akarom hogy a nevét / id-t irja be ésha nincs csatlakozva akkor irja, a params[0], sem jó.
Viszont arra rájöttem hogy IsPlayerConnected(id) == 1-el tökéletesen müködik szóval Logged-el van a problem?
« Utoljára szerkesztve: 2015. szeptember 19. - 12:13:26 írta 1Mark6 »

Sscanf probléma
« Válasz #6 Dátum: 2015. szeptember 19. - 12:14:01 »
0 Show voters
Pontosan mi nem működik? Mit ad vissza? Leírnád a \'Logged\' stockodat?
EDIT: Írd le a teljes Logged-et akkor.

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Sscanf probléma
« Válasz #7 Dátum: 2015. szeptember 19. - 12:27:14 »
0 Show voters
Milyen stock, ez csak egy változó,
 
new Logged[MAX_PLAYERS];
if(dialogid == bejelentkezes)
{
      Logged[playerid] = 1; // A teljes szkriptet kivágtam mert fölösleges ez a lényeg
}

 
és kb. ennyi az ellenörzése if(Logged[playerid] == 1)
EDIT : Amikor beirnám szerveren hogy pl. /makeadmin KisPista , akkor SERVER UNKNOW COMMAND, de ha beirom hogy /makeadmin 1Mark6 akkor lefut.

Sscanf probléma
« Válasz #8 Dátum: 2015. szeptember 19. - 12:34:33 »
0 Show voters
Logged[MAX_PLAYERS]-be nem fogod megtalálni az ID-jét, mivel nincs fent. Először ugyanígy kell lekérdezned, hogy fent van-e.
 
if(!IsPlayerConnected(params[0]))return SendClientMessage(playerid, SZ_PIROS, \"[ \"SZERVER_NEV\" ]\"SZ_FEHER\" Nem online!\");
if(Logged(params[0]) == 0) return SendClientMessage(playerid, SZ_PIROS, \"[ \"SZERVER_NEV\" ]\"SZ_FEHER\" Nincs bejelentkezve!\");
« Utoljára szerkesztve: 2015. szeptember 19. - 12:41:19 írta Hawkz »

Sscanf probléma
« Válasz #9 Dátum: 2015. szeptember 19. - 12:37:25 »
0 Show voters
Idézetet írta: 1Mark6 date=1442657171\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57787\" data-ipsquote-contentclass=\"forums_Topic
Változatlan, ugyan az a hibája van, másmódon megtudnám csinálni de úgy akarom hogy a nevét / id-t irja be ésha nincs csatlakozva akkor irja, a params[0], sem jó.
Viszont arra rájöttem hogy IsPlayerConnected(id) == 1-el tökéletesen müködik szóval Logged-el van a problem?
 
Mivel a Loggedbe az idjét tárolod ezért azt nem adhatod meg így paranccsal, hisz \"Név, sTB\"-t adhatsz meg.

Nem elérhető 1Mark6

  • 437
    • Profil megtekintése
Sscanf probléma
« Válasz #10 Dátum: 2015. szeptember 19. - 13:13:36 »
0 Show voters
Értem, mostmár rájöttem én is :D Köszönöm a segitséget, esetleg egy stock Logged parancsot kérhetnék? Ami igaz értéket ad ha Connected a player.

Sscanf probléma
« Válasz #11 Dátum: 2015. szeptember 19. - 13:20:50 »
0 Show voters
Természetesen, tessék:
 
stock IsLogged(playerid)
{
    if(IsPlayerConnected(playerid)) if(Logged(playerid) == 1)) return 1;
    return 0;
}

 
Használata pedig:
 
// Nálad a playerid helyére params[0]-t kell írni.
if(!IsLogged(playerid)) return SendClientMessage(playerid, -1, \"Nem online, vagy nincs bejelentkezve!\");
« Utoljára szerkesztve: 2015. szeptember 19. - 13:24:20 írta Hawkz »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal