| Автор | Сообщение | 
|---|
| 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(). Стандартные функции здума затемняют мир, но вот изображения увы не хотят трогать. |  |  | 
 | 
|  |  |