-
Sziasztok! Kezdo vagyok, bocsassatok meg.
Mi a print es a printf kozott a kulonbseg?
Mikor printf-et hasznalok, a suerveren kiirja a chat: Unknpwn command
-
Csak annyi a külömbség, hogy a printf egyben egy kis format függvény is. (printf(ormat)) :) Tehát nem kell külön megformáznod a szöveget, hanem egy sorban kiírhatod, és meg is formázhatod. Példa:
new valtozo = 255;
printf(\"A változó értéke: %d\",valtozo);
Print pedig csak simán kiírja, olyan mintha SendClientMessage lenne. Annyi különbséggel, hogy a print, és a printf a konzolba(valamint szerver logba) írja ki a szöveget, és nem a Chatbe. Például az elõzõ példát print függvénnyel így oldhatod meg:
new valtozo = 255;
new str[25];
format(str,sizeof(str),\"A változó értéke: %d\",valtozo);
print(str);
-
Ez sokat segített, köszönöm!
CMD:full(playerid,params[])
{
new uzenet[256];
SetPlayerSkin(playerid, 286);
SetPlayerArmour(playerid, 100);
SetPlayerHealth(playerid, 100);
GivePlayerWeapon(playerid,31 , 5000);
GivePlayerWeapon(playerid,27 , 300);
GivePlayerWeapon(playerid, 24, 5000);
GivePlayerWeapon( playerid,4, 1);
GivePlayerWeapon( playerid,16, 600);
GivePlayerWeapon(playerid, 29, 5000);
GivePlayerWeapon(playerid, 46, 1);
format(uzenet,sizeof(uzenet),\"Sikeresen fullos lettél, kedves %s!\",nev);
SendClientMessage(playerid,COLOR_YELLOW2,uzenet);
printf(\"%s használta a /full parancsot!\");
return 1;
}
Ha ezt beírom a chatbe, mármint a parancsot, akkor a végére a SendClientMessage után kiírja, hogy: Unknown command.
Ugye ezt a printf-re írja ki. Ha a kód elejére rakom a printf-t, akkor a feladat elvégzésének 1. lépése az hogy logba beírja(printf), és a chatembe kiírja hogy: Unknown command. Mi lehet ez a hiba? Nem kellene neki kiírnia semmit, ha használom a printf-t.
[mod]Javítottam a
taget
tagre![/mod]
-
a printf-ben nem adtad meg a változód értékét, jelen esetben a játékos nevét.
printf(%s használta a /full parancsot!\",GetPlayerName(playerid, MAX_PLAYER_NAME));
-
Helyett
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid,pname,MAX_PLAYER_NAME);
printf(\"%s használta a /full parancsot!\",pname);
GetPlayerName a játékosnév hosszúságával tér vissza, vagy 0-val ha nem elérhetõ, nem pedig a játékos nevével mint karaterláncban.
De úgy látom hogy már van egy \'nev\' változó a szkriptben format funkciónál, szóval csak elég lesz így is.
printf(\"%s használta a /full parancsot!\",nev);
-
Ha ZCMD-t használsz:
public OnPlayerCommandPerformed(playerid, cmdtext[], success){
if(success){
new name[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, name, sizeof(name));
printf(\"%s használta a %s parancsot\",name,cmdtext);
}
return 1;
}
Ha ezt beteszed akkor nem kell minden parancshoz oda írogatni a printet :D
-
Használj inkább stockot a név lekérdezéshez.. sokkal egyszerûbb :)
stock pName( playerid )
{
new name[ 24 ];
GetPlayerName( playerid, name, sizeof( name ) );
return name;
}
-
[mod]Régi téma, Zártam![/mod]