Иконка ресурса

[ACS] Weapon Control System 1.3.5

Нет прав для скачивания

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
394
Реакции
284
Помог
3 раз(а)
@ArKaNeMaN, для разработки удобнее модульность, для конечного пользователя удобнее всё-в-одном.
В обоих пунктах есть нюансы...
  • Когда всё в одном, часто получаются такие ситуации, когда конечному пользователю приходится лезть в исходник и перекомпливать его для отключения каких-то внешних зависимостей, что некоторым не особо удобно. Плюс это порождает такую проблему, что для обновления недостаточно просто закинуть новую версию, надо сначала снова залезть в исходник и настроить там всё ничего не забыв при этом...
  • Модульность удобна для разработки, когда она есть и когда она хорошо продумана... А для этого надо в начале потратить больше времени, чем если бы всё было монолитным. А если поспешить и плохо её продумать, то может стать даже хуже в итоге)
12 Янв 2024
А ещё в подобных местах явно напрашивается расширяемость... Если человеку понадобится что-то ещё и он добавит это "что-то" сюда, то при будущих обновлениях прийдётся ручками тащить дописанный код в новые версии... А если ещё и код оригинала в модифицируемом месте изменится, то и это прийдётся как-то решать)

C++:
stock bool:acs_give_item(const id, const weapon[]) {
    static bool:is_relative, i_count, s_count[3 * ACS_MAX_NAME_ML_LENGTH], s_item[ACS_MAX_BUFFER_SIZE];
    if (!is_valid_player(id))
        return false;
    strtok(weapon, _SC(s_item), _SC(s_count), ':', 0);
    i_count = str_to_num(s_count);
    is_relative = s_count[0] == '+' || s_count[0] == '-';
    //acs_client_print(id, ACS_SHOW_DEBUG, "process_task(): id = %d, item_value = %s, count = %d, is_relative = %d", id, _ITEM_VALUE(s_item), i_count, is_relative);
    if (!contain(_ITEM_PREFIX(s_item))) {
        if (equal(_ITEM_VALUE(s_item), "kevlar")) {
            i_count += is_relative ? rg_get_user_armor(id) : 0;
            i_count = clamp(i_count, 0, CVAR[MAX_ARMOR]);
            if (i_count > 0)
                rg_set_user_armor(id, i_count, ARMOR_KEVLAR);
        } else if (equal(_ITEM_VALUE(s_item), "vesthelm")) {
            i_count += is_relative ? rg_get_user_armor(id) : 0;
            i_count = clamp(i_count, 0, CVAR[MAX_ARMOR]);
            if (i_count > 0)
                rg_set_user_armor(id, i_count, ARMOR_VESTHELM);
        } else if (equal(_ITEM_VALUE(s_item), "defuse")) {
            rg_give_defusekit(id);
        } else if (equal(_ITEM_VALUE(s_item), "ammo")) {
            acs_set_max_ammo(id, get_member(id, m_rgpPlayerItems, PRIMARY_WEAPON_SLOT));
            acs_set_max_ammo(id, get_member(id, m_rgpPlayerItems, PISTOL_SLOT));
        } else if (equal(_ITEM_VALUE(s_item), "hp")) {
            i_count += is_relative ? get_user_health(id) : 0;
            i_count = clamp(i_count, 0, CVAR[MAX_HP]);
            if (i_count > 0)
                set_user_health(id, i_count);
        } else if (equal(_ITEM_VALUE(s_item), "money")) {
            i_count += is_relative ? rg_get_user_money(id) : 0;
            i_count = clamp(i_count, 0, CVAR[MAX_MONEY]);
            if (i_count >= 0)
                rg_add_account(id, i_count, AS_SET);
        } else if (equal(_ITEM_VALUE(s_item), "aes")) {
            acs_add_player_bonus(id, i_count);
        } else if (equal(_ITEM_VALUE(s_item), "exp")) {
            acs_add_player_exp(id, float(i_count));
        } else if (equal(_ITEM_VALUE(s_item), "damager")) {
            ga_damager[id][DMG_ENABLED] = i_count >= 0;
            ga_damager[id][DMG_THRESHOLD] = floatclamp(float(i_count), 0.0, 100.0);
        } else if (equal(_ITEM_VALUE(s_item), "speed")) {
            gi_add_speed[id][SPEED_RELATIVE] = is_relative;
            gi_add_speed[id][SPEED_VALUE] = clamp(is_relative ? i_count + gi_add_speed[id][SPEED_VALUE] : i_count, 1);
            i_count += floatround(get_user_maxspeed(id));
            i_count = clamp(i_count, 0, CVAR[MAX_SPEED]);
            //acs_client_print(id, ACS_SHOW_DEBUG, "i_count = %d, user_maxspeed = %f, speed_value = %d, sv_maxspeed = %f", i_count, get_user_maxspeed(id), gi_add_speed[id][SPEED_VALUE], get_cvar_float("sv_maxspeed"));
            //gi_add_speed[id][SPEED_RELATIVE] = is_relative;
            if (i_count > get_cvar_num("sv_maxspeed"))
                set_cvar_num("sv_maxspeed", i_count);
            set_user_maxspeed(id, float(i_count));
        } else
            return false;
    } else if (0 <= contain(_WEAPON_PREFIX(s_item)) <= 1) {
        //log_amx("WEAPON_ADD: %s, count = %d", s_item, i_count);
        i_count = clamp(i_count, 0, CVAR[MAX_AMMO]);
        switch (s_item[0]) {
            case '+': acs_give_item_ex(id, s_item[1], i_count, GT_APPEND);
            case '-': acs_give_item_ex(id, s_item[1], i_count, GT_DROP_AND_REPLACE);
            default:  acs_give_item_ex(id, s_item, i_count, GT_REPLACE);
        }
    } else
        return false;
    return true;
}
 
Сообщения
269
Реакции
84
etojeban, в gamecms_api.amxx нет ни одной public функции, которую я бы мог использовать, для динамического запроса необходимых мне данных, как в aes_main.amxx...

Рекомендация выше в силе, пока я в процессе поиска красивого решения без статической линковки... скорее всего сейчас допишу кусочек кода и руками получу эту информацию из БД напрямую.

Извините, за неудобства, это мой второй публичный плагин...:sad:
 
Сообщения
13
Реакции
0
Refresh, По установке вопрос ! Получается AccuracyFix модуль только для линукса а без этого модуля на винде работать не будет плагин ? я на Windows сижу )
 
Сообщения
269
Реакции
84
alnovo, Плагин работает независимо от модуля. Модуль в комплекте предназначен для Linux серверов, он улучшает стрельбу и снижает лаги, если у вас оружие с уменьшенной отдачей. Плагин может делать тоже самое, но "производительность" работы и генерируемая нагрузка на сервер многократно различаются с модулем.

У меня нет Windows сервера, но я могу попробовать скомпилировать и под Windows, если вы найдете время потестировать модуль (сервер может не запускаться с разными ошибками) - напишите, мне. Если все получится, добавлю версию модуля для Windows.
 
Последнее редактирование:
  • Нравится
Реакции: ssx
Сообщения
584
Реакции
343
Предупреждения
1
Помог
9 раз(а)
В каком месте он снижает лаги и улучшает стрельбу?
 
Сообщения
584
Реакции
343
Предупреждения
1
Помог
9 раз(а)
Refresh, я спросил, где именно в модуле
 
Сообщения
28
Реакции
13
Помог
2 раз(а)
steelzzz, наверное имелось ввиду типа умешает отдачу за счет чего стрелять из таких оружии как ак47становится проще
 
Сообщения
219
Реакции
39
Помог
4 раз(а)
cookie, нет! именно " улучшает стрельбу и снижает лаги"
 
Сообщения
336
Реакции
401
Предупреждения
5
Помог
7 раз(а)
Более менее, улучшает стрельбу на сервере вроде бы настройка некоторых параметров(кваров) сервера. Но это не сильно улучшит "стрельбу" на сервере. Так же можно использовать HitBox Fixer от Гарея. Но и это не решение данной проблемы. А вот настройка стрельбы, это уже отдельный вопрос, можно использовать всякие рекоил менджеры и прочую ерундистику.

p.s. Мой совет для тех, кто либо открывает сервер или хочет улучшить стрельбу на своем сервере. Не занимайтесь ерундой, игра сделана на голд сорсе. Вы пытаетесь сделать то, что невозможно данными инструментами(амхх). Выкиньте голд сорс и ваш сервер в помойку и будет вам счастье
 
Сообщения
584
Реакции
343
Предупреждения
1
Помог
9 раз(а)
cookie, и зачем это? Портить оригинальную "стрельбу" ? Полный дизреспект, кто устанавливает такое дерьмо как accuracy fix, recoil control и т.п. Потом удивляетесь, что игроки ноют, что стрельба не такая, слушая псевдо "профессионалов". Вы сами "подсадили" их на эту херобору
 
Сообщения
267
Реакции
77
Предупреждения
8
Помог
1 раз(а)
steelzzz,
поэтому я решил написать статью про разбор "стрельбы" каждого оружия. Естественно с кодом, но она будет готова в лучшем случае к лету, если не через год 😄
 
Сообщения
96
Реакции
18
Помог
2 раз(а)
p.s. Мой совет для тех, кто либо открывает сервер или хочет улучшить стрельбу на своем сервере. Не занимайтесь ерундой, игра сделана на голд сорсе. Вы пытаетесь сделать то, что невозможно данными инструментами(амхх). Выкиньте голд сорс и ваш сервер в помойку и будет вам счастье
Уже поздно об этом говорить с выходом рекойл менеджера.
Сейчас заходят и говорят что стрельба 💩 из-за таких серверов где стоит чудо плагин. Зашёл я как то на один серв, а там разброса вообще нет. Зажим ака в точку🤦‍♂️(интересно, как они демки читеров просматривают вообще 😂)
Потом люди заходят на обычный серв где стандартная стрельба и начинают орать "что со стрельбой и стрельба 💩"
Тут больше в адекватности самих создателей.
По мне лучше бы не было этого плагина.
 
Сообщения
336
Реакции
401
Предупреждения
5
Помог
7 раз(а)
devl, у меня был личный опыт подобный. Я как то на одном сервере играл очень продолжительное время с привилегией по бартеру. Так вот у меня именно на этом сервере, прям игра "летала". Килл за киллом, я набивал стату. Потом я заходил на другие сервера и меня опускали с небес на землю. Пообщавшись с админом сервера, я узнал, что на нем стоял рекоил менджер. Вот так, я в какой то период испортил себе скилл)
 
Сообщения
178
Реакции
-8
Помог
2 раз(а)
Albertio, как можно было не отличить кастомную стрельбу от натуральной?
 
Сообщения
34
Реакции
8
Помог
1 раз(а)
смысл отдачу снижать? это никакой точности не приносит
 
Сообщения
269
Реакции
84
HAFAH9, :scratch_one-s_head:Попробуйте m4a со стандартным конфигом модуля...
 
Сообщения
336
Реакции
401
Предупреждения
5
Помог
7 раз(а)
HAFAH9, делаешь отдачу нулевую и можно в одну точку лупить. Куда смотрит прицел, там и будет труп
 
Последнее редактирование:

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

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