Co to jest?
Wygląda mi na skrót od: "command variable", ale nie mówię, że tak jest. To komenda regulująca jakiś parametr.
Struktura:
[nazwa] [wartość]
Jeśli [wartość] zawiera spację trzeba umieścić ją w nawiasie.
[nazwa] "[wartość wartość cd.]"
1. Dodawanie
register_cvar( const name[],const string[],flags = 0,Float:fvalue = 0.0 )const name[] -> nazwa cvara
const string[] -> wartość domyślna
flags = 0 -> flagi
jeśli interesuje nas kilka flag używamy sumy binarnej |:FCVAR_ARCHIVE dodaj jeśli ma być umieszczona w vars.rc
FCVAR_USERINFO zmienia userinfo
FCVAR_SERVER informacja o zmianie pokazywana jest graczom
FCVAR_EXTDLL defiowana przez zewnętrzną bibliotekę DLL
FCVAR_CLIENTDLL defiowana przez dll klienta
FCVAR_PROTECTED chroniona przed ujawnieniem (jeśli zawiera hasło itd)
FCVAR_SPONLY nie może być zmieniana przez klienta w grze wieloosobowej
FCVAR_PRINTABLEONLY nie może zawierać znaków, których nie wyświetli gra
FCVAR_UNLOGGED zmiana nie jest odnotowywana w logach
FCVAR_SPONLY|FCVAR_PROTECTED,
Float:fvalue = 0.0 -> jeśli wartość domyślna jest liczbą rzeczywistą tu ją podajemy
Funkcja register_cvar zwraca 'wskaźnik' (liczbę-identyfikator), który możemy używać potem z funkcjami get_pcvar_num,get_pcvar_float czy get_pcvar_string. Warto przechować tę wartość w zmiennej globalnej.
new gcvarMyFirst; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) gcvarMyFirst=register_cvar("amx_myfirstcvar","1"); }
2. Pobieranie wartości
Możemy to zrobić na 2 sposoby:
a) poprzez nazwę
Float: get_cvar_float ( const cvarname[] ) get_cvar_num ( const cvarname[] ) get_cvar_string ( const cvarname[],output[],iLen )const cvarname[] to oczywiście nazwa cvara
Różne funkcje do różnych typów danych:
float-zwraca liczbę rzeczywstą,
string - tekst (przekazujemy tablicę wraz z długością, która zostanie wypełniona wartością cvara),
num- zwraca liczbę całkowitą.
poprzez wskaźnik
wskaźnik zwracany przez register_cvar. do istniejących już cvarów wskaźnik pobieramy funkcją
get_cvar_pointer ( const cvar[] )pobieranie wartości:
Float: get_pcvar_float ( pcvar ) get_pcvar_num ( pcvar ) get_pcvar_string ( pcvar, string[], maxlen )Fziałają identycznie, z tą różnicą, że zamiast nazwy podajemy wskaźnik. To metoda znacznie szybsza i używamy jej kiedy pobieramy wartość więcej niż raz.
3. Zmiana wartości
Rzecz banalnie prosta: wykonujemy w konsoli serwera (server_cmd()):
nazwa_cvara "[nowa wartość]"