Страница 1 от 1

Редакция на Nice Damager "mini".

Публикувано на: 07 Май 2019, 12:47
от iv69
Ползвам плъгина Nice Damager, работи добре и има интересен "ефект", но имам един въпрос: Ще може ли да се редактира плъгина, така , че отнетия "damage" да излиза като HUD-съобщение под мерника, само един път: и то точно в момента на убиването на "противника". Т.е. , да ни е нещо като ориентир за примерно "Screenfade on kill" в играта ? Не знам защо но когато имам включен плъгин за Screenfade on kill - винаги при убийство в сървъра има някаква моментна и рязка промяна и на fps и на ping, а в този плъгин, въпреки че има подобен ефект, (но при умиране-визирам червения екран) - не влияе изобщо на играта! Т.е. - не ми трябва Screenfade, а просто един път появата на целия Damage в момента на убиване на противника.Само това.

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

#include <amxmodx>
#include <fakemeta_util>

#define PLUGIN "Nice Damager"
#define VERSION "5.0 Mini"
#define AUTHOR "sector"

new ndm_msg

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

	register_event("Damage", "nice_damager", "b", "2!0", "3=0", "4!0")
	register_event("DeathMsg", "nice_kill", "a")

	ndm_msg = CreateHudSyncObj()
}

public nice_damager(id)
{
	new i, damager
	i = get_user_attacker(id)
	damager = read_data(2)
	
	if(fm_is_ent_visible(i, id))
	{
		set_hudmessage(255, 255, 255, -1.0, 0.60, 2, 0.1, 4.0, 0.02, 0.02, -1)
		ShowSyncHudMsg(i, ndm_msg, "-%i HP", damager)
	}
}

public nice_kill()
{
	new id = read_data(2)
	message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), {0, 0, 0}, id)
	write_short(10<<12)
	write_short(10<<16)
	write_short(1<<1)
	write_byte(random_num(60, 255))
	write_byte(0)
	write_byte(0)
	write_byte(random_num(60, 255))
	message_end()
}
Благодаря предварително !

Редакция на Nice Damager "mini".

Публикувано на: 07 Май 2019, 15:56
от OciXCrom
Под "целия damage" имаш предвид цялата щета която си направил на играча за време на рунда, или щетата която си направил с последния удар?

Редакция на Nice Damager "mini".

Публикувано на: 07 Май 2019, 16:10
от iv69
OciXCrom написа: 07 Май 2019, 15:56 Под "целия damage" имаш предвид цялата щета която си направил на играча за време на рунда, или щетата която си направил с последния удар?
Ми, Кроме незнам и аз... просто искам да ми излиза надписа само след последния изстрел и в момента на смъртта на противника му...за да може да спре нападателя стрелбата си навреме. Може би ако изпише цялата щета на едно(при целия бой само между двамата в този рунд) - ако не те затруднява, би било чудесно, благодаря ! Сега мисля, че при всяко попадение - подава надписа, той се мени ... Да е просто само един - и да се ползва от играча за нещо като сигнализация , че противника е мъртъв и не трябва да стреля повече... А дали ще изписва целия отнет damage, или само отнетото с последния "фатален" изстрел, е почти все едно/ е по яко ще е ако стане да изпише сумарния...но ако не става няма никакъв проблем/ !

Редакция на Nice Damager "mini".

Публикувано на: 07 Май 2019, 16:45
от OciXCrom
Предполагам ще ти харесва така.

Изображение

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

#include <amxmodx>
#include <engine>
#include <hamsandwich>

#define PLUGIN "Nice Damager"
#define VERSION "5.0 Mini-edit1"
#define AUTHOR "sector/OciXCrom"

new g_iObject, g_iScreenFade, g_iDamage[33][33]

public plugin_init()
{
	register_plugin("Damage Info", "1.0", "OciXCrom")

	register_logevent("OnRoundStart", 2, "0=World triggered", "1=Round_Start")
	RegisterHam(Ham_TakeDamage, "player", "OnTakeDamage", 0)
	register_event("DeathMsg", "OnPlayerKilled", "a")

	g_iObject = CreateHudSyncObj()
	g_iScreenFade = get_user_msgid("ScreenFade")
}

public OnRoundStart()
{
	for(new i; i < sizeof(g_iDamage); i++)
	{
		arrayset(g_iDamage[i], 0, sizeof(g_iDamage[]))
	}
}

public OnTakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
	if(!is_user_connected(iAttacker))
	{
		return
	}

	g_iDamage[iAttacker][iVictim] += floatround(fDamage)
}

public OnPlayerKilled()
{
	new iAttacker = read_data(1), iVictim = read_data(2)

	if(!is_user_connected(iAttacker) || iAttacker == iVictim)
	{
		return
	}

	new szName[32]
	get_user_name(iVictim, szName, charsmax(szName))
	set_hudmessage(255, 255, 255, 0.1, 0.4, .holdtime = 5.0)
	ShowSyncHudMsg(iAttacker, g_iObject, "You killed %s^n^nDamage dealt: %i^nDamage received: %i", szName, g_iDamage[iAttacker][iVictim], g_iDamage[iVictim][iAttacker])

	message_begin(MSG_ONE_UNRELIABLE, g_iScreenFade, _, iAttacker)
	write_short(10<<12)
	write_short(10<<16)
	write_short(1<<1)
	write_byte(random_num(60, 255))
	write_byte(0)
	write_byte(0)
	write_byte(random_num(60, 255))
	message_end()

	g_iDamage[iAttacker][iVictim] = 0
}

Редакция на Nice Damager "mini".

Публикувано на: 07 Май 2019, 17:21
от iv69
OciXCrom написа: 07 Май 2019, 16:45 Предполагам ще ти харесва така.

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

#include <amxmodx>
#include <engine>
#include <hamsandwich>

#define PLUGIN "Nice Damager"
#define VERSION "5.0 Mini-edit1"
#define AUTHOR "sector/OciXCrom"

new g_iObject, g_iScreenFade, g_iDamage[33][33]

public plugin_init()
{
	register_plugin("Damage Info", "1.0", "OciXCrom")

	register_logevent("OnRoundStart", 2, "0=World triggered", "1=Round_Start")
	RegisterHam(Ham_TakeDamage, "player", "OnTakeDamage", 0)
	register_event("DeathMsg", "OnPlayerKilled", "a")

	g_iObject = CreateHudSyncObj()
	g_iScreenFade = get_user_msgid("ScreenFade")
}

public OnRoundStart()
{
	for(new i; i < sizeof(g_iDamage); i++)
	{
		arrayset(g_iDamage[i], 0, sizeof(g_iDamage[]))
	}
}

public OnTakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
	if(!is_user_connected(iAttacker))
	{
		return
	}

	g_iDamage[iAttacker][iVictim] += floatround(fDamage)
}

public OnPlayerKilled()
{
	new iAttacker = read_data(1), iVictim = read_data(2)

	if(!is_user_connected(iAttacker) || iAttacker == iVictim)
	{
		return
	}

	new szName[32]
	get_user_name(iVictim, szName, charsmax(szName))
	set_hudmessage(255, 255, 255, 0.1, 0.4, .holdtime = 5.0)
	ShowSyncHudMsg(iAttacker, g_iObject, "You killed %s^n^nDamage dealt: %i^nDamage received: %i", szName, g_iDamage[iAttacker][iVictim], g_iDamage[iVictim][iAttacker])

	message_begin(MSG_ONE_UNRELIABLE, g_iScreenFade, _, iAttacker)
	write_short(10<<12)
	write_short(10<<16)
	write_short(1<<1)
	write_byte(random_num(60, 255))
	write_byte(0)
	write_byte(0)
	write_byte(random_num(60, 255))
	message_end()

	g_iDamage[iAttacker][iVictim] = 0
}
Веднага ще го пробвам! Благодаря !

Добавено преди 34 минути 42 секунди:
Мммм, хареса мии и то много :) Искам само да попитам има ли начин някак и как и откъде (ако има такъв) да се намали съвсем малко продължителността на "присветването" след всяко убийство? Питам , понеже при CSDM-сървъри като моя, ако "утрепеш" в рамките на 3-4sek - 2 или 3-ма , червеното на екрана става доста плътно и дори тъмно и то малко по-задълго. Просто може би с половин до една секунда по-кратко ако е... ? Иначе е станало супер и то с отделен надпис и инфо :) Много добра идея !
Но сякаш си сложил някаква опция за различни цветове( нещо като randum) или се бъркам... но забелязах , че има нещо по-поносимо в оранжево и жълто и ...и по тъмно в червено ли ,нз...Хахаха,интересно е :)

Редакция на Nice Damager "mini".

Публикувано на: 07 Май 2019, 22:22
от OciXCrom
От този ред можеш да промениш времетраенето на съобщението - последното число (5.0):

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

set_hudmessage(255, 255, 255, 0.1, 0.4, .holdtime = 5.0)
Произволните цветове са копирани от оригиналния плъгин - не съм пипал нищо по screen fade-а.

Редакция на Nice Damager "mini".

Публикувано на: 08 Май 2019, 12:12
от iv69
Пак благодаря за плъгина. Добра изработка, сървъра стана доста зарибяващ...препоръчвам плъгина и на останалите !
Заключете, моля !