Объясните пожалуйста как правильно использовать функцию SetHudClipRect ? Я так понимаю, с помощью этой функции текст будет переноситься на след. строку если не влезет в координаты которые задаю в функции, я пробовал чего-то сделать.. но у меня постоянно пропадает все что на экране (все что выведено через HUDMessage) в том числе и картинки... Функция давно есть судя по тому что она используется в LibzGUI.. Порт GZDOOM если так важно
GZDoom/Zandronum (желательнее второе). Вопрос скорее чисто теоретический, чем практический.
Каким образом можно воссоздать механику игр вроде Road Rash? Вопрос за ездой на мотаке не возникает - моды подобного рода существуют почти с самого появления ЗДума.
Вопрос в другом - боевка. Смысл игры был не только перегнать и приехать первым, но и навалять оппонентам. Опять же, вопрос в мультиплеере не возникает (даже в ГЗДуме можно играть в несколько человек), так как он был задуман еще в оригинальной версии Дума, но как настроить хит детекшн? Удар "влево", удар "вправо", то бишь.
Я пытаюсь это понять, но не могу ничего путного придумать хотя бы с точки зрения концепции на движке Дума, не говоря про само декорейт/ACS программирование.
Если такие "теоретические" вопросы не имеют смысла тут быть, то прошу простить.
Делаешь байк. Дальше назначаешь классу байка +MISSILE. При столкновении с чем-либо, он будет попадать в стейт Death, в котором ты вместо смерти возвращаешь ему хелсы на 100%, и делаешь радиус дамаг на небольшое расстояние вокруг. Управление байком в любом случае придётся делать на скриптах с SetActorVelocity или даже SetActorPosition. Потому что движение байка отличается от движения игрока, плюс тот же +MISSILE, да и chasecam.
ZZYZX, спасибо за вариант, но это абсолютно не то. Заключалась бы механика в том, что одним байком ты раздалбываешь другой, то я бы этим методом воспользовался бы изначально без посторонней помощи, ибо многие вещи делаются дэфом-спавном.
Надо как здесь, отсюда и трабла. Но кстати были мысли о том, чтобы на назначенные кнопки спавнились то справа, то слева невидимые взрывы небольшого радиуса, но тоже под сомнением реализация, хотя, как знать.
Fantom Как-то ты не понятно излагаешь че тебе надо... Тебя интересует только как бить другой байк при этом если враг рядом показать кнопку что надо ударить?(учитывая что все остальное ты уже знаешь как реализовать...) Если делать нормально, то без acs не обойтись... как минимум хорошо бы заюзать функцию проверки дистанции и высчитать сторону, в которой находится враг. Тебе пригодятся такие функции как GetActorX(), GetActorY(), Distance(копипастим из здум вики).. После вычисления дистанции и стороны врага, выводишь типо кнопку HUDMessage например на правой половине экрана(если враг справо), по нажатию кнопки("ударить-->") игрок выстрелит невидимым снарядом.. хотя думаю если будеш знать дистанцию, то там можно и по другому сбить врага...
Вообще такие вещи надо делать постепенно, как минимум сделать сам байк который нормально управляется, двигаться он конечно должен с помощью SetActorVelocity, иначе нормальный байк не получится и сделать врагов которые управляют байком, остальное, например как сбить врага уже само до тебя дойдет т.к. это во многие разы проще чем сделать тот же байк. Продумать все на перед не получится по любому что-то упустишь, хотя помечтать лишним не будет
ZZYZX:
SetHudSize(640,480,1); SetHudClipRect(32,32,128,128,0); А после этого попробуй нарисовать что-нибудь большое на координатах 32,32.
Спасибо, щас буду пробовать еще раз(Хотя кажется что так уже делал..)
Алекв, дело в том что может быть не "враг", а деревья, столбы, люди... Любые объекты. И это именно что +MISSILE, чтобы можно было столкнуться тупо с чем угодно. Ещё ну да, есть вариант, это вокруг байка по радиусу стрелять в сторону перемещения. Но кодить умучаешься.
alekv, да куда ж понятнее то, даже пруф видео выложил. Но вот твое описание ближе к истине, вот это seems legit. Спасибо! Мой вопрос исчерпан
Да можно и еще ближе... Главное есть ли у тебя такой байк.. от него надо отталкиваться, там и видно было бы как и где выводить картинки, куда стрелять и т.д.
ZZYZX:
Алекв, дело в том что может быть не "враг", а деревья, столбы, люди... Любые объекты. И это именно что +MISSILE, чтобы можно было столкнуться тупо с чем угодно. Ещё ну да, есть вариант, это вокруг байка по радиусу стрелять в сторону перемещения. Но кодить умучаешься.
Да способов масса как такое сделать, я привел в пример что первое в голову пришло.. что бы различить монстр, декор или еще что можно A_RadiusGive("asas", RGF_MONSTER (если враг на байке является монстром.)..) говорю же там способов масса... в принципе и через свитчабле декоратион тоже можно замутить или прожектайл..
У меня к тебе вопросик есть.. Мб поможешь? Вобщем я попытался вывести на экран текст посредством HUDMessage в координатах твоей мышки, т.е. просто взял и вписал в HUDMessage координаты MouseX,MouseY.. текст постоянно показывается там где мышка, но проблема в том что строки текста постоянно как-то не много смещаются и когда мыша двигается текст не прочитать.. Если не сложно можешь попробовать так сделать в скрипте у себя для теста и сказать что не так? мб нельзя на прямую брать координаты мыши ? (хотя я пробовал делать Old_MouseX и Old_MouseY, но тогда текст не следит за мышей.) Текст должен быть "The Big Potion health.\nHeal 100 !" тоесть не 1 строка, а несколько. Всё, разобрался
Впервые столкнулся с такой ситуацией на практике: как в BAM сделать анимированный свич: аналогичный тнт-шному, где кирпичный рычаг/череп, он потом с желтого на синий цвет меняет. В том случае - 4 анимации желтого состояния свича и 4 в синем виде. Как это прописать в BAM'e?
В чем разница маппинга в думбилдере и в гздумбилдере?
в гздумбилдере удобнее делать карты под (Г)ЗДУМ т.к. там есть отображение 3д моделей, воксельных, тумана, динлайтов, в разы улучшеная проверка на ошибки проекта, можно писать комментарии ко всему, даже к thing (спрайты если что, я так это понимал по началу) удобнее редактор скриптов acs, там кстати не только acs подсветка, но и дургих, можно обновлять автоматом через не большую утилиту которая поставляется вместе с билдером(сам пользуюсь удобно ппц), а значит все новые функции в редакторе будут подсвечиваться! Возможность прятать одну группу спрайтов(thing-ов) или наоборот показать, а все спрятать, вобщем + столько много что не перечислить все, юзай GZDoomBuilder.
GordonFreemane:
Насколько сложно маппить в думбилдере?
Смотря под какой порт... Но под гздум естесно сложнее если ты активно используешь фичи гоззы т.е. дин лайты, модели и прочие прелести, в простом думбилдере они просто не отображаются, а это увеличивает кол. запуска твоего проекта для теста и если проект большой, замучаешся. Под класику(100лет не делал простые карты)... наверно разница не так велика, но все же есть, хотя бы из-за поиска ошибок...
GordonFreemane:
Можно ли заменить спрайты оружия, врагов и добавить свои спрайты для декора?
Да, спрайты это просто картинки... меняй че хочешь, другое дело переделать поведение оружия.. например из шотгана сделать спайперку с прицелом, так можно в (г)здум, глум портах(может еще в каких можно.. но не вникал особо)
GordonFreemane:
Возможно лт сделать включаемые по скрипту эвуки и взрывы?
Объясните мне пожалуйста, почему функция DropItem не работает в acs? Пытаюсь сделать так что бы итем сама себя выкинула... напрямую в декорейте она не выкидывается, гозза крашится, но вот в acs должна вышвыриваться т.к. DropInventory работает, но в нем нельзя указать сколько выкинуть, а DropItem вообще не реагирует -_- Думал сделать подобие функции DropItem через Spawn и цыклы, но оно будет работать медленнее и возможно появится куча багов... Что вообще с этим дропом в думе, какой-то он забаганный.
Кто сможет задать графу вопрос такой как: Почему нельзя в CustomInventory в стейте PickUp прописать A_JumpIf(CallACS("Execute")==1,"Drop") и если CallACS вернет 1, итем сразу выкидывается? Я конечно нашел другой путь к реализации задуманного, но так было бы проще в разы.. Когда уже стейт Drop будет нормально работать? =(
Задал бы такой вопрос сам, но меня почему-то игнорируют.. видимо не понимают чего я там на англ. пишу хД
Нубский вопрос Как изменить спрайт оружия на свой? Я добавляю в свой вад спрайты, называю как спрайты пистолета, конвертирую из png в doom формат, но ничего не происходит. Я наверно что-то делаю не так, либо что-то не делая, но по причине нубства не знаю что. Хотел бы узнать в чем, собственно, причина.
Пытаюсь сделать так что бы итем сама себя выкинула... напрямую в декорейте она не выкидывается, гозза крашится
Мне кажется крошится гозза из-за того, что итем должен выкидывать тот, кто его подобрал, а если рассуждать по тем словам, что ты написал - то это мёртвый цикл, а гозза такое не любит) А вообще поскидывай код, который сделал, мб я чем помогу)
MasterMind LEX SAFONOV Уже сделал. Итем не подбирается. Но суть проблемы была в том что не работает DropItem... остальное мелочи. Я просто хотел использовать DropItem чтобы выкинуть не 1 вещь, а сразу много.. Нет ну я могу обойтись циклом for к примеру что бы итем дропалась до последней, и так получится что будет валяться 100 шт. по 1 шт.. в общем основную проблему решил.
alekv А, помню подобная проблема была у RaveYard, который автор мода Ghosted II, он поставил DropItem на стейт с нулевой длительностю и игроки крашились.
Добавлено спустя 2 минуты 22 секунды:
Вот на всякий пожарный, код игрока, из-за которого, как я подозреваю, сервер и крашился:
Скрытый текст:
DropAll:
PLAY H 0
PLAY H 0 A_SpawnItemEx("ThrownGlowstick",0,0,40,random(-5,5),random(-5,5),random(1,5))
PLAY H 0 A_TakeInventory("Glowsticks",1)
PLAY H 0 A_JumpIfInventory("Glowsticks",2,"DropAll")
goto Death
Death:
PLAY H 0
PLAY H 0 A_JumpIfInventory("Glowsticks",2,"DropAll")
PLAY H 0 A_PlayerSkinCheck("AltSkinDeath")
Death1:
Для тех, кто не научился "писать правильно", совет очень даже полезный.
Пусть лучше учатся писать правильно. А так ты им просто дашь ценный совет "никогда так не писать". Они это воспримут как безусловную истину и запомнят на всю жизнь, и напишут таких извращений на декоре, что ты зашатаешься )
Вот на всякий пожарный, код игрока, из-за которого, как я подозреваю, сервер и крашился:
Мне кажется что крашится из-за спавна и 0 тика... там где спавн должно быть 1 тик, или до спавна 1 тик, все в 0 плохо, никогда не знаешь будет оно работать или нет.
Shadowman:
Никогда не используйте циклы 0 длительности!
В декорейте да.. оно может крашится, уже в этом убедился) Не во всех случаях надо юзать 0 тик. Если надо быстрый цикл, For и SetActorState в помощь )
theleo_ua:
это разве не фиксится автоматом гоззой/здумом?
Не всё как я понимаю, в данном случае Shadowman говорит о цикле.. когда это гозза фиксила циклы с функции и при этом с 0 тиком? Даже в While надо писать delay(1)
Не всё как я понимаю, в данном случае Shadowman говорит о цикле.. когда это гозза фиксила циклы с функции и при этом с 0 тиком? Даже в While надо писать delay(1)