Skocz do zawartości

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

ConVary - SourceMod'owe odpowiedniki cvarów


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

#1 Wolen

    Zaawansowany

  • Użytkownik

Reputacja: 55
Pomocny

  • Postów:134
  • GG:
  • Imię:Jakub
  • Lokalizacja:Małopolska
Offline

Napisano 22.08.2013 07:39

*
Popularny

Wprowadzenie
-------------------------------------------------------------------------------------------------------------------------------------------------------
ConVary są dostępne poprzez uchwyty (handles). Są dwa sposoby, w jaki możemy uzyskać handle ConVar'a. Jeśli tworzysz ConVar, który już istnieje zostanie automatycznie wykorzystany ten, który był pierwszy. 
Uwaga: Uchwyty ConVarów są unikalne dla danego ConVara i nie ma potrzeby ich zwalniania, bądź usuwania.
 
 
 
 
Znajdowanie ConVarów
-------------------------------------------------------------------------------------------------------------------------------------------------------
Znajdowanie ConVarów jest bardzo proste. Na przykład, powiedzmy, że chcemy użyć mp_startmoney z Counter-Strike: Source. 

new Handle:g_hStartMoney
 
public OnPluginStart()
{
	g_hStartMoney = FindConVar("mp_startmoney")
}

Uwaga: FindConVar() zwróci INVALID_HANDLE jeśli ConVar nie zostanie znaleziony. Weź to pod uwagę, jeśli będziesz próbował czytać ConVar'y z innych pluginów.
 
 
 
Tworzenie ConVarów
-------------------------------------------------------------------------------------------------------------------------------------------------------
Prosty ConVar zawiera dwa parametry, nazwę oraz domyślną wartość. W każdym razie, dobrym pomysłem jest dodanie opisu ;).

new Handle:g_hEnabled
 
public OnPluginStart()
{
	g_hEnabled = CreateConVar("myplugin_enabled", "1", "Sets whether my plugin is enabled")
}

Możesz także określić ograniczone wartości. Na przykład, stwórzmy cvar o nazwie myplugin_ratio, którego wartość cvar'u nie może wynosić więcej niż 1.0 lub mniej niż 0.1 :).

new Handle:g_hEnabled
 
public OnPluginStart()
{
	g_hEnabled = CreateConVar("myplugin_ratio",
			"0.6",
			"Sets a vote ratio",
			_,	/* Flags will be discussed later */
			true,	/* Has a minimum */
			0.1,
			true,	/* Has a maximum */
			1.0)
}

Domyślna wartość może być dowolnego typu danych i nie ogranicza ona przyszłych typów, które mogą być stosowane. Niemniej jednak, minimalne i maksymalne ograniczenia należy zawsze interpretować jako wartości typu float. Jeśli tworzysz ConVar, który już istnieje, otrzymasz do niego uchwyt. Co więcej, sam handle będzie identyczny. Opis, domyślna wartość lub ograniczenia nie zostaną zmienione.

 

 

 

Używanie/Zmienianie ConVarów
-------------------------------------------------------------------------------------------------------------------------------------------------------

Zarządzanie ConVar'ami jest bardzo proste. Na przykład, powiedzmy, że chcemy zmienić mp_startmoney, ale zachowamy starą wartość i przywrócimy ją później. Ponowne wykorzystanie naszego kodu z FindConVar.

new g_oldmoney
 
SetStartMoney(newmoney)
{
	g_oldmoney = GetConVarInt(g_hStartMoney)
	SetConVarInt(g_hStartMoney, newmoney)
}
 
RestoreStartMoney()
{
	SetConVarInt(g_hStartMoney, g_oldmoney)
}

Choć istnieją różne funkcji dla typów wartości (float, string, et cetera), wewnętrzne dane są zawsze zapisywane w ten sam sposób. Na przykład ten kod działa:

public GetStartMoney()
{
	decl String:buffer[128]
 
	GetConVarString(g_hStartMoney, buffer, sizeof(buffer))
 
	return StringToInt(buffer)
} 

Choć mp_startmoney jest liczbą całkowitą, to może jeszcze zostać przywrócona jako ciąg.

 

 

 

Flagi
-------------------------------------------------------------------------------------------------------------------------------------------------------

ConVary mogą mieć liczbę flag do zmiany ich zachowania. Kilka ważnych flag to:

  • FCVAR_PROTECTED - Poufne informacje (nie powinny być narażone na klientów oraz logi).
  • FCVAR_NOTIFY - Klienci są powiadamiani o zmianach.
  • FCVAR_CHEAT - Może zostać tylko użyte jeśli sv_cheat wynosi 1.
  • FCVAR_REPLICATED - Ustawienia są przymusowe dla klientów <może tutaj być błąd w tłumaczeniu> (oryginał: Setting is forced to clients.)
UnsetCheatVar(Handle:hndl)
{
	new flags = GetConVarFlags(hndl)
	flags &= ~FCVAR_CHEAT
	SetConVarFlags(hndl, flags)
}
 
SetCheatVar(Handle:hndl)
{
	new flags = GetConVarFlags(hndl)
	flags |= FCVAR_CHEAT
	SetConVarFlags(hndl, flags)
}

W oryginale była jeszcze wzmianka o zmianie callback'ów, lecz postanowił, że skoro nie do końca to pojmuję nie będę tego tykał ^^, a więc to będzie na tyle :D.

 

Źródło: http://wiki.alliedmo...eMod_Scripting)

 


  • +
  • -
  • 5

 

Pamiętaj! Na obecną chwilę na tym forum nie jestem kimś kto potrafi pisać pluginy. Jestem osobą, która potrafi posługiwać się google, wyszukiwarką, dokumentacją oraz lubi pomagać innym :).

 

b_350_20_FFAD41_D27C10_000000_591F11.png

79.133.216.66:27015


#2 Acer

    Banned

  • Zbanowany

Reputacja: 57
Pomocny

  • Postów:245
  • GG:
  • Imię:Damian
  • Lokalizacja:Łódź
Offline

Napisano 22.08.2013 07:41

Poradnik przydatny.

Na pewno będe z niego korzystał, przy uczeniu się tego języka.


b_350_20_FFAD41_E98100_000000_591F11.png


Zapraszam na OneKill.pl


#3 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 22.08.2013 08:05

Ustawienia są przymusowe dla klientów

Lepiej daj

Ustawienia są wymuszane na klientach

Poradnik super :super:


  • +
  • -
  • 0




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

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