Jump to content
  • Chmurka
  • Boróweczka
  • Jabłuszko
  • Limonka
  • Czekoladka
  • Węgielek
Master

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

Recommended Posts

Posted (edited)

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!

Edited by Master
  • Lubię to! 2
  • Dobry pomysł! 1

Share this post


Link to post
Share on other sites

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!

  • Lubię to! 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

Nasza historia

Na początku byliśmy małą grupą internetowych znajomych, którzy stwierdzili, że potrzebne jest solidne forum, na którym znajdą się ludzie z dużą wiedzą programistyczną ukierunkowaną na CS:GO. Pomysł powstał na początku 2018 roku, a parę miesięcy później, 19 kwietnia, powstała ta strona internetowa. Jako alternatywna odpowiedź na inne tego typu miejsca, poważnie podeszliśmy do tematu, najpierw tłumacząc angielską dokumentację SourceMod'a na język polski, a potem pisząc rozległe poradniki i wypełniając forum najpotrzebniejszymi rzeczami dla właścicieli serwerów i programistów. Cała nasza Ekipa jest dumna z pracy jaką w to włożyliśmy i cieszymy się że zbierają się wokół nas zarówno ludzie znający tematy sourcepawn'a i konfiguracji, jak i również nowe twarze w tym "biznesie", którym z chęcią niesiemy wiedzę oraz pomoc w rozwiązywaniu problemów.

Największe modyfikacje serwerowe

×
×
  • Create New...