fix plugin Top Awards.

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Toni_P
Извън линия
Потребител
Потребител
Мнения: 64
Регистриран на: 01 Юли 2022, 19:12
Се отблагодари: 14 пъти
Получена благодарност: 4 пъти

fix plugin Top Awards.

Мнение от Toni_P » 19 Ное 2022, 21:33

Здравейте,
Забелязах, че при достигането на определен "Top X" от играча - плъгина дава VIP-флага и пуска съобщението, но само след смяна на карта, или reconnect-ване на играча. Проблем ли ще е да се добави някаква проверка и да прави това, още преди смяна на картата, или пък да не се налага reconnect на играча. Предполагам трябва да се добави някаква "периодична" проверка...?! Прилагам двата файла свързани с плъгина.
Благодаря!

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

#include <amxmodx>

#if AMXX_VERSION_NUM < 183
	#include <colorchat>
#endif

#define	PLUGIN	"Top Awards"
#define	VERSION	"1.0"
#define	AUTHOR	"Dom1no_[KZ]"

/* Настройки */
#define IGNORE_FLAGS (ADMIN_MENU|ADMIN_LEVEL_H)
	//	Игнорируемые флаги
	//	Закоментируйте если не требуется

#define	STATS_SYSTEM 0 // Система записи статистики
	//	0 - CSX
	//	1 - CsStats MySQL by SKAJIbnEJIb
	//	2 - CsStatsX SQL by serfreeman1337

#define MAX_AWARDS 256
	// Максимальная количество наград

const Float: TIME = 3.0;
	// Задержка в секундах перед проверкой игрока

enum _:DATA {
	FLAGS[32],
	MSG[128]
};
new g_arrAwardData[MAX_AWARDS][DATA], g_iDataSize = 1;
#if	STATS_SYSTEM == 0
	#include <csx>
	#define	get_player_stats get_user_stats
#endif
#if	STATS_SYSTEM == 1
	#include <csstats_mysql>
#endif
#if	STATS_SYSTEM == 2
	#include <csstatsx_sql>
	#define	get_player_stats get_user_stats_sql
#endif

public plugin_init(){
	register_plugin(PLUGIN, VERSION, AUTHOR);
}

public plugin_cfg(){
	new szPath[64];
	get_localinfo("amxx_configsdir", szPath, charsmax(szPath));
	add(szPath, charsmax(szPath), "/top_awards.ini");

	new iFile = fopen(szPath, "rt");
	if(!iFile){
		new szError[96];
		formatex(szError, charsmax(szError), "File '%s' not found OR incorrect CHMOD!", szPath);
		set_fail_state(szError);
	}

	new szBuffer[MAX_AWARDS];
	while(!feof(iFile)){
		fgets(iFile, szBuffer, charsmax(szBuffer));
		trim(szBuffer);

		if(!szBuffer[0] || szBuffer[0] == ';')
			continue;

		if(parse(szBuffer, 
			g_arrAwardData[g_iDataSize][FLAGS], charsmax(g_arrAwardData[][FLAGS]),
			g_arrAwardData[g_iDataSize][MSG], charsmax(g_arrAwardData[][MSG])
		) == 2)	g_iDataSize++;
	}
	fclose(iFile);
}

public client_putinserver(id){
	set_task(TIME, "client_give_awards", id);
}

public client_give_awards(id){
	new g_iAccess, szName[32];
	g_iAccess = get_user_flags(id);
	get_user_name(id, szName, charsmax(szName));

	if(!is_user_connected(id)){
		return;
	}
	#if defined IGNORE_FLAGS
		if(g_iAccess & IGNORE_FLAGS){
			return;
		}
	#endif

	#if	STATS_SYSTEM == 0 || STATS_SYSTEM == 2
		new szStats[8];
		new iRank = get_player_stats(id, szStats, szStats);
	#else
		new szStats[22];
		new iRank = csstats_get_user_stats(id, szStats);
	#endif

	if(iRank <= g_iDataSize){
		set_user_flags(id, g_iAccess | read_flags(g_arrAwardData[iRank][FLAGS]));

		replace_all(g_arrAwardData[iRank][MSG], charsmax(g_arrAwardData[][MSG]), "!n", "^1");
		replace_all(g_arrAwardData[iRank][MSG], charsmax(g_arrAwardData[][MSG]), "!t", "^3");
		replace_all(g_arrAwardData[iRank][MSG], charsmax(g_arrAwardData[][MSG]), "!g", "^4");
		replace_all(g_arrAwardData[iRank][MSG], charsmax(g_arrAwardData[][MSG]), "%name%", szName);

		client_print_color(id, print_team_default, "%s", g_arrAwardData[iRank][MSG]);
	}
}

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

"rtz" "!t.::!gTOP10!t::. !g[ !t%name% !g] !nYou're in !tTOP10 !nand you're !tV.I.P !g!!!"
"rtz" "!t.::!gTOP10!t::. !g[ !t%name% !g] !nYou're in !tTOP10 !nand you're !tV.I.P !g!!!"
"rtz" "!t.::!gTOP10!t::. !g[ !t%name% !g] !nYou're in !tTOP10 !nand you're !tV.I.P !g!!!"
"rtz" "!t.::!gTOP10!t::. !g[ !t%name% !g] !nYou're in !tTOP10 !nand you're !tV.I.P !g!!!"
"rtz" "!t.::!gTOP10!t::. !g[ !t%name% !g] !nYou're in !tTOP10 !nand you're !tV.I.P !g!!!"
"rtz" "!t.::!gTOP10!t::. !g[ !t%name% !g] !nYou're in !tTOP10 !nand you're !tV.I.P !g!!!"
"rtz" "!t.::!gTOP10!t::. !g[ !t%name% !g] !nYou're in !tTOP10 !nand you're !tV.I.P !g!!!"
"rtz" "!t.::!gTOP10!t::. !g[ !t%name% !g] !nYou're in !tTOP10 !nand you're !tV.I.P !g!!!"
"rtz" "!t.::!gTOP10!t::. !g[ !t%name% !g] !nYou're in !tTOP10 !nand you're !tV.I.P !g!!!"
"rtz" "!t.::!gTOP10!t::. !g[ !t%name% !g] !nYou're in !tTOP10 !nand you're !tV.I.P !g!!!"
; можно еще добавить. Но,
; максимальная количество наград - [256]
Последно промяна от Toni_P на 29 Ное 2022, 10:13, променено общо 1 път.

Аватар
Toni_P
Извън линия
Потребител
Потребител
Мнения: 64
Регистриран на: 01 Юли 2022, 19:12
Се отблагодари: 14 пъти
Получена благодарност: 4 пъти

Re: fix plugin Top Awards.

Мнение от Toni_P » 29 Ное 2022, 10:10

Някой няма ли да даде едно рамо де? Поне кажете това нещо възможно ли е , или е много сложно и трудоемко? Плъгина е доста добър и може да е полезен за всички( с него може да се дават админ-флагове на толкова много хора в топ-а-чак на 250-ия, и много и разнообразни флагове за различните места т.е. има голяма вариативност) - плъгина и в това си състояние работи добре, но ако се "дооформи" с моята молба - ще е още по-привлекателен и ефективен... дано някой обърне внимание и на някого му се занимава с моите прищевки !?

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

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

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 4 госта