Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.

  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Cvar`y


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
7 odpowiedzi w tym temacie

#1 R3X

    Godlike

  • Przyjaciel

Reputacja: 2960
Godlike

  • Postów:4247
  • Lokalizacja:Nie
Offline

Napisano 06.01.2009 21:40

*
Popularny

Cvar

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

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

jeśli interesuje nas kilka flag używamy sumy binarnej |:
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ą.

B) 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ść]"


  • +
  • -
  • 6

#2 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 06.01.2009 21:54

Ogólnie jak zwykle dobrze zrobiony poradnik ;) Wreszcie się dowiedziałem do czego służy get_pcvar* :P
Mógł byś jeszcze przybliżyć działanie flag?

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
FCVAR_PRINTABLEONLY nie może zawierać znaków, których nie wyświetli gra
FCVAR_UNLOGGED zmiana nie jest odnotowywana w logach

Np.

FCVAR_ARCHIVE dodaj jeśli ma być umieszczona w vars.rc

Co to za plik, co w nim się znajduje, gdzie on się znajduje itp.

FCVAR_USERINFO zmienia userinfo

W jaki sposób to działa? Przy każdej zmianie zmienia userinfo każdemu graczowi userinfo "nazwa" "wartość"?

FCVAR_EXTDLL defiowana przez zewnętrzną bibliotekę DLL
FCVAR_CLIENTDLL defiowana przez dll klienta

Coś więcej o tym ;)

FCVAR_PROTECTED chroniona przed ujawnieniem (jeśli zawiera hasło itd)

W jaki sposób jest chroniona?

Gdy to wyjaśnisz temat będzie według mnie wyczerpany ;) Dzięki.
  • +
  • -
  • 0

#3 darkman

    Wszechwiedzący

  • Przyjaciel

Reputacja: 85
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 06.01.2009 22:02

Cytat:
FCVAR_PROTECTED chroniona przed ujawnieniem (jeśli zawiera hasło itd)

W jaki sposób jest chroniona?


Przy zmianie cvara, w zależności od ustawienia amx_show_activity printuje sie tekst
Admin xxx: zmienił cvar sv_password na ***PROTECTED***

bez tej flagi wyświetli się normalnie
Admin xxx: zmienił cvar sv_password na haslo

Chodzi tylko o to żeby nie pokazywać clientowi wartości cvara przy zmianie.

--------------------------------------------------------------


a
FCVAR_ARCHIVE

wydaje mi się, że chodzi o to jak przy wpisywaniu cvara w konsoli jest od widoczny w tym wysuwanym pasku z listą cvarów. jutro sprawdze.
  • +
  • -
  • 0

#4 R3X

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2960
Godlike

  • Postów:4247
  • Lokalizacja:Nie
Offline

Napisano 06.01.2009 22:04

FCVAR_USERINFO zmienia userinfo

to chyba flaga do zmian ustawień gracza;jak wpiszesz w konsoli "setinfo" to zobaczysz listę,
z DLLami nie testowałem/nie wiem, poczytam i uzupełnie
  • +
  • -
  • 0

#5 bywa

    Zaawansowany

  • Zbanowany

Reputacja: 2
Nowy

  • Postów:90
  • Lokalizacja:Gdańsk
Offline

Napisano 21.11.2009 21:23

a ja mam pytanko - w którym miejscu w sma wpisać cvar i nie rozumiem tych (wartości 0.0 ??:o) ;> chce dodać cvar do pluginu jail_skan nikt nie odpisuje w tym temacie ;/ który zrobiłem więc sam chce zrobic i cvar ma polegać że CT może skanować tylko "wartość" na rundę że by to było ustawiane cvarami :help: :help: :help: O:) :>


/* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>
    #include <fakemeta_util>
    #include <engine>

    #define PLUGIN "jail_scan"
    #define VERSION "1.0"
    #define AUTHOR "Sn!ff3r"

   [b] register_cvar("flashlight_rund", "1");
    register_cvar("flashlight_rund", "2");[/b]


to dodałem ale jak to rozwinąć a by było
że 1 to 1 raz może CT tego użyć a 2 to że 2 ...

#6 Adi^

    Życzliwy

  • Użytkownik

Reputacja: 8
Nowy

  • Postów:34
  • Imię:Adrian
  • Lokalizacja:Racibórz
Offline

Napisano 22.11.2009 07:43

nie rozumiem tych (wartości 0.0 ??:o) ;>


Ta wartość (ostatnia w funkcji) to jest domyślna wartość cvara, która będzie ustawiona na początku mapy, a że to może być liczba zmiennoprzecinkowa to dlatego jest to .0 (liczba po przecinku, dla anglosasów po kropce).

A jeśli chcesz do pluginu dodać cvar, to musisz również go wykorzystać w kodzie ;]

Cvary wpisujesz najlepiej w plugin_init (nie widziałem jeszcze, żeby ktoś w środku kodu umieszczał cvary ^^ )
  • +
  • -
  • 0

#7 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

  • Postów:10831
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 22.11.2009 11:24

Cvary wpisujesz najlepiej w plugin_init (nie widziałem jeszcze, żeby ktoś w środku kodu umieszczał cvary   )
1.Kod wygląda lepiej i nie utrudnia się życia osobom przerabiającym
2.Mogło by dochodzić sytuacji gdzie chcesz odczytać wartość cvara a tu klops nie ma takiego cvara ;)
  • +
  • -
  • 1

#8 Maciejek.

    Zaawansowany

  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:128
  • Imię:Maciej
  • Lokalizacja:Proszowice
Offline

Napisano 08.03.2015 23:04

wielkie sorry za, aż tak wielki odkop ale mam pytanie, mianowicie jak zrobić cvar dzięki któremu będziemy mogli zmienić tekst?
chodzi mi o to, że mamy przykładową wiadomość:

Zapraszamy na forum

i chciałbym go zmienić za pomocą cvara, jak go muszę dodać?


MAGNET (09.03.2015 10:07):
If(wartość_cvara = 1) format v1
else if(wartosc_cvara =1) format v2
Tworzysz tablicę i tekst formatujesz
A tak wogóle to nowe tematy się zakłada!

  • +
  • -
  • -1

Pluginy, które opublikowałem na forum (nie koniecznie jestem ich autorem):

1) Nowy wygląd wybuchu HE - znaleziony na tym forum w temacie.





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych