Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Запоминание глушителя USP

, При каждом респауне [РЕШЕНО]
Статус пользователя $@NyA
сообщение 5.3.2018, 21:22
Сообщение #1


Иконка группы

Стаж: 18 лет

Сообщений: 987
Благодарностей: 529
Полезность: 1050

Помогите розобраться Запоминанием глушителя USP При каждом респауне.

Попробую подробно.
Имееться CSDM

В исходе строки
Код
#define SILENCED_M4A1    0
#define SILENCED_USP        1
new bool:g_Silenced[33][2]


Сюда же
Cкрытый текст
Код
public csdm_RemoveWeapon(owner, entity_id, boxed_id)
{
    new classname[32], weapon
    new team
    if (!pev_valid(entity_id))
        return PLUGIN_HANDLED

    pev(entity_id, pev_classname, classname, 31)
    weapon = get_weaponid(classname)

    if (weapon == CSW_M4A1)
    {
        g_Silenced[owner][SILENCED_M4A1] = cs_get_weapon_silen(entity_id) ? true : false
    } else if (weapon == CSW_USP) {
        g_Silenced[owner][SILENCED_USP] = cs_get_weapon_silen(entity_id) ? true : false
    }

    if ((owner) && (weapon))
    {
        team = get_user_team(owner)

        if ((IsRestricted[weapon]) && (UsedWpsT[weapon] > 0) && (team == _TEAM_T))
        {
            UsedWpsT[weapon]--
//            log_amx("[DEBUG] CSDM - restricted weapon %s removed. Currently there is %d such weapons on the map.", classname, UsedWpsT[weapon])
        }
        if ((IsRestricted[weapon]) && (UsedWpsCT[weapon] > 0) && (team == _TEAM_CT))
        {
            UsedWpsCT[weapon]--
//            log_amx("[DEBUG] CSDM - restricted weapon %s removed. Currently there is %d such weapons on the map.", classname, UsedWpsCT[weapon])
        }
    }

    return PLUGIN_CONTINUE
}


GiveUserFullWeapon(id, const wp[])
{
    /** First check to make sure the user does not have a weapon in this slot */
    new wpnid = get_weaponid(wp)
    new weapons[MAX_WEAPONS], num
    new name[24], weap
    new slot

    if (!is_user_connected(id)) return

    new team = get_user_team(id)

    if (wpnid == 0)
    {
        if (equal(wp, "weapon_shield"))
        {
            slot = SLOT_PRIMARY
            wpnid = -1
        }
    } else {
        slot = g_WeaponSlots[wpnid]
    }
    if ((slot == SLOT_SECONDARY || slot == SLOT_PRIMARY)
         && wpnid > 0)
    {
        get_user_weapons(id, weapons, num)
        for (new i=0; i<num; i++)
        {
            weap = weapons[i]
            if (weap == wpnid)
            {
                continue
            }
            if (g_WeaponSlots[weap] == slot)
            {
                if (slot == SLOT_SECONDARY && cs_get_user_shield(id))
                {
                    //temporary fix!
                    drop_with_shield(id, weap)
                } else {
                    get_weaponname(weap, name, 23)
                    csdm_force_drop(id, name)
                }
            }
        }
    } else if (slot == SLOT_PRIMARY && wpnid == -1 && cs_get_user_shield(id)) {
        return
    }
    
    if (slot == SLOT_PRIMARY && cs_get_user_shield(id) && wpnid > 0)
    {
        csdm_fwd_drop(id, -1, "weapon_shield")
    }
    
    new item_id = csdm_give_item(id, wp)
    if (item_id > 0)
    {
        if (wpnid == CSW_M4A1)
        {
            cs_set_weapon_silen(item_id, g_Silenced[id][SILENCED_M4A1], 1)
        } else if (wpnid == CSW_USP) {
            cs_set_weapon_silen(item_id, g_Silenced[id][SILENCED_USP], 1)
        }
    }

    if (wpnid > 0)
    {
        new bpammo = g_MaxBPAmmo[wpnid]
        if (bpammo)
        {
            cs_set_user_bpammo(id, wpnid, bpammo)
        }

        if (IsRestricted[wpnid])
        {
            if ((UsedWpsT[wpnid] < RestrictWps[wpnid]) && (team == _TEAM_T))
            {
                UsedWpsT[wpnid]++
            }
            if ((UsedWpsCT[wpnid] < RestrictWps[wpnid]) && (team == _TEAM_CT))
            {
                UsedWpsCT[wpnid]++
            }
        }
    }
}


Также имееться доп.плагин на запоминание 3-х кратной стрельбы из glock18 и famas ( на USP тут тоже есть )

Cкрытый текст
Код
// Copyright © 2016 Vaqtincha

/****************************************************
*    Support forum:
*        http://--.ru
*
*****************************************************/

//============================ CONFIG START ===========================//
#define ONLY_GIVEN
// #define NOTIFICATION    1    // 1 - famas only, >= 2 - glock & famas
//============================= CONFIG END ============================//

#define VERSION "0.0.1"

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

#define MAX_PLAYERS        32

#define IsOnGround(%1)                 pev(pev(%1, pev_owner), pev_flags) & FL_ONGROUND
#define IsPlayerAlive(%1)            (1 <= (%1) <= g_iMaxPlayers && is_user_alive(%1))
#define get_weapon_owner(%1)        get_pdata_cbase(%1, m_pPlayer, XO_WEAPON)
#define get_weapon_id(%1)            get_pdata_int(%1, m_iId, XO_WEAPON)
#define get_weapon_state(%1)        get_pdata_int(%1, m_fWeaponState, XO_WEAPON)
#define set_weapon_state(%1,%2)        set_pdata_int(%1, m_fWeaponState, %2, XO_WEAPON)


enum _:WEAPONSTATE_DATA
{
    STATE_M4A1,
    STATE_USP,
    STATE_FAMAS,
    STATE_GLOCK
}

enum ( <<=1 )
{
    USP_SILENCED = 1,
    GLOCK_BURST_MODE,
    M4A1_SILENCED,
    ELITE_LEFT,
    FAMAS_BURST_MODE,
    SHIELD_DRAWN
}

const PDATA_SAFE = 2
// offsets
const m_iId = 43
const m_pNext = 42
const m_pPlayer = 41
const m_fWeaponState = 74
const XO_WEAPON = 4

new g_iMaxPlayers
new bool:g_bWeaponState[MAX_PLAYERS+1][WEAPONSTATE_DATA]
new const g_szWeaponList[WEAPONSTATE_DATA][] = {
    "weapon_m4a1",
    "weapon_usp",
    "weapon_famas",
    "weapon_glock18"
}

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

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

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

    new id = get_weapon_owner(wEnt)
    if(id <= 0)
        return HAM_IGNORED

    switch(get_weapon_id(wEnt))
    {
        case CSW_M4A1: g_bWeaponState[id][STATE_M4A1] = get_weapon_state(wEnt) & M4A1_SILENCED ? true : false
        case CSW_USP: g_bWeaponState[id][STATE_USP] = get_weapon_state(wEnt) & USP_SILENCED ? true : false
        case CSW_FAMAS: g_bWeaponState[id][STATE_FAMAS] = get_weapon_state(wEnt) & FAMAS_BURST_MODE ? true : false
        case CSW_GLOCK18: g_bWeaponState[id][STATE_GLOCK] = get_weapon_state(wEnt) & GLOCK_BURST_MODE ? true : false
        default: return HAM_IGNORED
    }
    return HAM_IGNORED
}

public Item_AddToPlayer_Post(wEnt, id)
{
    if(wEnt <= 0 || pev_valid(wEnt) != PDATA_SAFE || !IsPlayerAlive(id))
        return HAM_IGNORED
    #if defined ONLY_GIVEN
    if(IsOnGround(wEnt))
        return HAM_IGNORED
    #endif
    new wState
    switch(get_weapon_id(wEnt))
    {
        case CSW_M4A1:{
            if(g_bWeaponState[id][STATE_M4A1])
                wState |= M4A1_SILENCED
            #if defined ONLY_GIVEN
            else return HAM_IGNORED
            #else
            else wState &= ~M4A1_SILENCED
            #endif
        }
        case CSW_USP:{
            if(g_bWeaponState[id][STATE_USP])
                wState |= USP_SILENCED
            #if defined ONLY_GIVEN
            else return HAM_IGNORED
            #else
            else wState &= ~USP_SILENCED
            #endif
        }
        case CSW_FAMAS:{
            if(g_bWeaponState[id][STATE_FAMAS])
            {
                wState |= FAMAS_BURST_MODE
                #if defined STATE_NOTIFICATION
                client_print(id, print_center, "#Cstrike_TitlesTXT_Switch_To_BurstFire")
                #endif
            }else{
                #if defined STATE_NOTIFICATION
                client_print(id, print_center, "#Cstrike_TitlesTXT_Switch_To_FullAuto")
                #endif
                #if defined ONLY_GIVEN
                return HAM_IGNORED
                #else
                wState &= ~FAMAS_BURST_MODE
                #endif
            }
        }
        case CSW_GLOCK18:{
            if(g_bWeaponState[id][STATE_GLOCK])
            {
                wState |= GLOCK_BURST_MODE
                #if defined NOTIFICATION
                    #if NOTIFICATION > 1
                    client_print(id, print_center, "#Cstrike_TitlesTXT_Switch_To_BurstFire")
                    #endif
                #endif
            }else{
                #if defined NOTIFICATION
                    #if NOTIFICATION > 1
                    client_print(id, print_center, "#Cstrike_TitlesTXT_Switch_To_SemiAuto")
                    #endif
                #endif
                #if defined ONLY_GIVEN
                return HAM_IGNORED
                #else
                wState &= ~GLOCK_BURST_MODE
                #endif
            }
        }
        default: return HAM_IGNORED
    }
    set_weapon_state(wEnt, wState)

    return HAM_IGNORED
}


Сначала думал конфликт.Потом на USP поудалял всё,и закомент. #define, и менял true^false... и.т.д.и.т.п. - бестолку.

Есть решение какое-то?

ps.gif Если,что на m4a1 всё работает



МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя hoolz
сообщение 6.3.2018, 0:23
Сообщение #2


Стаж: 11 лет
Город: Warszawa

Сообщений: 1194
Благодарностей: 909
Полезность: 1148

>Если,что на m4a1 всё работает
Так а зачем для USP? Люди, которые на пистолет ставят глушитель априори любят трудности)) так что можно наоборот автоматически снимать глушитель каждые 30 секунд rofl.gif


🚀 CS-BOOSTER — раскрутка серверов Counter-Strike 1.6
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 6.3.2018, 12:42
Сообщение #3


Иконка группы

Стаж: 18 лет

Сообщений: 987
Благодарностей: 529
Полезность: 1050

Цитата(hoolz @ 6.3.2018, 0:23) *
Так а зачем для USP?

Потому,что....потому-что smile.gif



МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BaHeK
сообщение 6.3.2018, 14:48
Сообщение #4


Стаж: 17 лет

Сообщений: 571
Благодарностей: 505
Полезность: 651

Не копался в CSDM, ты уверен, что csdm_RemoveWeapon забирает USP в твоем случае?
А лучше сделай как в плагине WeaponState Remember, смена переменной при нажатии на правую кнопку мыши, ну или просто используй его.


Чуть-чуть нарушаю
http://img-host.su/aoN1.png
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 6.3.2018, 15:35
Сообщение #5


Иконка группы

Стаж: 18 лет

Сообщений: 987
Благодарностей: 529
Полезность: 1050

Цитата(BaHeK @ 6.3.2018, 14:48) *
Не копался в CSDM, ты уверен, что csdm_RemoveWeapon забирает USP в твоем случае?
А лучше сделай как в плагине WeaponState Remember, смена переменной при нажатии на правую кнопку мыши, ну или просто используй его.


Уверен.Забирает.Там получаеться так,что когда нож при самом первом респе - то отнятие непроисходит.Если поставить USP - то есть.А бывает просто напросто со 2-3во раза запоминает ( респауна )

Пробовал отдельно WeaponState Remember ставить на Public - всёравно незапоминает.До етого стоял старый дезматч без
Код
#define SILENCED_M4A1    0
#define SILENCED_USP        1
new bool:g_Silenced[33][2]

и етот плагин стоял и - тоже самое.

Отредактировал: $@NyA, - 6.3.2018, 15:35


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя StCore
сообщение 6.3.2018, 20:36
Сообщение #6
Стаж: 9 лет 2 месяца

Сообщений: 24
Благодарности: выкл.

#define VERSION "0.0.1"

пробуй 4 версию без своих "нововведений" в ксдме.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 7.3.2018, 0:09
Сообщение #7


Иконка группы

Стаж: 18 лет

Сообщений: 987
Благодарностей: 529
Полезность: 1050

Цитата(StCore @ 6.3.2018, 20:36) *
#define VERSION "0.0.1"

пробуй 4 версию без своих "нововведений" в ксдме.


А ты знаешь - попробую.Потом отпишу.Кажись когда я читал про ету версию,то там было упоминание про Фикс глушака.Возможно ето оно...


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 7.3.2018, 1:29
Сообщение #8


Иконка группы

Стаж: 18 лет

Сообщений: 987
Благодарностей: 529
Полезность: 1050

Проблема решилась.Поставил ver.0.0.4. - но всёравно было так,что глушак на USP запоминало только если надет на m4a1 глушитель.Конфликт и было наверное с самого начала.Короче пришлось поудалять всё,что связано в csdm из Silenced.


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: