Перманентно HUD/DHUD съобщение или HUD bar/status

В този раздел можете да намерите полезни кодове и уроци свързани с PAWN скриптинга.
Потребителски аватар

mount4 amxx
Потребител
Потребител
Мнения: 187
Регистриран: 03 ное 2016, 19:54
Местоположение: Варна
Години: 24
Контакти:

Re: Перманентно HUD/DHUD съобщение или HUD bar/status

Мнение от mount4 amxx » 05 дек 2016, 20:03

МНЕНИЕТО Е СКРИТО ОТ СТРАНА НА МОДЕРАТОР! ЦЪКНИ ВЪРХУ ЛЕНТАТА ЗА ДА ГО ПРЕГЛЕДАШ.
Последна промяна от TheRedShoko ReShoko на 05 дек 2016, 20:16, променено общо 1 път.
Причина: Двоен пост
94.190.190.195:27015 -> Изображение <-- Runemod here !
94.190.190.195:27017 -> Изображение

Segmentation fault Изображение <-- Opera browser !

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

TheRedShoko ReShoko
Модератор
Модератор
Мнения: 1000
Регистриран: 06 окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 4 пъти
Получена благодарност: 54 пъти

Re: Перманентно HUD/DHUD съобщение или HUD bar/status

Мнение от TheRedShoko ReShoko » 05 дек 2016, 20:15

Отново не е правилно. Много ясно е написано в темата как се правят правилно постоянни съобщения. Сега ще ти лепна и 1 предупреждение заради двойният пост, защото не ти се случва за пръв път ;)

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

mount4 amxx
Потребител
Потребител
Мнения: 187
Регистриран: 03 ное 2016, 19:54
Местоположение: Варна
Години: 24
Контакти:

Re: Перманентно HUD/DHUD съобщение или HUD bar/status

Мнение от mount4 amxx » 05 дек 2016, 21:10

За да кажеш че не е правилно трябва да кажеш кое не е правилно. Пробвах го и кода си работи!

Мога да ти кажа че е по-добре по моя начин като разликата в perfomance е малка но въпроса по-скоро е да дава добър пример на хората.
Ето подобрена версия, бях забравил проверката "#if AMXX_VERSION_NUM < 183" и направих така че да не трябва рестарт на сървъра при промяна на cvar-a и НЕ го направих с set_task :

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

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

// Винаги ползвайте тази проверка, тъй като в AMXX 1.8.3, dhudmessage е вграден в самия AMX.
#if AMXX_VERSION_NUM < 183
    #include <dhudmessage>
#endif

new g_Y, Float: yy


public plugin_init()
{
   register_plugin("myhud", "0.1", "mount4")

   g_Y = register_cvar("mh_y", "0.01")
   register_logevent("logevent_round_start", 2, "1=Round_Start")
   register_concmd("mh_y", "y_change", ADMIN_RCON, "<y of the hud>")
}

public y_change(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	new argument[8]
	
	if (read_argc() > 1)
	{
		read_argv(1, argument, 7)
		yy = str_to_float(argument)
	}
	else
		console_print(id, "^"mh_y^" is ^"%f^"", yy)
}

public plugin_cfg()
   yy = get_pcvar_float(g_Y)

public logevent_round_start()
{
   set_dhudmessage(random(256), random(256), random(256), -1.0, yy, _, _, float( get_timeleft() ))
   show_dhudmessage(get_loguser_index(), "<IP: XX.XXX.XX.XX:XXXXX>")
}

	/*
    This stock is from here, very usefull link -> https://forums.alliedmods.net/showthread.php?t=40164
	*/
	
stock get_loguser_index()
{
    new loguser[80], name[32]
    
    read_logargv(0, loguser, 79)
    parse_loguser(loguser, name, 31)
 
    return get_user_index(name)
}
edit: установих че нестава така защото неработи и явно съобщенията се трият момент след като се покажат. Точно заради това го направих да бъде накрая на freeze-a ама явно пак се трият.
То аз казах че съм го пробвал и работи ама то аз като пробвах, пробвах варианта с "client_putinserver" и ти не уточни защо няма да работи с прихващане на roundstart.
Пробвах и с spawn event -> пак нестава. Явно не се трият всеки рунд ами всеки спаун + всеки рунд малко след freeze end
Предполагам това си имал впредвит под "неправилен" код и можеше да ми кажеш за да не си губя времето. Не е нещо трудно за обесняване, само трябваше да напишеш това:
TheRedShoko написа: ти хубу ще прихванеш roundstart но какво ще стане ако съобщението се изтрие момент след като бъде показано ?
(аз си мислех че HUD-a се изчиства преди freeze end-а да настъпи а ти спести да ми кажеш че настъпва СЛЕД него)

След като този вариант нестава може да се направи с забавяне 1 секунда след freeze end.

Грешка -> след SPAWN защото да бъде съвместимо с Respawn сървъри.

Ето код:

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

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

// Винаги ползвайте тази проверка, тъй като в AMXX 1.8.3, dhudmessage е вграден в самия AMX.
#if AMXX_VERSION_NUM < 183
    #include <dhudmessage>
#endif

new g_Y, Float: yy, g_Freeze, Float: ft


public plugin_init()
{
   register_plugin("myhud", "0.1", "mount4")

   g_Y = register_cvar("mh_y", "0.01")
   g_Freeze = get_cvar_pointer("mp_freezetime")
   
   //register_logevent("logevent_round_start", 2, "1=Round_Start")
   RegisterHam(Ham_Spawn, "player", "spawn_event", 1)
   register_concmd("mh_y", "y_change", ADMIN_RCON, "<y of the hud>")
}

public plugin_cfg()
{
   yy = get_pcvar_float(g_Y)
   ft = get_pcvar_float(g_Freeze)
}

public y_change(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	new argument[8]
	
	if (read_argc() > 1)
	{
		read_argv(1, argument, 7)
		yy = str_to_float(argument)
	}
	else
		console_print(id, "^"mh_y^" is ^"%f^"", yy)

	return PLUGIN_HANDLED
}

	/*
public logevent_round_start()
{
   set_dhudmessage(random(256), random(256), random(256), -1.0, yy, _, _, float( get_timeleft() ))
   show_dhudmessage(get_loguser_index(), "<IP: XX.XXX.XX.XX:XXXXX>")
}
	*/

public spawn_event(id)
{
	new args[1]
	args[0] = id
	set_task(ft + 1.0, "displayMsg", _, args, 1)
}

public displayMsg(args[])
{
	set_dhudmessage(random(256), random(256), random(256), -1.0, yy, _, _, float( get_timeleft() ))
	show_dhudmessage(args[0], "<IP: XXX.XXX.XXX.XXX:XXXXX>")
}
	/*
    This stock is from here -> https://forums.alliedmods.net/showthread.php?t=40164
		a very usefull link.
	*/
	
stock get_loguser_index()
{
    new loguser[80], name[32]
    
    read_logargv(0, loguser, 79)
    parse_loguser(loguser, name, 31)
 
    return get_user_index(name)
}
Последна промяна от mount4 amxx на 05 дек 2016, 23:36, променено общо 1 път.
94.190.190.195:27015 -> Изображение <-- Runemod here !
94.190.190.195:27017 -> Изображение

Segmentation fault Изображение <-- Opera browser !

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

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

Re: Перманентно HUD/DHUD съобщение или HUD bar/status

Мнение от OciXCrom TM » 05 дек 2016, 22:59

Момче, не знам защо толкова спориш за нещо, което не подлежи на дискусия. За дадено HUD съобщение да стои завинаги, невъзможно е това да стане без повтарящ се task или entity. Просто погледни който искаш плъгин в който сайт искаш - няма да намериш такъв, който не ползва този начин. Съобщенията се премахват от екрана в много случаи, особено когато имаш един куп плъгини, които ползват такива. Няма нужда от допълнителни спорове - напълно работещ начин без повтаряне не съществува.

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

mount4 amxx
Потребител
Потребител
Мнения: 187
Регистриран: 03 ное 2016, 19:54
Местоположение: Варна
Години: 24
Контакти:

Re: Перманентно HUD/DHUD съобщение или HUD bar/status

Мнение от mount4 amxx » 06 дек 2016, 00:02

Аз не споря ами вие сте тези които не обяснихте че съобщението се изчиства когато друг плъгин пусне такова.
Утре някой ще се чуди защо му изчезва съобщението.. Това е особенно важно..

Ето написах код който е със set_task като на крома но има повече неща:

-има cvar за променяне на refresh rate като няма нужда от рестарт за да влязат промените в сила
-има random колор на всяко рефрешване
-има cvar за променяне на ефекта който може да бъде 0, 1 или 2
-има cvar за променяне на Y позицията ( само на "y" защото само това ми трябваше :D )

чудя се обаче в "ef_change" функцията има ли нужда от return PLUGIN_HANDLED накрая защото откъдето видях как се прави имаше return а аз се колебая и май си мисля че няма нужда защото е накрая на функцията.

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

#include <amxmodx>
#include <amxmisc>

	/*

This is static_hud by mount4
	
	*/

new const sMsg[] = "<IP: 94.190.190.195:27015>"


// OciXCrom's check
// Винаги ползвайте тази проверка, тъй като в AMXX 1.8.3, dhudmessage е вграден в самия AMX.

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


new g_Y, Float: yy, g_E, ef, g_R, Float: rr


public plugin_init()
{
   register_plugin("myhud", "0.1", "mount4")

   g_Y = register_cvar("mh_y", "0.033")
   g_E = register_cvar("mh_ef", "0")
   g_R = register_cvar("mh_rr", "0.3")
   
   register_concmd("mh_y", "y_change", ADMIN_RCON, "<y of the hud>")
   register_concmd("mh_ef", "ef_change", ADMIN_RCON, "[0|1|2] different effects")
   register_concmd("mh_rr", "rr_change", ADMIN_RCON, "<seconds>")
}

public plugin_cfg()
{
   yy = get_pcvar_float(g_Y)
   ef = get_pcvar_int(g_E)
   rr = get_pcvar_float(g_R)
   
   set_task(rr, "displayMsg", _, _, _, "b")
}

public y_change(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	new argument[8]
	
	if (read_argc() > 1)
	{
		read_argv(1, argument, 7)
		yy = str_to_float(argument)
	}
	else
		console_print(id, "^"mh_y^" is ^"%f^"", yy)

	return PLUGIN_HANDLED
}

public ef_change(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	new argument[2]
	
	if (read_argc() > 1)
	{
		read_argv(1, argument, 1)
		ef = str_to_int(argument)
	}
	else
		console_print(id, "^"mh_ef^" is ^"%d^"", ef)

	return PLUGIN_HANDLED
}

public rr_change(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	new argument[4]
	
	if (read_argc() > 1)
	{
		read_argv(1, argument, 3)
		rr = str_to_float(argument)
	}
	else
		console_print(id, "^"mh_rr^" is ^"%f^"", rr)

	return PLUGIN_HANDLED
}

public displayMsg()
{
	set_dhudmessage(random(256), random(256), random(256), -1.0, yy, ef, _, float( get_timeleft() ))
	show_dhudmessage(0, sMsg)
}
Обаче неще да ми се компилирва:

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

myhud_constant.sma(40) : error 017: undefined symbol "get_pcvar_int"
myhud_constant.sma(74) : error 017: undefined symbol "str_to_int"
94.190.190.195:27015 -> Изображение <-- Runemod here !
94.190.190.195:27017 -> Изображение

Segmentation fault Изображение <-- Opera browser !

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

hackera457 СОТА
Модератор
Модератор
Мнения: 647
Регистриран: 01 ное 2016, 09:46
Местоположение: София
Получена благодарност: 79 пъти
Години: 24
Контакти:

Re: Перманентно HUD/DHUD съобщение или HUD bar/status

Мнение от hackera457 СОТА » 06 дек 2016, 00:23

mount4 написа:Аз не споря ами вие сте тези които не обяснихте че съобщението се изчиства когато друг плъгин пусне такова.
Утре някой ще се чуди защо му изчезва съобщението.. Това е особенно важно..

Ето написах код който е със set_task като на крома но има повече неща:

-има cvar за променяне на refresh rate като няма нужда от рестарт за да влязат промените в сила
-има random колор на всяко рефрешване
-има cvar за променяне на ефекта който може да бъде 0, 1 или 2
-има cvar за променяне на Y позицията ( само на "y" защото само това ми трябваше :D )

чудя се обаче в "ef_change" функцията има ли нужда от return PLUGIN_HANDLED накрая защото откъдето видях как се прави имаше return а аз се колебая и май си мисля че няма нужда защото е накрая на функцията.

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

#include <amxmodx>
#include <amxmisc>

	/*

This is static_hud by mount4
	
	*/

new const sMsg[] = "<IP: 94.190.190.195:27015>"


// OciXCrom's check
// Винаги ползвайте тази проверка, тъй като в AMXX 1.8.3, dhudmessage е вграден в самия AMX.

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


new g_Y, Float: yy, g_E, ef, g_R, Float: rr


public plugin_init()
{
   register_plugin("myhud", "0.1", "mount4")

   g_Y = register_cvar("mh_y", "0.033")
   g_E = register_cvar("mh_ef", "0")
   g_R = register_cvar("mh_rr", "0.3")
   
   register_concmd("mh_y", "y_change", ADMIN_RCON, "<y of the hud>")
   register_concmd("mh_ef", "ef_change", ADMIN_RCON, "[0|1|2] different effects")
   register_concmd("mh_rr", "rr_change", ADMIN_RCON, "<seconds>")
}

public plugin_cfg()
{
   yy = get_pcvar_float(g_Y)
   ef = get_pcvar_int(g_E)
   rr = get_pcvar_float(g_R)
   
   set_task(rr, "displayMsg", _, _, _, "b")
}

public y_change(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	new argument[8]
	
	if (read_argc() > 1)
	{
		read_argv(1, argument, 7)
		yy = str_to_float(argument)
	}
	else
		console_print(id, "^"mh_y^" is ^"%f^"", yy)

	return PLUGIN_HANDLED
}

public ef_change(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	new argument[2]
	
	if (read_argc() > 1)
	{
		read_argv(1, argument, 1)
		ef = str_to_int(argument)
	}
	else
		console_print(id, "^"mh_ef^" is ^"%d^"", ef)

	return PLUGIN_HANDLED
}

public rr_change(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	new argument[4]
	
	if (read_argc() > 1)
	{
		read_argv(1, argument, 3)
		rr = str_to_float(argument)
	}
	else
		console_print(id, "^"mh_rr^" is ^"%f^"", rr)

	return PLUGIN_HANDLED
}

public displayMsg()
{
	set_dhudmessage(random(256), random(256), random(256), -1.0, yy, ef, _, float( get_timeleft() ))
	show_dhudmessage(0, sMsg)
}
Обаче неще да ми се компилирва:

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

myhud_constant.sma(40) : error 017: undefined symbol "get_pcvar_int"
myhud_constant.sma(74) : error 017: undefined symbol "str_to_int"

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

get_pcvar_int
str_to_int
:D Такива функции не съществуват, къде си ги научил не те знам :D :D
--->

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

get_pcvar_num
str_to_num
Боже боже
Моите плъгини

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

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


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

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

Re: Перманентно HUD/DHUD съобщение или HUD bar/status

Мнение от OciXCrom TM » 06 дек 2016, 00:27

Хората, които си правят съобщението според примерите в първото мнение, сигурно няма да тръгнат да го правят по друг начин и да се чудят защо не работи. Дай тогава да обясним и защо се ползва # преди include. Повтарящият се task мисля, че е нещо елементарно и хората, които тепърва се учат, ще си знаят, че това е начинът.

Плъгинът не се компилира защото няма такова нещо "get_pcvar_int". Функцията е "get_pcvar_num". Същото се отнася и за другата.

При положение, че ползваш стойност при return когато правиш проверките във функцията, компилаторът ще ти изкара грешка ако не сложиш return със стойност в края на функцията. При направа на команди е правилно да се слага PLUGIN_HANDLED в края.

Каква е целта на тези команди?! Нали си направил кварове - за какво ти са команди за тяхната промяна при положение, че самият AMXX си има команда за проверка и промяна на кварове - amx_cvar?!

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

mount4 amxx
Потребител
Потребител
Мнения: 187
Регистриран: 03 ное 2016, 19:54
Местоположение: Варна
Години: 24
Контакти:

Re: Перманентно HUD/DHUD съобщение или HUD bar/status

Мнение от mount4 amxx » 06 дек 2016, 01:08

Нали казах че се съгласявам с тебе, недей да си спамиш собствената тема.
Поста ти трябваше да изглежда така:
OciXCrom™ написа: При положение, че ползваш стойност при return когато правиш проверките във функцията, компилаторът ще ти изкара грешка ако не сложиш return със стойност в края на функцията. При направа на команди е правилно да се слага PLUGIN_HANDLED в края.

Каква е целта на тези команди?! Нали си направил кварове - за какво ти са команди за тяхната промяна при положение, че самият AMXX си има команда за проверка и промяна на кварове - amx_cvar?!
Какво неразбра под това:

"Аз не споря ами вие сте тези които не обяснихте че съобщението се изчиства когато друг плъгин пусне такова.
Утре някой ще се чуди защо му изчезва съобщението.. Това е особенно важно.."

Аз например не се бях сетил че може да е така а аз не съм от тея хора които не се сещат.
OciXCrom™ написа:Хората, които си правят съобщението според примерите в първото мнение, сигурно няма да тръгнат да го правят по друг начин.
Ако не си видял (а съм сигурен че си видял) последния код е със сет_таск и е абсолютно същия като твоя самоче има мн. важни екстри -> настройката на кординати, ефект, refresh time и random color.

Защо да не тръгне ? По-скоро твоя плъгин неработи "Automatic Command Executor-a" защото където и да го местих в plugins.ini не тръгваше.
Сам си го бях компилирал, не даваше грешки в конзолота и просто неработеше. Правилно бях написал в .ini файла му несъм бавен.
Даже бях писал в темата ти в /// Блокиран текст/линк [НЕЖЕЛАН САЙТ] /// ама ми казаха че си баннат от него форум aand no support there. Там бях пуснал ini файла и ако имаше нщ грешно щяха да кажат. Човек да не реши да помогне на community-то и веднага ще го изядат вълците..
OciXCrom™ написа: Дай тогава да обясним и защо се ползва # преди include.
Първо тук не си прав и второ мисля че няма нужда да обесняваме защо се ползва # преди include.
OciXCrom™ написа: Повтарящият се task мисля, че е нещо елементарно и хората, които тепърва се учат, ще си знаят, че това е начинът.
Пак ти казвам -> "Ако не си видял (а съм сигурен че си видял) последния код е със сет_таск и е абсолютно същия като твоя самоче има мн. важни екстри -> настройката на кординати, ефект, refresh time и random color."
OciXCrom™ написа: Плъгинът не се компилира защото няма такова нещо "get_pcvar_int". Функцията е "get_pcvar_num". Същото се отнася и за другата.
ми тъпо са го измислили, трябваше да е int защото е по-близко до акъла. ако го бяха писали no-steam-ери нямаше да е така :D
Както и това че трябва да извикваш функция за да преобразуваш число във float а неможе с кастване като при C, C++, php, C#, Java, etc.

Напръв поглед еднакво но с извикването на функция става по-бавно.
OciXCrom™ написа: При положение, че ползваш стойност при return когато правиш проверките във функцията, компилаторът ще ти изкара грешка ако не сложиш return със стойност в края на функцията. При направа на команди е правилно да се слага PLUGIN_HANDLED в края.
мерси за това :tnx: Къде другаде да слагам PLUGIN_HANDLED или PLUGIN_CONTINUE ? Аз питах веднъж в този форум и никой не ми отговори.
OciXCrom™ написа: Каква е целта на тези команди?! Нали си направил кварове - за какво ти са команди за тяхната промяна при положение, че самият AMXX си има команда за проверка и промяна на кварове - amx_cvar?!
Мерси много и за това, не го знаех [;


------------------------------



Данеговорим че туко що научих че ако пуснеш -1 като последен параметър на set_hudmessage пуска съобщението на свободен канал и няма как да бъде изтрито от друг плъгин защото той ще използва или -1 пак или 4 което е стандартния канал така че вие сте тези които незнаете някой работи !

А сега се сещам и за още нещо: Redshoko каза че се изчиствало на всеки нов рунд, аз казах че на всеки рунд както и на всеки spawn пък то всъшност как е -> изчиства се единствено при spawn обаче след няколко секунди и може би затова redshoko си е помислил че е при roundstart. Аз го бях направил да се включва малко след спауна и работеше ама нали ако искочи друго ще го изтрие.

Сега ще пусна -1 на канал параметъра и ще стане без повтарящ таск, няма да се трие от други плъгини.


------------------------------

Странно ми е обаче защо неработят ефектите ?

effects=0 - Эффекты сообщения:
0 - Без эффектов
1 - Мерцание
2 - Печатает буквы по очереди

set_dhudmessage(random(256), random(256), random(256), -1.0, yy, ef, _, float( get_timeleft() ))


-----------

Сега виждам че има дори ResetHUD event
94.190.190.195:27015 -> Изображение <-- Runemod here !
94.190.190.195:27017 -> Изображение

Segmentation fault Изображение <-- Opera browser !

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

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

Re: Перманентно HUD/DHUD съобщение или HUD bar/status

Мнение от OciXCrom TM » 06 дек 2016, 01:55

Ще прескоча излишните спорове и просто ще кажа, че това е урок за начинаещи, съответно няма нужда да обясняваме всичко до най-малките детайли. Ако имаш въпрос - без излишни спорове може да се обсъди в темата.

Няма да цитирам с квадратчета поотделните части от мнението ти, понеже пиша от телефона.

Относно auto command executor-а - плъгинът от поне 2 години го ползвам активно в 3 различни сървъра и никога не е направил грешка, а го ползвам за покупка на неща в играта, съответно не мога да си позволя да прави грешки. Ще те помоля да продължиш дискусията относно този проблем в темата на плъгина в този форум, като пишеш нещата дето си ги писал в другия, понеже аз нямам достъп до него.

Относно return - PLUGIN_HANDLED по принцип се ползва когато искаш да блокираш оригиналното действие на дадена функция. Примерно ако си направил hook за "say" - ако сложиш PLUGIN_HANDLED в края, написаното в чата няма да се покаже, което е полезно ако искаш да скриеш чат командите. Ако сложиш PLUGIN_CONTINUE, командата (примерно /me) ще се покаже в чата. По същия начин можеш да блокираш командата "chooseteam", като просто регистрираш функция която съдържа само return PLUGIN_HANDLED и нищо друго, стига да не искаш да добавиш други неща на нейно място. При ham евентите вместо PLUGIN_HANDLED се ползва HAM_SUPERCEDE за блокиране (примерно можеш да блокираш щета, убийство, натискане на определен бутон и прочие), а HAM_IGNORED вместо PLUGIN_CONTINUE, като и двете вършат същата работа като return без никаква стойност.

ПС - харесва ми когато има дискусия във форума за такива полезни неща, но учтиво ще те помоля да не излизаш извън границите като създаваш излишни спорове, тъй като не аз, обаче някой с удоволствие ще иска да ти сложи предупреждение. И не, не отговаряй на тази част от мнението тук, тъй като е един вид модераторска забележка, която не подлежи на дискусия. Ако има нещо - ЛС.

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

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

Re: Перманентно HUD/DHUD съобщение или HUD bar/status

Мнение от OciXCrom TM » 06 дек 2016, 02:11

Пускам ново мнение, тъй като виждам, че си редактирал твоето докато съм го писал горното, а от телефона няма как хем да чета хем да редактирам предишното. Ще го съединя по-късною И, не взимайте толкова несериозно това правило за двоен пост, тъй като не е никаква болка за умиране.

Надали ще срещнеш плъгин, който ползва стойност различна от -1. Ако не е въведена такава, тя си е -1 по подразбиране и няма разлика ако я добавиш ръчно или изобщо я няма. Това, че си ползвал -1 не означава, че съобщението не може да бъде изтрито. Напротив - какво правим ако на екрана има 4 съобщения наведнъж? Всяко едно от тях заема по един от четирите свободни канали, съответно ако се появи пето такова, едно от предишните ще изчезне. В сървър с повече плъгини, почти няма да срещнеш HUD съобщение да стои на екрана повече от 5 секунди без повтарящ се task. На мен лично ми се е налагало да трансформирам обикновено съобщение, което стои 10 секунди, в такова което се повтаря, тъй като в 80% от случаите същото изчезваше преди време, а функционалността му е необходима за нормалното провеждане на играта. Ще ти дам пример с Jailbreak сървъра ми - на екрана постоянно стоят две HUD съобщения, които заемат два канала (едното показва кой е Саймън, а другото показва кръв, броня, пакове, ден и прочие). Към допълнение, таймерът който се пуска постоянно за задаване на команди, заема и третия канал. В такъв случай имам място за само още едно съобщение, което лесно може да бъде изтрито ако някой ползва @-чата или някой плъгин реши да изкара такова. Даже понякога и самата карта има такива съобщения. Затова никога не е "reliable" да ползваш съобщението с времетраене вместо с повтаряне в случай, че то трябва да бъде видимо през цялото си съществуване.

Ефектите не работят защото не си въвел стойности за времетраенето на ефектите (fxtime, fade и тн), или пък си го направил прекалено късо. Не знам на изуст всички параметри на set_hudmessage, обаче както виждам не си въвел всичките. ResetHUD не препоръчвам да се ползва.

Отговори

Върни се в “Полезни кодове/уроци”

Кой е на линия

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