Szerző Téma: Adminchat hiba  (Megtekintve 744 alkalommal)

Adminchat hiba
« Dátum: 2012. október 17. - 19:11:05 »
0 Show voters

    CMD:a(playerid, params[])
    {
        new pName[MAX_PLAYER_NAME];
new szoveg;
new str[128];
if(sscanf(params, \"s\", szoveg)) return SendClientMessage(playerid, GREY, \"Használat: /a [szöveg]\");
for(new i = 0; i < MAX_PLAYERS; i++)
{
    if(Info[adminszint] == 1 || Info[adminszint] == 2 || Info[adminszint] == 3 || Info[adminszint] == 2012)
    {
        format(str, sizeof(str), \"[%d]Admin %s: %s\", Info[playerid][adminszint], pName, szoveg);
        SendClientMessage(i, YELLOW, str);
}
}
return 1;
}

 
Beírom hogy /a asd és ezt írja: \"[2012]Admin sd: asd\"

GetPlayerName(i, pName, sizeof(pName)); -el pedig ezt: /a asd - \"[2012]Admin DaWee: aDaWee
« Utoljára szerkesztve: 2012. október 17. - 19:12:37 írta Johnies00 »

Adminchat hiba
« Válasz #1 Dátum: 2012. október 17. - 19:41:34 »
+1 Show voters
CMD:a(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, GREY, \"Használat: /a [szöveg]\");
new
pName[MAX_PLAYER_NAME],
str[128];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
format(str, sizeof(str), \"[%d]Admin %s: %s\", Info[playerid][adminszint], pName, params);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(Info[adminszint] == 1 || Info[adminszint] == 2 || Info[adminszint] == 3 || Info[adminszint] == 2012)
{
   SendClientMessage(i, YELLOW, str);
}
}
return 1;
}

Adminchat hiba
« Válasz #2 Dátum: 2012. október 17. - 20:12:46 »
0 Show voters
Köszönöm szépen.  :) :)

Esetleg majd HA RÁÉRSZ és unatkoznál elmagyaráznál nekem 1-2 dolgot?


- Ugye a parancsba van egy paraméter, a szöveg amit beírunk, mégsincs \"s\"-ként paraméter létrehozva, ehelyett valami isnull van. (?)


- GetPlayerName-nél a pName után miért MAX_PLAYER_NAME van? Miért nem a hagyományos sizeof(pName) ? Mi a különbség?

Nem elérhető Casamiro

  • 1046
    • Profil megtekintése
Adminchat hiba
« Válasz #3 Dátum: 2012. október 17. - 20:31:02 »
+1 Show voters
Idézetet írta: Johnies00 date=1350497566\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28697\" data-ipsquote-contentclass=\"forums_Topic
Köszönöm szépen.  :) :)

Esetleg majd HA RÁÉRSZ és unatkoznál elmagyaráznál nekem 1-2 dolgot?


- Ugye a parancsba van egy paraméter, a szöveg amit beírunk, mégsincs \"s\"-ként paraméter létrehozva, ehelyett valami isnull van. (?)


- GetPlayerName-nél a pName után miért MAX_PLAYER_NAME van? Miért nem a hagyományos sizeof(pName) ? Mi a különbség?

 
1, \" \"s\" -ként paraméter létrehozás \" - sscanf. 1 paraméternél tök felesleges ZCMD -nél sscanfot használni, ugyanis ott van alapból a params tömb. Az isnull pedig csak egy definíció ami leellenõrzi, hogy egy tömb tartalmaz -e karaktereket.
2, A sizeof operátort teljesen felesleges névlekérésnél használni, ugyanis a játékos neve maximum 23 karaktert(MAX_PLAYER_NAME definícióként megtalálod a_samp.inc -ben) tartalmazhat. Igazából semmi különbség nincs közöttük, mind a kettõ ugyanazt a célt szolgálja, sõt még a MAX_PLAYER_NAME (vagy sizeof pName) helyére 24 -et is írhatsz, mert az a maximális névhosszúság. (23+1)

Adminchat hiba
« Válasz #4 Dátum: 2012. október 17. - 20:36:06 »
0 Show voters
Világos mint a nap, köszönöm.  :) Mind a kettõtöknek ment a +, zárok. ^^

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal