Welcome to U.A.C. [O.S.A.]
login / register 
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые! Пред.  1, 2, 3 ... 28, 29, 30 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!Ответить
АвторСообщение
VladGuardian
- UAC Commissar -
Next rank: = UAC Commissar = after 321 points
5979

Doom Rate: 1.33

Posts quality: +2180
Ссылка на пост №561 Отправлено: 02.02.16 16:07:04
Герр Смертоносец:
а вместо него спаунится очередной BossTarget.

Кстати, рождается оригинальная идея "фрактального" размножения монстров - не успел прибить "ветку" - и на ней распустились "листья" :)
4 17 23
DeXiaZ
- 1st Lieutenant -
Next rank: = 1st Lieutenant = after 136 points
1704

Doom Rate: 2.29

Posts quality: +494
Ссылка на пост №562 Отправлено: 02.02.16 16:20:06
Герр Смертоносец
F*ck, you're goddamn right. Я не учел этот момент, хотя в самом начале думал об этом, но мысль не зацепилась. Спасибо, в credits'ах укажу

UPD: theleo_ua, я перечитал предложенный Вами вариант, он очень хорош, но только если речь идет о собственной карте. Я право не указал один момент, что повлекло за собой последствия - это должно работать на любом pwad/iwad на любой карте. Хотя я придумал более интересный момент - или сразу спавнится Кибер/Спайдер, либо спавнится обычный Таргет. Конечно, баланс и сама физическая логика несколько иная будет, но в принципе то...чего уж париться, основная нагрузка совсем не на этих тварей приходится.
1 3 3
Unregistered
Banned flooder
599

Doom Rate: 0.96

Posts quality: +42
Ссылка на пост №563 Отправлено: 02.02.16 17:14:54
Можно ли на DECORATE писать структурно?
1 2 10
VladGuardian
- UAC Commissar -
Next rank: = UAC Commissar = after 321 points
5979

Doom Rate: 1.33

Posts quality: +2180
Ссылка на пост №564 Отправлено: 02.02.16 17:23:15
Unregistered:
Можно ли на DECORATE писать структурно?

Наверное, можно, раз уж там есть такие понятия, как 'классы'.
Берешь, создаешь какой-то базовый класс айтема или актора, а потом другой можешь унаследовать от базового.
Если ты об этом, конечно.

http://zdoom.org/wiki/DECORATE
4 17 23
Unregistered
Banned flooder
599

Doom Rate: 0.96

Posts quality: +42
Ссылка на пост №565 Отправлено: 02.02.16 17:35:53
VladGuardian
Я имел в виду создание пользователем подпрограмм на подобие "A_FireBFG" и подобных.
1 2 10
VladGuardian
- UAC Commissar -
Next rank: = UAC Commissar = after 321 points
5979

Doom Rate: 1.33

Posts quality: +2180
Ссылка на пост №566 Отправлено: 02.02.16 17:41:04
Unregistered:
Я имел в виду создание пользователем подпрограмм на подобие "A_FireBFG" и подобных.

Вот тебе:
ACS functions
    ACS_ExecuteWithResult — runs a script and uses its return value.
    ACS_NamedExecuteWithResult — runs a named script and uses its return value.
    CallACS — shorter alias for ACS_NamedExecuteWithResult.

Взято отсюда:
http://zdoom.org/wiki/DECORATE_expressions
4 17 23
alekv
- Colonel -
Next rank: = Colonel = after 270 pointsМодератор форума
4170

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №567 Отправлено: 02.02.16 21:24:20
Подскажите, есть ли способ как-то сделать так что бы можно было в ацс прописать HUDMessage(s:"техт") и в аргументах thinga прописать текст который подставился бы в HUDMessage, любой способ?
1 3 1
theleo_ua
- Commissar -
Next rank: = Commissar = after 120 points
5220

Doom Rate: 1.8

Posts quality: +1162
Ссылка на пост №568 Отправлено: 02.02.16 22:03:59
Fantom:
1) Когда BossTarget'ы были чисто заменой монстров, то BossEye не мог пулять кубы (он считал, что Таргетов нет).
Тогда я переделал спавн систему, и сделал выпадение Таргета через RandomSpawner. Заработало, но...


Из вики:

BossTarget // Spawn Cube Landing Spot (Spawn these before you
spawn the shooter or it won't spit cubes!)

(с) http://zdoom.org/wiki/Classes:Doom#Misc

Следовательно, BossEye стреляет только по тем BossTarget, которые были отспавнены раньше, чем сам BossEye. Поэтому либо после появления каждой новой BossTarget "удалять и спавнить заново" BossEye (я не знаю, как это повлияет на скрипты карты), либо забить на BossTarget-ы и реализовать через a_custommissile

Fantom:
UPD: Хотя, в таком случае, прибегну к инфе выше. Сделаю так, чтобы спавншот ронял акторов самостоятельно, а eye лишь запускал спавншоты. Пока не уверен, что сработает, но надо проверять, а не гадать.

UPD: Не сработало. Даже с вариациями этой идеи. Я не понимаю, почему. Неучтенная багофича движка?


сделай так:

do {
delay(1);
int x = GetActorX(0);
int y = GetActorY(0);
int z = GetActorZ(0) + 100.0;
int angle = GetActorAngle(0) >> 8;

} until (Spawn(class, x, y, z, 0, angle));

полный пример здесь: http://zdoom.org/wiki/Spawn

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

И да, вместо spawn можно заюзать spawnforced, он не чекает условия и спавнит "всегда".

Если не хочешь через ACS, тогда в spawnitemex поставь флаг "nocheckposition"

VladGuardian:
Кстати, рождается оригинальная идея "фрактального" размножения монстров - не успел прибить "ветку" - и на ней распустились "листья"


до слез

Fantom:
theleo_ua, я перечитал предложенный Вами вариант, он очень хорош, но только если речь идет о собственной карте.


Мой метод был для конкретных карт, но необязательно собственных:) Т.е. он должен работать на мап30 например. А если ты хочешь "вообще на любой карте", тогда да, тут уже другое дело

Если ты хочешь сделать такое:

Fantom:
это должно работать на любом pwad/iwad на любой карте


Fantom:
Но вообще у меня какая проблема. Решил сделать условно простенький мод, где все монстры заменены на BossTarget'ы, а все оружие заменено на BossEye.


то проблема сводится к "как оружию определить координаты ближайших монстров"

тогда тебе надо определиться со следующим: какой максимальный радиус атаки у таких "bosseye-оружий" ?

Если радиус не "бесконечный", тогда есть такие полезные функции:

http://zdoom.org/wiki/A_RadiusGive - дает предмет всем монстрам в радиусе действия
http://zdoom.org/wiki/A_CheckLOF - проверяет, можно ли дострелить хитскан атакой до цели, при этом не попав в стенку

Давая предмет, можно потом монстру в декорейте чекать "если предмет есть, то [выполнить действия такие-то] и выкинуть предмет". А проверяя возможность хитскан атаки, можно банально чекнуть "долетит куб до цели или нет". С помощью http://zdoom.org/wiki/Distance будешь отсекать тех монстров/оружия, которые за пределами радиуса.

И в таком случае ты будешь просто делать "GetactorXYZ" для "монстров", чтобы узнать их координаты для выстрела. Если тебе известны координаты монстра и оружия, то чтобы оружие выстрелило строго в монстра, можно определить угол оружия с помощью http://zdoom.org/wiki/VectorAngle , установить этот угол и сделать выстрел
4 1
DeXiaZ
- 1st Lieutenant -
Next rank: = 1st Lieutenant = after 136 points
1704

Doom Rate: 2.29

Posts quality: +494
Ссылка на пост №569 Отправлено: 02.02.16 22:28:38
theleo_ua, это все очень хорошо, и я благодарю Вас, но Вы же можете видеть, что проблема то была решена, поэтому половина поста в данный момент утратила какой-либо смысл.

Но что касается второй половины про конкретность...Радиус можно сделать не бесконечным, хотя это нежелательно. Но я смотрю, тут что-то очень сильное колдунство, я слишком быдлокодер, чтобы такие вещи уметь делать, тут слишком абстрактные объяснения и сухая теория. Однако, благодарю за то, что Вы распинались и даже ссылки скинули.
1 3 3
theleo_ua
- Commissar -
Next rank: = Commissar = after 120 points
5220

Doom Rate: 1.8

Posts quality: +1162
Ссылка на пост №570 Отправлено: 02.02.16 22:38:05
Fantom:
Но я смотрю, тут что-то очень сильное колдунство, я слишком быдлокодер, чтобы такие вещи уметь делать, тут слишком абстрактные объяснения и сухая теория.


1) Да, это колдунство даже если полностью разобраться как это работает, придется педалить костыли и танцевать с бубнами
2) Если есть непонимания теории, могу постепенно рассказать по каждому из пунктов

В общем определитесь, насколько сильно Вам нужен такой мод и готовы ли Вы разбираться в новых функциях и танцевать с бубнами, и если да, могу постепенно уже на конкретных упрощенных примерах объяснить, как работает каждая из расписанных мной идей
4 1
DeXiaZ
- 1st Lieutenant -
Next rank: = 1st Lieutenant = after 136 points
1704

Doom Rate: 2.29

Posts quality: +494
Ссылка на пост №571 Отправлено: 02.02.16 23:35:12
Что ж, могу сказать, что я решил поступить с Кибером и Мастермайндом другим способом. Еще раз благодарю за уделение внимания моему вопросу.

Но хочу отметить, что ко мне подкралась новая проблема, не связанная с предыдущей. Знаменитый таг 666 и 667. Обычно это фиксится связью "parent-child", но в данной ситуации такая система не работает, ибо child'ом является обычный Монстер Таргет, который нельзя убить. Как поступить в таком случае? Тут скорее предложение идеи на тему, нежели чем вопрос по теории. Лично тут я решил, что надо просто делать специальный Босс Спавнер, который можно убить, и как раз он будет child'ом, но эту мысль я пока обрабатываю, мне не очень нравится эта концепция, хотя...с Кибером я уже пошел на некоторые уловки (которые являются одновременно и уступками первоначальной затеи), так что...
1 3 3
navy_seals
- UAC Gunner -
Next rank: = UAC Gunner = after 16 points
44

Doom Rate: 2

Ссылка на пост №572 Отправлено: 03.02.16 11:37:57
alekv Спасибо большое за подробный ответ про свет
alekv
- Colonel -
Next rank: = Colonel = after 270 pointsМодератор форума
4170

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №573 Отправлено: 03.02.16 13:27:12
navy_seals:
alekv Спасибо большое за подробный ответ про свет

Не за что. =)



Напишите пож. как правильно прописать в menudef эпизоды?
Собс-но проблема, когда захожу в меню\новая игры\открывается меню эпизодов, там можно юзать текст в качестве названия или картинку.. но курсор у меня заходит на текст, решил сделать названия эпизодов картинками, но там та же проблема, в общем мне надо знать как можно отдалить друг от друга 2 названия эпизода.
Вот как к примеру в общем меню делается такое:

Position 180, 119//Это позиция где будет показываться моя картинка
		PatchItem "Graphics/Menu/APlay.png", "d", "StartGameMenu"// какая картинка будет показываться и что надо делать когда на нее нажали

В Episode Menu все тоже самое можно прописать, но что надо делать когда нажали на картинку эпизода? Ведь в пред. случае была команда открыть меню новой игры.. а у эпизода такого нет что делать???

MAPINFO не подходит т.к. там можно только указать текст или картинку, но позицию прописать нельзя...
Курсор менять, не вариант, меню стилизованное и не обычное.
Возможно попробую еще выход из такой ситуации с помощью шрифта с большой буквой размером 64х64.. такой шрифт можно прописать в эпизоде и по идее получится, но это черезжопный вариант.
1 3 1
VladGuardian
- UAC Commissar -
Next rank: = UAC Commissar = after 321 points
5979

Doom Rate: 1.33

Posts quality: +2180
Ссылка на пост №574 Отправлено: 03.02.16 13:35:40
alekv:
есть ли способ как-то сделать так что бы можно было в ацс прописать HUDMessage(s:"техт") и в аргументах thinga прописать текст который подставился бы в HUDMessage, любой способ?

Возможно тебе строковые константы помогут?... http://zdoom.org/wiki/Strings

Другой способ - в теле скрипта определить (одномерный) массив строк, а в аргументе, передающимся от thing-а, передавать только номерок (индекс той строки в массиве, которую нужно напечатать).

Можно взаимоувязать тэг thing-а, и этот самый номерок - например, пусть индекс строки будет иметь значение на сотню меньше, чем само значение тэга.
То есть, например, если у thing-а тэг 102, то индекс выводимой строки должен быть 102 - 100 = 2
(это делается для того, чтобы кроме тэга thing-у не нужно было хранить никакой другой избыточной информации)
4 17 23
Unregistered
Banned flooder
599

Doom Rate: 0.96

Posts quality: +42
Ссылка на пост №575 Отправлено: 03.02.16 17:42:27
Как использовать ACS без привязки к уровню?
1 2 10
Sabhotep
= Master Sergeant =
Next rank: - Sergeant Major - after 32 points
498

Doom Rate: 0.76

Posts quality: +155
Ссылка на пост №576 Отправлено: 03.02.16 19:05:08
Unregistered:
Как использовать ACS без привязки к уровню?

Скомпилировать вот этим и добавить название конечного файла в библиотеку (#include ... #library ...).
alekv
- Colonel -
Next rank: = Colonel = after 270 pointsМодератор форума
4170

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №577 Отправлено: 03.02.16 19:14:24
VladGuardian:
Возможно тебе строковые константы помогут?... http://zdoom.org/wiki/Strings

Имеется ввиду заранее прописать текст который буду использовать, а потом поставить циферку соответствующую нужной строчки в аргументах и оно будет писать писать мой текст? Ну я думал о таком варианте, только в моем случае проще использовать функцию ReadUserData();, но я хотел бы просто в аргументах прописать простой текст, а в игре оно выводится что бы без лишних телодвижений, но уже понял что на данный момент это не возможно.. в аргументах текст не пишется, да и больше 9 символов не прописать =(

Unregistered:
Как использовать ACS без привязки к уровню?

Это как так? Ты имеешь ввиду компиляцию скрипта в файл .acs? Если да, то создаем lump с именем:
LOADACS
если PK3 архив создаем папку acs и в нее кладем файл со скриптами, после в слейде 3 правой кнопкой мыши кликаем на скрипт в выпадающем меню Scripts/CompileACS (только не забудь сохранить исходник скрипта!!! Компилируй только копию скрипта)
После компиляции (или до..) впиши имя скомпилированного скрипта в lump LOADACS т.е. просто без заморочек> ACS_Sour
Да и все..
1 3 1
Unregistered
Banned flooder
599

Doom Rate: 0.96

Posts quality: +42
Ссылка на пост №578 Отправлено: 03.02.16 20:28:21
Я имею в виду подобную ситуацию: У монстра в атаке стоит запуск скрипта, и нужно активировать этот скрипт не зависимо то уровня. Даже на картах оригинального дума.
1 2 10
theleo_ua
- Commissar -
Next rank: = Commissar = after 120 points
5220

Doom Rate: 1.8

Posts quality: +1162
Ссылка на пост №579 Отправлено: 04.02.16 03:34:38
Unregistered:
Я имею в виду подобную ситуацию: У монстра в атаке стоит запуск скрипта, и нужно активировать этот скрипт не зависимо то уровня. Даже на картах оригинального дума.


Допустим у нас есть такой зомбимен:

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

ACTOR ZombieManForever: ZombieMan replaces ZombieMan
{
States
{
Missile:
POSS E 10 A_FaceTarget
POSS F 8 A_PosAttack
POSS E 8 ACS_NamedExecuteWithResult("doom_forever", параметры)
Goto See
}//States
}//ACTOR ZombieManForever: ZombieMan replaces ZombieMan



Такой зомбимен будет каждый раз при атаке вызывать скрипт doom_forever независимо от уровня, даже на картах оригинального дума.

Добавлено спустя 4 часа 36 минут 34 секунды:

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

Вопросы следующие:

1) Что даст большую производительность - A_RadiusGive + CheckInventory или FDistance ? Напомню, что RadiusGive в гоззе 2.0.05 (а я делаю именно под нее) не умеет в "список акторов кому гивать"

2) Есть ли другие способы, которые быстрее работают?

3) Какими проблемами грозит изменение tid игроку? Речь о сингле
4 1
alekv
- Colonel -
Next rank: = Colonel = after 270 pointsМодератор форума
4170

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №580 Отправлено: 04.02.16 12:19:49
theleo_ua:
1) Что даст большую производительность - A_RadiusGive + CheckInventory или FDistance ? Напомню, что RadiusGive в гоззе 2.0.05 (а я делаю именно под нее) не умеет в "список акторов кому гивать"

Ну смотри, я понятия не имею как утроены функции на C++ внутри гоззы, но вот просто посудить A_RadiusGive раздает всем итем, а оно надо?+ еще и надо чекать инвентори итемы.. По моему лучший вариант проверка дистанции, только не тот пример что в вики, он мне лично не подошел т.к. когда много акторов вызывающих функцию Distance, игра начинает лагать т.е. надо туже функцию из вики переписать в простой скрипт типа: Script "Distance" (int dist) и в декорейте уже вызывать по такому принципу
TNT1 A 0 A_JumpIf(CallACS(Distance) > 256, "LowPar")

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

theleo_ua:
2) Есть ли другие способы, которые быстрее работают?

Врятли есть быстрее чем скрипт distance, но именно скрипт, а не функция из вики

theleo_ua:
3) Какими проблемами грозит изменение tid игроку? Речь о сингле

Да никакими.. TID меняешь когда захочешь. Можно и старый вернуть, можно новый дать, тут дело не в проблемах, а в том где и зачем будешь это юзать и там где юзаешь просто указываешь новый TID игрока если его вообще надо указывать) Вот я сколько скриптую(ну ты видел мою игру про зайца) я там игроку TID не менял вообще, а вся игра построена на Thing-ах
1 3 1
Страница 29 из 200Перейти наверх Пред.  1, 2, 3 ... 28, 29, 30 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!