Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Вопросы по переносу ресурсов из других портов в GZDoom Пред.  1, 2, 3 ... 8, 9, 10 ... 21, 22, 23  След.
   Список разделов - Местечко мапперов и моддеров - Вопросы по переносу ресурсов из других портов в GZDoomОтветить
АвторСообщение
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №161 Отправлено: 23.10.16 20:41:32
theleo_ua

Я немного не понимаю - строка "ACTOR BurningBarrel_Model : BurningBarrel replaces BurningBarrel //Fire example" - зачем заменять и так прописаную в Modeldef бочку BurningBarrel? Ведь огонь - это отдельный актор и он просто должен приложиться к модели.

Дело в том, что если использовать замену, то всё работает, но при прохождении возле бочки и мимо неё, при развороте вижу - что огонь на бочках пропал :0
theleo_ua
= Colonel =
Next rank: - Commissar - after 258 points
4632

Doom Rate: 1.81

Posts quality: +997
Ссылка на пост №162 Отправлено: 24.10.16 01:00:20
aivar242:
Я немного не понимаю - строка "ACTOR BurningBarrel_Model : BurningBarrel replaces BurningBarrel //Fire example" - зачем заменять и так прописаную в Modeldef бочку BurningBarrel? Ведь огонь - это отдельный актор и он просто должен приложиться к модели.


Есть разные способы прикладывания актора А (например огня) к актору Б (например бочке), и я выбрал метод "переопределить актор А, дописав туда строку TNT1 A 0 ACS_NamedExecuteWithResult("SpawnItemGlitter", 5) ", как наиболее удобный для меня (дело в том, что в моем моде куча разных огней (и не только огней), и мне удобно через такую строку указывать параметрами, какой я хочу огонь (и огонь ли я хочу) )

Если тебе такой способ не нравится, изучи декорейт/ACS и реализуй свои методы прикладывания акторов А к акторам Б (конкретно с такими вопросами "как приложить актор-спавнилку А к неподвижному актору-декору Б" обращайся в эту тему)


Другая причина, по которой я юзаю такой способ, это оптимизация: если бочка определяет, что игрок ее не видит, то огонь перестает спавниться (на карте, где много таких бочек, если отключить такую оптимизацию, будут тормоза). Так вот: чтобы такая оптимизация работала, придется переопределять актор бочки и дописывать туда новые строки кода, связанные с этим (что я и сделал собственно в моем моде, и как пример кинул твоей бочке тоже)


Третья причина в том, что мои спавнилки огня динамичные: проявляется это в том, что если такие бочки будут стоять на движущейся вверх/вниз или влево/вправо платформе, то огонь будет двигаться вслед за ними (без переопределения акторов это тоже геморно реализовывать)

aivar242:
Дело в том, что если использовать замену, то всё работает, но при прохождении возле бочки и мимо неё, при развороте вижу - что огонь на бочках пропал :0


видео запиши, и укажи, на каких таймингах и на что конкретно обращать внимание

Рейтинг сообщения: +1, отметил(и): VladGuardian
3 1
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №163 Отправлено: 24.10.16 01:51:11
И вообще - в каких случаях происходит, что проходишь мимо Актора? Где кроется проблема?

Ещё помучаюсь сам. Поприкидываю варианты. Один уже придумал, довольно хитрый. - Например в Декорейте пишем спрайт фреймы и для первого и для воторого акторов, то есть ABCDEF. В моделдефе соответственно DEF, только для BurningBarrel, а потом просто коментируем первого Актора в Декорейт ABC и работает только второй Актор DEF, то есть BurningBarrel, что и требуется. Главное что не нарушается твой код с огнём и он не пропадает. Ну надо ещё обкатать этот метод и попробовать найти недостатки.

По поводу прожорливости ресурсов, могу сказать что даже спрайты в Doom 2 level 23, тормозят порт довольно сильно. Скорее всего это присходит, потому что у меня включен свет, на подсветку объектов. Жрёт - просто много. Я как его включил, так у меня сразу упала производительность на 10-15fps.
theleo_ua
= Colonel =
Next rank: - Commissar - after 258 points
4632

Doom Rate: 1.81

Posts quality: +997
Ссылка на пост №164 Отправлено: 24.10.16 02:05:51
aivar242:
И вообще - в каких случаях происходит, что проходишь мимо Актора? Где кроется проблема?


не понял вопроса

Рейтинг сообщения: +1, отметил(и): VladGuardian
3 1
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №165 Отправлено: 24.10.16 06:56:27
theleo_ua

Имеется ввиду, что я прохожу сквозь Burning Barrel, то есть марин не упирается в неё, хотя отображается она как надо - и пламя и бочка и лайт-спот на месте из Lighting.pk3. Блин, не думал что огненная бочка доставит столько проблем. Видел что всё работает и пламя нормальное. Надо было только заменить Explosive Barrel на Burning Barrel модель и вот тут возникли проблемы.
Бошка уже пухнет. Не понимаю почему, если делаю всё как у тебя - то есть в коде, пропадает Лайт-Спот под бочкой, который должен быть, благодаря Lighting.pk3.

Твой код в Decorate:

Скрытый текст:

ACTOR BurningBarrel_Model: ExplosiveBarrel replaces ExplosiveBarrel
{

Var Int User_GlitterIsSpawned;
Var Int User_Visible;

+LOOKALLAROUND
+SEEINVISIBLE

States
{
Spawn:
TNT1 A 1
TNT1 A 0 ACS_NamedExecuteWithResult("SpawnItemGlitter", 5)
Goto SpawnBasic
SpawnBasic:
FCAN A 0 A_ClearTarget
FCAN A 0 A_Look
FCAN A 0 A_SetUserVar("User_Visible", 0) // if A_Look didn't jump to See (and as such set user_visible to 1)
FCAN ABC 4 Bright
FCAN C 0 A_Look
FCAN C 0 A_SetUserVar("User_Visible", 0) // if A_Look didn't jump to See (and as such set user_visible to 1)
Loop
See:
FCAN A 0 A_SetUserVar("User_Visible", 1)
FCAN ABC 4
Goto SpawnBasic
}
}



С этим кодом пропадает Лайт-Спот под бочкой. Если я убираю в первой строчке "_Model: ExplosiveBarrel replaces ExplosiveBarrel" оставляя только "ACTOR BurningBarrel и то же Modeldef'e, - то всё прекрасно, с моделью всё как надо и Спот-Лайт есть. Но вот беда, Марин проходит сквозь модель! Что делать ума не приложу.

Вообщем разобрался. Там ещё у меня какая-то канитель пошла со смигиванием бочки (заменялись 2 актора между собой, хотя определён только один). Удалил первый тестовый порт, закинул свежий и наработанные ресурсы в него, заработало без смигиваний. Поковырялся в коде, настроил по своему, вроде пашет нормально. С ГОРЯЩЕЙ БОЧКОЙ вообщем всё пока. Только пламя надо в бок повернуть.
theleo_ua
= Colonel =
Next rank: - Commissar - after 258 points
4632

Doom Rate: 1.81

Posts quality: +997
Ссылка на пост №166 Отправлено: 25.10.16 01:19:47
Вот моя версия твоего мода, где никаких проблем нет: https://drive.google.com/file/d/0BygbyP4_qEiTZ1p6cnZrQk9BWDQ/view?usp=sharing

aivar242:
Не понимаю почему, если делаю всё как у тебя - то есть в коде, пропадает Лайт-Спот под бочкой, который должен быть, благодаря Lighting.pk3.


Это потому, что в Lights.pk3 код освещения бочки такой:

Скрытый текст:

object BurningBarrel
{
frame FCAN { light FIREBARREL }
}



А так как мы в декорейте "переименовываем" бочку на такую:

Скрытый текст:

ACTOR BurningBarrel_Model: BurningBarrel replaces BurningBarrel



то надо создать файл GLDEFS (или дописать в текущий, если такой файл уже есть) и вписать туда следующее:

Скрытый текст:

object BurningBarrel_Model
{
frame FCAN { light FIREBARREL }
}



т.е. файл GLDEFS для обеих бочек будет такой:

Скрытый текст:

object ExplosiveBarrel_Model
{
frame BAR1 { light BARREL }

frame BEXPC { light ROCKET_X1 }
frame BEXPD { light ROCKET_X2 }
frame BEXPE { light ROCKET_X3 }
}

object BurningBarrel_Model
{
frame FCAN { light FIREBARREL }
}



Тогда обе бочки вновь станут с освещением

aivar242:
С этим кодом пропадает Лайт-Спот под бочкой. Если я убираю в первой строчке "_Model: ExplosiveBarrel replaces ExplosiveBarrel" оставляя только "ACTOR BurningBarrel и то же Modeldef'e, - то всё прекрасно, с моделью всё как надо и Спот-Лайт есть. Но вот беда, Марин проходит сквозь модель! Что делать ума не приложу.


Настоятельно НЕ рекомендую пользоваться быдлокодом в стиле "ACTOR BurningBarrel" (здесь я имею в виду, что адекватный код будет "ACTOR BurningBarrel_Model: BurningBarrel replaces BurningBarrel")

В последний раз рассказываю тебе, почему "ACTOR BurningBarrel" это быдлокод, который создает проблемы, а тот, кто так пишет, сам себе злобный буратино. Если снова будут вопросы в стиле "я не хочу писать [ACTOR BurningBarrel_Model: BurningBarrel replaces BurningBarrel], расскажи как сделать через [ACTOR BurningBarrel]", то буду их игнорировать.

Поехали:

Скрытый текст:


Существует 2 типа ситуаций, когда мы создаем актора в декорейте:

1) Мы создаем актора с нуля
2) Мы хотим изменить уже существующий

В первом случае у нас должны выполняться следующие условия:
Условие 1: актора с таким именем не должно быть в здуме, а также в тех вадах/модах, которые будут подключаться к гоззе вместе с нашим модом (например перед нашим модом)
Условие 2: актор должен быть расписан в декорейте полностью (имеется в виду декорейт нашего мода)

Если первое условие не выполняется (такой актор уже есть), то мы:
- либо должны придумать нашему актору другое имя (такое, которое не встречается в здуме и не будет конфликтовать с уже существующими акторами)
- либо должны унаследовать уже существующего актора (либо по схеме "ACTOR новый актор: существующий актор" либо по схеме "ACTOR новый актор: существующий актор replaces существующий актор" либо по схеме "ACTOR новый актор: существующий актор А replaces существующий актор Б")

Если же мы всего этого не выполним, то у нас в лучшем случае появится гневное сообщение от графа в консоли "обнаружен быдлокод, у вас два раза дефайнится актор с одним и тем же именем, плохой моддер, атата по попе", а в худшем возникнут проблемы (как такие как что ты писал выше так и другие)

А если второе условие не выполняется (актор расписан только частично (например, код задумывался так, что актор наследуется из существующего, но ссзб моддер пытается актора с таким кодом сделать с нуля) ), то мы:
- либо должны найти на здум вики код оригинального актора и скопипастить его нашему актору (причем скопипастить не полностью)
- либо должны унаследовать уже существующего актора (либо по схеме "ACTOR новый актор: существующий актор" либо по схеме "ACTOR новый актор: существующий актор replaces существующий актор" либо по схеме "ACTOR новый актор: существующий актор А replaces существующий актор Б")

Если же мы всего этого не выполним, то у нас в лучшем случае начнутся проблемы типа "игрок проходит сквозь бочку", а в худшем сломаются и другие нюансы, а может даже начнутся тормоза или даже будут краши гоззы




Теперь рассмотрим эту логику на твоем примере:

Скрытый текст:


ты хочешь написать строку ACTOR BurningBarrel

А теперь берем, и заходим на здум вики, и что там видим? Правильно, актор с таким именем уже есть: http://zdoom.org/wiki/Classes:BurningBarrel

Логично, что очумевшая от такой несправедливости гозза, бегом сообщит нам о том, что актор BurningBarrel определяется несколько раз, и это надо починить

Какими способами это можно починить? Как минимум следующими:

Способ раз: вместо "ACTOR BurningBarrel" мы напишем "ACTOR BurningBarrel_aivar242" или "ACTOR BurningBarrel_model". Так как таких акторов в самом здуме нет, то никаких конфликтов не возникнет и все будет работать как надо

Способ два: вместо "ACTOR BurningBarrel" мы напишем "ACTOR BurningBarrel_Model: BurningBarrel replaces BurningBarrel". Так как актора BurningBarrel_Model в самом здуме нет, то никаких конфликтов не возникнет и все будет работать как надо

В чем отличие первого способа от второго? В том, что первый способ просто создает нашего актора "в небесах", и чтобы он материализовался с небес на землю в игру, придется его спавнить (какие есть способы спавна таких акторов, я уже писал несколько страниц назад), а второй способ заменяет все существующие здумные горящие бочки (которые BurningBarrel) на нашу новую переопределенную бочку (BurningBarrel_Model), т.е. нам не нужно париться, как мы будем спавнить бочку в игре, гозза все сделает за нас, заменив все горящие бочки на нашу из декорейта. Еще одно важное отличие первого способа от второго читай дальше (и это отличие зачастую заставит тебя отказаться от первого способа во имя безглючности и справедливости)


Но это еще не все. Как я тебе писал несколькими страницами ранее, когда ты наследуешь одного актора из другого, то не обязательно писать все его параметры и состояния. Например если актор был такой:

Скрытый текст:

ACTOR горящая_бочка
{

Параметры:

возможность игроку проходить сквозь нее = отсутствует

Состояния:
{
появление:
блаблабла
смерть:
бла бла бла
}

}



и я захотел его переопределить вот так:

Скрытый текст:

ACTOR горящая_бочка_новая: горящая_бочка заменяющая горящая_бочка
{
Состояния:
{
смерть:
бла бла бла
}

}



То при такой строке:
ACTOR горящая_бочка_новая: горящая_бочка заменяющая горящая_бочка

у нас все будет работать как надо

А при такой строке:
ACTOR горящая_бочка

у нас будут проблемы, что игрок проходит сквозь бочку, так как в коде

Скрытый текст:

ACTOR горящая_бочка
{
Состояния:
{
смерть:
бла бла бла
}

}



нет параметра "запрет игроку проходить сквозь этого актора" и нет состояния "появление" (логично, что появятся проблемы прохождения игроком сквозь бочку)





Поэтому, когда я пишу тебе, чтобы ты заменил
ACTOR BurningBarrel
на
ACTOR BurningBarrel_Model: BurningBarrel replaces BurningBarrel

то в следующий раз вместо того, чтобы игнорировать этот совет и делать по своему (оставить "ACTOR BurningBarrel" и задавать вопросы "а почему проблемы?"), прислушайся к этому совету, и либо замени
ACTOR BurningBarrel
на
ACTOR BurningBarrel_Model: BurningBarrel replaces BurningBarrel

либо просто выдумай новое имя актору, например так:
ACTOR BurningBarrel_Model
или
ACTOR BurningBarrel_aivar242
(но в таком случае учти, что раз твой актор, с точки зрения кода, не наследует существующего, а написан с нуля, то надо скопипастить весь важный существующий код в наш актор, а так как скорее всего ты не знаешь, какой код придется копипастить, а какой нет, то просто воспользуйся способом наследования "ACTOR BurningBarrel_Model: BurningBarrel replaces BurningBarrel" и не парь другим мозг )

И не повторяй этой ошибки в будущем

З.Ы.

aivar242:
Твой код в Decorate:

Скрытый текст:

ACTOR BurningBarrel_Model: ExplosiveBarrel replaces ExplosiveBarrel


это не мой код в декорейт. Мой код был таким:

ACTOR BurningBarrel_Model: BurningBarrel replaces BurningBarrel

А почему ты его захотел поменять на
ACTOR BurningBarrel_Model: ExplosiveBarrel replaces ExplosiveBarrel
одному богу известно

Рейтинг сообщения: +1, отметил(и): VladGuardian
3 1
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №167 Отправлено: 25.10.16 01:56:19
Cледующий актор - Подсвечник "Candlestick". Можно ему пламя приделать, а то у меня подсвечник 3D, а пламя спрайтом сделано.

theleo_ua

Я же в конце прошлого комента написал, что разобрался.

Проблема была в том, что я не думал, что пламя - это актор, а думал что это генератор партиклей, который не назначается как актор, а просто приставляется к модели бочки без огня, создаваемый кодами Hexen Generator и тому подобными. Если делать как надо, то есть - BurningBarrel replaces BurningBarrel, то пропадает свет. Поэтому я и парился с именем BurningBarrel, чтобы сохранить свет и сделать бочку не проходной. Есессно это у меня не получалось.
Начал тщательно разбираться в коде, переосмысливая его и ты не поверишь - сам дошёл до файла GLDefs и поменял и дописал строчки для света. Всё так, как ты описал выше. Сейчас всё работает и бочка и свет.

По поводу подсвечника и торчей... Может ты мне объяснишь принцип кода для пламени? Я так понимаю, что сейчас все генераторы что надо у меня есть, только надо вписывать акторов с параметрами для каждого актора, имеющего пламя. Я мог бы всё это сам сделать, только не знаю с чего начать. На данный момент интересует подсвечник.
theleo_ua
= Colonel =
Next rank: - Commissar - after 258 points
4632

Doom Rate: 1.81

Posts quality: +997
Ссылка на пост №168 Отправлено: 25.10.16 03:39:24
aivar242:
Я же в конце прошлого комента написал, что разобрался.


Скрытый текст:



Тот факт, что ты отписал словосочетание "я разобрался", ничего не значит. Так как я, с одной стороны, не в первый раз уже вижу, что ты любишь делать не так как тебе советуют, а по своему, а с другой стороны, судя по последним 10 комментариям у тебя возникает много проблем совершенно на пустом месте, то мне важно, чтобы таких проблем больше не возникало, соответственно надо чтобы ты не "якобы разобрался, продолжая наследовать горящую бочку с обычной и думая что это правильно", а гарантированно понял, что делать можно, а чего делать нельзя. Поэтому, если вдруг ты не читал мой предыдущий комментарий по причине того, что ты якобы разобрался, то внимательно перечитай его. Ты должен не просто "разобраться, думая что разобрался, когда на самом деле нет", а понять как работает этот механизм на самом деле.

Поэтому, если похожие проблемы возникнут через 5-10 страниц этой темы, не удивляйся, что я кину ссылку на текущий комментарий со словами "вот видишь, ты думал, что разобрался, а на самом деле нет, следовательно мой комментарий был написан не зря".

aivar242:
Проблема была в том, что я не думал, что пламя - это актор, а думал что это генератор партиклей, который не назначается как актор, а просто приставляется к модели бочки без огня, создаваемый кодами Hexen Generator и тому подобными. Если делать как надо, то есть - BurningBarrel replaces BurningBarrel, то пропадает свет. Поэтому я и парился с именем BurningBarrel, чтобы сохранить свет и сделать бочку не проходной. Есессно это у меня не получалось.
Начал тщательно разбираться в коде, переосмысливая его и ты не поверишь - сам дошёл до файла GLDefs и поменял и дописал строчки для света. Всё так, как ты описал выше. Сейчас всё работает и бочка и свет.


Скрытый текст:


сначала твой вопрос был следующий:

aivar242:
Я немного не понимаю - строка "ACTOR BurningBarrel_Model : BurningBarrel replaces BurningBarrel //Fire example" - зачем заменять и так прописаную в Modeldef бочку BurningBarrel? Ведь огонь - это отдельный актор и он просто должен приложиться к модели.

Дело в том, что если использовать замену, то всё работает, но при прохождении возле бочки и мимо неё, при развороте вижу - что огонь на бочках пропал :0


ни о каком свете там и речи не шло. Я тебе дал ответ, из которого ясно, что надо юзать строку с BurningBarrel replaces BurningBarrel и не парить мозг. Ты данного совета не послушал, и продолжил использовать неправильный код, жалуясь на проблемы:

aivar242:
Надо было только заменить Explosive Barrel на Burning Barrel модель и вот тут возникли проблемы.


это одна из ошибок - акторы разные, и смешивать их не стоит: мухи (Explosive Barrel) отдельно, котлеты (Burning Barrel) отдельно

aivar242:
И вообще - в каких случаях происходит, что проходишь мимо Актора? Где кроется проблема?


aivar242:
Имеется ввиду, что я прохожу сквозь Burning Barrel, то есть марин не упирается в неё, хотя отображается она как надо


и только на этом шаге ты уже отписал про свет:

aivar242:
пропадает Лайт-Спот под бочкой, который должен быть, благодаря Lighting.pk3.


Если бы ты отписал про свет несколько комментариев назад, то другое дело, но как видишь, у тебя возникло куча левых проблем и как следствие лишних комментариев, которых не было бы, если бы ты изначально все сделал как я говорил



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

Меня устроит такой вариант, когда на мой совет "юзай строку А" ты сразу отпишешь "а почему нельзя юзать строку Б", и на мой ответ "строку Б нельзя юзать потому что В", отпишешь "если я юзаю строку А как ты советуешь, то появляется проблема Г, не подскажешь, как ее решить?"

Вот такой стиль будет максимально эффективным, так как при таком стиле ты бы вот в этом комментарии уже отписал "при строке с replaces пропадает свет", и я уже в следующем сказал бы как это лечить, и всё, никаких дополнительных проблем пробегания сквозь бочки и прочих не было бы



Т.е. мне мало того факта, что ты:

aivar242:
разобрался с бочкой


Мне нужно чтобы ты разобрался не только в том, как работает декорейт в данном аспекте, но в и том, как перестать игнорировать важные мои советы (и чем это грозит)


Надеюсь, что это все понятно и мы больше не будем возвращаться к теме "как правильно следовать чужим советам и как правильно задавать вопросы перед тем как хочется не последовать чужому совету", а сосредоточимся конкретно на моде и моделях

Поехали по моду и моделям:

aivar242:
По поводу подсвечника и торчей... Может ты мне объяснишь принцип кода для пламени? Я так понимаю, что сейчас все генераторы что надо у меня есть, только надо вписывать акторов с параметрами для каждого актора, имеющего пламя. Я мог бы всё это сам сделать, только не знаю с чего начать. На данный момент интересует подсвечник.


Есть простой способ и сложный.

Простой - это я постепенно буду рассказывать "сделай то, добавь то", и у тебя по итогу все будет работать и будет примерное понимание как это все работает.

Сложный - это я попробую объяснить полностью как это все работает. Достоинство - у тебя будет полное понимание как это работает. Недостаток - комментариев понадобится как минимум 10 (а скорее всего больше), и тебе придется напрягать мозг чтобы пытаться понять написанное

Какой способ выберем?

Рейтинг сообщения: +1, отметил(и): VladGuardian
3 1
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №169 Отправлено: 25.10.16 21:06:53
Не буду оригинален - Простой. По ходу дела я уже сам вкурю что надо.
theleo_ua
= Colonel =
Next rank: - Commissar - after 258 points
4632

Doom Rate: 1.81

Posts quality: +997
Ссылка на пост №170 Отправлено: 27.10.16 18:27:51
Ок, начнем: кинь свой моделдеф код для Candlestick, а также его декорейт код (в случае если ты переопределял его декорейт код)
3 1
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №171 Отправлено: 28.10.16 06:30:11
Вот код в Modeldef:

Скрытый текст:

Model Candlestick
{
Path "MD\Candlestick"
Model 0 "Candle.md3"
Model 1 "Candle_Plate.md3"
Model 2 "Candle_Wick.md3"
Model 3 "Candleflame.md3"
Skin 0 "Candle.png"
Skin 1 "Candle_Plate.png"
Skin 3 "Candleflame.png" //Спрайт пламени, который хочется заменить горящим пламенем.
Scale 0.56 0.56 0.7

FrameIndex CAND A 0 0
}



Не стал давать код "двойных мигающих" моделей в Decorate, чтобы не усложнять задачу. Если тебе надо будет что-то писать в Decorate, то пиши как обычно, создав свой файл Decorate. Я потом текст из него, перекину в свой, общий файл Decorate.
Тут подумал, если у меня уже есть в наличии генераторы пламени, то возможно и не надо снова вписывать их, а только дописать нужные строчки?
theleo_ua
= Colonel =
Next rank: - Commissar - after 258 points
4632

Doom Rate: 1.81

Posts quality: +997
Ссылка на пост №172 Отправлено: 29.10.16 03:06:12
1) Есть ли у тебя в декорейте актор TorchFireHexen_Generator ?
2) Кинь код твоего текущего актора TorchFireHeretic_Generator

Важно: в первом вопросе Hexen, во втором Heretic, просьба не перепутать
3 1
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №173 Отправлено: 29.10.16 07:12:22
1) Есть.

Скрытый текст:

ACTOR TorchFireHexen_Generator: TeleGlitterGenerator1
{
States
{
Spawn:

TNT1 A 0
TNT1 A 0
TNT1 A 0 A_Jump(220, 2)
TNT1 A 0 A_SpawnItemEx("FiremanFire_BIG", random[TeleGlitter](0,3)-1.5+0.3, random[TeleGlitter](0,3)-1.5+5, random[TeleGlitter](0,3)-1.5+29, 0, 0, 0.2)
TNT1 AAA 0 A_SpawnItemEx("FiremanFire_SMALL", random[TeleGlitter](0,5)-2.5+0.3, random[TeleGlitter](0,5)-2.5+5, random[TeleGlitter](0,5)-2.5+29, 0, 0, 0.2)

//Loop
Stop
}
}



2) Код Heretic Generator, для пламени BurningBarrel:

Скрытый текст:

ACTOR TorchFireHeretic_Generator: TeleGlitterGenerator1
{
var int user_i;

States
{
Spawn:

TNT1 A 1
TNT1 A 0 A_SpawnItemEx("FiremanFire_BIG", 2+random[TeleGlitter](0,12)-7, 1.5+random[TeleGlitter](0,12)-7, 25, 0, 0, 0.3)
TNT1 A 0
{

for (user_i = 0; user_i < 12; user_i++)
{

A_SpawnItemEx("FiremanFire_SMALL", 2+random[TeleGlitter](0,16)-10, 1.5+random[TeleGlitter](0,16)-10, 25, 0, 0, 0.3);

}//for (user_i = 0; user_i < 12; user_i++)

}//TNT1 A 0

//Loop
Stop
}
}



Вопрос: - Есть Хексен генератор, есть Еретик генератор, почему нет Doom генератор? Или Актора можно назвать любым именем? Дело в том, что я врядли когда-нибудь буду ещё играть в Хексен и Еретик, потому что прошёл их ещё давно, на консоли PS1. Но старый Дум... Он вечен. Его я буду переигрывать не однократно, поэтому может лучше сразу переименовать эти генераторы на Думовские?

При постепенном добавлении моделей, потихоньку, потихоньку начинают появляться тормоза. Не сильные такие, но дребезжание картинки при поворотах иногда проявляются. Этого и следовало ожидать - всё таки 1080р а видяха в проце. Надеюсь скоро вставлю игровую, современную, тогда проблема уйдёт, если это конечно не сам порт тормозит. Если сам порт - то дела плохи. Смысл тогда добавлять ещё моделей в него - отпадает сам собой.
theleo_ua
= Colonel =
Next rank: - Commissar - after 258 points
4632

Doom Rate: 1.81

Posts quality: +997
Ссылка на пост №174 Отправлено: 30.10.16 01:15:07
aivar242:
Если сам порт - то дела плохи. Смысл тогда добавлять ещё моделей в него - отпадает сам собой.


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

aivar242:
Вопрос: - Есть Хексен генератор, есть Еретик генератор, почему нет Doom генератор?


Я так назвал акторов потому что первый генератор предполагался для еретиковской версии факела, второй для хексенской

aivar242:
Или Актора можно назвать любым именем?


Можно назвать любым, только следует помнить, что какие-то ограничения все равно есть (максимальная длина скорее всего есть, в имени не должно быть пробелов (и других спец символов, например // или /*), и, самое главное, имя всегда следует делать уникальным, иначе возникнут конфликты с уже существующими акторами )

aivar242:
Дело в том, что я врядли когда-нибудь буду ещё играть в Хексен и Еретик, потому что прошёл их ещё давно, на консоли PS1. Но старый Дум... Он вечен. Его я буду переигрывать не однократно, поэтому может лучше сразу переименовать эти генераторы на Думовские?


Тут все просто: назвать то актора DoomGenerator ты можешь, но эти названия в моем моде фигурируют в разных местах. Например есть ACS скрипты которые спавнят актора "Generator" по его имени, и если ты переименуешь его в декорейте, но не переименуешь его в соответствующих строках в ACS, то огонь работать не будет

Я предлагаю сделать так:

Шаг 1: ты пока не переименовываешь акторов
Шаг 2: мы приделаем огонь для Candlestick и я тебе расскажу про огонь все, что хотел рассказать
Шаг 3: шаг 2 подразумевает, что теперь (на шаге 3) ты уже будешь знать, как работает огонь и как что куда добавлять, соответственно уже сможешь попереименовывать все что хочешь и как хочешь

С этим разобрались, поехали по шагу 2:

актора:

Скрытый текст:

ACTOR TorchFireHexen_Generator: TeleGlitterGenerator1
{
блаблабла
}



ты удали, и вместо него напиши так:

Скрытый текст:

ACTOR TorchFireHexen_Generator: TeleGlitterGenerator1
{
var int user_i;

States
{
Spawn:

TNT1 A 1
TNT1 A 0 A_SpawnItemEx("FiremanFire_BIG", 2+random[TeleGlitter](0,12)-7, 1.5+random[TeleGlitter](0,12)-7, 25, 0, 0, 0.3)
TNT1 A 0
{

for (user_i = 0; user_i < 12; user_i++)
{

A_SpawnItemEx("FiremanFire_SMALL", 2+random[TeleGlitter](0,16)-10, 1.5+random[TeleGlitter](0,16)-10, 25, 0, 0, 0.3);

}//for (user_i = 0; user_i < 12; user_i++)

}//TNT1 A 0

//Loop
Stop
}
}



теперь пропиши вот такой код для candlestick:

Скрытый текст:


ACTOR Candlestick_Model: Candlestick replaces Candlestick
{
Var Int User_GlitterIsSpawned;
Var Int User_Visible;

+LOOKALLAROUND
+SEEINVISIBLE

States
{
Spawn:
TNT1 A 1
TNT1 A 0 ACS_NamedExecuteWithResult("SpawnItemGlitter", 6)
Goto SpawnBasic
SpawnBasic:
CAND A 0 A_ClearTarget
CAND A 0 A_Look
CAND A 0 A_SetUserVar("User_Visible", 0) // if A_Look didn't jump to See (and as such set user_visible to 1)
CAND A 1 Bright
CAND A 0 A_Look
CAND A 0 A_SetUserVar("User_Visible", 0) // if A_Look didn't jump to See (and as such set user_visible to 1)
Loop
See:
CAND A 0 A_SetUserVar("User_Visible", 1)
CAND A 1 Bright
Goto SpawnBasic
}//States

}//ACTOR Candlestick_Model: Candlestick replaces Candlestick



а моделдеф замени на такой:

Скрытый текст:


Model Candlestick_Model
{
Path "MD\Candlestick"
Model 0 "Candle.md3"
Model 1 "Candle_Plate.md3"
Model 2 "Candle_Wick.md3"
//Model 3 "Candleflame.md3" //ОТКЛЮЧЕН
Skin 0 "Candle.png"
Skin 1 "Candle_Plate.png"
//Skin 3 "Candleflame.png" //ОТКЛЮЧЕН //Спрайт пламени, который хочется заменить горящим пламенем.
Scale 0.56 0.56 0.7

FrameIndex CAND A 0 0
FrameIndex CAND A 1 0
}



После этого у тебя на свечке должен будет появиться огонь. Да, он будет слишком большой, да, он будет не в той точке что надо, это нормально, главное что он должен появиться. В общем отпиши что происходит, от этого зависит что будем дальше делать

Кстати, так и сделаем: сначала добьемся, чтобы огонь появился абы какой, а потом создадим актора DoomGenerator и уже будем подгонять параметры огня как надо.

З.Ы. У тебя в моделдефе есть Model 2 "Candle_Wick.md3" но для нее нет текстуры, скорее всего там текстура "Candle.png", соответственно можешь прописать Skin 2 "Candle.png" и в конце добавить строку FrameIndex CAND A 2 0
3 1
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №175 Отправлено: 30.10.16 09:50:29
Да, всё закинул, всё прописал, всё работает. Пламя выглядит, как у бочки, большое и широкое, находится над свечой на расстоянии. По поводу Candle_Wick.md3 (фитиля) всё прописал, его видно.
theleo_ua
= Colonel =
Next rank: - Commissar - after 258 points
4632

Doom Rate: 1.81

Posts quality: +997
Ссылка на пост №176 Отправлено: 30.10.16 11:51:16
Какое имя генератора хочешь?
3 1
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №177 Отправлено: 31.10.16 02:41:12
СandleFireDoom_Generator можно, чтобы по существу. Я так понимаю что для каждого типа пламени, будет свой генератор? Для свечей один, для коротких торчей - другой, для длинных - другой. Поэтому наверно все их и надо называть своими именами.
Думаю для BurningBarrel - тоже переименовать. Если поменяю где увижу на BarrelFireDoom_Generator - будет работать?
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №178 Отправлено: 10.11.16 21:34:01
theleo_ua

Не могу пламя для свечи сделать маленьким. Упёрся в какой-то предел, и дальше не уменьшается.
theleo_ua
= Colonel =
Next rank: - Commissar - after 258 points
4632

Doom Rate: 1.81

Posts quality: +997
Ссылка на пост №179 Отправлено: 13.11.16 10:49:52
выложи текущую версию своего мода
3 1
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №180 Отправлено: 13.11.16 23:15:23
Вот. https://drive.google.com/open?id=0Bw6Nz4Ur_CvXSE1BMHF2RDlWaWM
Страница 9 из 23Перейти наверх Пред.  1, 2, 3 ... 8, 9, 10 ... 21, 22, 23  След.
   Список разделов - Местечко мапперов и моддеров - Вопросы по переносу ресурсов из других портов в GZDoom