Если у тебя исходник есть в pk3, должен сработатать путь типа scripts/something.acs, но это неточно. Если положить в папку ГЗДБ или в папку с редактируемой картой, сработает точно.
а можно ли выстрелить проджектайлом с определённым tid? что-то вроде A_FireCustomMissile
нашёл только A_SpawnItemEx, но он только спавнит, насколько я понял. чтобы прождектайл полетел в сторону, куда смотрит игрок, могу придумать только с помощью синусов как-нибудь это прописать
MyNameIs Можешь поэксперементировать со значениями x/y/zvelocity для spawnitemex - они задают скорость в определенном направлении, может можно как-то через это сэмитировать выстрел проджектайла (хотя наверняка придется шаманить со всякими pitch'ами)
Раз пошел диалог про firecustommissile, тоже спрошу: есть строка GAUN A 50
Мне надо, чтобы за эти 50 тиков произошел A_firecustommissile например 50 раз (по разу за каждый тик). Логично, что решение будет такое: GAUN A 1 A_firecustommissile (и зациклить это 50 раз)
но проблема в том, что в таком случае за эти 50 тиков не будет работать интерполяция модели (т.е. вместо плавного движения от одного фрейма модели к другому, все эти 50 тиков будет строго один "зависший" кадр модели)
Можно ли как-то анонимными функциями (или еще как, может через ACS) пустить A_firecustommissile (или ее аналог) параллельно с GAUN A 50 ?
firecustommissile (вместо spawnitemex) удобен тем, что он автоматом учитывает куда смотрит игрок (если игрок смотрит вниз, то выстрелит вниз, если вверх, то вверх)
Мне надо, чтобы за эти 50 тиков произошел A_firecustommissile например 50 раз (по разу за каждый тик). Логично, что решение будет такое: GAUN A 1 A_firecustommissile (и зациклить это 50 раз)
но проблема в том, что в таком случае за эти 50 тиков не будет работать интерполяция модели (т.е. вместо плавного движения от одного фрейма модели к другому, все эти 50 тиков будет строго один "зависший" кадр модели)
А что дает добавление промежуточной пустой команды анимации в длину 0 тиков?
Помогите, пожалуйста. Хочу установить HUD на DOOM, но не получается. Все моды прописываю в батник. Может какая из модификаций мешает (Project Brutality 2.03, Metal Vol 4, DOOM:ONE)? Использую GZdoom. Может нужен Zandronum? Может в батнике что-то не так прописываю ("название файла".расширение)? P.s. HUD называется Brutal Doom Basic Hud. Но на ModDB есть целых три версии: Brutal Doom Basic Hud, Brutal Doom HQ Basic Hud, Brutal Doom Basic Hud Project Brutality 2.03 fix. Какую устанавливать? По отдельности все пробовал: не получилось. Может нужно устанавливать обычный и фикс? P.s.s. Ползунок в Display Options > Screen Size стоит на 11. Но показывает совсем другой HUD. Стоит ли его перетаскивать? Заранее спасибо за помощь!
"ABCAB 1" не устроит так как все эти 50 тиков (в твоем примере 5) должен быть один и тот же фрейм А
а "AAAAA 1" не устроит так как ломает интерполяцию модели
Fantom:
А что дает добавление промежуточной пустой команды анимации в длину 0 тиков?
ломает интерполяцию делая рывки вместо плавности
Я кстати придумал, каким костылем можно реализовать то что мне надо: в оружии так и оставить как было (GAU2 A 50), а в стейтах игрока (в данном случае это стейты spawn see и pain) на каждый тик делать команду "giveinventory blablabla", а в самом инвентори прописать автоюз, и на юз прописать FireCustomMissile. Как руки дойдут, посмотрю, реализуем ли такой изврат вообще
MyNameIs:
нашёл только A_SpawnItemEx, но он только спавнит, насколько я понял. чтобы прождектайл полетел в сторону, куда смотрит игрок, могу придумать только с помощью синусов как-нибудь это прописать
как я понял, можно давать игроку предмет типа CustomInventory, в котором на use прописать A_FireCustomMissile (а в свойствах предмета сделать автоюз)
var int user_i;
states{
Spawn:
TNT1 A 1
{
for (A_SetUserVar(user_i, 0); user_i < 15; A_SetUserVar(user_i, user_i + 1))
{
//Тут пиши функцию и она выполнится за 1 тик.
}
}
}}
Один фрейм в 50 тиков слишком бросается в глаза. Это и правда коряво выглядит.
Сделай 0 тиков. А если тебе нужно именно раз в тик выполнять код, то тут ничего особо не поделаешь. Разве что ацс повесить, чтобы код выполнялся независимо от анимации актора после запуска.
Как через декорейт (ну или декорейт+acs, если одним декорейтом нельзя) наиболее адекватным способом узнать, какой iwad и какой pwad сейчас запущен?
Мое "далеко не факт что адекватное" решение:
Скрытый текст:
1) например у нас есть iwad-ы doom.wad и heretic.wad и pwad-ы hr2.wad, scythe.wad, hoc.wad и moc.wad 2) я к каждому из перечисленных вадов делаю дополнительные pk3, в которых меняю переменную в ACS 3) и в декорейт/acs коде моего мода, при необходимости узнать iwad или pwad, просто чекаю значение переменной
например я запускаю gzdoom.exe -iwad doom.wad -file hr2.wad my_mod.pk3 doom_iwad_detector.pk3 hr2_detector.pk3
где в doom_iwad_detector.pk3 прописано заполнение переменной "текущий iwad" в "doom2", а в hr2_detector.pk3 прописано заполнение переменной "текущий pwad" в "hell revealed 2"
таким образом в декорейт/acs коде в my_mod.pk3 я могу проверить значение этой переменной и узнать, какой iwad/pwad сейчас играется
Вопрос собственно в том, как это сделать проще и эффективнее?
Infernal_KoT:
ZZYZX Один фрейм в 50 тиков слишком бросается в глаза. Это и правда коряво выглядит.
В случае 3дмодели очень коряво
ZZYZX:
Да выкиньте каку и забейте на интерполяцию. В думе 35фпс.
Речь о 3д модели, в декорейте это 1 фрейм в 50 тиков, а при игре все эти 50 тиков будет плавная анимация модели с переходом от одного ее состояния в другое (я не даю гарантии, что модель будет рендериться с большей чем 35фпс частотой (специально это не проверял), но все равно даже 35фпс это лучше чем 0.7фпс)
Я даже больше скажу, недавно импортил модель лича в еретике, и когда сравнивал, как одновременно на экране бегает по уровню спрайт и модель, просто глаза начали болеть от того, как НЕплавно движется спрайт/модель по причине LICH A 4 A_Chase. После того, как увидел как плавно движется/поворачивается при LICH A 1 A_Chase, 4тиковые версии (в том числе и стандартные спрайты) уже реально напрягать начинают
alekv:
Скрытый текст:
var int user_i; states{ Spawn: TNT1 A 1 { for (A_SetUserVar(user_i, 0); user_i < 15; A_SetUserVar(user_i, user_i + 1)) { //Тут пиши функцию и она выполнится за 1 тик. } } }}
не совсем понял, как это решит мою проблему, описанную выше
ZZYZX:
Разве что ацс повесить, чтобы код выполнялся независимо от анимации актора после запуска.
А как через ACS стрелять проджектайлами, чтобы не пришлось париться с angle и pitch ?
Infernal_KoT:
Можно ещё с A_GunFlash пошаманить.
его откуда угодно можно вызывать, не обязательно из Fire/AltFire стейтов?