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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Убрать лимит на оружие

Статус пользователя nikuzzz
сообщение 1.4.2017, 16:20
Сообщение #1
Стаж: 9 лет 9 месяцев

Сообщений: 47
Благодарностей: 4
Полезность: 66

Есть ли плагин или настройки кс чтобы отключить лимит на одно оружие в каждом слоте?
Т.е. чтобы можно было купить и авп и АК например, чтобы покупать несколько стволов мог каждый игрок.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя SISA
сообщение 1.4.2017, 18:27
Сообщение #2
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Так вы для начала определитесь, что вам нужно ? В слотах нет лимитов, ну т.е. есть, но там лимит на 32 итема вроде. Ограничители есть при покупке и при подборе оружия с земли. Как обойти ограничитель подбора с земли без костылей я вроде бы знаю, а вот дефолтную покупку особо не ковырял.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя nikuzzz
сообщение 1.4.2017, 18:44
Сообщение #3
Стаж: 9 лет 9 месяцев

Сообщений: 47
Благодарностей: 4
Полезность: 66

Цитата(SISA @ 1.4.2017, 19:27) *
Так вы для начала определитесь, что вам нужно ? В слотах нет лимитов, ну т.е. есть, но там лимит на 32 итема вроде. Ограничители есть при покупке и при подборе оружия с земли. Как обойти ограничитель подбора с земли без костылей я вроде бы знаю, а вот дефолтную покупку особо не ковырял.

хотелось бы обойти ограничение на покупку и подбор оружия. Чтобы любой игрок мог носить с собой несколько оружий.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 2.4.2017, 1:58
Сообщение #4
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Что касается подбора, то там надо слот оружия менять во время тача и восстанавливать после. На практике это не применял, но если нужно, могу попробовать сделать код.

Что касается ограничений покупки, то её скорее всего нет. Там банально срабатывает дроп. Блочишь дроп в момент покупки, вот только как это сделать по человечески, я пока не соображу:

Сам дроп начинается здесь:

Cкрытый текст
Код
void DropPrimary(CBasePlayer *pPlayer)
{
    if (pPlayer->HasShield())
    {
        pPlayer->DropShield(true);
        return;
    }

    while (pPlayer->m_rgpPlayerItems[WPNSLOT_PRIMARY])
        pPlayer->DropPlayerItem(STRING(pPlayer->m_rgpPlayerItems[WPNSLOT_PRIMARY]->pev->classname));
}

void DropPistol(CBasePlayer *pPlayer)
{
    if (pPlayer->HasShield())
        pPlayer->DrawnShiled();

    while (pPlayer->m_rgpPlayerItems[WPNSLOT_SECONDARY])
        pPlayer->DropPlayerItem(STRING(pPlayer->m_rgpPlayerItems[WPNSLOT_SECONDARY]->pev->classname));
}


И сам код дропа:

Cкрытый текст
Код
void CBasePlayer::DropPlayerItem(const char *pszItemName)
{
    if (!strlen(pszItemName))
        pszItemName = NULL;

    if (m_bIsVIP)
    {
        ClientPrint(pev, HUD_PRINTCENTER, "#Weapon_Cannot_Be_Dropped");
        return;
    }

    if (!pszItemName && HasShield() == true)
        DropShield(true);

    for (int i = 0; i < MAX_ITEM_TYPES; i++)
    {
        CBasePlayerItem *pWeapon = m_rgpPlayerItems[i];

        while (pWeapon)
        {
            if (pszItemName)
            {
                if (!strcmp(pszItemName, STRING(pWeapon->pev->classname)))
                    break;
            }
            else if (pWeapon == m_pActiveItem)
                break;

            pWeapon = pWeapon->m_pNext;
        }

        if (pWeapon)
        {
            if (!pWeapon->CanDrop())
            {
                ClientPrint(pev, HUD_PRINTCENTER, "#Weapon_Cannot_Be_Dropped");
                continue;
            }

            g_pGameRules->GetNextBestWeapon(this, pWeapon);
            UTIL_MakeVectors(pev->angles);
            pev->weapons &= ~(1 << pWeapon->m_iId);

            if (pWeapon->iItemSlot() == WPNSLOT_PRIMARY)
                m_bHasPrimary = false;

            if (!strcmp(STRING(pWeapon->pev->classname), "weapon_c4"))
            {
                m_bHasC4 = false;
                pev->body = 0;
                SetBombIcon(FALSE);
                pWeapon->m_pPlayer->SetProgressBarTime(0);

                if (!g_pGameRules->m_fTeamCount)
                {
                    UTIL_LogPrintf("\"%s<%i><%s><TERRORIST>\" triggered \"Dropped_The_Bomb\"\n", STRING(pev->netname), GETPLAYERUSERID(edict()), GETPLAYERAUTHID(edict()));
                    g_pGameRules->m_bBombDropped = TRUE;

                    CBaseEntity *pEntity = NULL;

                    while ((pEntity = UTIL_FindEntityByClassname(pEntity, "player")) != NULL)
                    {
                        if (FNullEnt(pEntity->edict()))
                            break;

                        if (!pEntity->IsPlayer())
                            continue;

                        if (pEntity->pev->flags != FL_DORMANT)
                        {
                            CBasePlayer *pOther = GetClassPtr((CBasePlayer *)pEntity->pev);

                            if (pOther->pev->deadflag == DEAD_NO && pOther->m_iTeam == TEAM_TERRORIST)
                            {
                                ClientPrint(pOther->pev, HUD_PRINTCENTER, "#Game_bomb_drop", STRING(pev->netname));

                                MESSAGE_BEGIN(MSG_ONE, gmsgBombDrop, NULL, pOther->pev);
                                WRITE_COORD(pev->origin.x);
                                WRITE_COORD(pev->origin.y);
                                WRITE_COORD(pev->origin.z);
                                WRITE_BYTE(0);
                                MESSAGE_END();
                            }
                        }
                    }
                }
            }

            CWeaponBox *pWeaponBox = (CWeaponBox *)Create("weaponbox", pev->origin + gpGlobals->v_forward * 10, pev->angles, edict());
            pWeaponBox->pev->angles.x = 0;
            pWeaponBox->pev->angles.z = 0;
            pWeaponBox->SetThink(&CWeaponBox::Kill);
            pWeaponBox->pev->nextthink = gpGlobals->time + 300;
            pWeaponBox->PackWeapon(pWeapon);
            pWeaponBox->pev->velocity = gpGlobals->v_forward * 300 + gpGlobals->v_forward * 100;

            if (pWeapon->iFlags() & ITEM_FLAG_EXHAUSTIBLE)
            {
                int iAmmoIndex = GetAmmoIndex(pWeapon->pszAmmo1());

                if (iAmmoIndex != -1)
                {
                    pWeaponBox->PackAmmo(MAKE_STRING(pWeapon->pszAmmo1()), m_rgAmmo[iAmmoIndex] > 0);
                    m_rgAmmo[iAmmoIndex] = 0;
                }
            }

            const char *modelname = GetCSModelName(pWeapon->m_iId);

            if (modelname)
                SET_MODEL(ENT(pWeaponBox->pev), modelname);

            return;
        }
    }
}


Можно блочить ДО DropPlayerItem, поигравшись с m_rgpPlayerItems, правда игры с ним могут быть немного опасны smile.gif

можно блочить внутри DropPlayerItem, допустим, подсунув игроку випа на момент выдачи:

if (m_bIsVIP)
{
ClientPrint(pev, HUD_PRINTCENTER, "#Weapon_Cannot_Be_Dropped");
return;
}

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