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

В този раздел можете да намерите полезни кодове и уроци свързани с PAWN скриптинга.
Аватар
mount4
Извън линия
Потребител
Потребител
Мнения: 187
Регистриран на: 03 Ное 2016, 19:54
Местоположение: Варна
Обратна връзка:

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

Мнение от mount4 » 06 Дек 2016, 09:37

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

Ми несъм въвел щото гледах че има default такива, примерно fxtime беше 6 секунди.

Открих проблем в последния ми код и той се оказа и проблема за ефектите: не съм видял да махна това get_timeleft() от holdtime
Сега го направих да бъде == на refresh rate-a.

Ето новия ми код като съм махнал функциите дето ми каза за amx_cvar и добавих и cvar за X + cvar за fxtime:

Като имам време ще го направя и с ResetHUD и ще сравня двата метода с профайлера който показва времена и брой извиквания на функциите в плъгините.

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

#include <amxmodx>
#include <amxmisc>

	/*

This is static_hud by mount4
	
	*/

new const sMsg[] = "<IP: XXX.XXX.XXX.XXX:XXXXX>"


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

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


new g_X, g_Y, g_E, g_F, g_R

new Float: xx, Float: yy, Float: rr, Float: ft

new ef


public plugin_init()
{

   register_plugin("myhud", "0.1", "mount4")
   
   g_X = register_cvar("mh_x", "-1.0")
   g_Y = register_cvar("mh_y", "0.033")
   
   g_E = register_cvar("mh_ef", "0")
   g_F = register_cvar("mh_fxtime", "0.15")
   g_R = register_cvar("mh_rr", "0.3")
   
}

public plugin_cfg()
{

   xx = get_pcvar_float(g_X)
   yy = get_pcvar_float(g_Y)
   ef = get_pcvar_num(g_E)
   ft = get_pcvar_float(g_F)
   rr = get_pcvar_float(g_R)
   
   set_task(rr, "displayMsg", _, _, _, "b")
   
}

public displayMsg()
{

	set_dhudmessage(random(256), random(256), random(256), xx, yy, ef, ft, rr)
	show_dhudmessage(0, sMsg)
	
}
Обобщени cvars:

-настройка на кординати:
mh_x (D: -1.0)
mh_y (D: 0.033)
-настойка на ефект:
mh_ef (D: 0) този cvar може да бъде 0, 1 или 2 като това е вида на ефекта. 0 е без такъв а 1 и 2 са ефекти.
mh_fxtime (D: 0.15)

mh_rr (D: 0.3) този cvar настройва колко бързо да се сменя цвета на съобщението както и неговото обновяване едновременно.

Пробвах го и работи ама нещо или неработи като хората или аз немога да настроя cvars-ите.
Искам да направя HUD като на Fatal-Error-a дето пише горе централно "wWw.Fatall-Error.iNfo" Тяхния ефект е много брутален.

То няма какво да му е грешно на кода ми явно аз не настройвам времената точно. Дане да трябва да направя fade-овете на 0 защото стандартно са 0.1 и 0.2 а аз не съм ги пипал тях ?

Защо да е само за начинаещи темата ? аз например не съм начинаещ и влязох в тази тема да се науча как става защото я бях мярнал преди време. Да, мога да видя в google, alliedmods но реших да видя от тука защото дизайна на форума ми харесва доста повече. Освен това начинаещите също разбират (аз съм се научил много бързо и без да чета нито 1 книга за програмиране или уроци -> само видях примерна програма на C) и точно че тези неща са много важни за тях. Аз не се усетих навреме че другите плъгини могат да изчистват HUD-а пък какво остава за 1 начинаещ.. Те най-малките детайли всъщност са най-големите (тоест -> трябва да прескочим само средните детайли).

Относно auto command executor-а : ще пиша в темата му като имам време и се сетя, сега са ми 1000 неща на главата.

Знам го това за PLUGIN_HANDLED но незнаех дали не се използва и за други неща щото ми звучи като спиране на плъгина. То няма как да спреш плъгина с един return ама всъшност има ако register-a който извиква callback-a е написан така, примерно if(retval == PLUGIN_HANDLED) pause("d")

"Надали ще срещнеш плъгин, който ползва стойност различна от -1"

Ами аз гледах че default-a не е -1 ами 4 и освен това незнаех че са само 4 канала. Мислех си че е като при тасковете, примерно 54637-ти канал.

То ако е така само 4 канала дет викаш значи доста кофти са го измислили стиъмарите.. То затова ли се говори в интернет че HUD съобщенията товарят и намаляват fps-то.. Тия от rehlds да вземат да пренапишат всичко че доста боза ми се струва. Те и руснаците са малко хамави ама по ми се нравят от онези пъзлъовци дето ги е страх valve да не фалира заради но-стеама :D И ко става ся rehlds ще излезе по-добър продукт от тяхното пък не им харесва темата за него във форума им. :D

Трябваше да го направят или с много канали, или -> да стои докато не се премахне с (функция или holdtime), или най-доброто -> и ТРИТЕ варианта!
94.190.190.195:27015 -> Изображение <-- Runemod here !
94.190.190.195:27017 -> Изображение

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

Аватар
MF1
Извън линия
Потребител
Потребител
Мнения: 316
Регистриран на: 12 Окт 2016, 21:15
Местоположение: гр.Варна
Получена благодарност: 12 пъти
Обратна връзка:

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

Мнение от MF1 » 20 Яну 2019, 18:34

Въпрос.
Добре регистрирам в текста на худ-а параметри с %i, но имам питанка...
искам да добавя знакът % така както си е, по-точно така
"%i/100%"
Каквото и да пробвах, този знак на 100% не ми го показва...
Помощ ?
Join now.
www.MF1-CS.eu ---------------------------- 91.132.63.55:27015 91.132.63.56:27015 ---------------------------- :bg:

Аватар
DaRk_StyLe
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 264
Регистриран на: 26 Окт 2016, 12:40
Се отблагодари: 11 пъти
Получена благодарност: 33 пъти

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

Мнение от DaRk_StyLe » 20 Яну 2019, 18:44

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

new a = 10;
	
set_hudmessage( 255, 0, 0, -1.0, -1.0, 0, 6.0, 12.0 );
show_hudmessage( id, "%i/100%%", a );

резултат: 10/100%

Аватар
MF1
Извън линия
Потребител
Потребител
Мнения: 316
Регистриран на: 12 Окт 2016, 21:15
Местоположение: гр.Варна
Получена благодарност: 12 пъти
Обратна връзка:

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

Мнение от MF1 » 20 Яну 2019, 18:48

DaRk_StyLe написа: 20 Яну 2019, 18:44

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

new a = 10;
	
set_hudmessage( 255, 0, 0, -1.0, -1.0, 0, 6.0, 12.0 );
show_hudmessage( id, "%i/100%%", a );

резултат: 10/100%
DaRk_StyLe написа: 20 Яну 2019, 18:44

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

"%i/100%%",
Благодаря, точно за това питах.
:tnx: :nicecode:
Join now.
www.MF1-CS.eu ---------------------------- 91.132.63.55:27015 91.132.63.56:27015 ---------------------------- :bg:

Аватар
stancho156
Извън линия
Потребител
Потребител
Мнения: 75
Регистриран на: 04 Фев 2018, 11:32
Се отблагодари: 5 пъти

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

Мнение от stancho156 » 12 Апр 2020, 00:30

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

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

#include <amxmodx>
#include <cstrike>

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

#define PLUGIN_NAME "DHUD Bar"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "OciXCrom"

// Произволно число за задачата, която ще изпълнява функцията.
#define TASK_MESSAGE 398822

public plugin_init()
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

public client_putinserver(id)
{
    // Задаваме задача (task), която ще се изпълнява функцията displayMessage(id) през 1 секунда.
    // Добавяме произволна стойност на id, с цел да предотвратим неумишлено премахване на задачата от някоя друга функция или плъгин.
    set_task(1.0, "displayMessage", id + TASK_MESSAGE, _, _, "b")
}

public client_disconnect(id)
{
    // Премахваме задачата когато играчът напусне сървъра.
    new iTask = id + TASK_MESSAGE
    
    if(task_exists(iTask))
        remove_task(iTask)
}

public displayMessage(id)
{
    // Намираме id чрез изваждане на произволното число от него. 
    id -= TASK_MESSAGE
    
    // Ако играчът е мъртъв, искаме съобщението да не се показва.
    if(!is_user_alive(id))
        return
    
    // Задаваме стойностите на съобщението.
    set_dhudmessage(219, 112, 147, -1.0, 0.0, 1, 1.0, 1.0, 0.1, 0.1)
    
    // Изпращаме съобщението до играча.
    show_dhudmessage(id, "Welcome to TrevichkaVSBananche [Respawn]^n Add ip Favorite: XX.XXX.XX.X:XXXX", get_user_health(id), get_user_armor(id), cs_get_user_money(id))
}

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

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

Мнение от OciXCrom » 12 Апр 2020, 00:34

При всички си се вижда. Ако не се вижда при тях, нещо друго му пречи, като на пример ЧЕРНАТА ЛЕНТА която спектаторите виждат. Демек премести го по-надолу...

Аватар
Shanhaya
Извън линия
Потребител
Потребител
Мнения: 26
Регистриран на: 20 Мар 2020, 22:48
Се отблагодари: 6 пъти
Получена благодарност: 3 пъти

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

Мнение от Shanhaya » 04 Май 2020, 16:36

Здравейте. Как да направя кода за hud съобщение да се вижда само от мъртви играчи? Благодаря.

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

#include <amxmodx>

#define PLUGIN_NAME "Permanent HUD Message"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "OciXCrom"

new g_iObject

// Това е съобщението.
new const g_szMessage[] = "Admin Skype: doctor.crom1234"

public plugin_init()
{
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
    
    // Това е обектът, който ще държи HUD съобщението.
    g_iObject = CreateHudSyncObj()
    
    // Задаваме задача (task), която ще се изпълнява функцията displayMessage() през 1 секунда.
    set_task(1.0, "displayMessage", _, _, _, "b")
}

public displayMessage()
{
    // Задаваме стойностите на съобщението.
    set_hudmessage(0, 255, 0, 0.02, 0.2, 0, 0.1, 1.0, 0.1, 0.1, -1)
    
    // Изпращаме съобщението до всички играчи.
    ShowSyncHudMsg(0, g_iObject, g_szMessage)
}

Аватар
Tornado_SW
На линия
AMXX Скриптър
AMXX Скриптър
Мнения: 159
Регистриран на: 04 Фев 2020, 22:41
Се отблагодари: 28 пъти
Получена благодарност: 76 пъти
Обратна връзка:

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

Мнение от Tornado_SW » 04 Май 2020, 16:51

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

#include <amxmodx>

#define PLUGIN_NAME "Permanent HUD Message"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "OciXCrom"

new g_iObject

// Това е съобщението.
new const g_szMessage[] = "Admin Skype: doctor.crom1234"

public plugin_init()
{
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
    
    // Това е обектът, който ще държи HUD съобщението.
    g_iObject = CreateHudSyncObj()
    
    // Задаваме задача (task), която ще се изпълнява функцията displayMessage() през 1 секунда.
    set_task(1.0, "displayMessage", _, _, _, "b")
}

public displayMessage()
{
	//Взимаме броя на всички мъртви играчи в сървъра (флаг "b" е да не включва живите играчи).
	new iPlayers[32], iPNum
	get_players(iPlayers, iPNum, "b")
	{
		//С цикъла for взимаме id-то на всички играчи.
		for(new i; i < iPNum; i++)
		{
			// Задаваме стойностите на съобщението.
			set_hudmessage(iPlayers[i], 255, 0, 0.02, 0.2, 0, 0.1, 1.0, 0.1, 0.1, -1)
			
			// Изпращаме съобщението до всички играчи.
			ShowSyncHudMsg(iPlayers[i], g_iObject, g_szMessage)
		}
	}
}

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

Обратно към “Полезни кодове/уроци”

Кой е на линия

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