Cvarurile sunt foarte importante, ne ajuta sa modificam modul in care un plugin se comporta fara sa trebui sa editam sursa. Datorita faptului ca exista mai multe tipuri de date, un cvar poate stoca integere/floaturi/stringuri.
1. Creearea unui cvar:
register_cvar(const name[],const string[],flags = 0,Float:fvalue = 0.0);
- name este numele cvarului
- string este valoarea
- flags sunt flagurile cvarurlui
- ultimul parametru nu am idee pentru ce e,nu am vazut pe nimeni sa il foloseasca...
Le puteti atribui unei variabile pentru a lucra mai usor,direct cu variabila. Se pot inregistra in init/cfg chiar si precache, insa recomandat este in init, astfel alte pluginuri le pot altera valorile in cfg.
new PrimulCvar new AlDoileaCvar new AlTreileaCvar public plugin_init ( ) { PrimulCvar = register_cvar("test1", "123") //retine un integer AlDoileaCvar = register_cvar("test2", "23.2") //retine un float AlTreileaCvar = register_cvar("test3", "CS16Gaming") //retine un string }
2. Citirea valorilor dintr-un cvar:
Nativele cu care lucram:
get_pcvar_num(cvar) get_pcvar_float(cvar) get_pcvar_string(cvar,string,lungime)
Nu folositi nativele get_cvar_*,sunt mult prea lente.
new PrimulCvar new AlDoileaCvar new AlTreileaCvar public plugin_init ( ) { PrimulCvar = register_cvar("test1", "123") //retine un integer AlDoileaCvar = register_cvar("test2", "23.2") //retine un float AlTreileaCvar = register_cvar("test3", "CS16Gaming") //retine un string } public CevaRandom ( ) { new iNum = get_pcvar_num(PrimulCvar) // luam valoarea din primul cvar,este integer new Float: fNum = get_pcvar_float(AlDoileaCvar) //luam valoarea din al doilea cvar,este float new szString[ 25 ] get_pcvar_string(AlTreileaCvar, szString, sizeof szString -1) //luam valoarea din al treilea cvar,in variabila szString. }
3. Pointere
Native get_cvar_pointer ne permite sa citim valoarea oricarui cvar, din orice plugin, chiar si cele default.
new g_pCvarPointer g_pCvarPointer = get_cvar_pointer( "sv_maxspeed" )//acceseaza ia valoarea cvarului sv_maxspeed in g_pCvarPointer new iValue = get_pcvar_num( g_pCvarPointer )//ia valoarea din pointer,acum putem lucra direct cu iValue
Nu este obligatoriu sa salvati valorile in variabile, insa este o practica buna in anumite situatii.
Si acum, ca aveti toate notiunile plictisitoare, sa trecem la un plugin.
#include < amxmodx > #include < fun >//pentru a seta hpul new g_iHp;//retine cvarul public plugin_init ( ) { g_iHp = register_cvar("health_to_give", "123" );//inregistram cvarul register_clcmd("say /hp", "ClCmdHp");//inregistram comanda } public ClCmdHp( id ) { if(!is_user_alive(id))//verificam daca e in viata { client_print(id, print_chat, "Comanda functionala doar cand est in viata"); return 1; } set_user_health(id, get_user_health(id) + get_pcvar_num(g_iHp));//ii adaugam la hpul pe care il are acum,valoarea din cvar. Daca vrei sa ii dea cat hp e in cvar,nu sa adune folositi set_user_health(id, get_pcvar_num(g_iHp)); return 0; }
Cvarurile au si flaguri, insa nu sunt foarte importante.
Aceasta postare a fost editata de Artick ;: 30 July 2014 - 12:00 PM