Автор | Сообщение |
navy_seals = Lance Corporal =
 | 164 |
Doom Rate: 2
|
Отправлено: 18.05.15 02:33:49 | | | Ребят у меня два вопроса:
1) В zdoom возможно отключить Y-shearing чтобы было полноценное 3д, или y-shearing отключен только в Gzdoom?
2) Как при помощи ini файла или скриптов acs ограничить угол обзора вверх и вниз при free look в zdoom и gzdoom? | |
|
| |
LEX SAFONOV UAC Sergeant Major
 | 685 |
 Doom Rate: 1.49
|
Отправлено: 18.05.15 09:43:52 | | | alekv : | A_JumIfCloser(...) работает лучше, быстрее и без багов чем A_JumpIf(ACS_NamedExecuteWithResult(...)) сам скрипт проверяет Distance от 1 объекта до другого, это как бы и вопрос для тех кто знает почему так? |
Чисто по логике если подумать, то одна функция вызывает другую функцию, а та ещё функцию(и так далее). Вот и вся арифметика. Правда человеческий глаз этого не заметит, совсем. Дело в правильности написания скрипта и выводе результатов в декорейт. | |
|
| |
alekv = 2nd Lieutenant =
 | 1456 |
 Doom Rate: 1.68
|
Отправлено: 18.05.15 10:01:36 | | | LEX SAFONOV : | Чисто по логике если подумать, то одна функция вызывает другую функцию, а та ещё функцию(и так далее). Вот и вся арифметика. Правда человеческий глаз этого не заметит, совсем. Дело в правильности написания скрипта и выводе результатов в декорейт. |
Ну вот, не знаю насколько правильно.. и вообще можно ли так делать, вот пример:
Script "sss" (Void)
{
Int Object_TID = UniqueTID();
SetActivator(0,APTR_PLAYER1);
If(Distance(Object_TID,PLAY_TID)>128){SetResultValue(1);Terminate;}
Else{SetResultValue(0);Terminate;}
}
Actor object
{MONSTER+LOOKALLAROUND
States{
Spawn:
TNT1 A 1
TNT1 A 1 A_Look
Loop
See:
//TNT1 A 1 << есть тут кадр или нет, все равно плющит.
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("sss")==1,"Action") //Вместо JumpIfCloser(...), она все равно работает не так как мен надо.
Loop
Action:
TNT1 A 1 A_PrintBold("1")
Goto See
}
}
Я конечно понимаю что каждый тик вычисляет дистанцию, это нагрузка и все такое, но другого пути симитировать jumpIfCloser не нашел, вот и интересно как она устроена или может есть другой способ получше?
Лаги в небольшом моде наверное видно не будет, в большом моде 3д модели постепенно пропадают, но не тормозит. | |
|
| |
navy_seals = Lance Corporal =
 | 164 |
Doom Rate: 2
|
Отправлено: 18.05.15 11:02:27 | | | на свой второй вопрос сам отвечу, мб поможет кому - в ini - maxviewpitch= ставим ограничение на угол обзора. Работает только в Гздум, в здуме не работает. | |
|
| |
SAM = Master Corporal =
 | 276 |
 Doom Rate: 1.78
|
Отправлено: 18.05.15 12:55:51 | | | alekv : | Ну довольно не простой вопрос... По поводу инвентаря все просто, в каждом итеме, в decorate прописываешь Inventory.InterHubAmount xxx(такое кол. игрок может перенести на другой уровень) и ставишь флаг +HUBPOWER. Еще можно как-то запоминать States в котором игрок закончил hub level и в том же стейте продолжить след. уровень, но забыл чего там надо.
По поводу действий таких как кнопка, тут скорее надо обратиться к acs, или decorate(смотря с помощью какого скрипта был сделан переход или какому отдаешь предпочтения.) Или же на худой конец, замутить разые уровни, в 1 уровне map01 будет открыта дверь телепорт в мап02, в другом уровне map01 будет закрыт переход в мап02.. В общем есть тема для размышлений, но лучше сделать все через acs, будет проще, быстрее и грамотнее, заодно и лишний повод по практиковаться в скриптах\кодах. Ну и прошу заметить, что я не знаю конкретного и простого ответа на твой вопрос.. все что я могу предложить, это обходные пути(костыли) в реализации задумки.. Может и есть путь проще, но я не помню такого, хотя что-то подсказывает что он есть. |
спасибо за ответ) я еще по экспериментирую на этим делом и если не получится как я задумал то изменю вид и режим прохождения, пусть уровни останутся пройденными но это на кр. случай. | |
|
| |
sanek_47 Marine 1st class
 | 30 |
 Doom Rate: 2
|
Отправлено: 18.05.15 19:43:34 | | | Решил добавить на карту несколько воксельных моделек, но они наполовину проваливаются в землю. Положение спрайтов можно было настроить прямо в SLADE через offsets, а здесь как быть? И еще, не могли бы посоветовать хороший воксельный редактор, пробовал SLAB6 и MagicVoxel, но там ограничение модели 126x126x126, да и не очень они удобные... | |
|
| |
LEX SAFONOV UAC Sergeant Major
 | 685 |
 Doom Rate: 1.49
|
Отправлено: 18.05.15 20:25:21 | | | sanek_47 : | Решил добавить на карту несколько воксельных моделек, но они наполовину проваливаются в землю. Положение спрайтов можно было настроить прямо в SLADE через offsets, а здесь как быть? И еще, не могли бы посоветовать хороший воксельный редактор, пробовал SLAB6 и MagicVoxel, но там ограничение модели 126x126x126, да и не очень они удобные... |
В том же SLAB6 у модели измени "пивот" - Tools -> Adjust Pivots. Как правило по стандарту стоит на середине.
alekv : | Я конечно понимаю что каждый тик вычисляет дистанцию, это нагрузка и все такое, но другого пути симитировать jumpIfCloser не нашел, вот и интересно как она устроена или может есть другой способ получше?
Лаги в небольшом моде наверное видно не будет, в большом моде 3д модели постепенно пропадают, но не тормозит. |
Вообще у меня в Dark Forces есть один монстр, который требует проверки дистанции. Вот как реализована проверка у меня:
Это непосредственно скрипт
Script 903 (int KellDistance)
{
int KellX = GetActorX(0) >> 16;
int KellY = GetActorY(0) >> 16;
SetActivatorToTarget(0);
int PlayerX = (GetActorX(0) >> 16);
int PlayerY = (GetActorY(0) >> 16);
int X = KellX - PlayerX;
int Y = KellY - PlayerY;
KellDistance = sqrt(X*X + Y*Y);
SetResultValue(KellDistance);
}
Смысл этого скрипта, что он напрямую кидает нужное расстояние в декорейт через результирующую.
А вот как я проверяю нужное расстояние непосредственно в декорейте:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(903,0,0,0) >= 400, "See")
Смысл: каждый раз вызывая этот скрипт приходит результат с длиной. Если не подходит под выражение - значит не срабатывает)
Работает не хуже A_JumIfCloser(), а местами даже по гибче будет(на сколько я понимаю в декорейтной функции выставляется строго определённое значение, а выражение забить не получается). | |
|
| |
sanek_47 Marine 1st class
 | 30 |
 Doom Rate: 2
|
Отправлено: 18.05.15 21:02:32 | | | LEX SAFONOV : | В том же SLAB6 у модели измени "пивот" - Tools -> Adjust Pivots. Как правило по стандарту стоит на середине. |
Спасибо, теперь все нормально работает. А что насчет других редакторов, можно ли делать более качественные воксельные модели? Хочу перерисовать все спрайты в модели, но например для того, чтобы всунуть спрайт в тот же MagicVoxel приходится снижать его разрешение, да и цвета искажаются. | |
|
| |
alekv = 2nd Lieutenant =
 | 1456 |
 Doom Rate: 1.68
|
Отправлено: 18.05.15 22:58:44 | | | sanek_47 : | Спасибо, теперь все нормально работает. А что насчет других редакторов, можно ли делать более качественные воксельные модели? Хочу перерисовать все спрайты в модели, но например для того, чтобы всунуть спрайт в тот же MagicVoxel приходится снижать его разрешение, да и цвета искажаются. |
Могу посоветовать не мучаться с вокселями!!!
Blender.. иммитация вокселей в данном случае лучший вариант по всем параметрам.. в чем фишка вокселей в гоззе? Они даже не могут разрушаться так как сделанно в том же воксельштейн(можешь погуглить если о таком не слышал) воксели очень ресурсоемки, особенно для такого порта как гозза.. воксельные модели большого разрешения в гоззе.. вообще смешно, 1-2 модели и фпс 5-10.
VOXELDEF почитай тут по поводу манипуляций с воксельными моделями, если еще не читал..
Blender 3д редактор, но в блендере версии 2.63+ точно есть модификатор который переделывает модель в кубикоподобную, от вокселей не отличить, но в разы проще в создании, и требованиям к железу. Научится делать простые 3д модели легко, видео уроков море, если заинтересуешся, спрашивай еще.
LEX SAFONOV : | Вообще у меня в Dark Forces есть один монстр, который требует проверки дистанции. Вот как реализована проверка у меня:
Это непосредственно скрипт
Script 903 (int KellDistance)
{
int KellX = GetActorX(0) >> 16;
int KellY = GetActorY(0) >> 16;
SetActivatorToTarget(0);
int PlayerX = (GetActorX(0) >> 16);
int PlayerY = (GetActorY(0) >> 16);
int X = KellX - PlayerX;
int Y = KellY - PlayerY;
KellDistance = sqrt(X*X + Y*Y);
SetResultValue(KellDistance);
}
Смысл этого скрипта, что он напрямую кидает нужное расстояние в декорейт через результирующую.
А вот как я проверяю нужное расстояние непосредственно в декорейте:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(903,0,0,0) >= 400, "See")
Смысл: каждый раз вызывая этот скрипт приходит результат с длиной. Если не подходит под выражение - значит не срабатывает)
Работает не хуже A_JumIfCloser(), а местами даже по гибче будет(на сколько я понимаю в декорейтной функции выставляется строго определённое значение, а выражение забить не получается). |
Большое спасибо за пример, попробую примерно так сделать, хотя надежд мало.. мой скрипт по сути почти тоже самое делает, просто вывел проверку дистанции в отдельную функцию.(я не видел твоего мода, но у меня все в 3д моделях, если бы не было 3д моделей, я бы и не заметил такие лаги т.к. сказывается почему-то только на 3д моделях, причем не на всех, они пропадают постепенно.. даже сложилось впечатление что у меня паранойя когда бегал по уровню.. модель проде была минуту назад, а вроде и показалось...) A_JumpIfCloser не подходит для меня потому что объект проверяет дистанцию не только игрока, а почти любого объекта который будет ближе. Пробовал комбинировать с Thing_Hate, но результатов не увидел. В любом случае не попробовав не узнаю, еще раз спасибо. | |
|
| |
navy_seals = Lance Corporal =
 | 164 |
Doom Rate: 2
|
Отправлено: 19.05.15 09:15:03 | | | Подскажите кто знает, как реализовать кровь на потолке? На полу объектом сделал, нормально, но вот как заставить объект "прилипать" к потолку? Не понимаю как флаг SPAWNCEILING работает | |
|
| |
SAM = Master Corporal =
 | 276 |
 Doom Rate: 1.78
|
Отправлено: 19.05.15 10:37:49 | | | navy_seals : | Подскажите кто знает, как реализовать кровь на потолке? На полу объектом сделал, нормально, но вот как заставить объект "прилипать" к потолку? Не понимаю как флаг SPAWNCEILING работает |
попробуй приписать +NOGRAVITY | |
|
| |
navy_seals = Lance Corporal =
 | 164 |
Doom Rate: 2
|
Отправлено: 19.05.15 11:05:18 | | | Зависает в воздухе, а надо чтобы была обратная гравитация (на отрицательные значения gravity здум ругается)
В общем, сделал. Если кому поможет - при помощи баунса прожектайла только от стен (1 bounce count) и через A_checkceiling спавна в стейте смерти объекта крови с флагами +SPAWNCEILING
+CEILINGHUGGER и NOGravity | |
|
| |
YURA_111 UAC Sergeant Major
 | 736 |
 Doom Rate: 2.17
|
Отправлено: 19.05.15 20:41:23 | | | navy_seals : | В общем, сделал. Если кому поможет - при помощи баунса прожектайла только от стен (1 bounce count) и через A_checkceiling спавна в стейте смерти объекта крови с флагами +SPAWNCEILING
+CEILINGHUGGER и NOGravity |
Вот этим наверное проще:
http://zdoom.org/wiki/ThrustThingZ | |
|
| |
TesaQ = Lance Corporal =
 | 178 |
 Doom Rate: 1.87
|
Отправлено: 21.05.15 17:30:36 | | | В общем у меня небольшая проблема возникла с полиобъектами, две двери раздвигаются когда жму на левую дверь, а если на правую, то только 1 раздвигается, может кто в этом разбирается, вот вад - https://yadi.sk/d/s-G7vzG9gnWjN | |
|
| |
alekv = 2nd Lieutenant =
 | 1456 |
 Doom Rate: 1.68
|
Отправлено: 21.05.15 19:16:22 | | | Качай, ты выставил полиобъект 0, этого делать помоему нельзя. Или в чем-то другом проблема.. вобщем щас работает каждая дверь отдельно.
Если надо что бы 2 двери открывались одновременно, выставь в Polyobj Start Line> Mirror Polyobj Number номер противоположного полиобъекта.
Кстати до сих пор обязательно номер полиобъекта присваивать через Angle?
Добавлено спустя 43 минуты 37 секунд:
Есть актор
ACTOR CustomBridge native
У него можно менять radius и height изменяя его аргументы в GZDB, как такие аргументы дать своему thing не прибегая к всяким replace?(тоесть не писать так: Actor box : CustomBridge)
Жаль что нельзя делать так:
Actor Box
{
Height Args[1]
Radius Args[2]
..
} | |
|
| |
Michael63 - Lance Corporal -
 | 151 |
Doom Rate: 3.28
|
Отправлено: 21.05.15 20:53:20 | | | Начал делать уровень в формате ZDoom (Doom in UDMF format), а раньше делал просто в Doom 2. Что-то я не понял, как задавать экшены. Допустим, я хочу, чтобы кнопка опускала сектор до самого нижнего из соседних секторов. Вот окно, в котором задаются экшены:
Сверху написана легенда: S = Switch, W = Walk over, и так далее. Но около самих названий экшенов не написано ни S, ни W, и я не знаю, как отличить Switch от Walk over (а в Doom 2 это было написано слева от названия экшена). Как их различить? Или в UDMF это в каком-то другом окне задаётся?
Ещё вопрос: когда я вставляю свою графику через Думбилдер, как сделать так, чтобы картинка была нужного размера (в мапъюнитах)? Допустим, я хочу сделать текстуру для стены размерами 64x128 мапъюнитов. Каким должен быть для этого файл с рисунком? Можно ли сначала загрузить файл (в ресурсы), а потом выставить размеры текстуры? | |
|
| |
alekv = 2nd Lieutenant =
 | 1456 |
 Doom Rate: 1.68
|
Отправлено: 21.05.15 22:25:03 | | | Michael63
Зачем тебе Zdoom формат не понимаю.. уже делал бы сразу в GZDoom: Doom2(UDMF), там открывается максимум возможностей, да и все просто и понятно. | |
|
| |
ZZYZX UAC Sergeant Major
 | 821 |
 Doom Rate: 1.38
|
Отправлено: 22.05.15 15:44:11 | | | Michael63 : | Сверху написана легенда: S = Switch, W = Walk over, и так далее. Но около самих названий экшенов не написано ни S, ни W, и я не знаю, как отличить Switch от Walk over (а в Doom 2 это было написано слева от названия экшена). Как их различить? Или в UDMF это в каком-то другом окне задаётся? |
В том окне, из которого ты открыл этот список, рядом должнен быть список параметров спешиала, а ещё чуть ниже настройки активации. Несколько чекбоксов типа Player presses use, Player walks over.
Легенда видимо просто багнутая и отображается в не-DoomInDoom форматах, хотя не должна )
Michael63 : | Ещё вопрос: когда я вставляю свою графику через Думбилдер, как сделать так, чтобы картинка была нужного размера (в мапъюнитах)? Допустим, я хочу сделать текстуру для стены размерами 64x128 мапъюнитов. Каким должен быть для этого файл с рисунком? Можно ли сначала загрузить файл (в ресурсы), а потом выставить размеры текстуры? |
1 пиксель = 1 мапъюнит, если только ты явно не прописываешь текстуре другой размер.
alekv
10/10 ответ. Он тебе "как сделать?" а ты ему "юзай GZDoom". Между прочим разницы в данном случае не будет — активация настраивается так же.
 | |
|
| |
alekv = 2nd Lieutenant =
 | 1456 |
 Doom Rate: 1.68
|
Отправлено: 22.05.15 16:26:09 | | | ZZYZX : | 10/10 ответ. Он тебе "как сделать?" а ты ему "юзай GZDoom". Между прочим разницы в данном случае не будет — активация настраивается так же. |
Да все равно 99% что рано или поздно перейдет на GZDoom формат, а как обидно будет.. я вот по себе знаю, самому обидно было, так же прыгал с одного формата на другой.. когда попробовал ZDoom, хорошо что не поленился и сразу попробовал GZDoom, столько проектов просто в никуда.. вообще желание пропало их доделывать. | |
|
| |
LEX SAFONOV UAC Sergeant Major
 | 685 |
 Doom Rate: 1.49
|
Отправлено: 22.05.15 18:58:26 | | | Парни, никто не знает как запилить нормальное затемнение-просветление картинки на АЦС? У меня ролик просто покадрово сделан через HudMessage(). Стандартные функции здума затемняют мир, но вот изображения увы не хотят трогать. | |
|
| |