Cvar changer

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Cvar changer

Мнение от EMOTO2.COM » 05 Фев 2018, 11:02

Здравейте, имам нужда от плугин с който да може да се променя стойността на даден квар с стойност зададена в някой файл по последователност.
Пример:
Да кажем, че имам файл gravity.ini в configs папката а във него има следното:

Код за потвърждение: Избери целия код

sv_gravity 700
sv_gravity 600
sv_gravity 400
sv_gravity 500
sv_gravity 350
sv_gravity 700
sv_gravity 800
През 10 секунди да кажем гравитацията от нормална да става на 700, след още 10 секунди гравитацията да бъде 600, след още 10 секунди да е на 400 и така на татък докато стане пак на 800 и да започва да чете файла от начало по същия ред последователност.
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 267
Регистриран на: 27 Ное 2016, 19:43
Местоположение: nz
Се отблагодари: 77 пъти
Получена благодарност: 38 пъти
Обратна връзка:

Cvar changer

Мнение от SmirnoffBG » 05 Фев 2018, 13:09

Ето ти плъгина. Не съм го тествал, но съм почти сигурен, че няма да има грешка.
Ако желаеш мога да ти направя отделна команда за презареждане на файла отново.

В кода има опция за стартиране и спиране чрез команда.
За да я ползваш напиши след "DA_IME_LI_START_BUTON" "DA"

Код за потвърждение: Избери целия код

/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Cvar change form file"
#define VERSION "1.0"
#define AUTHOR "SmirnoffBG"

#define NE 0
#define DA 1
#define TASKA 51
#define DA_IME_LI_START_BUTON NE // DA

new Array:g_array, g_arraysiza
new CurrentCvar

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	Get_Cvars()
#if DA_IME_LI_START_BUTON == DA
	register_clcmd("say /startgr", "starta")
#else
	set_task(10.0, "Change_Cvar",TASKA,_,_,"b")
#endif
}
#if DA_IME_LI_START_BUTON == DA
public starta(id)
{
	if(task_exists(TASKA)) {
		remove_task(TASKA)
	} else {
		set_task(10.0, "Change_Cvar",TASKA,_,_,"b")
	}
}
#endif

Get_Cvars()
{
	g_array = ArrayCreate(15)
	
	new gConfigFile[50], FullCmd[15], iFileP
	get_configsdir(gConfigFile, charsmax(gConfigFile))
	add(gConfigFile, sizeof gConfigFile - 1, "/gravity.ini");
	
	iFileP = fopen(gConfigFile, "rt")
	if(!iFileP) 
	{
		set_fail_state("[Cvar Changer] File not found! / Failut ne e nameren!")
	}
	while(!feof(iFileP)){
		fgets(iFileP, FullCmd, charsmax(FullCmd))
		remove_quotes(FullCmd)
		
		if( !FullCmd[0] || FullCmd[0] == ';' || FullCmd[0] == '/' && FullCmd[1] == '/'  || FullCmd[0] != 'g') 
			continue;
		
		ArrayPushString(g_array, FullCmd)
	}
	fclose(iFileP)
	g_arraysiza = ArraySize(g_array)
}
public Change_Cvar()
{
	new cvara[15]
	ArrayGetString(g_array, (CurrentCvar++)%g_arraysiza, cvara, charsmax(cvara))
	server_cmd(cvara)
}
El-Super Respawn = 87.121.54.85:27016
BG Trewa Respawn = 91.92.137.205:27015

Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Cvar changer

Мнение от EMOTO2.COM » 07 Фев 2018, 16:44

Незнам какво си сигурен брато но има грешка в лога а и кода изобщо неработи като тествах...

Код за потвърждение: Избери целия код

Run time error 11: divide
[0] cvar_changer.sma::Change_Cvar (line 65)
Няма нужда да се добавят излишни команди и дефиниции към кода ... просто зададената команда/квар да изменя стойноста си през определеното време в самият сървър.
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Cvar changer

Мнение от OciXCrom » 07 Фев 2018, 17:32

Можеш и това да ползваш - https://forums.alliedmods.net/showthread.php?t=1263

Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Cvar changer

Мнение от EMOTO2.COM » 07 Фев 2018, 22:39

До колкото разбирам начина на действие на този плугин би ми помогнал в моя случай НО както и да се настрои все някога във времето ще се получи застъпване на секундите. Пример ако гравитацията е на 600 то в същото време или след 1-2 секунди ще се промени на друга зададена която ще бъде може би със съвсем друга стойност от желаната по последователност. Така, че с този плугин се губи последователноста. Поправете ме ако греша?
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Cvar changer

Мнение от OciXCrom » 08 Фев 2018, 14:08

Опитай така:

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>

#define CVAR_NAME "sv_gravity"
#define CVAR_FREQ 10.0

new Array:g_aValues, g_pCvar, g_iCurrent, g_iMax

public plugin_init()
{
	register_plugin("Cvar Changer", "1.0", "OciXCrom")
	g_pCvar = get_cvar_pointer(CVAR_NAME)
	g_aValues = ArrayCreate(32)
	ReadFile()
}

public plugin_end()
	ArrayDestroy(g_aValues)

ReadFile()
{
	new szConfigsName[256], szFilename[256]
	get_configsdir(szConfigsName, charsmax(szConfigsName))
	formatex(szFilename, charsmax(szFilename), "%s/gravity.ini", szConfigsName)
	
	new iFilePointer = fopen(szFilename, "rt")
	
	if(iFilePointer)
	{
		new szData[16]
		
		while(!feof(iFilePointer))
		{
			fgets(iFilePointer, szData, charsmax(szData))
			trim(szData)
			
			switch(szData[0])
			{
				case EOS, ';': continue
				default:
				{
					g_iMax++
					ArrayPushCell(g_aValues, str_to_num(szData))
				}
			}
		}
		
		fclose(iFilePointer)
		set_task(CVAR_FREQ, "ChangeCvar", .flags = "b")
	}
}

public ChangeCvar()
{
	set_pcvar_num(g_pCvar, ArrayGetCell(g_aValues, g_iCurrent))
	g_iCurrent = (g_iCurrent < g_iMax - 1) ? (g_iCurrent + 1) : 0
}
В configs/gravity.ini добавяш само стойностите:

Код за потвърждение: Избери целия код

800
700
600
500
400
500
600
700
800

Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Cvar changer

Мнение от EMOTO2.COM » 08 Фев 2018, 23:03

Здравей, благодаря за кода. Този код е точно това което ми трябва но има проблем, че когато се изредят всички стойности въведени във .ini файла не започва да ги върти отначало, а също така дава и грешка в конзолата.

Код за потвърждение: Избери целия код

Invalid cellvector handle provided (7:5:5)
Run time error 10: native error (native "ArrayGetCell")
[0] cvar_changer.sma::ChangeCvar (line 55)
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Cvar changer

Мнение от OciXCrom » 09 Фев 2018, 14:39

Поправих кода по-горе. Тествах и всичко е наред.

Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Cvar changer

Мнение от EMOTO2.COM » 09 Фев 2018, 17:42

Супер! Сега вече всичко е точно и няма грешки или бъгове.
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 15 госта