Skocz do zawartości
Master

[CS:GO] Sprawdzanie wartości ConVar'ów

Rekomendowane odpowiedzi

  • Lubię to! 2
  • Dobry pomysł! 1

Opis

 

Convary potrafią się nadpisać, dlatego warto sprawdzić czy na pewno posiadają pożądaną wartość. Plik z komendami należy umieścić w "configs/Master/Master_ConVars.txt". Nie ma potrzeby przeładowania pluginu, gdy chcemy dodać nowe komendy, gdyż wtyczka za każdym razem otwiera ponownie plik.

 

Komenda

  • sm_testcvar - wymagana flag "z"

 

Plugin

 

Spoiler

#pragma semicolon 1
#pragma newdecls required

#define LOG_PATH		"addons/sourcemod/logs/Master_ConVars.txt"

public void OnPluginStart()
{
	RegConsoleCmd("sm_testcvar", CMD_TestCvar);	
}

public Action CMD_TestCvar(int client, int args)
{
	if(client && !(GetUserFlagBits(client) & ADMFLAG_ROOT)) return Plugin_Handled;

	LoadFile();
	return Plugin_Handled;
}

void LoadFile()
{
	char sBuffer[PLATFORM_MAX_PATH];
	BuildPath(Path_SM, sBuffer, sizeof(sBuffer), "configs/Master/Master_ConVars.txt");

	if(!FileExists(sBuffer)) SetFailState("Nie znaleziono pliku konfiguracyjnego %s", sBuffer);

	File hFile = OpenFile(sBuffer, "r");

	if(hFile == null)
	{
		delete hFile;
		return;
	}

	LogToFile(LOG_PATH, "--------------------------------------------------------");

	while(!IsEndOfFile(hFile))
	{
		hFile.ReadLine(sBuffer, sizeof(sBuffer));
		TrimString(sBuffer);

		if(!sBuffer[0]) continue;

		if(StrContains(sBuffer, "//") != -1) continue;

		ConVar hCvar = FindConVar(sBuffer);

		if(hCvar == null)
		{
			LogToFile(LOG_PATH, "Nie znaleziono: %s", sBuffer);
			continue;
		}

		char sValue[256];
		hCvar.GetString(sValue, sizeof(sValue));

		LogToFile(LOG_PATH, "%s: %s", sBuffer, sValue);
	}

	LogToFile(LOG_PATH, "--------------------------------------------------------");

	delete hFile;
}

 

 

Przykładowy Config

 

Spoiler

sv_maxrate
sv_minrate
sv_maxcmdrate
sv_mincmdrate
sv_maxupdaterate
sv_minupdaterate
sv_hibernate_when_empty
sv_occlude_players
sv_parallel_packentities
net_splitrate
sv_force_transmit_players
occlusion_test_async
sv_parallel_sendsnapshot
sv_force_transmit_ents

 

 

Przykładowy output dla powyższych komend

Spoiler

L 06/26/2019 - 22:44:36: [Master_ConVars.smx] --------------------------------------------------------
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_maxrate: 0
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_minrate: 196608
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_maxcmdrate: 128.000000
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_mincmdrate: 128
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_maxupdaterate: 128
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_minupdaterate: 128
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_hibernate_when_empty: 0
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_occlude_players: 0
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_parallel_packentities: 1
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] net_splitrate: 2
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_force_transmit_players: 0
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] occlusion_test_async: 0
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_parallel_sendsnapshot: 0
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] sv_force_transmit_ents: 0
L 06/26/2019 - 22:44:36: [Master_ConVars.smx] --------------------------------------------------------

 

 

Master_ConVars.sp
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Master_ConVars.txt
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Edytowane przez Master

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Fajny pomysł. Ale mam propozycję, że zamiast warunku "czy w linii jest // jeśli tak to pomiń linię" musiałbyś bardziej zaawansowanie podejść do problemu "co użytkownik może wklepać w linię". imo powinno się uwzględnić:
- linię jako komentarz jeśli zaczyna się od "//" LUB ";"

- kawałek linii może być skreślony jeśli od pewnego momentu jest znak "//" lub ";"

- jeśli linia zawiera spacje lub tabulacje, to plugin powinien podzielić linię na kawałki i sprawdzać czy między tymi białymi znakami nie ma cvaru, dzięki temu użytkownik będzie mógł wklepywać cvary w jednej linii

 

Great work!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...