Русское сообщество по скриптингу

damager показывает урон через текстуры

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

damager показывает урон через текстуры

Сообщение MARSHO » 06 июл 2016, 01:11

Здравствуйте!
Понравился плагин, выложенный на форуме тут ==> Вы должны зарегистрироваться, чтобы видеть ссылки. но есть один минус, он показывает и через текстуры.
Скиньте, пожалуйста, исправленный вариант плагина, который НЕ показывает через текстуры
Спасибо :)
Код: Выделить всё
#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);
                        }
                    }
                }
            }
        }
    }        
}
Аватара пользователя
MARSHO
 
Сообщения: 59
Зарегистрирован: 09 фев 2016, 15:39
Благодарил (а): 12 раз.
Поблагодарили: 1 раз.

Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 4