-
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;
}
-
if(sscanf(params,\"u\",id))
// Csere ->
if(sscanf(params, \"u\", params[0]))
id = params[0];
-
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.
-
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ő!\");
-
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;
}
-
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?
-
Pontosan mi nem működik? Mit ad vissza? Leírnád a \'Logged\' stockodat?
EDIT: Írd le a teljes Logged-et akkor.
-
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.
-
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!\");
-
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.
-
É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.
-
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!\");