CFT (Захват флага) - CSS Исправление багов и очень нужна помощь)

Grey83

не пишу плагины с весны 2022
Сообщения
8,598
Реакции
5,085
@Vit_ amin, ну а вдруг? =)
Вроде пытается направлять их как всадник лошадь, ещё и шпорой их подгонять (без понятия влияют ли на ботов нажатия кнопок, прописаные в коде).
Сообщения автоматически склеены:

Кстати, глянул в конфигах координаты точек для карт: там просто мусор прописан для образца. Для трёх совершенно разных карт прописаны одни и те же координаты.
 

Vit_ amin

Добрая душа
Сообщения
1,548
Реакции
735
@Vit_ amin, ну а вдруг? =)
Вроде пытается направлять их как всадник лошадь, ещё и шпорой их подгонять (без понятия влияют ли на ботов нажатия кнопок, прописаные в коде).
Сообщения автоматически склеены:

Кстати, глянул в конфигах координаты точек для карт: там просто мусор прописан для образца. Для трёх совершенно разных карт прописаны одни и те же координаты.
Ну - без других (бесплатных) решений наверное это и "нормально"
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,598
Реакции
5,085
так

Как мне запустить расширения sdktools.ext и game.cstrike.ext на 7-ке?
Соурсмод сообщает 2 раза Точка входа в процедуру RtlPcToFileHeader не найдена в библиотеке DLL kxbase. и оба этих расширения отваливаются.
Сообщения автоматически склеены:

Ну или @DENZEL519 потести прикреплённый плагин.
Одноимённой командой плагин будет пытаться заспавнить флаг в точке куда будешь смотреть с моделькой из первого твоего сообщения.
Он должно спавнить с разными скинами и писать в чат какой скин заспавнил.
Сообщения автоматически склеены:

Интересует работоспособность кода и какой номер в сообщении какому скину будет соответствовать, если код нормально будет работать с моделькой.
 

Вложения

  • sm_flag.sp
    2 КБ · Просмотры: 30

DENZEL519

Работаю через AI !
Сообщения
490
Реакции
315
@Grey83, Работает. Номер по порядку присваивает флагу, но флаг всегда белый.
 

Вложения

  • Новый проект (1).png
    Новый проект (1).png
    525.6 КБ · Просмотры: 84

Grey83

не пишу плагины с весны 2022
Сообщения
8,598
Реакции
5,085
но флаг всегда белый.
печально

Каким образом тогда скин переключать, без редактирования самой модели (чтобы вместо 3 субмоделей у неё было 3 скина)?
Есть ли способ переключаться между «submodel» имеющимися у моделек?
 

DENZEL519

Работаю через AI !
Сообщения
490
Реакции
315
Каким образом тогда скин переключать, без редактирования самой модели (чтобы вместо 3 субмоделей у неё было 3 скина)?
Есть ли способ переключаться между «submodel» имеющимися у моделек?
В моей версии вроде как подсветка была их в зависимости от команды, для какой ставишь.
 

Test_01

Участник
Сообщения
0
Реакции
1
печально

Каким образом тогда скин переключать, без редактирования самой модели (чтобы вместо 3 субмоделей у неё было 3 скина)?
Есть ли способ переключаться между «submodel» имеющимися у моделек?
Вот можешь попробовать через "Skin"
1. Белый
2. Красный
3. Синий
 

Вложения

  • Захват флага.rar
    67.5 КБ · Просмотры: 28

Grey83

не пишу плагины с весны 2022
Сообщения
8,598
Реакции
5,085
@Test_01, глянул архив. Т.е. была переделана моделька так, что скины теперь в скинах, а не субмоделях.
Возможно должно сработать.
Вот поправленый код под эти модели (путь к модели в одном месте поправил ^_^).

@DENZEL519, можешь проверить этот код с моделью, которую прикрепил Test_01? Теперь по идее должен будет меняться скин каждый раз при спавне флага.
 

Вложения

  • sm_flag.sp
    2 КБ · Просмотры: 29
  • Буфер обмена-1.jpg
    Буфер обмена-1.jpg
    117.7 КБ · Просмотры: 83

-=|УЧЕНИК|=-

вся жизнь,сплошной цирк.
Сообщения
909
Реакции
238
@Test_01, глянул архив. Т.е. была переделана моделька так, что скины теперь в скинах, а не субмоделях.
Возможно должно сработать.
Вот поправленый код под эти модели (путь к модели в одном месте поправил ^_^).

@DENZEL519, можешь проверить этот код с моделью, которую прикрепил Test_01? Теперь по идее должен будет меняться скин каждый раз при спавне флага.
Работает
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,598
Реакции
5,085
Если что, я разобрался с проблемными расширениями на Win7.

Там нужно было всего лишь заменить через HEX-редактор внутри dll-файлов имя процедуры с RtlPcToFileHeader на Beep (в шестнадцатиричном виде заменить последовательность 52746C5063546F46696C6548656164657200 на 426565700000000000000000000000000000).

Способ решения взял вот отсюда (кстати его предложил Forlix, знакомый ник, не правда ли? ^_^):

Так что теперь смогу без посторонней помощи тестить плагины. Кстати плагин спавна флагов было первым, что я проверил. =)
Сообщения автоматически склеены:

И даже анимация теперь работает
Сообщения автоматически склеены:

Может на базах спавнить Alyx?
И на события активировать анимации. Правда на обеих базах будет одна и та же.
Можете сами попробовать как будет выглядеть (подобрал 5 более-менее подходящих к событиямб правда 3-я и 4-я отпадают из-за поворота модели).
Сообщения автоматически склеены:

Если что, она спавнится командой sm_flag 3
Сообщения автоматически склеены:

Правда тогда нужно будет ещё указывать в конфиге углы поворота (потому что обе модели будут смотреть в одну и ту же сторону).
 

Вложения

  • flags.jpg
    flags.jpg
    471.1 КБ · Просмотры: 142
  • Буфер обмена-2.jpg
    Буфер обмена-2.jpg
    528.4 КБ · Просмотры: 95
  • sm_flag.sp
    3.3 КБ · Просмотры: 22
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,598
Реакции
5,085
Блин, код плагина уже за тысячу строк перевалил (в этот момент 1074 строк и 31280 символов), а я только половину кода переделал и он всё ещё не должен работать (ещё не компилится даже).

Добавил режим паузы с оповещением игроков, что она запущена. Нужна в основном для редактирования положения базы и флагов.
Кстати, заменил права доступа с уровня смены карты, на уровень изменения конфигов. Так будет лучше, кмк.

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

NeLifeASkazka

Участник
Сообщения
137
Реакции
79
У меня такой вариант получился
Успел проверить только меню !ctf, чтобы можно было создавать флаги/базы/спавны и сохранять их
Также пока без особых эффектов

Игровая логика (CTF-мод)​

  • Флаги:
    • Создаются как prop_dynamic_override с моделью FLAG_MODEL и скином по команде (T/CT/нейтральный).
    • Подбор флага: игрок нажимает USE рядом с флагом → флаг «приклеивается» к игроку (SetParent). Печатаются оповещения: чей флаг поднят/вернут.
    • Бросок/сброс флага: при смерти/смене команды/командном действии флаг отстыковывается и телепортируется на землю по трейсу вниз.
    • Возврат флага: если свой флаг смещён с точки, игрок своей команды при касании возвращает его на исходные координаты
  • Базы (зоны сдачи флага):
    • Создаются как prop_dynamic_override с моделью BASE_MODEL и цветом по команде.
    • Сдача: игрок с чужим флагом касается базы противоположной команды → очко его команде, флаг телепортируется на «домой».
    • Победа раунда: при достижении POINTS_TO_WIN (константа, сейчас 3) инициируется завершение раунда с выигрышем команды.

Респавн и защита​

  • Таймер респавна: при смерти ставится КД 3.0. По истечении — CS_RespawnPlayer.
  • Респавн около союзников (умный телепорт):
    • С некоторым шансом (25%) плагин неиспользует механику, иначе пытается телепортировать игрока на ближайший валидный info_player_start, который:
      • Имеет союзника в радиусе MIN_DISTANCE_TO_SPAWN__TEAM (500.0),
      • Не имеет врага в радиусе MIN_DISTANCE_TO_SPAWN__ENEMY (450.0).
  • Бессмертие после спавна: GOD_TIME секунд (сейчас 10):
    • Игроку отключается урон (m_takedamage = 0), показывается центр-текст с таймером и накладывается полупрозрачная радужная подсветка (анимация цвета по синусу).
    • Сброс защиты: если игрок двигается (смена позиции) или стреляет (IN_ATTACK/IN_ATTACK2), защита сразу отключается.
    • AFK-контроль: если за GOD_TIME игрок ничего не сделал, запускается ещё TIME_TO_AFK секунд (сейчас 15) «таймер до AFK»; по истечении — перевод в наблюдатели (ChangeClientTeam(client, 1)).
  • Ограничение стрельбы при конце раунда: когда игра заканчивается, всем игрокам блокируется стрельба до начала нового раунда

Экипировка и оружие​

  • Выдача на спавне:
    • Сбрасывается инвентарь (кроме ножа), выдаются выбранные основное и пистолет, 100 брони и шлем.
    • Меню выбора оружия может авто-открываться на спавне (переключается игроком).
  • Меню оружия !guns:
    • Три экрана: главное (две категории + тумблер автопоказа), список первичек, список вторичек.
    • Выбор сохраняется в client_weapon[client][0/1]. Если игрок под «богом», замена происходит сразу (старое оружие удаляется, новое выдаётся).
  • Патроны и «награда убийце»:
    • При смерти игрока убийце:
      • Полностью восстанавливается здоровье и броня со шлемом,
      • Перезаряжается активное оружие до полного клипа (размер клипа берётся из sm_weapons_clip по classname).
  • Пустой выстрел (weapon_fire_on_empty):
    • Если обойма/магазин на 0 - перевыдает оружие с патронами

Управление точками спавна на карте​

  • При загрузке карты все info_player_terrorist, info_player_counterterrorist и info_player_start:
    • Собираются в массивы,
    • Для каждой точки создаётся подсветка-спрайт (env_sprite) разного цвета (T — красный, CT — синий, Neutral — белый),
    • Спрайты можно включать/выключать глобально (см. меню админа).
  • Поддерживаются динамическиеспавны:
    • Создание/удаление спавна по позиции,
    • Удаление всех/последнего,
    • Сохранение/загрузка в addons/sourcemod/configs/ctf.ini (структура KeyValues per-map).

Админ-меню !ctf​

  • Главное:
    • Настройка флагов / баз / спавнов,
    • Массовое удаление всего,
    • Тумблер отображения спавн-спрайтов.
  • Флаги:
    • Создать CT/T/нейтральный флаг в точке взгляда админа,
    • Удалить ближайший флаг,
    • Сохранить флаги в конфиг.
  • Базы:
    • Создать базу CT/T,
    • Удалить ближайшую,
    • Сохранить базы.
  • Спавны:
    • Создать спавн CT/T/нейтральный (нейтральный используется логикой «к ближайшему союзнику»),
    • Удалить ближайший/все/последний,
    • Сохранить спавны.

Визуал/эффекты и утилиты​

  • Спрайты над спавнами (env_sprite) с разными материалами: можно быстро визуально проверить сетку спавнов и отключить их показ.
  • Радужная подсветка «бога» (анимация RGB через синусы) + изменение альфы по оставшемуся времени/AFK-таймеру.
  • Чистка карты от оружия без владельца, чистка рагдоллов.
  • Небольшие хелперы: проверка «кнопка только что нажата», выставление задержки оружию, утилиты для KV и форматирования.

Константы/настройки (в коде)​

  • POINTS_TO_WIN = 3 — очков для победы.
  • GOD_TIME = 10 — секунд бессмертия после респавна.
  • TIME_TO_AFK = 15 — секунд до отправки в наблюдатели, если «бог» не сброшен.
  • MIN_DISTANCE_TO_SPAWN__TEAM = 500.0 — союзник должен быть в радиусе спавна для «умного» телепорта.
  • MIN_DISTANCE_TO_SPAWN__ENEMY = 450.0 — врагов в этом радиусе спавна быть не должно для «умного» телепорта.
 

Вложения

  • mod_capture_the_flag.sp
    46.9 КБ · Просмотры: 24

DENZEL519

Работаю через AI !
Сообщения
490
Реакции
315
Может на базах спавнить Alyx?
Это вообще лишнее, как по мне. Лучше сделать полноценный мод CTF и иклюды к нему, чтобы другие люди могли делать для него свои моды)
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,598
Реакции
5,085
@DENZEL519, ну форварды с событиями произошедшими с флагами я планирую добавить. Но это уже когда с большинством остальных функций разберусь.
Сегодня немного поколдовал с выводом инфы в хинт (счёт, состояние флагов, отсчёты до возвращения упавших флагов и возрождения игрока). Ну и сам возврат флага по истечению времени. Штук 11 фраз в файл перевода добавилось.

Снова как с Revival получается: тогда начал улучшать один плагин, в результате решил написать с нуля и оно в монстра на 2к строк выросло за несколько лет. =)

Вообще с анимациями было бы веселее, кмк. По ним было бы видно и без хинта что происходит. =)
Всяко лучше исходных эффектов из партиклей (которые не работали на видео, емнип).
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,598
Реакции
5,085
Я вот думаю: нужно ли в форварде CTF_OnFlagDrop() передавать ещё и причину потери (там их и не особо много: дисконнект и смерть)?
В CTF_OnFlagReturn() будет передаваться чей флаг был возвращён, кто возвратил (0 - автовозвращение по таймеру), сколько ему оставалось стоять времени до автовозврата (при автовозврате всегда 0, естественно).
В CTF_OnFlagPickup() планирую передавать какой команды это был флаг, кто подобрал и с базы ли был подборан. Но пока ещё этот форвард не реализовал, как и сам механизм подбора.
Все форварды пока имеют тип void, но для некоторых (типа CTF_OnFlagReturn() и CTF_OnFlagPickup()) имеет смысл сделать Action, возможно.
Сообщения автоматически склеены:

Может сделать возможность устанавливать нейтральные флаги, которые может захватывать любая команда? =)

Правда придётся их количество как-то ограничивать (может даже одной штукой на карту). Или сделать активацию этого флага, если игроков в командах больше определённого количества.
Думаю поможет от кемперства всей команды вокруг одного флага.
Сообщения автоматически склеены:

Надо ли делать возможность забрать флаг у союзника или передать его ему (аналогично бомбе в режиме минирования)?
Ну и делать ли возможность бросить флаг (вот в этом вроде не вижу особого смысла)?

В форварде CTF_OnFlagPickup() передаю третьим параметром (вместо типа откуда он был подобран) сколько времени оставалось до автоматического возвращения флага (-1 - флаг был захвачен с его базы).
Сообщения автоматически склеены:

Кстати, код уже разросся до 1234 строк (прикольное число вышло ^_^) и 36784 символов (с учётом комментов).
Сообщения автоматически склеены:

Вот ещё вам для посмотреть текущие файл перевода и инклюд.
 

Вложения

  • capturetheflag.inc
    1 КБ · Просмотры: 17
  • capturetheflag.phrases.txt
    2.8 КБ · Просмотры: 17
Последнее редактирование:

DENZEL519

Работаю через AI !
Сообщения
490
Реакции
315
Может сделать возможность устанавливать нейтральные флаги, которые может захватывать любая команда? =)
Это можно, так как к примеру на каких то картах флаг будет в центре карты и каждая из команды должна будет быстрее бежать до неё.
Сообщения автоматически склеены:

Надо ли делать возможность забрать флаг у союзника или передать его ему (аналогично бомбе в режиме минирования)?
Да, это предотвратит что один из игроков забрал флаг и стоит на месте как афк.
 
Сверху Снизу