Molotov Grenade

Molotov Grenade 1.0.3

Нет прав для скачивания
Сообщения
685
Реакции
581
Предупреждения
8
Помог
9 раз(а)
Nordic Warrior, это вопрос не ко мне. и можешь умничать другом месте.
 
Сообщения
685
Реакции
581
Предупреждения
8
Помог
9 раз(а)
Nordic Warrior, автор так решил а я перенес его. Какие вопросы? Кол-во боди на моделке я не смотрел. Решил докопаться?
25 Авг 2024
Лучше бы чем то полезным занимался.
 
Сообщения
685
Реакции
581
Предупреждения
8
Помог
9 раз(а)
BlackSignature, Как минимум там две утечки. Я там много чего исправил/добавил и даже удалил лишнего. Пока лень снимать видео сравнение. Планирую добавить еще пару фишек.
 
Сообщения
685
Реакции
581
Предупреждения
8
Помог
9 раз(а)
1. Исправлено: утечка энтити
2. Исправлено: бесконечные Молотова при mp_infinite_ammo > 0
3. Исправлено: создание огня на воде при molotov_water_touch 1 (если в край кинуть то часть огня будет на воде)
4. Исправлено: теперь mp_buytime mp_nadedrops будут считаться актуальные значения.
5. Исправлено: с mp_nadedrops > 0 выпадение молотова при смерти даже было нажата ПКМ.(горящий фитиль)
6. Исправлено: Теперь правильно показывает в худе выбора полосу кол-во и мак патронов (если макс ставили больше 1).
7. Исправлено: Сообщение о выдачи патронов (если выдать более 1 за раз)
8. Исправлено: звук выдачи (если выдать доп. молотов)

9. Изменено: Полностью переписан функция нанесения урона и теперь не использует лишний отдельный хук TakeDamage (почему чуть ниже)
10. Изменено: Полностью переписан функции броска.
11. Изменено: квар molotov_equip_access на molotov_default_give
12. Изменено: квар molotov_demage_mode переименован. теперь используется molotov_damage_self 1/0 для владельца. А для тиммейтов будет браться из mp_friendlyfire
13. Изменено: снижено нагрузка на канал игрока (слишком много флуда на цинке)

14. Добавлено: ScreenFade и SreenShake при получении урона.
15. Добавлено: Небольшой дым после исчезновения огня.
16. Добавлено: квар molotov_damage_penetration 1/0 который откл получение урона через стены.
17. Добавлено: новое значение квара molotov_water_touch.
18. Добавлено: Эффект follow небольшой дым бри броске

19. Другие мелкие оптимизации и.т.д.

Описание новых кваров можно почитать на конфиге (кстати старый конфиг следует удалить).

Оставляю тут (чтобы не забыл что делал 🙂)

Еще осталось пару правок и скину.
 
Сообщения
70
Реакции
6
Заметил странное поведение плагина:
Выставил такие настройки в конфиге:
C#:
// Флаги доступа - для покупки или выдачи молотова (требует наличия вписанных - "abc" / пустая строка "" - покупка доступна всем)
// -
// Default: ""
molotov_buy_access "i"

// Автоматически выдавать молотов в начале раунда
// -
// Default: "0"
// Minimum: "0.000000"
// Maximum: "1.000000"
molotov_equip_access "1"

// Проверять находится ли игрок в зоне покупки
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
molotov_check_buyzone "0"

// Цена молотова
// -
// Default: "800"
// Minimum: "0.000000"
molotov_cost "800"

// Сколько молотовых можно купить за один раунд (значение: -1 убирает лимит)
// -
// Default: "1"
// Minimum: "-1.000000"
molotov_buy_limit "-1"

// С какого раунда после начала игры будет доступен молотов
// -
// Default: "2"
// Minimum: "0.000000"
molotov_limit_round "1"

// Сколько секунд с начала раунда можно купить молотов
// Время на покупку
// -2 - Подчиняться квару mp_buytime
// -1 - Без ограничений
// 0 - Выкл. покупку
// 1 и более - Время в секундах
//
// Default: "25"
// Minimum: "0.000000"
molotov_limit_buytime "25"

// Сколько урона наносить при попадании молотова в тело игрока
// -
// Default: "2"
// Minimum: "0.000000"
molotov_check_hit_player "2"

// Показывать ли в киллфиде рядом с именем приставку [ᴍᴏʟᴏᴛᴏᴠ]
// -
// Default: "0"
// Minimum: "0.000000"
// Maximum: "1.000000"
molotov_killfeed "0"

// Радиус горения молотова
// -
// Default: "132.0"
// Minimum: "0.000000"
molotov_radius "132.0"

// Сколько секунд молотов может находиться в полете перед взрывом
// -
// Default: "2.5"
// Minimum: "0.000000"
molotov_throwtime "2.5"

// Сколько секунд будет гореть молотов
// -
// Default: "12"
// Minimum: "0.000000"
molotov_duration "12"

// Кто получает урон от коктейля молотова (0 - только противники, 1 - противники и игрок бросивший коктейль молотова, 2 - все игроки)
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "2.000000"
molotov_demage_mode "2"

// Как будет наноситься урон от огня (1 - через Ham_TakeDamage [урон фиксированный в любой точке радиуса горения], 2 - через rg_dmg_radius [урон зависит от даль
// -
// Default: "2"
// Minimum: "1.000000"
// Maximum: "2.000000"
molotov_demage_radius_mode "2"

// Периодичность нанесения урона
// -
// Default: "0.20"
// Minimum: "0.000000"
molotov_demage_time "0.20"

// Количество нанесенного урона за период (molotov_demage_time)
// -
// Default: "20.0"
// Minimum: "0.000000"
molotov_demage_value "20.0"

// Количество обрисовываемых волн огня
// -
// Default: "4"
// Minimum: "0.000000"
// Maximum: "10.000000"
molotov_effect_num "4"

// Тушить ли коктейль молотова дымовой гранатой
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
molotov_smoke_touch "1"

// Путь до модели дымовой гранаты. (Стандартная: models/w_smokegrenade.mdl)
// -
// Default: "models/w_smokegrenade.mdl"
molotov_smoke_owner "models/w_smokegrenade.mdl"

// Тушить ли коктейль молотова при соприкосновении с водой
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
molotov_water_touch "1"

// Удалять коктейль молотова при соприкосновении со скайбоксом карты
// -
// Default: "1"
// Minimum: "0.000000"
// Maximum: "1.000000"
molotov_sky_force "1"

В чем прикол:
- По идее молотов должен выдаваться автоматически только игрокам с флагом ADMIN_CHAT но не тут то было. Он выдается всем.
Поковырялся в коде и понял что дело тут:

C#:
public CBasePlayer_OnSpawnEquip_Post(const id){
    if(!is_user_connected(id))
        return;

    BuyLimit[id] = g_eCvar[CVAR_BUY_LIMIT];
    new bitAccess = g_eCvar[CVAR_BUY_ACCESS];

    if(g_eCvar[CVAR_EQUIP_ACCESS] < 1)
        return;
    // Вот в этой строчке кода весь прикол
    if (bitAccess && ~get_user_flags(id) & bitAccess)
        return;

    if(get_member_game(m_iTotalRoundsPlayed) + 1 < g_eCvar[CVAR_LIMIT_ROUND])
        return;


    giveNade(id);
}
Я поменял строчку на:
if(~get_user_flags(id) & ADMIN_CHAT)
и вуаля, всё работает как часики.

Может это только у меня так?
Здравствуйте, у меня такая же проблема, я поставил код, который вы дали, и он работает, но когда я хочу поставить более 1 флага,например if(~get_user_flags(id) & ADMIN_CHAT & ADMIN_LEVEL_H) обычному игроку все равно в начале раунда дается Молотов, может кто-нибудь поправить, чтобы игроки с флагом z не получают проблем в начале каждого раунда.

Я хочу, чтобы его выдавали только людям с флагами t s n
 
Последнее редактирование:
Сообщения
492
Реакции
90
Помог
5 раз(а)
cgozzie,
Код:
const FLAGS = ADMIN_CHAT|ADMIN_LEVEL_H;
if(~get_user_flags(id) & FLAGS)
 
Сообщения
77
Реакции
-1
Предупреждения
30
Помог
1 раз(а)
cgozzie,
Добавьте в свой код:
Код:
const flags =  ADMIN_CHAT + ADMIN_LEVEL_H
if (!(get_user_flags(id) & flags == flags))
        return
 
Сообщения
77
Реакции
-1
Предупреждения
30
Помог
1 раз(а)
cgozzie,
Добавьте в свой код:
Код:
const flags =  ADMIN_CHAT + ADMIN_LEVEL_H
if (!(get_user_flags(id) & flags == flags))
        return
Верхний мой код некорректен. (там обязательно наличие суммы флагов)
Если вам нужно же блокировать игрока если у него нету одного из флагов то
Код:
if(!((get_user_flags(id) & ADMIN_CHAT ) || (get_user_flags(id)& ADMIN_LEVEL_H)))
        return
 
Последнее редактирование:
Сообщения
492
Реакции
90
Помог
5 раз(а)
Ulianochka, сложна.. проще же через константу все флаги нужные вывести =)
 
Сообщения
77
Реакции
-1
Предупреждения
30
Помог
1 раз(а)
WILL_BE, упрощать можно до бесконечности, я привела рабочие примеры, без оптимизации
 
Сообщения
70
Реакции
6
Верхний мой код некорректен. (там обязательно наличие суммы флагов)
Если вам нужно же блокировать игрока если у него нету одного из флагов то
Код:
if(!((get_user_flags(id) & ADMIN_CHAT ) || (get_user_flags(id)& ADMIN_LEVEL_H)))
        return
Большое спасибо, брат, код работает именно так, как я хотел.
Код:
if(!((get_user_flags(id) & ADMIN_CHAT ) || (get_user_flags(id)& ADMIN_LEVEL_H)))
        return

Если у игрока нет этих флагов, Молотов ему не будет выдан в начале каждого раунда.

Код:
public CBasePlayer_OnSpawnEquip_Post(const id){
    if(!is_user_connected(id))
        return;

    BuyLimit[id] = g_eCvar[CVAR_BUY_LIMIT];

    if(!g_eCvar[CVAR_EQUIP_ACCESS])
        return;

    new bitAccess = g_eCvar[CVAR_BUY_ACCESS];

    if (bitAccess && ~get_user_flags(id) & bitAccess)
        return;
   
    if(!((get_user_flags(id) & ADMIN_LEVEL_B ) || (get_user_flags(id)& ADMIN_LEVEL_H) || (get_user_flags(id)& ADMIN_LEVEL_G)))
        return   

    if(get_member_game(m_iTotalRoundsPlayed) + 1 < g_eCvar[CVAR_LIMIT_ROUND])
        return;


    giveNade(id, g_eCvar[CVAR_EQUIP_ACCESS], g_eCvar[CVAR_EQUIP_ACCESS]);
}
 
Последнее редактирование:
Сообщения
70
Реакции
6
I want to ask how can I use this sprite ?
Здравствуйте, люди, можете ли вы помочь мне отобразить этот спрайт? Я не понимаю этих вещей, поэтому обращаюсь к вам, пожалуйста, не предлагайте мне оплату, я из Болгарии и не хочу. у меня есть банковские счета, чтобы поблагодарить людей, которые, возможно, смогут помочь мне это сделать.
6 Дек 2024
Sorry friends I want to ask if you like these plugin options :

1. Buy Message
( I suppose you can put it in the text file, but that's how I use it in my version )

#include <cromchat>

Код:
    giveNade(id);
    CC_SendMatched( id, CC_COLOR_TEAM, "&x03You got &x04Molotov Cocktail Grenade &x01for &x04$%d&x01!", g_eCvar[CVAR_COST] );
    BuyLimit[id]--;

2. Drop after death


Код:
bind_pcvar_num(
        create_cvar(
            "molotov_drop_nade_after_death", "1", FCVAR_SERVER,
            .description = "When player is killed and have a Molotov in him it will drop on the ground.",
            .has_min = true, .min_val = 0.0,
            .has_max = true, .max_val = 1.0
            ),
        g_eCvar[DROP_NADE_AFTER_DEATH]
        );
So my point is, if you like this, do you want to include it in your new version?
И этот вариант как добавить в плагин работает.
 
Сообщения
11
Реакции
-2
У меня у одного в списке плагинов при команде "amxx list" отображается старая версия плагина (вместо "1.0.3." отображается "1.0.2")?

[ 52] 51 [GRENADE] Molotov 1.0.2 medusa grenade_mol running
 
Сообщения
8
Реакции
-1
Помог
1 раз(а)
1734193686132.png1734193845317.png
Если кинуть в голову(шею) то молотов застревает и секунд 5-7 медленно падает (звук урона присутствует) а урона нету
После 5-7 сек уже взрывается
14 Дек 2024
 
Сообщения
70
Реакции
6
Верхний мой код некорректен. (там обязательно наличие суммы флагов)
Если вам нужно же блокировать игрока если у него нету одного из флагов то
Код:
if(!((get_user_flags(id) & ADMIN_CHAT ) || (get_user_flags(id)& ADMIN_LEVEL_H)))
        return
Привет еще раз, только что заметил, так как я сделал это таким образом, у меня все было в порядке до момента, когда начинается ночной вип, а потом случается, что Молотов больше не выдается даже 1 игроку, даже если у него есть флаги, которые мне нужны. перезапустите весь сервер, чтобы он работал над кодом, который вы мне дали.

Код:
public CBasePlayer_OnSpawnEquip_Post(const id){
    if(!is_user_connected(id))
        return;

    BuyLimit[id] = g_eCvar[CVAR_BUY_LIMIT];

    if(!g_eCvar[CVAR_EQUIP_ACCESS])
        return;

    new bitAccess = g_eCvar[CVAR_BUY_ACCESS];

    if (bitAccess && ~get_user_flags(id) & bitAccess)
        return;
  
    if(!((get_user_flags(id) & ADMIN_LEVEL_B ) || (get_user_flags(id)& ADMIN_LEVEL_H) || (get_user_flags(id)& ADMIN_LEVEL_G)))
        return   

    if(get_member_game(m_iTotalRoundsPlayed) + 1 < g_eCvar[CVAR_LIMIT_ROUND])
        return;


    giveNade(id, g_eCvar[CVAR_EQUIP_ACCESS], g_eCvar[CVAR_EQUIP_ACCESS]);
}
 
Сообщения
1,083
Реакции
59
Помог
11 раз(а)
cgozzie, ты проверял эти условия???
Код:
    if(!((get_user_flags(id) & ADMIN_LEVEL_B ) || (get_user_flags(id)& ADMIN_LEVEL_H) || (get_user_flags(id)& ADMIN_LEVEL_G)))
        return
И для чего ты вписываешь 2 параметра, после индекса игрока?
giveNade(id, g_eCvar[CVAR_EQUIP_ACCESS], g_eCvar[CVAR_EQUIP_ACCESS]);
 
Сообщения
1
Реакции
0
Кто знает как пофиксить (Ставлю флаги в конфиге по своим привелегиям) (Перестает автоматом выскакивать меню "vip_rbs", когда в кфг поле флагов оставляю пустым то меню открывает но не выдает молотов.
 

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

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