Re: Перманентно HUD/DHUD съобщение или HUD bar/status
Публикувано на: 05 Дек 2016, 20:03
МНЕНИЕТО Е СКРИТО ОТ СТРАНА НА МОДЕРАТОР! ЦЪКНИ ВЪРХУ ЛЕНТАТА ЗА ДА ГО ПРЕГЛЕДАШ.
Код за потвърждение: Избери целия код
/* 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)
}
(аз си мислех че HUD-a се изчиства преди freeze end-а да настъпи а ти спести да ми кажеш че настъпва СЛЕД него)TheRedShoko написа: ти хубу ще прихванеш roundstart но какво ще стане ако съобщението се изтрие момент след като бъде показано ?
Код за потвърждение: Избери целия код
/* 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)
}
Код за потвърждение: Избери целия код
#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"
mount4 написа:Аз не споря ами вие сте тези които не обяснихте че съобщението се изчиства когато друг плъгин пусне такова.
Утре някой ще се чуди защо му изчезва съобщението.. Това е особенно важно..
Ето написах код който е със set_task като на крома но има повече неща:
-има cvar за променяне на refresh rate като няма нужда от рестарт за да влязат промените в сила
-има random колор на всяко рефрешване
-има cvar за променяне на ефекта който може да бъде 0, 1 или 2
-има cvar за променяне на Y позицията ( само на "y" защото само това ми трябваше )
чудя се обаче в "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
Код за потвърждение: Избери целия код
get_pcvar_num
str_to_num
Какво неразбра под това:OciXCrom™ написа: При положение, че ползваш стойност при return когато правиш проверките във функцията, компилаторът ще ти изкара грешка ако не сложиш return със стойност в края на функцията. При направа на команди е правилно да се слага PLUGIN_HANDLED в края.
Каква е целта на тези команди?! Нали си направил кварове - за какво ти са команди за тяхната промяна при положение, че самият AMXX си има команда за проверка и промяна на кварове - amx_cvar?!
Ако не си видял (а съм сигурен че си видял) последния код е със сет_таск и е абсолютно същия като твоя самоче има мн. важни екстри -> настройката на кординати, ефект, refresh time и random color.OciXCrom™ написа:Хората, които си правят съобщението според примерите в първото мнение, сигурно няма да тръгнат да го правят по друг начин.
Първо тук не си прав и второ мисля че няма нужда да обесняваме защо се ползва # преди include.OciXCrom™ написа: Дай тогава да обясним и защо се ползва # преди include.
Пак ти казвам -> "Ако не си видял (а съм сигурен че си видял) последния код е със сет_таск и е абсолютно същия като твоя самоче има мн. важни екстри -> настройката на кординати, ефект, refresh time и random color."OciXCrom™ написа: Повтарящият се task мисля, че е нещо елементарно и хората, които тепърва се учат, ще си знаят, че това е начинът.
ми тъпо са го измислили, трябваше да е int защото е по-близко до акъла. ако го бяха писали no-steam-ери нямаше да е такаOciXCrom™ написа: Плъгинът не се компилира защото няма такова нещо "get_pcvar_int". Функцията е "get_pcvar_num". Същото се отнася и за другата.
мерси за това Къде другаде да слагам PLUGIN_HANDLED или PLUGIN_CONTINUE ? Аз питах веднъж в този форум и никой не ми отговори.OciXCrom™ написа: При положение, че ползваш стойност при return когато правиш проверките във функцията, компилаторът ще ти изкара грешка ако не сложиш return със стойност в края на функцията. При направа на команди е правилно да се слага PLUGIN_HANDLED в края.
Мерси много и за това, не го знаех [;OciXCrom™ написа: Каква е целта на тези команди?! Нали си направил кварове - за какво ти са команди за тяхната промяна при положение, че самият AMXX си има команда за проверка и промяна на кварове - amx_cvar?!