Kas yra Y_Commands?
Y_commands yra biblioteka skirta komandoms. Ji pakeičia įprastinį komandų tvarkymą OnPlayerCommandText funkcijoje. Iš esmės tai tas pats kaip ir ZCMD. Užsiminiau ZCMD, kuo Y_commands geriau? Sakoma kad jis greitesnis, bet jis pasižymi tuo kad turi daugiau funkcijų. ZCMD labai elementarus, o YCMD turi daugiau visokių smulkmenų kurias čia ir apžvelgsiu
Kur rasti Y_Commands?
Jei naudojate YSI, jau turite ir y_command. Jei nenaudojate, galite parsisiųsti iš čia.
YCMD
Pradėkime nuo pradžios. Kaip atrodo YCMD funkcija.
YCMD:komandos_pavadinimas(playerid, params[], help)
{
return 1;
}
Parametras | Tipas | Reikšmė |
---|---|---|
playerid | Integer | Senas geras žaidėjo ID |
params | String | Viskas ką žaidėjas įrašė po pirmojo tarpo. PVz parašius "/hi Bebras", params bus "Bebras" |
help | Integer | Ar reikia rodyti komandos pagalbą |
Komandų pagalba
Pakalbėkime plačiau apie tą "help" argumentą. Idėja tokia kad visos komandos turi turėti eilutę, su tekstu parodančiu ką ta komanda atlieka. PVZ:
YCMD:heal(playerid, params[], help)
{
if(help)
SendClientMessage(playerid, -1, "Ši komanda pagydo jus");
else
SetPlayerHealth(playerid, 100.0);
return 1;
}
Jei visos komandos turės tokį parametrą, tada lengva sukurti komandą kuri parodys kitos komandos pagalbą:
YCMD:cmdhelp(playerid, params[], help)
{
if(help)
SendClientMessage(playerid, -1, "Parodo pagalbą apie kitą komandą");
else if(isnull(params))
SendClientMessage(playerid, -1, "Naudojimas /cmdhelp komandos_pavadinimas");
else
Command_ReProcess(playerid, params, true);
return 1;
}
Dabar parašius "/cmdhelp heal" pamatysime komandos heal pagalbinį tekstą.
Teisės naudoti komandas
Įprasta kad norint neleisti kažkam naudoti komandos, pridedame ką nors panašaus į
// Arba bet kokia kita žaidėjų grupė.
if(!IsPlayerAdmin(playerid))
return 0;
Su Y_Commands galite nustatyti kokias komandas žaidėjas gali naudoti ir kurių ne. Pavyzdžiui, žaidėjui prisijungus nustatomę ką jis gali naduoti ir ko negali:
public OnPlayerLogin(playerid)
{
Command_SetPlayerNamed(playerid, "heal", true);
Command_SetPlayerNamed(playerid, "cmdhelp", true);
if(zaidejas_yra_administratorius)
{
Command_SetPlayerNamed(playerid, "administratoriaus_komanda_1", true);
Command_SetPlayerNamed(playerid, "administratoriaus_komanda_2", true);
Command_SetPlayerNamed(playerid, "administratoriaus_komanda_3", true);
}
}
Žaidėjui atsijungus reikėtų nebeleisti naudoti tų komandų, šį kartą visų jau nerašysime.
public OnPlayerDisconnect(playerid, reason) { for(new i = 0; i < Command_GetPlayerCommandCount(playerid); i++) Command_SetPlayerNamed(playerid, Command_Get_Next(i, playerid), false); }
Funkcija | Paaiškinimas |
---|---|
Command_GetPlayerCommandCount | Gražina komandų skaičių kurias žaidėjas gali naudoti(NE visų egzistuojančių) |
Command_SetPlayerNamed | Nustato ar žaidėjas gali naudoti nurodytą komandą |
Command_Get_Next | Gražina sekančią komandą kurią žaidėjas gali naudoti, pradedant nurodytu indeksu |
Komandų pervadinimas
Komandai duoti antrą vardą galima pridėjus vos vieną eilutę
Command_AddAltNamed("komandos_pavadinimas", "alternatyvus_komandos_pavadinimas");
PVZ: Jeigu turime komanda "help", galime jai pridėti kitą pavadinimą:
Command_AddAltNamed("help", "pagalba");
Dabar žaidėjas galės rašyti tiek /help tiek /pagalba. Veiks abu variantai, tai ypač naudinga rašant modifikaciją keliomis kalbomis.
Pabaiga
Tai tiek apie Y_Commands, kilus neaiškumams klauskite.