Grenade Mode

Grenade Mode 0.2

Нет прав для скачивания
Сообщения
75
Реакции
82
Помог
6 раз(а)
Flymic24 добавил(а) новый ресурс:

Grenade Mode - Режимы гранат

Всем известен популярный Nade Modes (Nomexous) v11.2 - AlliedModders (alliedmods.net)
"Нормальный" - обычная граната
"Столкновение" - активируется при соприкосновении с чем/кем либо
"Мина" - активируется при соприкосновении с игроком, опционально может маскироваться под другое оружие
"Сенсорная" - активируется в определенном радиусе
"Взрыв на Е" - активируется когда бросивший зажмет Клавишу USE
"Датчик движения" -...
Узнать больше об этом ресурсе...
 
Сообщения
365
Реакции
9
Помог
5 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Этот парень заслужил место в раю, искал такой плагин, молодец!😉
 
Сообщения
315
Реакции
104
Помог
2 раз(а)
Flymic24, плагин классный, поставил на тест )
Нашёл только 1 нюанс: в режиме "Мина" гранаты перед падением на землю работают в режиме "Столкновение". Не очень удобно, тк если перед тобой в этот момент пробегают игроки и граната взрывается/слепит в руках или перед тобой, коснувшись игрока.
 
Сообщения
657
Реакции
562
Предупреждения
8
Помог
9 раз(а)
Ненормативная лексика, завуалированный мат
Хотябы в кридитах оставил откуда спиздил идею мины https://dev-cs.ru/resources/42/ даже дефайн #define FAKE_MODEL не менял. За то на реапи!

С идеями совсем туго у новых скриптеров?
 
Сообщения
57
Реакции
10
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Поставил себе, посмотрим как зайдет 👍
 
Сообщения
552
Реакции
49
Предупреждения
2
Помог
4 раз(а)
и в чем смысл) ах да, точно, если реапи в заголовке значит 100% лучше чем то что не на реапи, мг, ок.
 
Сообщения
336
Реакции
414
Помог
7 раз(а)
Artemich, не смущает тот факт, что плагин был сделан в 2012 году и с того момента сильно изменился амхх? И плагин не можно, а нужно было переписать использую новые возможности, что бы улучшить и в целом оптимизировать работу плагина.
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
не понел а где 10к строк для того же самого как в оригинале
8 Май 2023
Хотябы в кридитах оставил откуда спиздил идею мины https://dev-cs.ru/resources/42/ даже дефайн #define FAKE_MODEL не менял. За то на реапи!

С идеями совсем туго у новых скриптеров?
Ты хотя бы в кредитсах оставил откуда идею украл.
 
Сообщения
3,023
Реакции
1,731
Помог
79 раз(а)
""Мина" - активируется при соприкосновении с игроком, опционально может маскироваться под другое оружие"
я так понял, это действительно идея Vaqtincha, так что стоит его упомянуть, так как в плагине на аленях такого функционала нет.
 

ifx

Сообщения
331
Реакции
153
Помог
4 раз(а)
в оригинальном плагине был еще режим мин - лазер, когда гранату кидаешь на стенку например и она лазером очерчивает по вертикали или горизонтали полоску - при пересечении которой мина взрывалась - оч популярно было на зомби-серверах

большая просьба к автору допилить и этот режим гранат
и отдельная благодарность за сам плагин и оптимизацию под reapi
 

Вложения

Последнее редактирование:
Сообщения
182
Реакции
9
Еще был режим самонаведение в оригинале по-моему.
Кстати еще в логах ошибка флудит)

Ошибка плагина 10: native error (native "get_member")
L 05/12/2023 - 03:52:32: [AMXX] [0] amx_granade_mode.sma::HamHook_ThinkGrenade (line 141)
 
Сообщения
17
Реакции
-1
Не хватает выдача по флагу. А так то идея топ!
 
  • Не нравится
Реакции: Ruby
Сообщения
17
Реакции
-1
Есть баг когда бросаеш гранату режим мина она взриваеться перед тобой сразу.
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Хотябы в кридитах оставил откуда украл идею мины https://dev-cs.ru/resources/42/ даже дефайн #define FAKE_MODEL не менял. За то на реапи!



С идеями совсем туго у новых скриптеров?
это действительно идея @Vaqtincha, так что стоит его упомянуть
upload_2023_06_01_20_45_54_498.jpg
 
Последнее редактирование:
Сообщения
75
Реакции
82
Помог
6 раз(а)
SNauPeR, MENTOP,
Код:
#include < amxmodx >
#include < fakemeta >
#include < hamsandwich >
#include < reapi >
#include < xs >

#define FAKE_MODEL                //    Менять ли модели грнаты в режиме мины
#define REMOVE_NOT_CONNECT        //    Удалять или активировать при выходе/смерти владельца гранаты
#define RADIUS_SENSOR        100.0    //    Радиус срабатывания сенсорной мины
#define MOTION_SPEED        150.0    //    Порог скорости срабатывания датчика движения

#if defined FAKE_MODEL
new const szFakeModels[][] = {    // здесь можно настроить оружие, под которое будет замаскирована мина
    "models/w_scout.mdl",    "models/w_hegrenade.mdl",    "models/w_usp.mdl",
    "models/w_awp.mdl",    "models/w_m4a1.mdl",    "models/w_deagle.mdl",    "models/w_ak47.mdl"
};
#endif

enum _:eExpType    {
    Norm,    Touch,    Mine, Sensor, InpulseE, Motion
};

new szExpName[eExpType][] = {
    "Нормальный", "Столкновение", "Мина", "Сенсорная", "Взрыв на Е", "Датчик движения"
};

new g_iSensorSpr;

new const GrenadeClassNames[][] = {
    "weapon_flashbang", "weapon_hegrenade", "weapon_smokegrenade"
};

public plugin_init()
{
    register_plugin
    (
        "[AMXX] Grenade Mode",
        "0.1",
        "Flymic24"
    );
   
    for(new i; i < sizeof GrenadeClassNames; i++) {
        RegisterHam(Ham_Item_Deploy,    GrenadeClassNames[i],    "HamHook_Item_Deploy", .Post = true);
        RegisterHam(Ham_Weapon_SecondaryAttack,    GrenadeClassNames[i],     "HamHook_Item_SecondaryAttack", .Post = false);
        RegisterHam(Ham_Spawn,            GrenadeClassNames[i],    "HamHook_Item_Spawn", .Post = false);
    }
   
    RegisterHookChain(RG_CBasePlayer_ThrowGrenade, "CBasePlayer_ThrowGrenade", .post = true);
   
    RegisterHam(Ham_Think, "grenade", "HamHook_ThinkGrenade", .Post = false);
    RegisterHam(Ham_Touch, "grenade", "HamHook_TouchGrenade", .Post = false);
}

public plugin_precache()    {
    g_iSensorSpr = precache_model("sprites/shockwave.spr");
}

public HamHook_Item_Deploy(const pItem)    {
    new iPlayer = get_member(pItem, m_pPlayer);
    new iType = get_entvar(pItem, var_weapons);  
   
    client_print(iPlayer, print_center, "Режим: %s", szExpName[iType]);
}

public HamHook_Item_SecondaryAttack(const pItem)    {
    if (get_member(pItem, m_Weapon_flNextSecondaryAttack) > 0.0)
        return HAM_IGNORED;
   
    set_member(pItem, m_Weapon_flNextSecondaryAttack, 0.3);
   
    new iPlayer = get_member(pItem, m_pPlayer);
    new iType = get_entvar(pItem, var_weapons);
   
    if (++iType >= eExpType)    iType = Norm;
    set_entvar(pItem, var_weapons, iType);
   
    client_print(iPlayer, print_center, "Режим: %s", szExpName[iType]);
   
    return HAM_IGNORED;
}

public CBasePlayer_ThrowGrenade(const pPlayer, const pWeapon, Float:vecSrc[3], Float:vecThrow[3], Float:time, const usEvent)    {
    new pGrenade = GetHookChainReturn(ATYPE_INTEGER);
   
    if (is_nullent(pGrenade))
        return HC_CONTINUE;
   
    new iType = get_entvar(pWeapon, var_weapons);
    set_entvar(pGrenade, var_weapons, iType);
   
    new Float:fGameTime = get_gametime();
   
    switch(iType)    {
        case Mine:    {
            set_entvar(pGrenade, var_solid, SOLID_TRIGGER);
            set_entvar(pGrenade, var_dmgtime, fGameTime + 9999.0);
           
            new Float:flAngles[3];    flAngles[1] = random_float(-360.0, 360.0);
            set_entvar(pGrenade, var_angles, flAngles);
        #if defined FAKE_MODEL  
            engfunc(EngFunc_SetModel, pGrenade, szFakeModels[random_num(0, charsmax(szFakeModels))]);
        #endif
        }
        case InpulseE, Sensor, Motion:    {
            set_entvar(pGrenade, var_dmgtime, fGameTime + 9999.0);
            set_entvar(pGrenade, var_teleport_time, fGameTime + 1.0);
        }
    }
   
    return HC_CONTINUE;
}

public HamHook_Item_Spawn(const pItem)    {
    set_entvar(pItem, var_weapons, Norm);
}

public HamHook_TouchGrenade(const iEnt, const iToucher)    {
    new iType = get_entvar(iEnt, var_weapons);
    new iOwner = get_entvar(iEnt, var_owner);
   
    switch(iType)    {
        case Touch:    {
            return ActiveGrenade(iEnt);
        }
        case Mine:    {
            if (!is_user_alive(iToucher) || !is_user_alive(iOwner))
                return HAM_IGNORED;
           
            if (get_entvar(iEnt, var_flags) & FL_ONGROUND && get_member(iToucher, m_iTeam) != get_member(iOwner, m_iTeam))
                return ActiveGrenade(iEnt);
        }
    }
   
    return HAM_IGNORED;
}

public HamHook_ThinkGrenade(iEnt)    {
    new Float:fGameTime = get_gametime();
    new iType = get_entvar(iEnt, var_weapons);
    new iOwner = get_entvar(iEnt, var_owner);
   
    if(!is_user_alive(iOwner))    {
#if defined REMOVE_NOT_CONNECT
        set_entvar(iEnt, var_flags, get_entvar(iEnt, var_flags) | FL_KILLME);
        return HAM_IGNORED;
#else
        return ActiveGrenade(iEnt);
#endif
    }
   
    if (get_member(iEnt, m_Grenade_bDetonated))
        return HAM_IGNORED;
   
    switch(iType)    {
        case InpulseE:    {
            if (get_entvar(iOwner, var_button) & IN_USE)    {
                return ActiveGrenade(iEnt);
            }
        }
        case Sensor, Motion:    {
            if (get_entvar(iEnt, var_flags) & FL_ONGROUND)    {
                new iOwnerTeam = get_member(iOwner, m_iTeam);
                new _Victim = NULLENT;
                new Float:fVecOrigin[3];    get_entvar(iEnt, var_origin, fVecOrigin);
                new Float:fVecVelocity[3];
                while ((_Victim = engfunc(EngFunc_FindEntityInSphere, _Victim, fVecOrigin, RADIUS_SENSOR)) != 0)    {
                    if(!is_user_alive(_Victim))    continue;
                    if (get_member(_Victim, m_iTeam) == iOwnerTeam)    continue;
                   
                    if (iType == Motion)    {
                        get_entvar(_Victim, var_velocity, fVecVelocity);
                        if (xs_vec_len(fVecVelocity) < MOTION_SPEED)    continue;
                    }
                   
                    return ActiveGrenade(iEnt);
                }
                if(get_entvar(iEnt, var_teleport_time) < fGameTime)    {
                    MSG_TE_BEAMCYLINDER(fVecOrigin, iType != Motion ? {255, 100, 255} : {255, 0, 0});
                   
                    set_entvar(iEnt, var_teleport_time, fGameTime + 1.0);
                }
            }
        }
    }
   
    return HAM_IGNORED;
}

MSG_TE_BEAMCYLINDER(Float: fVecOrigin[3], RGB[3])    {
    message_begin_f(MSG_BROADCAST, SVC_TEMPENTITY, fVecOrigin, 0);
    write_byte(TE_BEAMCYLINDER);
    write_coord_f(fVecOrigin[0]);
    write_coord_f(fVecOrigin[1]);
    write_coord_f(fVecOrigin[2]);
    write_coord_f(fVecOrigin[0] + 30.0);
    write_coord_f(fVecOrigin[1]);
    write_coord_f(fVecOrigin[2] + RADIUS_SENSOR);
    write_short(g_iSensorSpr);
    write_byte(0);
    write_byte(1);
    write_byte(6);
    write_byte(1);//hight
    write_byte(1);
    write_byte(RGB[0]);//red
    write_byte(RGB[1]);//green
    write_byte(RGB[2]);//blue
    write_byte(255);
    write_byte(0);
    message_end();
}

ActiveGrenade(iEnt)    {
    if(get_member(iEnt, m_Grenade_bIsC4))    {
        set_member(iEnt, m_Grenade_flC4Blow, 0.0);
    }
    else    {
        if (GetGrenadeType(iEnt) == WEAPON_SMOKEGRENADE)
            set_entvar(iEnt, var_flags, get_entvar(iEnt, var_flags) | FL_ONGROUND);
       
        set_entvar(iEnt, var_dmgtime, 0.0);
    }
   
    set_member(iEnt, m_Grenade_bDetonated, true);
   
    dllfunc(DLLFunc_Think, iEnt);
   
    return HAM_SUPERCEDE;
}
В обновлении будут доступны недостающие режимы
 
  • Super
Реакции: ifx
Сообщения
315
Реакции
104
Помог
2 раз(а)
Flymic24,
После установки этого плагина (который первоначально залит) появляется БАГ с бомбой. Часто бывает такое, что после её установки - она просто исчезает после установки и КТ побеждают или раунд длится дальше
 
Сообщения
657
Реакции
562
Предупреждения
8
Помог
9 раз(а)
SergeyShorokhov, ты не украл код а целиком присвоил авторство моего ксдм. Потом написал какой-то шлак. У тебя нет идей и что-то своего. Никакой пользы от тебя нет.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу