Код с непрозрачностью, применил только на Soul сфере. Остальные пока не трогал. Со скоростью передвижения сфер, более менее понятно, вполне устраивает с 6-кой, пока.
Глянул твой мод:
1) 6 и 36 у меня ведут себя одинаково
2) У тебя в моде какого-то черта старая версия ACS скрипта, которая просто не умела в параметр 6 (она его вообще игнорила), и вращала сферу к игроку раз в 6 тиков
Вот какой скрипт в твоем моде:
Скрытый текст:
script "FaceAngleAndPitchToPlayer" (void)
{
int distx = GetActorX(PlayerTID)-GetActorX(0);
int disty = GetActorY(PlayerTID)-GetActorY(0);
int distz = GetActorZ(PlayerTID)-GetActorZ(0);
Я взял, заменил у тебя в TEST.ACS на корректную версию скрипта (не забыв запустить батник для перекомпиляции файла TEST.O ), и все стало плавно при значении 6 в декорейте
На всякий случай, выкладываю тебе то, что ты должен кинуть себе в папку ACS, заменяя те файлы что там есть: ACS 6 36 FIX
Как я могу быть внимательней, если я не шарю в ACS? Только что от тебя узнал, что был - хороший код, стал - плохим. Немало удивлён конечно, где это я плохой подцепил?
P.S. Только что проверил - у меня то же самое. Небольшие подёргивания. Ну да ладно, это не критично.
Как быстро обучиться и ПОНЯТЬ этот ACS скрипт? Не подскажешь? Гайд выше был представлен, он у меня есть, но мне кажется он не для начинающих, а тех, кто уже понимает что к чему.
Как я могу быть внимательней, если я не шарю в ACS?
Как минимум - старайся сделать так, чтобы версия файла TEST.ACS, которую я тебе кидал 2 года назад, на заменила собою версию файла TEST.ACS, которую я тебе кидал 1 год назад
aivar242:
Только что от тебя узнал, что был - хороший код, стал - плохим. Немало удивлён конечно, где это я плохой подцепил?
"Плохой" код - это код, который был до того момента, как у тебя начались проблемы с подергиванием сферы еще около года назад (время говорю от балды, точное лень смотреть). "Хороший" код - это код, которым я обновил тебе "плохой" код 2 года назад, чтобы твои сферы перестали дергаться
Каким образом получилось так, что ты заменил новую версию кода старой версией - одному аллаху известно
aivar242:
Только что проверил - у меня то же самое. Небольшие подёргивания. Ну да ладно, это не критично.
Есть мнение, что эти небольшие подергивания не вылечить (тобишь твои глаза видят разницу в 35 фпс и 60 фпс, а сфера вращается за тобой в 35 фпс)
Мой код вращает сферу к игроку не чаще чем в 35 фпс (как сделать чаще, я не знаю)
И да - попробуй декорейт код заменить на такой, может поможет:
Скрытый текст:
Actor Soulsphere_Sphere : Soulsphere replaces Soulsphere
{
Renderstyle Translucent
alpha 0.3
+BRIGHT //Cпорная нужность этого флага.(проверить) Если он не применён, то скорей всего он всегда так и так работает.
States
{
Spawn:
SOUL A 0
SOUL A 1 //A_SpawnItemEx("Soulsphere_Face", 0, 0, 0, 0,0,0, angle, SXF_NOCHECKPOSITION)
SOUL A 0 A_SpawnItemEx("Soulsphere_Face", 0, 0, 0, 0,0,0, angle, SXF_NOCHECKPOSITION)
Idle:
SOUL ABCDCB 6 ACS_NamedExecuteWithResult("FaceAngleAndPitchToPlayer", 6)
Loop
}
}
Actor Soulsphere_Face : CustomInventory
{
+BRIGHT //Cпорная нужность этого флага.(проверить) Если он не применён, то скорей всего он всегда так и так работает.
States
{
Spawn:
MUS1 ABCDCB 6 ACS_NamedExecuteWithResult("FaceAngleAndPitchToPlayer", 6)
Loop
PickUp:
TNT1 A 0 A_Log("")
Stop
}
}
Я там немного подправил стейт Spawn для Soulsphere_Sphere чтобы синхронизировать запуск ACS в обоих акторах
aivar242:
Как быстро обучиться и ПОНЯТЬ этот ACS скрипт? Не подскажешь? Гайд выше был представлен, он у меня есть, но мне кажется он не для начинающих, а тех, кто уже понимает что к чему.
1) Задай этот вопрос здесь 2) Касательно скрипта - я потом, как будет желание и время, попробую рассказать что он делает (ну рассказать так чтобы было понятно), хотя задача непростая, так как ACS сложнее декорейта
Касательно скрипта - я потом, как будет желание и время, попробую рассказать что он делает (ну рассказать так чтобы было понятно), хотя задача непростая, так как ACS сложнее декорейта
Cудя из названия - ACS (Action Code Scrypt) это скрипт на выполнение какой-то команды, я правильно понимаю? Например, сидит Кибер в клетке и этот скрипт может открыть её, вупустив Кибера, хотя в оригинальной игре это не возможно. Такое пояснение было в гайде.
DOOMFOREVER Ничего сложного. Связаны так же как и другие модели, тех же монстров. Находишь нужного актора оружия в Decorate порта и смотришь, порядок фреймов. Те же фреймы, указываешь анимированой 3D модели оружия в файле Modeldef. Каждой позиции анимации 3D модели оружия, свой фрейм. Всё так же как и со спрайтами.
Честно сказать я как раз на этой проблеме сейчас сижу. Подключаю в одном моде 3D модели оружия, но виден только 1-ый фрейм с 3D моделью, остальные показываются как оригинальные спрайты. Код прописан правильно - не знаю что делать? Главное что с более старой версии этого мода, все модели оружия работают правильно. Хм.
DOOMFOREVER Да, именно так - за место спрайта, делается модель. Прописывать просто. Создаёшь обычный мод, то есть архив .pk3, в нём, папка с 3D моделями рук со стволами. Рядом с папкой с моделями создаёшь файл Modeldef.txt, в который вводишь параметры моделей рук с оружием. Например:
Скрытый текст:
Model Pistol
{
Path "Models\weapons\pistol"
Model 0 "pistol_h.md3"
Skin 0 "pistol_h.png"
Scale 1.0 1.0 1.0
FrameIndex LUGR A 0 0
FrameIndex LUGR B 0 1
FrameIndex LUGR C 0 2
FrameIndex LUGR D 0 3
FrameIndex LUGR E 0 4
}
Надеюсь основы Декорейт и Моделдеф ты знаешь? Если нет, то тут уже сложнее.
DOOMFOREVER Да. Нужно делать анимацию, каждого фрейма 3D модели, полностью соответствующую анимации спрайтовым фреймам. 1. Пушка в режиме котовности А - фрейм. 2. Пушка стреляет, идёт отдача с пламенем у ствола B - фрейм. и.т.д. 3D модель должна иметь эти кадры анимации. Если её прокручиваешь, от 1 фрейма до 5-го, должны проигрываться весь цикл выстрела, полностью повторяющий спрайтовую анимацию выстрела.
Там где-то 5 кадров (фреймов) анимации получается, у пистолета например. Значит надо полностью повторять их в 3D реализации. Не знаю как понятней объяснить.
Я кое что сейчас делаю как раз, по этой теме. Скоро выкачу видос.
Там где-то 5 кадров (фреймов) анимации получается, у пистолета например. Значит надо полностью повторять их в 3D реализации. Не знаю как понятней объяснить.
Я кое что сейчас делаю как раз, по этой теме. Скоро выкачу видос.
Это я понял , но вот почему у меня не получается сделать кнопку настенную , всего 2 модели и они появляются одновременно , почему?
Скрытый текст:
Model Knop// Name of actor in DECORATE
{
Path "models/decoration"
Model 0 "Knop.md3"
Model 1 "Knop2.md3"
Skin 0 "terrainbm.png"
Skin 1 "terrainbm.png"
Scale 0.06 0.15 0.12
ZOffset 0.0//14
FrameIndex ELEC A 0 0
FrameIndex ELEF A 1 0
}
Actor knop 10998
{
Health 1
Mass 0
Speed 0
PainChance 0
Monster
+BUMPSPECIAL
+USESPECIAL
+VULNERABLE
+nogravity
+SOLID
+friendly
+SHOOTABLE
+NOBLOOD
+friendly
Radius 4
Height 5
states
{
spawn:
ELEC A -1
stop
death:
ELEF A 1
loop
}
}
всего 2 модели и они появляются одновременно , почему?
Возможно потому, что - Knop 1 и Knop 2, надо прописывать под разными акторами, например - Knop_on и Knop_off. У тебя получается, что обе субмодели, находятся под одним актором Knop. Попробуй, может получится. Обратись к TheLeо, он точно поможет. Я сам начинающий в модинге, мало что знаю, а ACS - так вообще никак.
Это я понял , но вот почему у меня не получается сделать кнопку настенную , всего 2 модели и они появляются одновременно , почему?
декорейт не меняй, в моделдеф сделай так:
Скрытый текст:
Model Knop// Name of actor in DECORATE
{
Path "models/decoration"
Model 0 "Knop.md3"
Skin 0 "terrainbm.png"
Scale 0.06 0.15 0.12
ZOffset 0.0//14
FrameIndex ELEC A 0 0
}
Model Knop// Name of actor in DECORATE
{
Path "models/decoration"
Model 0 "Knop2.md3"
Skin 0 "terrainbm.png"
Scale 0.06 0.15 0.12
ZOffset 0.0//14
FrameIndex ELEF A 0 0
}
Я не в курсе, но задай этот вопрос здесь, там думаю найдется тот кто шарит
Не думаю, что имеет смысл спаммить вопрос по темам (даже если изначально выбрал не самую удачную) - форум маленький и все новые сообщения и так видны всем.
Там же в первом сообщении есть демонстрационный вад, в котором изображение пистолета заменяется на анимированную плазмапушку. Оказывается, в GLDEFS можно писать шейдеры, вот новость...
https://zdoom.org/wiki/GLDEFS
Правда так и не понял функционального отличия Skin от SurfaceSkin, возможно просто второе имеет больше опций, чем первое.
Упёрся опять в одну проблему. Хочу заставить двигаться облака (SKY1) в Doom 2, в Plutonia, а в TNT - нет. Понял что это делается через Mapinfo, только что и где вбивать, не понял. Нужно чтобы можно было отдельно для каждой из игр, настраивать свои параметры, например - скорость вращения.
Скажу сразу, что я заставил двигаться и это работает, но вот проблема: - Doom 2, это тот же TNT и это тот же Plutonia. Облака двигаются и в Doom2 и в Plutonia и в TNT. В TNT мне не надо чтобы они двигались, потому что там горы.
The Leo - там ничего сложного, будем разбираться вместе, это пригодится.
Вообщем создал файл Mapinfo.txt и кинул его в свой мод .pk3.
Записи сделаны до 11 уровня, так как с 12 начинается другой эпизод Doom2 с другим небом, которое не должно двигаться, и до конца игры. 0,5 - скорость движения облаков. Этот код работает в Doom2, также в Plutonia, также в TNT. Как сделать для каждой игры независимый код, со своей настройкой скорости?
Строка music, добавлена, потому что без неё, пропадает музыка в doom2; Plutonia ; TNT.
The Leo - Стоковый код можно подсмотреть в файле gzdoom.pk3, в папке "mapinfo" doom2.txt, в корне порта GZDoom.
Как сделать для каждой игры независимый код, со своей настройкой скорости?
Точно так же как ты через конфиг через разделы "tnt.autoload" делал разные паки текстур для плутонии и тнт: сделай 4 разных (или сколько их там у тебя) mapinfo, каждый кинь в свой pk3, и подключай для конкретных игр только требуемый pk3
theleo_ua Понял. Немного геморойно это, но работает. Наверно это еднственный надёжный вариант приоритета, в GZDoom. Самое главное, использовать максимально не нагружаемые методы, на порт. Один к одному прикладывается, - то подгрузить, это, и порт перегружен.
Добавлено спустя 1 день 11 часов 10 минут 17 секунд:
theleo_ua Есть ещё важный вопросик, вот думаю, как его ришить... Вообщем, 3D модели ящиков с ракетными снарядами, в некоторый местах накладываются друг на друга. Может есть идеи, как это можно решить?