Barricady System

Barricady System 5.3

☠ ÄйӃи ☠

Добрая душа
Сообщения
220
Реакции
86
  • Автор ресурса
  • #1
☠ ÄйӃи ☠ добавил(а) новый ресурс:

Barricady System - Система баррикад или просто спавн объектов и их изменение.

Данный плагин является моей модификацией и публикация его произведена с согласованием автора оригинального плагина. За основу был взят...

Узнать больше об этом ресурсе...
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Глянул исходники оригинала: написано на уровне FSA (т.е. говнокод чуть менее, чем полностью).
Сообщения автоматически склеены:

Все объекты которые создали игроки в конце раунда удаляться.
Некоторые пропы сами по себе существуют только в течении одного раунда и их не требуется удалять с карты.

Ну и ещё: я бы создавал менюшки при запуске плагина, а при смене карты (когда читается конфиг) только пересоздавал их (не все, конечно, но с многими так можно поступить, кмк).

И ещё: if(!IsModelPrecached(model)) PrecacheModel(model);можно заменить на PrecacheModel(model);, т.к. если моделька была добавлена в кэш, то функция PrecacheModel() просто вернёт индекс который присвоен этой модельке ранее.
Сообщения автоматически склеены:

Для функции IsPlayerSurv() лучше бы при запуске плагина определить для какой игры был запущен плагин (заявлена поддержка не только L4D).
Потому что выжившие в команде 2 только в L4D/L4D2. В CS:S выжившие в зомбимодах как правило в команде 3.
Ну и бот ли игрок можно определять после определения в какой команде игрок.
Да и вообще в плагине этот код не имело смысла выносить в отдельную функцию, т.к. используется всего один раз (в CallMenuBS())

Кроме того название меню "Ротация объекта" лучше бы поменять на "Поворот" или "Вращение", т.к. в русском языке "Ротация" - это несколько иное.
 
Последнее редактирование:

☠ ÄйӃи ☠

Добрая душа
Сообщения
220
Реакции
86
  • Автор ресурса
  • #3
Глянул исходники оригинала: написано на уровне FSA (т.е. говнокод чуть менее, чем полностью).
Сообщения автоматически склеены:


Некоторые пропы сами по себе существуют только в течении одного раунда и их не требуется удалять с карты.

Ну и ещё: я бы создавал менюшки при запуске плагина, а при смене карты (когда читается конфиг) только пересоздавал их (не все, конечно, но с многими так можно поступить, кмк).

И ещё: if(!IsModelPrecached(model)) PrecacheModel(model);можно заменить на PrecacheModel(model);, т.к. если моделька была добавлена в кэш, то функция PrecacheModel() просто вернёт индекс который присвоен этой модельке ранее.
Сообщения автоматически склеены:

Для функции IsPlayerSurv() лучше бы при запуске плагина определить для какой игры был запущен плагин (заявлена поддержка не только L4D).
Потому что выжившие в команде 2 только в L4D/L4D2. В CS:S выжившие в зомбимодах как правило в команде 3.
Ну и бот ли игрок можно определять после определения в какой команде игрок.
Да и вообще в плагине этот код не имело смысла выносить в отдельную функцию, т.к. используется всего один раз (в CallMenuBS())

Кроме того название меню "Ротация объекта" лучше бы поменять на "Поворот" или "Вращение", т.к. в русском языке "Ротация" - это несколько иное.


Принято к сведенью. Спасибо за указанные ошибки.
 

☠ ÄйӃи ☠

Добрая душа
Сообщения
220
Реакции
86
  • Автор ресурса
  • #4
☠ ÄйӃи ☠ обновил(а) ресурс Barricady System новой записью:

Обновление 5.3

Теперь когда меню открыто а игрок умер, при нажатии на пункт оно закроется.
Администраторам в удалении объектов доступен 3 пункт удалить объект на который смотрит. При этом можно удалять entity объекты карты
Исправлено когда игрок в игре не L4D 1 & 2 не мог открыть меню !bs находясь в команде 3 (CS_TEAM_CT)
Исправлено когда перемещение объекта без выбора значения смещения не перемещало предмет.

Узнать больше об этом обновлении...
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
При этом можно удалять entity объекты карты
В проверке валидности энтити под прицелом проверяется, чтобы индекс был больше, чем MaxClients?

А что выдаёт проверка if(GetEngineVersion() == Engine_Left4Dead2 || Engine_Left4Dead) в CS:S, интересно?
Первый раз такую запись вижу. Подозреваю, что результат всегда true.

Вообще я когда-то писал себе плагин для управления пропами на карте (перемещение, вращение, копирование). Получилось вот такое (это не финальная версия, у меня потом ещё несколько билдов было и самая свежая вообще на 5 файлов разбита, 954 строк кода суммарно). Последний билд в октябре 2021г. делал.
 

☠ ÄйӃи ☠

Добрая душа
Сообщения
220
Реакции
86
  • Автор ресурса
  • #6
В проверке валидности энтити под прицелом проверяется, чтобы индекс был больше, чем MaxClients?

А что выдаёт проверка if(GetEngineVersion() == Engine_Left4Dead2 || Engine_Left4Dead) в CS:S, интересно?
Первый раз такую запись вижу. Подозреваю, что результат всегда true.

Вообще я когда-то писал себе плагин для управления пропами на карте (перемещение, вращение, копирование). Получилось вот такое (это не финальная версия, у меня потом ещё несколько билдов было и самая свежая вообще на 5 файлов разбита, 954 строк кода суммарно). Последний билд в октябре 2021г. делал.
игроки это тоже Entity и когда я не проверял MaxClients < Ent то мог удалить бота и игрока (его кикало с сервера) и мог его переместить и так далее.

По поводу if(GetEngineVersion() == Engine_Left4Dead2 || Engine_Left4Dead) если игра l4d1 или l4d2 то g_bGameLeft4Dead = true; в объявлении всегда bool без точного указания = false

Если я не прав прошу поправьте меня.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
игроки это тоже Entity и когда я не проверял MaxClients < Ent то мог удалить бота и игрока (его кикало с сервера) и мог его переместить и так далее.
Ну так я про то же: чтобы нельзя было удалить энтити игрока даже случайно.
По поводу if(GetEngineVersion() == Engine_Left4Dead2 || Engine_Left4Dead) если игра l4d1 или l4d2 то g_bGameLeft4Dead = true; в объявлении всегда bool без точного указания = false
Я не про это.
Мне интересно оно работает как if((GetEngineVersion() == Engine_Left4Dead2) || true) или как if(GetEngineVersion() == Engine_Left4Dead2 || GetEngineVersion() == Engine_Left4Dead)
Никогда такой записи не видел. =)
 

☠ ÄйӃи ☠

Добрая душа
Сообщения
220
Реакции
86
  • Автор ресурса
  • #8
Ну так я про то же: чтобы нельзя было удалить энтити игрока даже случайно.

Я не про это.
Мне интересно оно работает как if((GetEngineVersion() == Engine_Left4Dead2) || true) или как if(GetEngineVersion() == Engine_Left4Dead2 || GetEngineVersion() == Engine_Left4Dead)
Никогда такой записи не видел. =)

Ну из API я понял что это используется именно так.
Пример.
C++:
public void OnPluginStart()
{
    // принцип cравнения чисел.
    EngineVersion iEngine = GetEngineVersion();
    if(iEngine == Engine_Left4Dead || Engine_Left4Dead2)
    {
        if(iEngine == Engine_Left4Dead)
        {
            PrintToServer("Игра Left 4 Dead 1 Plugin start");
        }
        else if(iEngine == Engine_Left4Dead2)
        {
            PrintToServer("Игра Left 4 Dead 2 Plugin start");
        }
    }
    else
    {
        PrintToServer("Это не игра Left 4 Dead 1 или 2");
    }
}


Ну как смог. Думаю тут понятно.
 

Вложения

  • primer.sp
    489 байт · Просмотры: 6
  • primer.smx
    2.6 КБ · Просмотры: 2
  • Screenshot_3.png
    Screenshot_3.png
    9.1 КБ · Просмотры: 37
  • Screenshot_4.png
    Screenshot_4.png
    13.8 КБ · Просмотры: 32

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@☠ ÄйӃи ☠, не работает это так.
C-подобный:
public void OnPluginStart()
{
    EngineVersion ev = GetEngineVersion();
    if(ev == Engine_Left4Dead || Engine_Left4Dead2)
    {
        if(ev == Engine_Left4Dead)
        {
            PrintToServer("Игра Left 4 Dead 1 Plugin start");
        }
        else if(ev == Engine_Left4Dead2)
        {
            PrintToServer("Игра Left 4 Dead 2 Plugin start");
        }
    }
    else PrintToServer("Это не игра Left 4 Dead 1 или 2");

    PrintToServer("Игра: %i", view_as<int>(ev));
}
Engine_Left4Dead - это 4
Engine_Left4Dead2 - это 7
Таки код читается как if((GetEngineVersion() == Engine_Left4Dead) || true).
 

Вложения

  • изображение_2024-01-07_184632304.png
    изображение_2024-01-07_184632304.png
    6.2 КБ · Просмотры: 36
  • изображение_2024-01-07_185323538.png
    изображение_2024-01-07_185323538.png
    9.4 КБ · Просмотры: 34

☠ ÄйӃи ☠

Добрая душа
Сообщения
220
Реакции
86
  • Автор ресурса
  • #10
@☠ ÄйӃи ☠, не работает это так.
C-подобный:
public void OnPluginStart()
{
    EngineVersion ev = GetEngineVersion();
    if(ev == Engine_Left4Dead || Engine_Left4Dead2)
    {
        if(ev == Engine_Left4Dead)
        {
            PrintToServer("Игра Left 4 Dead 1 Plugin start");
        }
        else if(ev == Engine_Left4Dead2)
        {
            PrintToServer("Игра Left 4 Dead 2 Plugin start");
        }
    }
    else PrintToServer("Это не игра Left 4 Dead 1 или 2");

    PrintToServer("Игра: %i", view_as<int>(ev));
}
Engine_Left4Dead - это 4
Engine_Left4Dead2 - это 7
Таки код читается как if((GetEngineVersion() == Engine_Left4Dead) || true).

Так ну определяет же что игра l4d1 или l4d2

Что не так то ?

я в курсе что это enum EngineVersion
Engine_Left4Dead - это 4
Engine_Left4Dead2 - это 7
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Так ну определяет же что игра l4d1 или l4d2

Что не так то ?
Для CS:S должно было сработать вот это else PrintToServer("Это не игра Left 4 Dead 1 или 2");
Но не сработало.

Поэтому нужно менять
C-подобный:
    EngineVersion ev = GetEngineVersion();
    if(ev == Engine_Left4Dead || Engine_Left4Dead2)
на вот это:
C-подобный:
    EngineVersion ev = GetEngineVersion();
    if(ev == Engine_Left4Dead || ev == Engine_Left4Dead2)
 

☠ ÄйӃи ☠

Добрая душа
Сообщения
220
Реакции
86
  • Автор ресурса
  • #12
Для CS:S должно было сработать вот это else PrintToServer("Это не игра Left 4 Dead 1 или 2");
Но не сработало.

Поэтому нужно менять
C-подобный:
    EngineVersion ev = GetEngineVersion();
    if(ev == Engine_Left4Dead || Engine_Left4Dead2)
на вот это:
C-подобный:
    EngineVersion ev = GetEngineVersion();
    if(ev == Engine_Left4Dead || ev == Engine_Left4Dead2)
if((ev == Engine_Left4Dead) || (ev == Engine_Left4Dead)) т.е надо так ?


а всё понял.
 
Сверху Снизу