SOUND+SCREEN_FADE за CRXRanks: Give XP Per Minute !

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Отговори
Потребителски аватар

Автор на темата
iv69
Потребител
Потребител
Мнения: 407
Регистриран: 17 мар 2018, 15:34
Се отблагодари: 114 пъти
Получена благодарност: 11 пъти

SOUND+SCREEN_FADE за CRXRanks: Give XP Per Minute !

Мнение от iv69 » 12 юли 2019, 22:30

Има ли начин към приложения по-долу събплъгин да даване на XP за проиграно време в сървъра към OciXCrom's Rank System , освен съобщението в чата, да се добави премигването на екрана и същия звуков сигнал, тоест да добавим ако може и ефектите от OciXCrom's Rank System при добиване на ново ниво?
Е, разбира се ако има такава възмоожност, искам горещо да помоля ако някой обича, да дообработи (когато има време и желание) събплъгина.
Благодаря предварително и от сърце.

Код: Избери всички

#include <amxmodx>
#include <cromchat>
#include <crxranks>

#if defined client_disconnected
	#define client_disconnect client_disconnected
#endif

#define XP_FREQ 30
#define XP_AMOUNT 50

public plugin_init()
{
    register_plugin("CRXRanks: XP Per Minute", "1.0", "OciXCrom")
    crxranks_get_chat_prefix(CC_PREFIX, charsmax(CC_PREFIX))
}

public client_putinserver(id)
    set_task(XP_FREQ * 60.0, "GiveXP", id, .flags = "b")

public client_disconnect(id)
    remove_task(id)

public GiveXP(id)
{
    if(is_user_connected(id))
    {
        crxranks_give_user_xp(id, XP_AMOUNT)
        CC_SendMessage(id, "You received &x03%i XP &x01for playing for &x04%i minute&x01.", XP_AMOUNT, XP_FREQ)
    }
    else remove_task(id)
}
Последна промяна от iv69 на 13 юли 2019, 17:14, променено общо 7 пъти.

Потребителски аватар

OciXCrom TM
Администратор
Администратор
Мнения: 5326
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 77 пъти
Получена благодарност: 560 пъти
Години: 21
Контакти:

Преработка събплъгина към OciXCrom's Rank System.

Мнение от OciXCrom TM » 12 юли 2019, 22:36

Оправи заглавието на темата като добавиш за кой плъгин става дума и какво трябва да се редактира.

Потребителски аватар

Автор на темата
iv69
Потребител
Потребител
Мнения: 407
Регистриран: 17 мар 2018, 15:34
Се отблагодари: 114 пъти
Получена благодарност: 11 пъти

Редакция на събплъгин за даване на XP.

Мнение от iv69 » 12 юли 2019, 23:00

Промених заглавието на темата и съдържанието, така добре ли е?

Добавено преди 8 минути 23 секунди:
iv69 написа:
12 юли 2019, 23:00
Промених заглавието на темата и съдържанието, така добре ли е?
p.s. Предполагам, че няма да се получи някой "бъг" с ефектите , когато трябва едновременно събплъгина дава на играча ХР а пък плъгина дава на играча и ново ниво от тази премия? Тоест , ще изпълнява един път ефектите ?

Потребителски аватар

OciXCrom TM
Администратор
Администратор
Мнения: 5326
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 77 пъти
Получена благодарност: 560 пъти
Години: 21
Контакти:

Редакция на събплъгин за даване на XP.

Мнение от OciXCrom TM » 13 юли 2019, 14:53

Отново не виждам информация в заглавието свързана със самата редакция - обясни за каква редакция става дума в заглавието. Недей да пишеш само "редакция на плъгин".

Направих го да не изпълнява ефекта/звука ако XP-то което ще получи е достатъчно за достигане на следващото ниво.

Код: Избери всички

#include <amxmodx>
#include <cromchat>
#include <crxranks>

#if defined client_disconnected
	#define client_disconnect client_disconnected
#endif

#define clr(%1) %1 == -1 ? random(256) : %1

const XP_FREQ = 30
const XP_AMOUNT = 50

new g_szSound[128], bool:g_bScreenFadeEnabled, g_iScreenFade[4], g_iMsgScreenFade

public plugin_init()
{
	register_plugin("CRXRanks: XP Per Minute", "1.0a", "OciXCrom")
	crxranks_get_chat_prefix(CC_PREFIX, charsmax(CC_PREFIX))
	crxranks_get_setting("LEVELUP_SOUND", g_szSound, charsmax(g_szSound))

	new szColor[16], szTemp[4][5], szFade[2]

	crxranks_get_setting("LEVELUP_SCREEN_FADE_ENABLED", szFade, charsmax(szFade))
	g_bScreenFadeEnabled = str_to_num(szFade) != 0

	crxranks_get_setting("LEVELUP_SCREEN_FADE_COLOR", szColor, charsmax(szColor))
	parse(szColor, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[]), szTemp[2], charsmax(szTemp[]), szTemp[3], charsmax(szTemp[]))

	for(new i = 0; i < 4; i++)
	{
		g_iScreenFade[i] = clamp(str_to_num(szTemp[i]), -1, 255)
	}

	g_iMsgScreenFade = get_user_msgid("ScreenFade")
}

public client_putinserver(id)
{
	set_task(XP_FREQ * 60.0, "GiveXP", id, .flags = "b")
}

public client_disconnect(id)
{
	remove_task(id)
}

public GiveXP(id)
{
	if(is_user_connected(id))
	{
		crxranks_give_user_xp(id, XP_AMOUNT)
		CC_SendMessage(id, "You received &x03%i XP &x01for playing for &x04%i minute&x01.", XP_AMOUNT, XP_FREQ)

		if(crxranks_get_user_xp(id) + XP_AMOUNT < crxranks_get_user_next_xp(id))
		{
			if(g_szSound[0])
			{
				client_cmd(id, "spk ^"%s^"", g_szSound)
			}

			if(g_bScreenFadeEnabled)
			{
				message_begin(MSG_ONE, g_iMsgScreenFade, {0, 0, 0}, id)
				write_short(1<<10)
				write_short(1<<10)
				write_short(0x0000)
				write_byte(clr(g_iScreenFade[0]))
				write_byte(clr(g_iScreenFade[1]))
				write_byte(clr(g_iScreenFade[2]))
				write_byte(clr(g_iScreenFade[3]))
				message_end()
			}
		}
	}
	else
	{
		remove_task(id)
	}
}

Потребителски аватар

Автор на темата
iv69
Потребител
Потребител
Мнения: 407
Регистриран: 17 мар 2018, 15:34
Се отблагодари: 114 пъти
Получена благодарност: 11 пъти

Редакция на събплъгин за даване на XP.

Мнение от iv69 » 13 юли 2019, 17:09

OciXCrom написа:
13 юли 2019, 14:53
Отново не виждам информация в заглавието свързана със самата редакция - обясни за каква редакция става дума в заглавието. Недей да пишеш само "редакция на плъгин".

Направих го да не изпълнява ефекта/звука ако XP-то което ще получи е достатъчно за достигане на следващото ниво.

Код: Избери всички

#include <amxmodx>
#include <cromchat>
#include <crxranks>

#if defined client_disconnected
	#define client_disconnect client_disconnected
#endif

#define clr(%1) %1 == -1 ? random(256) : %1

const XP_FREQ = 30
const XP_AMOUNT = 50

new g_szSound[128], bool:g_bScreenFadeEnabled, g_iScreenFade[4], g_iMsgScreenFade

public plugin_init()
{
	register_plugin("CRXRanks: XP Per Minute", "1.0a", "OciXCrom")
	crxranks_get_chat_prefix(CC_PREFIX, charsmax(CC_PREFIX))
	crxranks_get_setting("LEVELUP_SOUND", g_szSound, charsmax(g_szSound))

	new szColor[16], szTemp[4][5], szFade[2]

	crxranks_get_setting("LEVELUP_SCREEN_FADE_ENABLED", szFade, charsmax(szFade))
	g_bScreenFadeEnabled = str_to_num(szFade) != 0

	crxranks_get_setting("LEVELUP_SCREEN_FADE_COLOR", szColor, charsmax(szColor))
	parse(szColor, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[]), szTemp[2], charsmax(szTemp[]), szTemp[3], charsmax(szTemp[]))

	for(new i = 0; i < 4; i++)
	{
		g_iScreenFade[i] = clamp(str_to_num(szTemp[i]), -1, 255)
	}

	g_iMsgScreenFade = get_user_msgid("ScreenFade")
}

public client_putinserver(id)
{
	set_task(XP_FREQ * 60.0, "GiveXP", id, .flags = "b")
}

public client_disconnect(id)
{
	remove_task(id)
}

public GiveXP(id)
{
	if(is_user_connected(id))
	{
		crxranks_give_user_xp(id, XP_AMOUNT)
		CC_SendMessage(id, "You received &x03%i XP &x01for playing for &x04%i minute&x01.", XP_AMOUNT, XP_FREQ)

		if(crxranks_get_user_xp(id) + XP_AMOUNT < crxranks_get_user_next_xp(id))
		{
			if(g_szSound[0])
			{
				client_cmd(id, "spk ^"%s^"", g_szSound)
			}

			if(g_bScreenFadeEnabled)
			{
				message_begin(MSG_ONE, g_iMsgScreenFade, {0, 0, 0}, id)
				write_short(1<<10)
				write_short(1<<10)
				write_short(0x0000)
				write_byte(clr(g_iScreenFade[0]))
				write_byte(clr(g_iScreenFade[1]))
				write_byte(clr(g_iScreenFade[2]))
				write_byte(clr(g_iScreenFade[3]))
				message_end()
			}
		}
	}
	else
	{
		remove_task(id)
	}
}
Благодаря, ще тествам .

Добавено преди 1 час 40 минути 43 секунди:
SOUND+SCREEN_FADE за CRXRanks: Give XP Per Minute !
Съблъгина работи много добре! Препоръчвам го всички които ползват OciXCrom's Rank System !!! Ако на някой му се стори много/малко ХР който се дава, или е често/рядко - да си го настройва от редовете:

const XP_FREQ = 30
const XP_AMOUNT = 50

Още веднъж благодаря на Крома за разбирането и любезното отношение!
Заключете темата.

Потребителски аватар

OciXCrom TM
Администратор
Администратор
Мнения: 5326
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 77 пъти
Получена благодарност: 560 пъти
Години: 21
Контакти:

SOUND+SCREEN_FADE за CRXRanks: Give XP Per Minute !

Мнение от OciXCrom TM » 13 юли 2019, 20:05

const XP_FREQ = 30
const XP_AMOUNT = 50
Ако искаш, мога да направя и тези настройки да се четат от RankSystem.ini, или да са кварове, както ти е по-удобно.

Потребителски аватар

Автор на темата
iv69
Потребител
Потребител
Мнения: 407
Регистриран: 17 мар 2018, 15:34
Се отблагодари: 114 пъти
Получена благодарност: 11 пъти

SOUND+SCREEN_FADE за CRXRanks: Give XP Per Minute !

Мнение от iv69 » 13 юли 2019, 21:12

OciXCrom написа:
13 юли 2019, 20:05
const XP_FREQ = 30
const XP_AMOUNT = 50
Ако искаш, мога да направя и тези настройки да се четат от RankSystem.ini, или да са кварове, както ти е по-удобно.
Мисля, че като квари ще е по-лесно за нас, клиентите?! Поне според мене и ако ги направиш да си ги редактираме сами без да бърникаме по кода, ще е супер.
Имам една молба, а ще може ли когато имаш време, да добавиш плъгина в твоята лаборатория - към останалите ти събплъгини за CRXRanksSystem? Полезна добавка стана, много ефектно е и просто така няма да го търсим по заявките тука ?

Отговори

Върни се в “Заявки за плъгини”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 3 госта