Понравился плагин, выложенный на форуме тут ==> Вы должны зарегистрироваться, чтобы видеть ссылки. но есть один минус, он показывает и через текстуры.
Скиньте, пожалуйста, исправленный вариант плагина, который НЕ показывает через текстуры
Спасибо
- Код: Выделить всё
#include <amxmodx>
#include <dhudmessage>
#pragma semicolon 1
new bool:is_fk,bool:damager_on[33],bool:damager_type[33],bool:damager_size[33],bool:informer_on[33],bool:pvictim_on[33];
new g_1,g_2, dmg_color_type[33],dmg[33][33];
public plugin_init()
{
register_plugin("Damager_informer","1.2","Svistelki-perdelki ot iPlague");
register_clcmd("say /dmg","dmg_menu",_,"Открыть меню настроек");
register_clcmd("say dmg","dmg_menu",_,"Открыть меню настроек");
register_clcmd("dmg","dmg_menu",_,"Открыть меню настроек");
register_event( "DeathMsg", "EVENT_DeathMsg", "a");
register_event( "Damage", "EVENT_Damage", "b", "2!0", "3=0", "4!0" );
register_event( "HLTV", "EVENT_NewRound", "a", "1=0","2=0");
register_dictionary("damager.txt");
g_1 = CreateHudSyncObj();
g_2 = CreateHudSyncObj();
}
public EVENT_NewRound() is_fk=true;
public client_putinserver(id)
{
arrayset(dmg[id],0,33);
damager_on[id]=true;
damager_type[id]=false;
damager_size[id]=true;
informer_on[id]=false;
dmg_color_type[id]=0;
pvictim_on[id]=true;
}
public dmg_menu(id) //настроечки все любят настроечки
{
new szMenuMulti[256],szColour[64];
formatex( szColour, 63, "COLOUR_%d", dmg_color_type[id] );
new menu = menu_create("Damager settings","menu_damager");
formatex(szMenuMulti,255,"%L",id,damager_on[id] ? "MSG2" : "MSG2A");
menu_additem(menu,szMenuMulti,"1",0);
menu_additem(menu,damager_type[id] ? "Накопительный урон" : "Обычный урон","2",0);
menu_additem(menu,damager_size[id] ? "Стандартные цифры" : "Большие цифры","3",0);
menu_additem(menu,informer_on[id] ? "\yВыключить информер" : "\rВключить информер","4",0);
formatex(szMenuMulti,255,"%L %L",id,"MSG1",id,szColour);
menu_additem(menu,szMenuMulti,"5",0);
menu_additem(menu,pvictim_on[id] ? "\yВыключить входящий урон" : "\rВключить входящий урон","6",0);
menu_setprop(menu,MPROP_EXIT,"Выход");
menu_display(id,menu,0);
}
public menu_damager(id,menu,item)
{
if (item==MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new s_Data[6], s_Name[64], i_Access, i_Callback;
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback);
new i_Key = str_to_num(s_Data);
switch(i_Key)
{
case 1:
{
if(damager_on[id]) damager_on[id]=false;
else damager_on[id]=true;
}
case 2:
{
if(damager_type[id]) damager_type[id]=false;
else damager_type[id]=true;
}
case 3:
{
if(damager_size[id]) damager_size[id]=false;
else damager_size[id]=true;
}
case 4:
{
if(informer_on[id]) informer_on[id]=false;
else informer_on[id]=true;
}
case 5:
{
if(dmg_color_type[id] != 8) dmg_color_type[id]++;
else dmg_color_type[id]=0;
}
case 6:
{
if(pvictim_on[id]) pvictim_on[id]=false;
else pvictim_on[id]=true;
}
}
dmg_menu(id);
return PLUGIN_HANDLED;
}
public resdmg(parm[],task_id) // обнуляем урон через 3.5 сек после прекращения стрельбы
{
new pAttacker = parm[ 0 ];
new pVictim = parm[ 1 ];
dmg[pAttacker][pVictim]=0;
}
public EVENT_DeathMsg()
{
if(!informer_on[read_data(1)])return;
if(!is_fk) return;
if(read_data(1) == read_data(2)) return;
if(!is_user_connected(read_data(1)))return;
if(!is_user_connected(read_data(2)))return;
new hudmsg[128], vname[32], aname[32], R, G, B;
new iAt = read_data(1);
new iVic = read_data(2);
new iHS = read_data(3);
new Float:r_x, Float:r_y;
get_user_name(iVic,vname,31);
get_user_name(iAt,aname,31);
R = random_num(0, 255 ), G = random_num(0, 255 ), B = random_num(0, 255 );
r_x = random_float(0.1,0.7), r_y = random_float(0.1,0.25);
switch(random_num(1,8))
{
case 1: formatex(hudmsg,charsmax(hudmsg),"FIRSTBLOOD! %s умер первым!",vname );
case 2: formatex(hudmsg,charsmax(hudmsg),"ПЕРВАЯ КРОВЬ! %s убит!",vname );
case 3: formatex(hudmsg,charsmax(hudmsg),"%s отличился и умер первым!",vname );
case 4: formatex(hudmsg,charsmax(hudmsg),"%s первая жертва!",vname );
case 5: formatex(hudmsg,charsmax(hudmsg),"%s is DEAD!",vname );
case 6: formatex(hudmsg,charsmax(hudmsg),"%s убил %s!",aname,vname );
case 7: formatex(hudmsg,charsmax(hudmsg),"%s FIRSTKILL!",aname);
case 8: formatex(hudmsg,charsmax(hudmsg),"%s пролил первую кровь!",aname);
}
set_dhudmessage(R, G, B, r_x, r_y, 0, 0.0, 6.0, 0.0, 2.0 );
show_dhudmessage( 0, iHS ? "HEADSHOT! %s" : "%s", hudmsg);
is_fk = false;
}
public EVENT_Damage(const pVictim)
{
static pAttacker, iDamage, iWpn, iPart;
pAttacker = get_user_attacker(pVictim, iWpn, iPart), iDamage = read_data(2);
if(is_user_connected(pAttacker) && pAttacker != pVictim && damager_on[pAttacker])
{
if(iPart == HIT_HEAD )
{
set_dhudmessage(0,206,209, 0.38, 0.5, 0, 0.0, 1.0, 0.1, 0.2 );
show_dhudmessage( pAttacker, "HEADSHOT");
}
static R,G,B;
switch(dmg_color_type[pAttacker])
{
case 0:R=0,G=0,B=240;
case 1:R=0,G=240,B=240;
case 2:R=255,G=255,B=0;
case 3:R=255,G=0,B=0;
case 4:R=255,G=255,B=255;
case 5:R=208,G=32,B=144;
case 6:R=0,G=255,B=0;
case 7:R=(random_num(0,255)),G=(random_num(0,255)),B=(random_num(0,255));
case 8:R=244,G=222,B=204;
}
switch(damager_type[pAttacker])
{
case 1:
{
dmg[ pAttacker ][pVictim] += iDamage; //суммируем предыдущий урон с нанесённым.
switch(damager_size[pAttacker])
{
case 0:
{
set_dhudmessage(R, G, B, 0.55, 0.5, 0, 0.0, 0.5, 0.0, 0.1);
show_dhudmessage( pAttacker, "%d", dmg[pAttacker][pVictim]);
switch(pvictim_on[pVictim]){
case 1: show_dhudmessage( pVictim, "%d", dmg[pAttacker][pVictim]);
}
}
case 1:
{
set_hudmessage(R, G, B, _, 0.55, _, _, 1.0, _, 0.0, -1);
ShowSyncHudMsg( pAttacker, g_1, "%d", dmg[pAttacker][pVictim]); //выводим нанесённый урон.
switch(pvictim_on[pVictim]) {
case 1: ShowSyncHudMsg( pVictim, g_2, "%d", dmg[pAttacker][pVictim]);
}
}
}
new parm[2];
parm[0]=pAttacker;
parm[1]=pVictim;
if(task_exists(100500 + pAttacker + pVictim))remove_task(100500 + pAttacker + pVictim);
set_task(3.5,"resdmg", 100500 + pAttacker + pVictim, parm, sizeof(parm));
}
case 0:
{
switch(damager_size[pAttacker])
{
case 0:
{
set_dhudmessage(R, G, B, 0.45, 0.5, 0, 0.0, 0.5, 0.0, 0.1);
show_dhudmessage( pAttacker, "%d", iDamage);
switch(pvictim_on[pVictim])
{
case 1: show_dhudmessage( pVictim, "%d", iDamage);
}
}
case 1:
{
set_hudmessage(R, G, B, _, 0.55, _, _, 1.0, _, 0.0, -1);
ShowSyncHudMsg( pAttacker, g_1, "%d", iDamage); //выводим нанесённый урон.
switch(pvictim_on[pVictim])
{
case 1: ShowSyncHudMsg( pVictim, g_2, "%d", iDamage);
}
}
}
}
}
}
}