значение 255 не меняй, а значение за ним - это нужно менять. Чем выше значение по отношению к остальным, тем выше шанс появления именно этого оружия...
Я бы уточнил - моб был бы РЕЗКИМ как понос. В твоем варианте он просто будет очень быстро передвигаться... А то что ты ему прописал 1 тик - не даст особой разницы в переходе на Миссиле стейт по сравнению с 6 тиками, особенно если стоит +ALWAYSFAST.
Разница будет огромная. По своему опыту я понял, что переход в стейт стрельбы работает рандомно и срабатывает видимо один раз на кадр. Если вызывать функцию часто однотиковыми кадрами, то моб начинает меньше крутиться на месте и больше шмалять по цели. Спалил я это, когда хотел сделать кадры у мобов по плавнее
На счёт резкости - да, шевелиться быстрее начинает, это уже специфика дума, но можно сделать его скорость просто медленнее для компинсации)
Алсо, у мну будет ещё такой вопрос-просьба, никто не может подсказать как сделать / сделать очень простенькую модельку? Там практически примитив, вершин 4 штуки и окрасить в красный цвет. Координаты вершин скину если чё. С моделингом не дружу прост)
Как сделать, чтобы у оружия на полу была одна модель, а у того, что на хаде - другая? (В моделдефе) Пробовал через Model 0, Model 1, но модели наезжают друг на друга
Как сделать, чтобы у оружия на полу была одна модель, а у того, что на хаде - другая? (В моделдефе) Пробовал через Model 0, Model 1, но модели наезжают друг на друга
В модельдефе заменяются спрайты, спрайты модели на хаде и на полу разные. Нужно сделать 2 варианта оружия в модельдефе для разных спрайтов, тогда ничего наезжать не будет.
Пример:
Скрытый текст:
Model Flamer //На худе
{
Path "models/weapons/flamer"
model 0 "flamer.md3"
skin 0 "flamer.png"
scale 1.0 1.0 1.0
Zoffset -6
FrameIndex FLMR A 1 0
FrameIndex FLMR B 1 0
FrameIndex FLMR C 1 0
FrameIndex FLMR D 1 0
}
Model Flamer //На полу
{
Path "models/weapons/flamer"
model 0 "fitem.md3"
skin 0 "flamer.png"
model 1 "gitem.md3"
skin 1 "gas.jpg"
scale 2.0 2.0 2.0
Zoffset 1.5
Посоны, короче решил я замутить мину, которая будет детанировать на всё подряд.
Замутил значит саму мину, как видно по коду это простой монстр без движения:
Скрытый текст:
Actor IMMinePermanent
{
Monster
Speed 0
Health 2
Radius 3
Height 3
Mass 9999
MeleeThreshold 180
+NOTARGET
+FLOORCLIP
+FRIENDLY
+NOBLOOD
+LOOKALLAROUND
+NEVERRESPAWN
//+QUICKTORETALIATE
+ALWAYSFAST
-COUNTKILL
States
{
Spawn:
TNT1 A 0
NULL A 0 A_PlaySound("MineSpawn")
DFP5 A 35
Idle:
NULL A 0 A_JumpIf(ACS_ExecuteWithResult(983,0,0,0) <= 100, "Melee")
DFP5 AAAAA 1 A_Look
Loop
See:
NULL A 0 A_JumpIf(ACS_ExecuteWithResult(983,0,0,0) <= 100, "Melee")
DFP5 A 0 A_ClearTarget
DFP5 AAAAA 1 A_Chase
Loop
Melee:
NULL A 0 A_Die
Stop
Death:
DFP5 A 1 Bright A_PlaySound("MineBeep")
DFP5 A 15 Bright
TNT1 A 0 A_Explode(45, 150)
TNT1 A 0 A_PlaySound("MineExplode")
DFP5 CDEFGHIJKLMNO 3 Bright
Stop
}
}
Я думал сначала сделать монстра, который будет "ненавидеть" акторов с определённым тидом, но это оказалось не так уж практично - нужно каждому новому монстру выдавать свой тид.
Потом подумал - а что если сделать монстра дружелюбным и просто проверять расстояние между ним и игроком - решаем типа 2 проблемы сразу - детанирует на врагов по +FRIENDLY флагу и сдетанирует на игрока, если будет малое расстояние. Решил использовать АЦС скрипт для проверки расстояния:
Вообщем проблемы:
Первая - либо у меня плохо с математикой, либо вычисляет здум коряво, вообщем даже если от мины не отбежать далеко, то будут выдаваться значения типа 785, 801 и т.п. Почему - для меня загадка. У кого есть какие предположения, как правильно вычислить расстояние от монстра и игрока?
Вторая - как вообще обрататываются АЦС скрипты, вызванные из монстра? Просто игра постоянно выдаёт одно и тоже значение. Я пробовал использовать формулу без ">> 16" и заметил, что скрипт как будто тупо возвращает значение, которые было до этого. Т.е. если выдало значение в 40100, то потом при дальнейшем вызове скрипта игра упорно выдаёт только это значение.
Надеюсь растолкуете посоны)
Посоны, короче решил я замутить мину, которая будет детанировать на всё подряд.
А зачем тебе использовать скрипты ? Нельзя без них ? Почему не использовать A_JumpIfCloser ? С этой функцией будет
LEX SAFONOV :
детанировать на всё подряд.
Твой код делаем так:
See:
NULL A 0 A_JUMPIFCLOSER(60,"Melee") - значение 60 является расстоянием (0-60) при котором происходит прыжок на Melee - ставь такое которое тебе нужно
DFP5 A 0 A_ClearTarget
DFP5 AAAAA 1 A_Chase
Loop
Чуть не забыл - нужно еще установить флаг +TOUCHY, а также желательно сделать A_ChangeFlag("FRIENDLY", 0) и A_ChangeFlag("FRIENDLY", 1) через кадр в See стейте...
Как они могут друг на друга сдетонировать ? Они же у тебя не двигаются.
Если сразу наставить несколько мин в одном месте, то сдетанируют и банально от того, что монстр будет менять своё отношение к другим монстрам (один станет например дружелюбным, а другой враждебным и оба будут детанировать друг на друга).
Есть ещё вопрос - вот у меня есть FastProjectile, у него есть отдельный актор со взрывом. Как сделать так, чтобы актор со взрывом всегда спавнился на полу? +FLOORHUGGER не больно помогает.
Если сразу наставить несколько мин в одном месте, то сдетанируют и банально от того, что монстр будет менять своё отношение к другим монстрам (один станет например дружелюбным, а другой враждебным и оба будут детанировать друг на друга).
Ок. Это решаемо. Ставишь своей мине флаг +JUMPDOWN (флаг выбрал от балды - который нигде не используеццо)
далее в стейте Melee делаешь:
Melee:
NULL A 0 A_CheckFlag("JUMPDOWN", "See", AAPTR_TARGET)
NULL A 0 A_Die
Stop
Как сделать так, чтобы дверьми не давились оружия и жизни?
Нужному предмету установи флаг +DONTGIB.
Также помни - если тебе нужно, чтобы это действовало на предмет брошенный монстром - тебе нужна версия ZDOOM выше r4215 (или соответствующая версия GZDOOM)
Привет еще раз.
Есть ли функция для проверки, задело ли оружие цель?
К файтеру из хексена не посылать, у него вшитая в движок функция, которая при промахе сбрасывает счетчик комбо.
Как можно сделать, чтоб снаряды оружки были того-же цвета, что и игрок?
Наверное только через функцию A_SpawnItemEx в которой установить флаг SXF_TRANSFERTRANSLATION, т.е. выглядеть это будет ПРИБЛИЗИТЕЛЬНО вот так:
A_SpawnItemEx("Primer", 0, 0, 10, 20, 0, 0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION) - возможно тебе нужно будет что-то подправить под свои интересы. Здесь можешь изучить немного: http://zdoom.org/wiki/A_SpawnItemEx
Посоны, у меня короче есть броня со 100% поглощением урона. Однако я заметил, что игрок в Pain-стейт не переходит. Это как то обходится?(стоит учитывать, что нужно, чтобы работало в зандро)
Как считаете, какой программой будет проще и удобнее отредактировать ламп TEXTUREx (1 или 2 кстати брать? ), если нужно сделать в PWAD-е новые текстуры на основе патчей, уже имеющихся в IWAD-е?
XWE например когда добавляет текстуру из нового патча вроде создает полную копию TEXTURE1 из IWAD-а, и добавляет в нее - обязательно ли делать подобным образом?