26

Re: нельзя убить в голову!

я себе на сервер тоже подобную фишку прикручивал.
не много переписал код под ваши запросы (no-ucp не попадают в голову), может кому то пригодится =)

http://rghost.ru/37925961

1) ни каких флагов игрокам раздавать не нужно, плагин сам определяет ucp игрок или нет
2) no ucp не попадают только в игроков с ucp, а друг друга пусть мочат себе на радость)
3) значение квара: 1 - включено, 0 - выключено. Изменения вступают в силу после смены раунда.
4) можно за-комментировать 44-ю строчку (там где if ( get_pdata_int(Victim, OFFSE...) тогда NO UCP будут не только в голову не попадать, но и вообще убить не смогут. У меня лично так.

Единственное что, конкретно этот код на сервере я не проверял, но должен работать)) если кто то проверит - отпишитесь ;)

27 Отредактировано fiero (2012-05-06 02:37:47)

Re: нельзя убить в голову!

Tnav пишет:

я себе на сервер тоже подобную фишку прикручивал.
не много переписал код под ваши запросы (no-ucp не попадают в голову), может кому то пригодится =)

Единственное что, конкретно этот код на сервере я не проверял, но должен работать)) если кто то проверит - отпишитесь ;)

Не компелится

28

Re: нельзя убить в голову!

fiero пишет:

Не компелится

C какой ошибкой хоть? Т.к. у меня компильнулось нормально.

29

Re: нельзя убить в голову!

Все отлично компилируется! http://rghost.ru/37941936

30

Re: нельзя убить в голову!

допилить бы что бы и в голову и с ножа вообще не могли убивать и еще бы неплохо было бы что бы наносили урон в 2 раза меньше, а флаг А выдается, что бы другие игроки через вотебан не банили игроков с античитом, а админы так и так могут забанить и тех и других.

http://vipeburg.telenet.ru/
https://vk.com/vipeburgcs

31 Отредактировано Tnav (2012-05-06 17:58:19)

Re: нельзя убить в голову!

coolman пишет:

допилить бы что бы и в голову и с ножа вообще не могли убивать

public hook_TakeDamage(Victim, inflictor, Attacker, Float:damage, damagebits) {
    if (!TempCvar)
        return HAM_IGNORED

    if ( Attacker == inflictor && GetPlayerBits(g_bUCP, Attacker) && !GetPlayerBits(g_bUCP, Victim) )
        if (   get_pdata_int(Victim, OFFSET_LAST_HIT_GROUP, EXTRAOFFSET_PL_LINUX) == HIT_HEAD      // Голова
        ||     get_user_weapon(Attacker) == 29 )           // Нож 
                return HAM_SUPERCEDE

    return HAM_HANDLED
}
coolman пишет:

и еще бы неплохо было бы что бы наносили урон в 2 раза меньше

return HAM_SUPERCEDE заменить на SetHamParamFloat (4, damage/2.0)


coolman пишет:

а флаг А выдается, что бы другие игроки через вотебан не банили игроков с античитом

кому что, но логичней было бы плагин вотебана поправить ))

32

Re: нельзя убить в голову!

Tnav, дай свои контакты, есть идея отличная!

33

Re: нельзя убить в голову!

вновь актуально, но мой плагин перестал работать на amxx 1.8.3?есть у кого рабочий плагин который бы определял игрока с юсп и его нельзя было убить с ножа и попаданием в голову?

http://vipeburg.telenet.ru/
https://vk.com/vipeburgcs

34 Отредактировано coolman (2013-11-01 15:37:54)

Re: нельзя убить в голову!

вот не рабочий плагин:

//==============================================================//
//                        *******************                   //
//                        *    Cvar  Values  *                  //
//                        *******************                   //
//    hs_mode 1 Blocks bots from shooting humans in the head   //
//    hs_mode 2 Blocks all headshots (Humans and bots)         //
//    hs_mode 3 Headshots Only (blocks all other hitzones)     //
//    hs_mode 4 Redirects all hitzones to the head             //
//==============================================================//    

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

#define IsPlayer(%1) (1<= %1 <= g_iMaxPlayers)
#define FLAG_A ADMIN_IMMUNITY
new g_iMode, g_iHitChest, g_iKnife, g_iMaxPlayers;

//CZ Bot support
new bool: g_BotsRegistered;
new bool:Is_Czero;

public plugin_init()
{
    register_plugin("Headshot Modes", "1.5", "SavSin");
    RegisterHam(Ham_TraceAttack, "player", "fwdHamTraceAttack");
    RegisterHam(Ham_TraceAttack, "czbot", "fwdHamTraceAttack");
    
    g_iMode = register_cvar("hs_mode", "2");
    g_iHitChest = register_cvar("hs_chest", "0");
    g_iKnife = register_cvar("hs_knife", "1");
    g_iMaxPlayers = get_maxplayers();
    
    //Check if mod is CZ for cz bot support
    new mod_name[32];
    get_modname(mod_name, charsmax(mod_name));
    
    if(equal(mod_name, "czero"))
    {
        Is_Czero = true;
    }
}

//Register CZ bots with ham
public client_authorized(id)
{
    if(!g_BotsRegistered && Is_Czero && is_user_bot(id))
    {
        
        set_task(0.1, "register_bots", id); //Task to register bot Thanks to snow
    }
}

public register_bots(id)
{
    if(!g_BotsRegistered && is_user_connected(id))
    {
        RegisterHamFromEntity(Ham_TraceAttack, id, "fwdHamTraceAttack");
        g_BotsRegistered = true;
    }
}

public fwdHamTraceAttack(Vic, Att, Float:dmg, Float:dir[3], traceresult, dmgbits)
{    
    if(!IsPlayer(Att) || !IsPlayer(Vic) || Vic == Att)
        return HAM_IGNORED;
        
    new iMode = get_pcvar_num(g_iMode);
    
    if(!iMode)
        return HAM_IGNORED;
        
    new iHitChest = get_pcvar_num(g_iHitChest);
        
    if(get_pcvar_num(g_iKnife))
    {
        if( get_user_weapon( Att ) == CSW_KNIFE )
        return HAM_IGNORED;
    }
    
    switch(iMode)
    {
        case 1: // Blocks bots from shooting humans in the head
        {
            if(!is_user_bot(Vic) && is_user_bot(Att))
            {
                if(get_tr2(traceresult, TR_iHitgroup) == HIT_HEAD)
                {
                    if(iHitChest)
                    {
                        set_tr2(traceresult, TR_iHitgroup, HIT_CHEST)
                        return HAM_HANDLED
                    }
                    else
                    {
                        return HAM_SUPERCEDE
                    }
                }
            }
        }
        case 2: // Blocks all headshots (Humans and bots)
        {
 if (access(Att, ADMIN_IMMUNITY) || access(Att, ADMIN_LEVEL_G) || is_user_bot(Att))  //flag s = ADMIN_LEVEL_G
      {
        return HAM_IGNORED;
}
            if(get_tr2(traceresult, TR_iHitgroup) == HIT_HEAD)
            {
                if(iHitChest)
                {
                    set_tr2(traceresult, TR_iHitgroup, HIT_CHEST)
                    return HAM_HANDLED
                }
                else
                {
                    return HAM_SUPERCEDE
                }
            }
        }
        case 3: // Headshots Only (blocks all other hitzones) 
        {
            if(get_tr2(traceresult, TR_iHitgroup) != HIT_HEAD)
            {
                return HAM_SUPERCEDE
            }
        }
        case 4: // Always hit head
        {
            if(get_tr2(traceresult, TR_iHitgroup) != HIT_HEAD)
            {
                set_tr2(traceresult, TR_iHitgroup, HIT_HEAD)
                return HAM_HANDLED
            }
        }
    }
    return HAM_IGNORED;
}
http://vipeburg.telenet.ru/
https://vk.com/vipeburgcs

35

Re: нельзя убить в голову!

Найди рабочий плагин, а добавить проверку ucp - не проблема :)

36 Отредактировано coolman (2013-11-01 17:16:25)

Re: нельзя убить в голову!

Endi пишет:

Найди рабочий плагин, а добавить проверку ucp - не проблема :)

так это и был рабочий раньше, а сейчас нет, может проверку на админа не правильно сделал ))) поищу конечно, может чего найду.
добавлено только это:

 if (access(Att, ADMIN_IMMUNITY) || access(Att, ADMIN_LEVEL_G) || is_user_bot(Att))  //flag s = ADMIN_LEVEL_G
      {
        return HAM_IGNORED;
}

и так делал:

if(get_user_flags(id) & ADMIN_IMMUNITY)
{
return HAM_IGNORED;
}

и так:

if(get_user_flags(ADMIN_IMMUNITY))
{
return HAM_IGNORED;
}
http://vipeburg.telenet.ru/
https://vk.com/vipeburgcs

37

Re: нельзя убить в голову!

ясно, плагин в принципе не работает на amxx 1.8.3, а я голову себе сломал (((

http://vipeburg.telenet.ru/
https://vk.com/vipeburgcs

38 Отредактировано coolman (2014-01-23 16:39:21)

Re: нельзя убить в голову!

Tnav пишет:

я себе на сервер тоже подобную фишку прикручивал.
не много переписал код под ваши запросы (no-ucp не попадают в голову), может кому то пригодится =)

http://rghost.ru/37925961

1) ни каких флагов игрокам раздавать не нужно, плагин сам определяет ucp игрок или нет

перезалил бы

Endi пишет:

Найди рабочий плагин, а добавить проверку ucp - не проблема :)

возникла такая потребность не флаг выдавать, а именно проверять есть ли ucp
подскажите народ как реализовать можно, вот сюда:


public damager(victim, inflicator, attacker, Float:damage)
{
   
   
    if(!is_user_connected(attacker))
        return; 
   
    if (get_user_flags(attacker) & ADMIN_IMMUNITY)
        return;
   
вместо ADMIN_IMMUNITY ка кто бы проверку на ucp вставить
не канает:
if (get_user_flags(attacker) & ucp_id(id,AUTHID) == 0)
  return;

тоже не робит:
if (get_user_flags(Att) & ucp_id(Att,AUTHID) == 0)

http://vipeburg.telenet.ru/
https://vk.com/vipeburgcs

39 Отредактировано Tnav (2014-01-23 17:45:22)

Re: нельзя убить в голову!

if ( ucp_id(attacker, AUTHID) == 0 )
{
атакующий с античитом
}

40 Отредактировано coolman (2014-01-24 08:06:46)

Re: нельзя убить в голову!

Tnav пишет:

if ( ucp_id(attacker, AUTHID) == 0 )
{
атакующий с античитом
}


а если просто так:
    if ( ucp_id(attacker, AUTHID) == 0 )
        return;
.........
    if(victim == attacker || !victim)
        return;



правильно работать будет?

http://vipeburg.telenet.ru/
https://vk.com/vipeburgcs