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

Будет ли эта тема полезной/жизнеспособной?
Ответ если Вы программист: [Да! Буду просматривать заказы и размещать скрипты]
20%
 20% [ 8 ]
Ответ если Вы программист: [Нет! Эта тема бред]
5%
 5% [ 2 ]
Ответ если Вы программист: [Буду иногда размещать скрипты, но заказы.. лень]
32%
 32% [ 13 ]
Ответ если Вы заказчик: [Да!]
42%
 42% [ 17 ]
Ответ если Вы заказчик: [Нет!]
0%
 0% [ 0 ]
Проголосовало думеров : 28
Всего оставлено голосов : 40
Голосование без ограничения по времени

АвторСообщение
sanek_47
= Master Corporal =
Next rank: - Sergeant - after 18 points
272

Doom Rate: 2.16

Posts quality: +64
Ссылка на пост №21 Отправлено: 18.09.16 01:40:55
ZZYZX
Уже круто! Мне бы на такое, наверно, минимум несколько дней понадобилось.

1)Насчет магазина. Количество бабла сохраняется в глобальную переменную "dalari". В остальном, там вроде ничего и не надо больше - в описании можно выводить количество денег и цену, а внизу правого верхнего окна, например, вставить кнопку "купить". Можешь сделать что-нибудь для примера, а дальше я уже сам разберусь.
2)Неплохо бы ставить игру на паузу во время вызова меню, а так же растянуть его на весь экран.
3)Расположение окон довольно удобное, графику я сам перерисую потом.
4)Что касается статистики, то туда я хочу вывести основную информацию, которая по умолчанию отображается в меню с картой. Выпущеннык пули, и т.д., будут просто сохраняться в отдельные переменные, добавить их потом мне не составит труда.
5)Нужно сделать, чтобы пункты меню изначально были неактивны, и появлялись только после встречи с монстрами, а оружие только после того, как оно появилось в инвентаре. Например, можно сделать, чтобы каждый пункт меню имел свою переменную, которая изменяется после подбора оружия или убийства монстра.
6)В разделе уровней вместо актора должна появляться картинка.
3)Ну и про скроллинг ты уже написал...

После этого останется только разобраться со шрифтами и кириллицей...
1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №22 Отправлено: 18.09.16 01:53:34
По пунктам.

1. Я сделаю тогда HS_GetMoney() и HS_SetMoney(), а реализацию сам напишешь. У меня будет своя.
2. На паузу ставить невозможно в связи с тем, как работает здум. Растянуть можно. С 16:9 надо будет колдовать, а так особых проблем нет.
4. Своё добавишь сам, я для примера напишу то что можно собрать средствами здума (киллы там, секреты, итемы, может ещё что...)
5. HSDB_SetActive(категория, название, true/false) или надо будет сделать чтобы HSDB_Add возвращал идентификатор, по которому можно будет обращаться.
Альтернативный метод — возможность указывать named скрипт, который уточняет, видим ли элемент. Если нужно проверять каждый раз. А named скрипту передаётся индекс актора. Выбери, как удобнее.
6. Картинка будет указываться префиксом $ перед названием актора. То есть например не "DoomImp", а "$MyLevel01".

Некоторые функции сейчас называются не так, как написано, я их переименую (тот же HSDBAdd).
Про кириллицу. Кириллица достигается пиханием в шрифт символов кодировки windows-1251 или oem-866, и последующим набором текста в этой кодировке.

Про необходимость скролла лучше уточнить.
В данный момент помещаются 18 пунктов http://i.imgur.com/wTGbEGc.png
Если добавить скролл, то при текущем разрешении будет меньше максимальная длина названия, потому что место будет занимать скролл. Он там точно нужен?

Ещё. Сейчас оно 640х480. Если потом ты захочешь это поресайзить под другое разрешение, придётся менять кучу всего (там оффсеты руками написаны). Если нужен другой размер, лучше сказать сразу.
Это особенно критично если там нужно использовать нормальные шрифты (не думовские). Или "растянуть на весь экран" — это значит реальное разрешение использовать? (там можно, но в играх обычно так не делают.)

Кстати если можно, хотелось бы увидеть, как это работает с моделями :)
Открыл с ds-models-gz.pk3, посмотрел. Прикольно.

Рейтинг сообщения: +2, отметил(и): sanek_47, Doomstalker
2 2 1
sanek_47
= Master Corporal =
Next rank: - Sergeant - after 18 points
272

Doom Rate: 2.16

Posts quality: +64
Ссылка на пост №23 Отправлено: 18.09.16 03:25:15
Скролл нужен, у меня уже сейчас около 60 видов монстров. Может немного уменьшить левое окно, где основные пункты меню записаны? Там все равно место лишнее остается.

Что касается разрешения, то использую 1920x1080. Так что, думаю, 1280x720 будет нормально выглядеть. Шрифт, само собой, будет свой (кстати, почему это так важно?).

ZZYZX:
Кстати если можно, хотелось бы увидеть, как это работает с моделями

как-то так

Рейтинг сообщения: +1, отметил(и): Doomstalker
1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №24 Отправлено: 18.09.16 16:28:46
sanek_47:
Шрифт, само собой, будет свой (кстати, почему это так важно?).

Потому что шрифты в думе фиксированного размера. И если у тебя шрифт будет красивый со сглаживанием (прозрачностью), то в 640х480 либо все буквы будут 10х10 (как в думе) и выглядеть как пиксельное говно, либо они будут больше и не помещаться в поля. А нарисовать всё это можно только под одно разрешение, потому что я буду писать кучу оффсетов для кликов мышью, например.

sanek_47:
Так что, думаю, 1280x720 будет нормально выглядеть.

Я тогда рисую под 960x720 (потому что есть люди с 4:3), а 1280х720 только если экран позволяет.

По времени где-то вечером ковыряться буду. Там теперь всё перерисовывать под большой размер.

edit. Пока так: http://i.imgur.com/eiHIU5I.png
До завтра растягивается, наверное.

Рейтинг сообщения: +1, отметил(и): alekv
2 2 1
Korshun
= Lance Corporal =
Next rank: - Master Corporal - after 31 points
169

Doom Rate: 3.84

Posts quality: +13
Ссылка на пост №25 Отправлено: 18.09.16 18:54:57
ZZYZX:
з.з.ы. щас небось вылезет коршун и скажет юзать прямоугольники. Не буду.

Не скажу. Я не автор библиотеки acsrect, не рекламирую её, и не несу ответственности за её содержание.
1 1 3
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №26 Отправлено: 19.09.16 17:50:32
Сегодня пришёл с работы и допилил полторы кнопки.

http://www.mediafire.com/download/m407gl1qnqv5jau/qestscrn.pk3
Компилить всегда qestscrn.acs.
Заполнение БД в qs_db.acs.
Остальное вроде понятно должно быть. Код обильно прокомментирован на английском, т.к. у слейда сложности с кодировками.
Скролла в категориях и описании нет, но можно достаточно быстро реализовать.
Придумал несколько сомнительных архитектурных решений в ацс, в частности qs_scrollbar.acs. Вроде похожий подход используется в Unity UI (аля if (PushButton(0, 0, 120, 24, "click me")).
Да, кстати, language.txt закодирован в windows-1251.

Рейтинг сообщения: +2, отметил(и): alekv, sanek_47
2 2 1
sanek_47
= Master Corporal =
Next rank: - Sergeant - after 18 points
272

Doom Rate: 2.16

Posts quality: +64
Ссылка на пост №27 Отправлено: 19.09.16 22:04:15
:ogo: Шикарно получилось! Даже не представляю, как за такой короткий промежуток времени можно было все это реализовать. Немного потестил - то что нужно, изначально я примерно так себе это меню и представлял. Места для описания и категорий, думаю, и без скролла достаточно. Когда появится время - приступлю к интегрированию в свой проект, потом покажу, как в итоге выглядит...
Огромное спасибо!

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

Хотелось бы немного доработать меню. Можешь сделать, чтобы описание выводилось не в одну строчку, а переносилось по словам? И чтобы можно было выводить описание из нескольких строк (т.е. надо писать калибр/скорострельность/массу с новой строки).
1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №28 Отправлено: 22.09.16 00:44:52
Я думаю это через \n в language. И вообще http://zdoom.org/wiki/LANGUAGE
Перенос я делать не стал, чтобы у текста была заранее известная высота (по количеству \n).
Сейчас это не нужно, но вот если захочешь сделать скроллбар, то будет полезно.

Рейтинг сообщения: +1, отметил(и): sanek_47
2 2 1
Shadowman
= UAC Marshal =
Next rank: UAC General after 161 points
8039

Doom Rate: 2.09

Posts quality: +1768
Ссылка на пост №29 Отправлено: 08.10.16 18:32:40
Возможно, мой вопрос выходит за рамки темы, но...
Нет ли каких более-менее универсальных способов заскриптить динамическую смену дня и ночи? В привязке к глобальному счетчику времени (на мегавад в целом). При этом должно плавно меняться небо с дневного на ночное, а также понижаться яркость всех секторов под небом на определенную величину. Если под небом есть сектора-3д-полы, яркость под которыми ниже яркости окружающего сектора (эффект тени от 3д-пола), то она также должна понижаться, как и яркость окружающего сектора под небом.
Яркость секторов в закрытых помещениях, думаю, понижаться не должна.
Думаю, решение этой задачи было бы полезно всем, кто маппит под гздум.
1 7 2
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №30 Отправлено: 08.10.16 18:47:17
Способ есть, но придётся вешать на все сектора тэг. Благо UDMF начиная с ZDoom 2.7.x позволяет повесить несколько тэгов.
Способа нет, поскольку невозможно определить текущую яркость сектора. Совсем невозможно. Даже для секторов, для которых известен тэг.
Можешь попытаться разобраться, как сделана та жуткая фигня под гз.

Рейтинг сообщения: +1, отметил(и): alekv
2 2 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +948
Ссылка на пост №31 Отправлено: 08.10.16 20:17:45
ZZYZX:
невозможно определить текущую яркость сектора. Совсем невозможно.

А если попросить на форуме добавить функцию которая чекает текущую яркость сектора, добавят? Или там опять что-то не возможно будет т.к мультиплеер похерится или что-то в этом духе?
1 3 1
MyNameIs
= 1st Lieutenant =
Next rank: - Captain - after 64 points
2026

Doom Rate: 2.05

Posts quality: +876
Ссылка на пост №32 Отправлено: 08.10.16 21:00:55
а GetSectorLightLevel? вроде должен подходить
1 1 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №33 Отправлено: 08.10.16 21:02:51
А если несколько разных секторов с одним тэгом? Или предлагаешь выставлять отдельный тэг каждому сектору с погодой?
Это уже называется "а теперь вы напишете собственный плагин к GZDB, который вставляет ваш мод" :)
2 2 1
Shadowman
= UAC Marshal =
Next rank: UAC General after 161 points
8039

Doom Rate: 2.09

Posts quality: +1768
Ссылка на пост №34 Отправлено: 08.10.16 23:01:14
ZZYZX
Мод по ссылке (видео) уже смотрел, но там нет ссылки на скачивание, потому разобраться в коде не представляется возможным.
Если немного упростить задачу - например, плавно снижать яркость секторов с текстурой неба на N единиц при переходе от дня к ночи (и повышать соотвесттвенно при обратном переходе). Тогда абсолютное значение освещенности не нужно.
Будут, правда, выделяться сектора под 3д-полами, но если их не так много, то для них можно вручную код дописать.
Плодить кучу тэгов для смены суток как-то неоптимально...
В этой связи еще интересует вопрос плавной смены текстуры неба с дневное на ночное. Как такое готовится?
1 7 2
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №35 Отправлено: 08.10.16 23:06:13
Shadowman:
В этой связи еще интересует вопрос плавной смены текстуры неба с дневное на ночное. Как такое готовится?

Скайбокс в виде сектора. А дальше в секторе уже можно рисовать что хочешь. Проще всего моделькой, но можно и например затемнять просто сектор от ярко-синего неба к тёмно-синему.
2 2 1
Shadowman
= UAC Marshal =
Next rank: UAC General after 161 points
8039

Doom Rate: 2.09

Posts quality: +1768
Ссылка на пост №36 Отправлено: 09.10.16 11:03:57
ZZYZX:
затемнять просто сектор от ярко-синего неба к тёмно-синему.

В скайбоксе потолок - обычное небо? На обычных локациях также кладется потолок-небо в этом случае - что дает скайбокс? (я понимаю, если там облака плавали, для них скайбокс нужен, а для обычного неба он не нужен). Если менять освещение в скайбоксе, на карте затеняются только сектора - пол и стенки, а небо как было, так и остается одинаковым (если положено светлое небо, то и будет светлое небо при темном уровне). Нужно как-то менять небо на более темное соответственно, а как?
ChangeSky работает визуально плохо - в момент смены неба глаз успевает заметить мигание.
1 7 2
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +948
Ссылка на пост №37 Отправлено: 19.10.16 09:17:56
Просто оставлю тут ссылку на тему Zeta-windows +)
Z e t a - W i n d o w s

Добавлено спустя 2 дня 11 часов 37 минут 24 секунды:


Заказ на скрипт от: Alekv

Подробно что должен делать скрипт:
Не думал что буду оставлять тут заказы, но в общем вот:
Мне нужна функция acs которая сможет сделать овал у которого можно менять радиус и высоту, смотрим на картинку

На картинке видно что овал нужен мне в качестве хитбокса, овал разукрашен в 2 цвета, если игрок коснется синего (т.е. верхушки овала) произойдет 1 действие(убьет монстра) если красного, произойдет другое действие(дамажит игрока), причем размер такого овала должен уметь изменяться путем выставления аргументов, т.е. если для снеговика нужен большой овал, то для лиса уже нужен другой.. ну на картинке видно и понятно зачем.

Почему мне это вообще надо, если юзать простую проверку обычного хитбокса по типу Play_Z <= Mob_Z + Mob_H и т.д. то такая фигня работает через жопу т.к. когда ГГ касается угла хитбокса(даже если актер нонсолид) происходят чудеса с которыми ничего не сделать(уже пробовал кажется все что можно сделать таким способом) Поэтому овал не должен быть привязан к обычному хит боксу, а должен строится чисто на координатах, наподобие acs дистанции, и 2 аргумента, 1 арг меняет радиус такого овального хитбокса, 2арг меняет высоту, так пусть и в слепую но можно нормально настроить хит бокс монстру! (теперь я понимаю почему в юнити и подобных юзают овал\элипс в качестве хитбокса)
Понимаю что это слишком сложная фигня, если вообще возможная.. но все же.. очень нуждаюсь. Если влом делать для меня 1ого, то можно и даже лучше замутить вместо овала целый 3д элипс\капсулу.. Такой овальный хитбокс мб пригодился для 3д уровней всяких.

p.s. у меня в игре X координата это лево\право, Z координата верх\низ, Y координата ближе\дальше.
Если нужна еще какая инфа, напишу.
Под какой порт:GZDoom последней версии

Рейтинг сообщения: +1, отметил(и): MyNameIs
1 3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №38 Отправлено: 21.10.16 22:34:52
Овал может быть раздавленный, или обязательно чтобы линия равномерной толщины была?
2 2 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +948
Ссылка на пост №39 Отправлено: 21.10.16 23:03:34
ZZYZX:
Овал может быть раздавленный, или обязательно чтобы линия равномерной толщины была?

Так значит возможно такую фичу сделать? Я просто не в курсе и когда писал заказ на 70% думал что не сделать такой овал хитбокс

А по вопросу, да любой, раздавленный или нет(честно не понял это как)) он же будет невидимый этот овал, т.е. просто строится на координатах.. или как там. Картинка просто пример что нужен такой радиус и если игрок касается верхней части происходит 1 действие, касается нижней части, происходит другое действие.

А сам овал будет использовать спец. актер.
Что бы понятнее было, тот же снеговик или лис или любой другой монстр у меня в игре состоит из 2ух актеров, 1 эта 3д модель с анимациями, она же является основной, 2ой актер это коллизия которую спавнит актер модели, и эта коллизия варпается постоянно за 3д моделью(до такого варианта дошел перепробовав более 10 других..)
Вот к примеру актер коллизии лиса, т.е. игрок взаимодействует именно с ним, а 2ой актер просто 3д модели которая ходит, и переключает анимации
Вот код актера коллизии:

ACTOR MonsterCollision_Fox1 : FastProjectile
{PROJECTILE+MISSILE
+THRUSPECIES
Species "Pass"
Health 1
Radius 20
Height 35
damage 0
var int User_HitRadius;
States
	{
	Spawn:
		TNT1 A 1
		TNT1 A 1 {
                                 if(args[1] < height*2)//SetDefault radius
                                      {
                                       A_SetArg(1,64);
                                      }
			      	 A_SetUserVar("User_HitRadius",User_HitRadius+Args[1]);
                                 }
	CheckTouch:
		TNT1 A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0)
		TNT1 A 0 A_JumpIf(GetDistance(TRUE,AAPTR_PLAYER1 < args[1],"Damage") //Если игрок коснулся радиуса, прыгет в стейт в котором просчитывается чего он коснулся, верха хитбокса или низа..
		Loop
	Damage:
		TNT1 A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0)
		TNT1 A 0 ACS_NamedExecute("MonsterDamage", 0)//тут и просчитывалось какой части коснулся игрок.
		Goto CheckTouch
	Death:
		TNT1 A 1 A_DamageMaster(1000)//убивало 3д модель монстра
		TNT1 A 0 A_Die
		Stop
	XDeath:
		TNT1 A 1 ACS_NamedExecute("GetAngleThrustMob",0)
		TNT1 A 0 A_DamageMaster(1000)
		TNT1 A 0 A_Die
		Stop
	}
}
1 3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №40 Отправлено: 22.10.16 02:16:19
alekv:
Так значит возможно такую фичу сделать? Я просто не в курсе и когда писал заказ на 70% думал что не сделать такой овал хитбокс

А по вопросу, да любой, раздавленный или нет(честно не понял это как)) он же будет невидимый этот овал, т.е. просто строится на координатах.. или как там. Картинка просто пример что нужен такой радиус и если игрок касается верхней части происходит 1 действие, касается нижней части, происходит другое действие.

Ты ТЗ пиши точнее в следующий раз )
Потому что у меня сложилось впечатление что тебе его отрисовать надо.

А вообще можно конечно. A_RadiusGive от имени игрока и сравнивать координаты. Если ноги игрока находятся в определённой позиции к верхней точке врага, враг считается мёртвым/задамаженным, иначе наоборот.
При этом игрока и врага сделать +THRUSPECIES и одного species, чтобы друг сквозь друга проходили.

1) делаешь актора который будет даваться и вызывать скрипт на каждом враге (actor bla : CustomInventory, Pickup: ACS_NamedExecuteWithResult); написал в общих чертах, лень детализированно, ну да ты декор знаешь
2) ОТ ИМЕНИ ИГРОКА вызываешь три экшена подряд:
- ACS_NamedExecuteWithResult -> (OldTID = ActivatorTID(); PlayerTID = UniqueTID(); Thing_ChangeTID(0, PlayerTID)); сохраняет текущий тид игрока, создаёт новый уникальный тид, присваивает игроку
- A_RadiusGive (выдать тот итем который bla в радиусе например 128, после этого на каждом акторе в сфере вокруг игрока будет вызван скрипт, который ты прописал в акторе bla, в текущем тике, вся кастомная обработка в этих скриптах; на игрока ссылаешься через PlayerTID; не забудь RGF_NOSIGHT!!!)
- ACS_NamedExecuteWithResult -> (Thing_ChangeTID(0, OldTID)); возвращает тид игрока обратно на тот который у него почему-то был раньше

У меня два часа ночи, поэтому написал описание и не кодил ничо. Можешь сам накодить )
Или я когда-нибудь попозднее.

Рейтинг сообщения: +1, отметил(и): alekv
2 2 1
Страница 2 из 9Перейти наверх Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9  След.
   Список разделов - Местечко мапперов и моддеров - Скриптинг [Заказываем скрипты/Делимся скриптами]