Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Скриптинг [Заказываем скрипты/Делимся скриптами] Пред.  1, 2, 3, 4, 5, 6, 7  След.
   Список разделов - Местечко мапперов и моддеров - Скриптинг [Заказываем скрипты/Делимся скриптами]Ответить

Будет ли эта тема полезной/жизнеспособной?
Ответ если Вы программист: [Да! Буду просматривать заказы и размещать скрипты]
25%
 25% [ 7 ]
Ответ если Вы программист: [Нет! Эта тема бред]
0%
 0% [ 0 ]
Ответ если Вы программист: [Буду иногда размещать скрипты, но заказы.. лень]
29%
 29% [ 8 ]
Ответ если Вы заказчик: [Да!]
44%
 44% [ 12 ]
Ответ если Вы заказчик: [Нет!]
0%
 0% [ 0 ]
Проголосовало думеров : 27
Всего оставлено голосов : 27
Голосование без ограничения по времени

АвторСообщение
Infernal_KoT
= Master Corporal =
Next rank: - Sergeant - after 30 points
260

Doom Rate: 2

Posts quality: +61
Ссылка на пост №101 Отправлено: 25.09.17 11:49:52
ZZYZX :
Ткни меня носом где так написано. Нужно определить что игрок открыл какую-то область и открыть её же у всех остальных.

Ну, видимо, не так выразился. Как открыть эту область у остальных игроков? Впрочем, если считать в радиусе, то как это будет на обширных локациях, или же наоборот, в очень маленьких - сквозь стены не будет просвечивать?
1 1
ZZYZX
- Colonel -
Next rank: = Colonel = after 378 pointsМодератор форума
4062

Doom Rate: 1.79

Posts quality: +764
Ссылка на пост №102 Отправлено: 25.09.17 12:28:40
Infernal_KoT :
Впрочем, если считать в радиусе, то как это будет на обширных локациях, или же наоборот, в очень маленьких - сквозь стены не будет просвечивать?

Будет, но это малая цена за саму возможность.
2 2 1
Infernal_KoT
= Master Corporal =
Next rank: - Sergeant - after 30 points
260

Doom Rate: 2

Posts quality: +61
Ссылка на пост №103 Отправлено: 25.09.17 12:38:36
ZZYZX
Хитсканом можно отследить "убитую" стену?
1 1
MyNameIs
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 98 points
1192

Doom Rate: 1.97

Posts quality: +384
Ссылка на пост №104 Отправлено: 25.09.17 13:09:09
Вроде.. Можно же ацсом переключать скайбоксы? Я просто протестить сейчас не могу.
Скайбокс ведь рисует стены, можно через него

А если скайбокс через скайбокс может рисовать, тогда просто пол изменять в секторе основного, пол виден редко
1 1
Kragoth762
= Master Sergeant =
Next rank: - Sergeant Major - after 54 points
476

Doom Rate: 1.93

Posts quality: +49
Ссылка на пост №105 Отправлено: 01.10.17 01:30:42
ACS: 2D lines intersection
пересечение двух прямых...

Добавлено спустя 1 день 10 часов 12 минут 7 секунд:

что-то про 2D линии
p.s.: копируйте в билдер если трудно на блокноте читать
2 1
YURA_111
= Sergeant =
Next rank: - Master Sergeant - after 6 points
394

Doom Rate: 2.02

Posts quality: +45
Ссылка на пост №106 Отправлено: 21.10.17 09:42:08
Заказ на скрипт от: Yura111

Подробно что должен делать скрипт: Полный аналог "PowerRegeneration" (с учетом "Powerup.Strength"), только для брони.
Тип скрипта: ZScript (не ACS)

Под какой порт: GZDOOM
Герр Смертоносец
= Master Corporal =
Next rank: - Sergeant - after 25 points
265

Doom Rate: 1.5

Posts quality: +62
Ссылка на пост №107 Отправлено: 14.11.17 05:24:29
По ZScript шарит кто?

Вот есть две фичи: MonsterMove() и TryWalk(), которые заставляют монстра перемещаться строго по прямой вдоль мировой координаты X. Никаких аргументов эти функции не имеют, никакими перепробованными колдунствами не удалось заставить монстра изменить это направление. Несколько часов гугления убедили меня в том, что ни на официальном форуме, ни в вики инфы по этой теме просто нет.

Собственно, вопрос№1: каким образом заставить эти фичи работать в других направлениях?

Далее, единственная вменяемая фича, с которой можно заставить монстра двигаться в произвольном направлении - TryMove(). Но она, блэт, принципиально не открывает двери. (Зато их замечательно открывает MonsterMove).

Собственно, вопрос№2: каким образом можно заставить монстра открыть произвольную дверь в обход вшитых механизмов A_Chase?


Грубые и громоздкие решения у меня есть, но интересуют более-менее изящные. Внутри ещё теплится надежда, что Graf Zahl не настолько поехал, чтобы встраивать в релиз заведомо неработающие фичи.
ZZYZX
- Colonel -
Next rank: = Colonel = after 378 pointsМодератор форума
4062

Doom Rate: 1.79

Posts quality: +764
Ссылка на пост №108 Отправлено: 14.11.17 07:47:02
Я подозреваю что эти функции двигают монстра строго вперёд. Перёд ему менять не пробовал?
// // P_Move // Move in the current direction, // returns false if the move is blocked. // bool P_Move (AActor *actor)

DEFINE_ACTION_FUNCTION(AActor, MonsterMove) { PARAM_SELF_PROLOGUE(AActor); ACTION_RETURN_BOOL(P_Move(self)); }


Заставить монстра открыть дверь можно легко и непринуждённо — найти эту дверь при помощи того же BlockLinesIterator, проверить что она перед монстром и на вменяемой высоте, после чего заюзать дверь в ручном режиме (активировать спешиал). Только имей в виду что если на двери стоит "player presses use", то ацс может неадекватно отреагировать на открытие такой двери монстром. Хотя это в принципе возможно по идее.
2 2 1
Герр Смертоносец
= Master Corporal =
Next rank: - Sergeant - after 25 points
265

Doom Rate: 1.5

Posts quality: +62
Ссылка на пост №109 Отправлено: 14.11.17 14:34:56
ZZYZX :
Я подозреваю что эти функции двигают монстра строго вперёд. Перёд ему менять не пробовал?

Ммм, а теперь ещё раз. Что такое P_Move, где, как и чем его менять? Как он вообще задаёт перёд, являясь булевой переменной? И откуда дровишки? В вики ничего подобного нет. Какие-то глубокие внутренности движка?

ZZYZX :
Заставить монстра открыть дверь можно легко и непринуждённо — найти эту дверь при помощи того же BlockLinesIterator

А это что за зверь, это зскрипт или acs, и какими аргументами оно питается?

Возникает ощущение, что где-то есть какая-то другая более подробная документация.
ZZYZX
- Colonel -
Next rank: = Colonel = after 378 pointsМодератор форума
4062

Doom Rate: 1.79

Posts quality: +764
Ссылка на пост №110 Отправлено: 14.11.17 15:37:34
P_Move это внутренняя функция которая вызывается.
MonsterMove = P_Move
Двигает согласно комментарию в текущем направлении. Текущее — это куда морда повёрнута. Следовательно поворачивай в правильную сторону, и тогда будет не только вдоль оси X.

Герр Смертоносец :
А это что за зверь, это зскрипт или acs, и какими аргументами оно питается?

Это зскрипт.

Герр Смертоносец :
Возникает ощущение, что где-то есть какая-то другая более подробная документация.

В исходнике гздума
https://github.com/coelckers/gzdoom/blob/master/wadsrc/static/zscript/base.txt#L450

В связи с тем, что зскрипт по принципу работы практически дословно повторяет C++, то можно лазить в гздум и смотреть как там сделано. И пытаться делать так же.
Документации как таковой... не. Врать не буду. Она есть. Но у меня в голове из-за опыта с исходником гздума документация раза в 4 подробнее чем можно найти в текстовом виде.
В связи с чем я всем советую зскрипт и даже иногда на вопросы отвечаю >_>
2 2 1
Герр Смертоносец
= Master Corporal =
Next rank: - Sergeant - after 25 points
265

Doom Rate: 1.5

Posts quality: +62
Ссылка на пост №111 Отправлено: 14.11.17 16:19:55
ZZYZX :
P_Move это внутренняя функция которая вызывается.
MonsterMove = P_Move
Двигает согласно комментарию в текущем направлении. Текущее — это куда морда повёрнута. Следовательно поворачивай в правильную сторону, и тогда будет не только вдоль оси X.

Я понял, что внутри движка есть свои функции с очень продвинутым функционалом, но как оперировать ими в Zscript lump с точки зрения синтаксиса? Нужны какие-то примеры работоспособного кода. Тупо непонятно, что писать, в каком формате, и с какой стороны к этому вообще подступиться. Метод тыка не работает.
P_Move = Vec2Angle(speed,angle);

Это, например, выдаёт ошибку Unknown identifier 'P_Move'. Все прочие попытки манипулировать этим из Зскрипта тоже выдают ошибку.

Если же монстру просто повернуть морду через A_SetAngle или A_FaceTarget, то ничего не меняется - он продолжает двигаться вдоль оси Х независимо от того, как он визуально развёрнут. Либо это баг, либо разрабы забыли сделать доступный из Zscript способ изменить внутреннюю функцию, без которого внешние бесполезны. Либо я чего-то фундаментально не понимаю.

И по BlockLinesIterator вопрос.
Парсер внезапно сожрал BlockLinesIterator(self). Но попытки посмотреть логику его работы через старый добрый A_PrintBold(BlockLinesIterator(self)) выдали "Cannot convert to string". Спрашивается, что за загадочный формат переменной оно выдаёт, и куда его можно вставить, чтобы снять с него инфу о линии? И чем эту линию потом исследовать? В списке функций ничего подобного нет. Опять же, нужны какие-то примеры рабочего кода в Zscript.

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

Рейтинг сообщения: +1, отметил(и): JSO x
ZZYZX
- Colonel -
Next rank: = Colonel = after 378 pointsМодератор форума
4062

Doom Rate: 1.79

Posts quality: +764
Ссылка на пост №112 Отправлено: 14.11.17 17:03:08
ёмаё да забудь ты про P_Move. Это цитата из кода гздума была.
Вертишь актора в нужную сторону. А потом MonsterMove юзаешь.
Методом тыка зскрипт НЕ РАБОТАЕТ. Примеры читать в gzdoom.pk3 папке zscript.
BlockLinesIterator(self) это дичь. Парсер хавает потому что это динамическое преобразование типов, которое возвращает null.

Отдельно про направление. Судя по всему используется переменная actor->movedir. В нашем случае self.movedir, я так понимаю byte angle.

Герр Смертоносец :
Порт, давший расцвет модостроению за счёт своей прекрасной документированности, развивается в сторону "чёрного ящика", который можно полноценно использовать только если лично перелопачивать весь исходный код.

Я тебя умоляю, не смеши мои тапки, пяткам щекотно. По-твоему документация по ацс и декору всегда была полноценной? Зскрипт появился полгода назад.
Единственная проблема с зскриптом в том, что осваивать его методом тыка примерно то же самое, что и осваивать С++ методом тыка. Можно, но нерационально.
И таки да. Раньше многие вещи были бы невозможны вообще от слова совсем ) А сейчас всего-то нужно применить глаза и почитать код.

А ранди вообще последние несколько лет задерживал(а)(о) развитие порта, из-за чего ничего принципиально нового не появлялось, DoomScript стал байкой, а выражение "для ввода фичи она должна пройти через здум" отбивало у контрибьюторов всё желание что-то делать. Видимо, проблемы с гендерной самоидентификацией важнее ввода новых фич.

Рейтинг сообщения: +1, отметил(и): JSO x
2 2 1
Герр Смертоносец
= Master Corporal =
Next rank: - Sergeant - after 25 points
265

Doom Rate: 1.5

Posts quality: +62
Ссылка на пост №113 Отправлено: 14.11.17 17:25:49
ZZYZX :
Вертишь актора в нужную сторону. А потом MonsterMove юзаешь.

void A_testchase() { A_SetAngle(5+angle); //верчу актора в нужную сторону MonsterMove(); }

Сделал. Монстр должен ровненько ходить по кругу. А он движется по прямой, вращаясь. В чём ошибка?


ZZYZX :
По-твоему документация по ацс и декору всегда была полноценной?

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

upd:
ZZYZX :
Отдельно про направление. Судя по всему используется переменная actor->movedir. В нашем случае self.movedir, я так понимаю byte angle.

Значит "перёд" определяет всё-таки не angle. Сейчас буду с этим пробовать.

upd2: Так, прогресс! Направление действительно задаётся через self.movedir, но это явно не byte angle, не градусы и не fixed, а какой-то другой формат. Всего доступно 8 значений: (0,1,2,3,4,5,6,7), которые задают направления с шагом в 45 градусов. При попытке подставить отрицательное число или 8 и больше монстр просто стоит на месте и не двигается. При попытке задать дробное значение оно принудительно округляется. При попытке задать вектор парсер выдаёт ошибку.

void A_testchase() { A_SetAngle(angle+5); self.movedir = (8*angle/360); MonsterMove(); }

С этим кодом монстр вместо круга обходит правильный восьмиугольник, после чего почему-то встаёт намертво и вертится на месте.

Уже что-то, но по-прежнему загадочно.
ZZYZX
- Colonel -
Next rank: = Colonel = after 378 pointsМодератор форума
4062

Doom Rate: 1.79

Posts quality: +764
Ссылка на пост №114 Отправлено: 14.11.17 21:39:54
А у тебя просто англе бывает выше 360. Напиши %8 в конце.
2 2 1
Герр Смертоносец
= Master Corporal =
Next rank: - Sergeant - after 25 points
265

Doom Rate: 1.5

Posts quality: +62
Ссылка на пост №115 Отправлено: 15.11.17 04:00:48
Англ вообще по-дефолту выдаёт значения от 0 до 180, а потом резко перескакивает на -179 и дальше идёт по отрицательным числам, поэтому его в любом случае пришлось шлифануть дополнительной проверочкой. Но в итоге movedir действительно жрёт странный формат угла, в котором всего 8 значений. Возможно, это какие-то особенности работы pathfinding из оригинального doom, фиг знает.

Пока сделал громоздкое подобие A_Chase, в котором MonsterMove с выбором одного из 8 направлений задействуется исключительно при застревании. В принципе они уже более-менее ходят и открывают двери.
alekv
Lieutenant Colonel
Next rank: Lieutenant Colonel after 338 pointsМодератор форума
3302

Doom Rate: 1.94

Posts quality: +377
Ссылка на пост №116 Отправлено: 07.12.17 13:42:37
Подробно что должен делать скрипт:
Мне нужна функция или что-то в этом духе на zscript, которая может определить нажатие клавиши ESC и передать acs скрипту..!
Что бы в acs мог потом использовать как-то так, если это вообще возможно:
script "myScript" (void) { if(GetEscButton() == true)//Если игрок нажал клавишу Esc {do some..} }

Надеюсь с помощью такой функции смогу проверять не только нажатие кнопки ESC, но и понять открыто меню игры или нет..
Буду несказанно рад, если функция сможет проверять не только esc но и все клавиши :)
Под какой порт: GZDOOM 3.2+
1 3 1
ZZYZX
- Colonel -
Next rank: = Colonel = after 378 pointsМодератор форума
4062

Doom Rate: 1.79

Posts quality: +764
Ссылка на пост №117 Отправлено: 07.12.17 13:54:14
Советую писать сразу на зскрипте, т.к. при открытом меню ацс работать не будет в принципе.
Привязка класса зскрипта к конкретной карте (если нужно) возможна через MAPINFO EventHandlers. (документировано как ни странно)

Наличие открытого меню в зскрипте проверяется через Menu.GetCurrentMenu() - возвращает объект или null.
Вызов зскрипта из ацс возможен через https://zdoom.org/wiki/ScriptCall
2 2 1
alekv
Lieutenant Colonel
Next rank: Lieutenant Colonel after 338 pointsМодератор форума
3302

Doom Rate: 1.94

Posts quality: +377
Ссылка на пост №118 Отправлено: 07.12.17 14:14:25
ZZYZX :
при открытом меню ацс работать не будет в принципе.

Совсем про это забыл.. печалька =(

ZZYZX :
Привязка класса зскрипта к конкретной карте (если нужно) возможна через MAPINFO EventHandlers. (документировано как ни странно)
Наличие открытого меню в зскрипте проверяется через Menu.GetCurrentMenu() - возвращает объект или null.

увы, ни хрена не понял =(
мне понятно только вот это:
ZZYZX :
Вызов зскрипта из ацс возможен через https://zdoom.org/wiki/ScriptCall


Зачем привязка зскрипта к карте?

if(Menu.GetCurrentMenu() != 0)//если меню открыто?


Мне это надо вот для такой задачи:
Если игрок открыв кастомное UI на acs в игре, мог нажать на ESC и это кастомное UI закрылось игнорируя открытие меню игры!,

На деле получается просто открывается menu.. И это явно плохо и не нормально.. Кнопка ESC должна закрыть любое открытое кастомное UI и только потом открыть menu игры.

По этому я хз как это сделать что бы acs проверял нажатие esc т.к. все менюхи у меня acsные, а зскрипт блокировал открытие меню пока не закрыты acs менюшки.
1 3 1
ZZYZX
- Colonel -
Next rank: = Colonel = after 378 pointsМодератор форума
4062

Doom Rate: 1.79

Posts quality: +764
Ссылка на пост №119 Отправлено: 07.12.17 17:58:51
alekv :
Зачем привязка зскрипта к карте?

Чтобы отпилить ацс насовсем.

alekv :
if(Menu.GetCurrentMenu() != 0)//если меню открыто?

0 и null это разные вещи.

alekv :
Если игрок открыв кастомное UI на acs в игре, мог нажать на ESC и это кастомное UI закрылось игнорируя открытие меню игры!,

Напиши своё кастомное меню на зскрипте.
https://forum.zdoom.org/viewtopic.php?p=988297#p988297 пример. Пожалуйста, не говори "я не понимаю" и попробуй прочитать что там написано сначала. И изучить.

alekv :
увы, ни хрена не понял =(

Погуглить не пробовал? http://zdoom.org/wiki/Events_and_handlers / https://zdoom.org/wiki/MAPINFO/Map_definition
Но учитывая то что ты дальше написал, не рекомендую это делать. Вместо этого рекомендую идти переделывать гуй на зскрипте. В связи с тем, что гуй на ацс это извращение и пережиток прошлого, а в зскрипте нормальная модель событий ввода сделана как в JS, Qt, C# и так далее.
2 2 1
alekv
Lieutenant Colonel
Next rank: Lieutenant Colonel after 338 pointsМодератор форума
3302

Doom Rate: 1.94

Posts quality: +377
Ссылка на пост №120 Отправлено: 07.12.17 20:32:07
ZZYZX :
Вместо этого рекомендую идти переделывать гуй на зскрипте.

Ну не целесообразно.. Меня на 100% устраивает acs интерфейс, проблема только в клавише ESC, и из-за нее переписывать ВСЕ UI в игре которого не мало, да еще и на языке который я вообще не знаю и знать не хочу т.к. он мне не пригодится т.к. кроль последнее что сделаю на этом гздуме.. ну так себе идея.

ZZYZX :
0 и null это разные вещи.

я не программист.. откуда мне знать :)

Добавлено спустя 1 день 23 часа 3 минуты 51 секунду:

ZZYZX
Решил попробовать разобраться в зскриптовом меню и нашел баг
Скрытый текст:


Это происходит когда в оконном режиме вкл. меню и нажал на развернуть окно.

А еще заметил что там у тебя только обычное меню, а настройки это дефолтное гоззы?

Из-за нового шрифта мне придется писать меню на зскрипте т.к. дефолтное гоззо меню говно.
1 3 1
Страница 6 из 7Перейти наверх Пред.  1, 2, 3, 4, 5, 6, 7  След.
   Список разделов - Местечко мапперов и моддеров - Скриптинг [Заказываем скрипты/Делимся скриптами]