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

плагин сохранения глушителя csdm

Поиск плагинов для AMX Mod X.

Модератор: Leonidddd

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

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

плагин сохранения глушителя csdm

Сообщение TRISsys » 21 июл 2020, 04:27

ну собственно сабж .. появился .. надел глушитель умер , появился а глушитель не надет .. как называется плагин который запомнит когда надет глушитель а когда нет? csdm :-)
Аватара пользователя
TRISsys
 
Сообщения: 12
Зарегистрирован: 18 фев 2016, 14:22
Откуда: СПб
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: плагин сохранения глушителя csdm

Сообщение MayroN » 21 июл 2020, 22:42

TRISsys, Я понял о чём ты - если речь идёт не о плагине Balopan'a ( ибо там уже это сделано ),а о выборе меню всех оружий с респавном,который ставят после ночи на пабликах,то попробуй Код от Vaqtincha
Также Код запоминает famas/glock - стрельбу по 3 патрона
P.S. Очень странно,что "там" до сей поры и не сделали...
Код: Выделить всё
// Copyright © 2016 Vaqtincha

//============================ CONFIG START ===========================//
// #define ONLY_GIVEN            // переключает на ваш режим только при покупке. Если закомментировано, то переключает и при поднятии.
// #define NOTIFICATION         // Уведомлять о переключении (только для famas/glock)
//============================= CONFIG END ============================//

#define VERSION "0.0.4"

// offsets
const m_iId = 43
const m_pPlayer 
= 41
const m_fWeaponState 
= 74
// linux extraoffset
const XO_WEAPON = 4

const PDATA_SAFE 
= 2


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

#define MAX_PLAYERS            32

#define IsOnGround(%1)                 (pev(pev(%1, pev_owner), pev_flags) & FL_ONGROUND)
#define IsPlayer(%1)                (1 <= (%1) <= g_iMaxPlayers)
#define get_weapon_owner(%1)        get_pdata_cbase(%1, m_pPlayer, XO_WEAPON)
#define get_weapon_state(%1)        any:get_pdata_int(%1, m_fWeaponState, XO_WEAPON)
#define set_weapon_state(%1,%2)        set_pdata_int(%1, m_fWeaponState, any:%2, XO_WEAPON)

// #define get_weapon_id(%1)            get_pdata_int(%1, m_iId, XO_WEAPON)
stock get_weapon_id(pWeapon) {                                                     // safe
    new iId = get_pdata_int(pWeapon, m_iId, XO_WEAPON)
    return (CSW_P228 <= iId <= CSW_P90) ? iId : 0
}

enum WeaponState
{
    WPNSTATE_NULL =             0,
    WPNSTATE_USP_SILENCED        = (1<<0),
    WPNSTATE_GLOCK18_BURST_MODE    = (1<<1),
    WPNSTATE_M4A1_SILENCED        = (1<<2),
    // WPNSTATE_ELITE_LEFT            = (1<<3),
    WPNSTATE_FAMAS_BURST_MODE    = (1<<4),
    // WPNSTATE_SHIELD_DRAWN        = (1<<5)
}

new g_iMaxPlayers
new WeaponState
:g_bWeaponState[MAX_PLAYERS +1][CSW_P90 + 1]


public plugin_init()
{
    register_plugin("WeaponState Remember", VERSION, "Vaqtincha")

    static const szWeaponList[][] = {
        "weapon_m4a1", "weapon_usp",
        "weapon_famas", "weapon_glock18"
    }

    for(new i = 0; i < sizeof(szWeaponList); ++i)
    {
        RegisterHam(Ham_Item_AddToPlayer, szWeaponList[i], "Item_AddToPlayer_Post", .Post = true)
        RegisterHam(Ham_Weapon_SecondaryAttack, szWeaponList[i], "Weapon_SecondaryAttack_Post", .Post = true)
    }

    g_iMaxPlayers = get_maxplayers()
}

public client_putinserver(id)
{
    g_bWeaponState[id][CSW_M4A1]
        = g_bWeaponState[id][CSW_USP]
        = g_bWeaponState[id][CSW_FAMAS] 
        
= g_bWeaponState[id][CSW_GLOCK18] 
        
= WPNSTATE_NULL;
}

public Weapon_SecondaryAttack_Post(pWeapon)
{
    if(pWeapon <= 0)
        return HAM_IGNORED

    new id 
= get_weapon_owner(pWeapon)
    if(IsPlayer(id))
    {
        // client_print(id, print_center, "current %i my %i", get_weapon_state(pWeapon), g_bWeaponState[id][get_weapon_id(wEnt)])
        g_bWeaponState[id][get_weapon_id(pWeapon)] = get_weapon_state(pWeapon)
    }

    return HAM_IGNORED
}

public Item_AddToPlayer_Post(pWeapon, id)
{
    if(pWeapon <= 0 || pev_valid(pWeapon) != PDATA_SAFE /* || !is_user_alive(id) */)
        return HAM_IGNORED

#if defined ONLY_GIVEN
    if(IsOnGround(pWeapon))
        return HAM_IGNORED
#endif

    new iId = get_weapon_id(pWeapon)
    set_weapon_state(pWeapon, g_bWeaponState[id][iId])

#if defined NOTIFICATION
    if((g_bWeaponState[id][iId] & WPNSTATE_FAMAS_BURST_MODE) || (g_bWeaponState[id][iId] & WPNSTATE_GLOCK18_BURST_MODE))
    {
        client_print(id, print_center, "#Cstrike_TitlesTXT_Switch_To_BurstFire")
    }
#endif
    return HAM_IGNORED
}
МультиМод CS
Аватара пользователя
MayroN
 
Сообщения: 673
Зарегистрирован: 10 окт 2010, 18:23
Откуда: Украина, г. Белая Церковь
Благодарил (а): 149 раз.
Поблагодарили: 86 раз.
Опыт программирования: Около года
Языки программирования: На которых говорю...


Вернуться в Поиск плагинов

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4