Помощ за направата на плъгин и неговите функционалности

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
x7s
Извън линия
Потребител
Потребител
Мнения: 47
Регистриран на: 20 Яну 2018, 11:00
Местоположение: България
Се отблагодари: 19 пъти
Обратна връзка:

Помощ за направата на плъгин и неговите функционалности

Мнение от x7s » 25 Дек 2018, 16:19

Здравейте на всички разбиращи и не толкова разбиращи.
Днес се сблъсках със следната конфузна ситуация :blush: реших да преправя част от кода на един плъгин, но стигнах до извода, че сам няма да се справя ето и примерна част от кода

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

#include <amxmodx>
#include <another_library>

//#define Opcia1
#define Opcia2

#if defined Opcia1
	#include <another_library1>
	
	native Float:*HIDEN*
#endif

#if defined Opcia2
	#include <another_library2>
	#include <time>
#endif

#define PLUGIN "PluginName"
#define VERSION "0.1"
#define AUTHOR "Author"

public plugin_precache()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	create_cvar("cvar1", "0", _, "description" _, "0", _, "1");
	create_cvar("cvar2", "0" _, "description" _, "0" _, "1");
	register_dictionary("library.txt")
	register_dictionary("another_library2.txt")
	#if defined Opcia2
		register_dictionary("library1.txt")
	#endif
}

public plugin_init()
{
	register_clcmd("say","Say_OPTSA")
	register_clcmd("say_team","Say_OPTSA")
	
	register_menucmd(register_menuid("Menu"), 1023, "actionMenu")
	AutoExecConfig(true, "Plugin_Selfmade", "");
}
До тук всичко ми е ясно, но тъй като неможах да намеря малко повече информация във форумите реших да пиша тук...
Както ще забележите дефинирани са Опция1 и Опция2 от които едната е закоментирана с цел да не бъде прочитан излишен код, който не се ползва... и е създаден автоматично чрез AutoExecConfig функцията конфиг файл, които мога да конфигурирам въпросните кварс в този случай квар1 и квар2 ето тук вече идва моя проблем :blush:
Как да направя така, че във конфиг файла да има опция за ибиране между дефинираните Опция1 и Опция2 с която да работи въпросния плъгин :think:
Предположих, че е на принципа на това как работят някой бан системи за избора между use_sql "0" use_mysql "1" та ето тук вече малко се обърках и реших направо да пиша във форума за помощ :blush:
Като цяло идеята ми е да може когато се ползва AutoExecConfig функцията Дефинираните опции да бъдат описани в конфиг файла и да мога да избера между една от тях двете за да работи плъгина с която от опциите съм избрал в моя случай Опция1 или Опция2

ПС. Ако съм объркал нещо в кода моля не ме съдете, това е примерен код... просто не искам да давам конкретни примери с вече съществуващи плъгини, за това се опитвам и да го интерпретирам горе долу в някакъв приличен вид, така че да добиете представа, какво точно се опитвам да направя ;))
И тъй като не можах да си намеря информация, за това което ми трябва, за това което искам да направя, търся помощта ви!
Благодаря на всички, които ще се включат с помощта. :tnx:

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

Помощ за направата на плъгин и неговите функционалности

Мнение от OciXCrom » 25 Дек 2018, 16:51

Имаш предвид според стойността на квара да се ползват #if проверките?
Или искаш зависимо от коя опция е дефинирана да има различни описания за кваровете?

Аватар
x7s
Извън линия
Потребител
Потребител
Мнения: 47
Регистриран на: 20 Яну 2018, 11:00
Местоположение: България
Се отблагодари: 19 пъти
Обратна връзка:

Помощ за направата на плъгин и неговите функционалности

Мнение от x7s » 26 Дек 2018, 16:06

Здравей OciXCrom, както забелязваш едната от двете дефинирани функции е закоментирана във скриптинг файла

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

//#define Opcia1
#define Opcia2
Искам примерно когато бъде създаден конфиг файла да има квар със които да включвам която и да е от двете Опции примерно да изглежда нещо от сорта на това:

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

// This file was auto-generated by AMX Mod X (v1.9.0.5234)
// Cvars for plugin "Plugin_Selfmade" by "Author" (PluginName.amxx, v0.1 Author)

// Тук в конфиг файла ще мога да избера коя от двете да ползвам Opcia1 или Opcia2
// -
// Default: "Opcia2"
cvar_choise "Opcia2"
Примерно когато напиша вместо "Opcia2" в кавичките вече дефинираната и закоментирана "Opcia1" в скриптинг файла, да може автоматично да преминава от един режим на работа с плъгина, на друг. И по този начин да разграничава различните функционалности в определен плъгин, който примерно съм напълнил с 30 функции образно казано... а от тях ползвам 5-6, но идва момент в които решавам, че искам да ползвам останалите функции и за да ги ползвам ще трябва да махна наклонените черти пред Опция1 за да ги включа и отново да компилирам плъгина за да работят и останалите неща които не съм ползвал...
Идеята ми е с един квар да превключвам между Opcia1 и Opcia2, но когато избера една от двете, другата да се изключва, тъй като не съм много убеден, че е възможно и двете Опции да работят едновременно заради различията във функциите които изпълняват :blush:

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

Помощ за направата на плъгин и неговите функционалности

Мнение от OciXCrom » 26 Дек 2018, 16:54

Кодовете започващи с # (#if, #define и прочие) се четат за време на компилацията, демек ако си сложил #if проверка, всичко което не изпълнява задедените в нея условия няма да го има в компилирания плъгин - редовете все едно са изтрити, съответно в сървъра изобщо няма да има такъв код. Няма как чрез квар или по какъвто да е друг начин чрез сървъра да промениш нещо дефинирано с #.

Вместо #, можеш да ползваш квар като проверка. Демек, вместо да проверяваш нещата по този начин:

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

#if defined Opcia2
	register_dictionary("library1.txt")
#endif
Създай си квар и провери дали кваърт е еднакъв на 1 или true, или пък самото число на опцията може да се намира в стойността му:

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

new g_iCvar

public plugin_init()
{
	g_iCvar = create_cvar("opciq", "1")
}

public OnConfigsExecuted()
{
	if(get_pcvar_num(g_iCvar) == 2)
	{
		register_dictionary("library2.txt")
	}
	else
	{
		register_dictionary("library1.txt")
	}
}
Имай предвид, че стойностите на кваровете регистрирани с AutoExecConfig се четат във forward-a OnConfigsExecuted, демек не можеш да провериш стойността на квар в plugin_precache или plugin_init, тъй като там винаги ще бъде тази която е зададена в .sma файла, понеже .cfg файлът все още не е бил прочетен.

Аватар
x7s
Извън линия
Потребител
Потребител
Мнения: 47
Регистриран на: 20 Яну 2018, 11:00
Местоположение: България
Се отблагодари: 19 пъти
Обратна връзка:

Помощ за направата на плъгин и неговите функционалности

Мнение от x7s » 26 Дек 2018, 22:43

Благодаря много, за цялата тази информация OciXCrom!
Беше полезно да го разбера на роден език, тъй като се рових из руските форуми и алиедмодерс, но никъде не ми стана ясно... как точно мога да направя проверка, ако определена функция в сорс кода е закоментирана, и при регистриран квар със дефинирани стоиности дали може да бъде контролирана самата функция.
Един вид нещо като "On" и "Off" за включване и изключване, на определена част от плъгина, даже ако не се лъжа мисля че го имаше в разни статс плъгини, с които примерно, ако ползваш нещо от друг плъгин, на базата на него да не се разкоментира друга част от съвсем друг плъгин... нещо като ранг добавките в някои ReAPI плъгини.
Благодаря ти отново за помощта, надявам се темата да е полезна и на други хора във форума. :beer:

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

Обратно към “Помощ в скриптирането”

Кой е на линия

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