Хочу сделать мигающий цветом актор. Можно ли через decorate указать StencilColor для каждого спрайта?
Тебе проще покрасить кадры спрайтов разными цветами и спрайты на которых объект стоит повёрнутым тоже по разному покрасить.
Даже если объект не двигается, должно выглядеть не плохо. Можно скорость кадров увеличить немного, чтобы быстрее мигал.
Тебе проще покрасить кадры спрайтов разными цветами
Часто не проще и хочется чтобы кастомизация была.
По теме — можно не только стенцилколор, но и трансляцию, например. Только там надо чтобы спрайт был белый, а трансляция через процентик. Не помню точный синтаксис.
По теме — можно не только стенцилколор, но и трансляцию, например. Только там надо чтобы спрайт был белый, а трансляция через процентик. Не помню точный синтаксис.
Тебе проще покрасить кадры спрайтов разными цветами и спрайты на которых объект стоит повёрнутым тоже по разному покрасить.
Даже если объект не двигается, должно выглядеть не плохо. Можно скорость кадров увеличить немного, чтобы быстрее мигал.
Нет, отдельно раскрашивать несколько десятков изображений не проще. Тем более, у меня не спрайт, а модель с немаленькой текстурой. В общем, сделал таким же методом, как потом предложил mars873:
АффтаR NдеN делаешь DECORATE в своём PWAD'е, пишешь туда:
ACTOR MyMonster1 : 25000 {
monster //обязателен
//коды
}
ACTOR MyMonster2 : 25001 {
monster //для оружий ничего не пишем, а вот в ракетах, плазмашарах например пишем projectile.
//25000, 25001 - ID Монстра который может быть положен в карте путём редактора.
//главное чтобы они не были одинаковы естественно
}
ACTOR MyReplacedMonster : Zombieman replaces Zombieman {
//замена зомби на свой собственный
}
//=====================
ACTOR MyWeapon : weapon 24000 {
//такая же ситуация как и с монстрами но наверху пишем"weapon"
}
ACTOR MyNewPistol : Pistol replaces Pistol {
// на этот раз не пишем "weapon", так как мы заменяем существующий уже с "weapon"...
}
все хрен опишешь, для этого есть целая вики. zdoom.org/wiki/ на английском, но пофиг. какой-нибудь гуглхром переведет, если че. хреново переведет, но для смысла достаточно.
напишу вкратце. все равно лишнее время было
после "actor ИМЯ" в начале можно указать циферку. тогда монстр/пуха отобразится в билдере. иначе можно только заспавнить руками.
если после имени и перед циферкой поставить ": ИМЯ2", то все, чего нет у первого и есть у второго, возмется из второго.
ну короче обычно юзается, чтобы что-нибудь изменить мелкое, оставив все остальное
на слова вроде "Radius 20" на вики можно тыкнуть и посмотреть, что они делают.
"Monster" необязателен. он просто делает код поменьше, т.к. это просто сокращение кучки флагов.
Скрытый текст:
картинки спрайтов называют 6ю символами. иногда 8мью
ALY1 A 1
первые 4 - основа. далее один - нужен для разных кадров. далее один - нужен для поворотов.
если спрайтов 8 - ALY1 A2 A8 - 7+8й действуют, как 5+6й. нужны, чтобы чувак отзеркаливался при поворотах и экономить картинки
если 6й символ будет 0, то поворота не будет, он всегда будет повернут(визуально) рожей к тебе
"States" - это, короче, место, где играются анимации и расположен мозг чувака. или пушки.
в декорейте 6й символ имеет другое значение, это время его нахождения.
а еще можно написать в 5м символе много букв, тогда это получится анимация короче
"Spawn" - самое начало, тут он спавнится. A_Look - смотрит вперед и ищет игрока. увидет - перейдет в "See"
"XDeath" - смерть в мясо, на куски.
ну ты разберешься, там по переводу понятно.
Скрытый текст:
если нужны свои звуки в SeeSound или A_PlaySound или подобном, делаешь ламп "SNDINFO". туда пишешь два раза название звука.
первый читает гозза, второй - название звука в твоем ваде/пк3
"BOOOOOM BOOOOOM" пойдет. или какой-нибудь "weapon/boom BOOOOOM" тоже
Как-то все слишком сложно и непонятно, но надеюсь въеду во все это.
Это замена оригинального зомби новым монстром(нового монстра нужно самому настроить):
Actor NewMonster Replaces ZombieMan
{monster}
Это создание нового монстра, который копирует настройки зомби(1111 личный номер монстра поскольку монстр не заменяет ни кого):
Actor NewMonster : ZombieMan 1111
{}
Это замена оригинального зомби новым монстром, копируя настройки зомби:
Actor NewMonster : ZombieMan Replaces ZombieMan
{}
Это полностью новый монстр, которого нужно настраивать самому как пожелаешь:
Actor NewMonster 1112
{monster}
а можно актора заставить двигаться, как двигает флаг FLOATBOB, но не по вертикали, а по горизонтали?
Offset(,) вроде только для оружия предназначен
Можно и через декорейт и через ацс, но я прямо вот готовый код писать не буду, пару раз тестил, клади на уровне аптечку и смотри как она по X двигается.
Actor MyBobMedikit : Medikit replaces medikit
{
+NOGRAVITY
States
{
Spawn: MEDI A 0
Idle.Right:
MEDI A 1 A_ChangeVelocity( 0.3, 0, 0, CVF_Replace) //Даем скорость по X координате.
MEDI AAAAAAAAA 1 A_ScaleVelocity(1.3) //Плавно ускоряем по всем осям
MEDI AAAAAAAAAAAAAAAAAA 1 A_ScaleVelocity(0.9) //Плавно замедляем по всем осям
Idle.Left:
MEDI A 1 A_ChangeVelocity( -0.3, 0, 0, CVF_REPLACE)
MEDI AAAAAAAAA 1 A_ScaleVelocity(1.3)
MEDI AAAAAAAAAAAAAAAAAA 1 A_ScaleVelocity(0.9)
Goto Idle.right
}
}
Да конечно это не прям копия FLOATBOB, но думаю смысл понятен?
Если нет, то объект должен плавно набирать скорость в одну сторону и плавно ее сбрасывать до 0, после опять набирать скорость только уже в другую сторону.. короче цыкл.
Народ нужна помощь . Написал код для оружия , всё работает кроме перезарядке после того как закончаться патроны . В чём ошибка и как исправить , чтобы после того когда в обойме 0 то оружие перезаряжалось? и ещё вопрос: Как заменить altfire на reload и привязать к кнопке , желательно обьяснить ) заранее спасибо.
Скрытый текст:
actor BRFS : Ammo
{
inventory.maxamount 15
inventory.icon "PISTCLIP"
}
Actor BRFSAmmo : Ammo 6004
{
inventory.amount 15
inventory.maxamount 150
inventory.pickupsound "pickups/pistolammo"
inventory.pickupmessage "Picked up Barret92FS ammo."
inventory.icon "CLIPA0"
states
{
Spawn:
CLIP A 1
loop
}
}
Actor Reload : Inventory
{
inventory.maxamount 1
}
Actor Barreta92FS : weapon 4501
{
spawnid 239
Weapon.SlotNumber 2
weapon.kickback 500
weapon.selectionorder 2000
weapon.ammotype1 "BRFS"
weapon.ammogive1 15
weapon.ammouse 1
weapon.ammotype2 "BRFSAMMO"
weapon.ammogive2 15
obituary "%o ate %k' s Barreta92FS!!!"
+WEAPON.NOAUTOFIRE
states
{
spawn:
BRF9 A 1
loop
ready:
BRF9 E 1 A_weaponready
null A 0 A_jumpifinventory("BRFS",0,"reload")//
loop
deselect:
BRF9 Q 1 A_lower
loop
Select:
BRF9 Q 1 A_raise
loop
Fire:
TNT1 A 0 A_JumpIfInventory("BRFS",1,2)
TNT1 A 0 A_JumpIfnoammo("altfire")
Goto altfire
TNT1 AAAA 0
BRF9 E 1
BRF9 A 0 A_playsound("BRF92F")
BRF9 B 1 A_FireBullets (0.3, 0, 1, 27, "BulletPuff")
NULL A 0 A_FireCustomMissile("8mmCasingSpawner",0,0,0)
BRF9 C 2 A_GunFlash
BRF9 D 1
BRF9 B 1 A_ReFire
goto Ready
altfire:
NULL A 0 A_JumpIfInventory("BRFS",15,"Ready")
NULL A 0 A_JumpIfInventory("BRFSAMMO",1,1)
goto ready
BRF9 FG 2
BRF9 HIJ 3
BRF9 K 1
BRF9 LM 2
BRF9 NOP 3
//A_PlaySound("GLOKAQ")
NULL A 0 A_JumpIfInventory("BRFSAMMO",1,1)
// goto ready
NULL A 0 A_TakeInventory("BRFSAMMO",1)
NULL A 0 A_GiveInventory("BRFS",1)
NULL A 0 A_jumpifinventory("BRFS",15,"ready")
goto altfire+15
}
}
Пожалуйста, если код такого объёма - под спойлер его. [LeD]Jake Crusher. И в [сode]. ZZYZX.
Note that if amount is 0, the jump is only performed if the actor is carrying the maximum number of that item. This is useful for checking whether the player has the maximum amount of ammo for a particular weapon, regardless of whether or not he's found a backpack.
Здесь, при закомментированном переходе, конструкция будет работать неправильно, т. к. "A_TakeInventory" "перепрыгиваться" не будет:
DOONFOREVER:
NULL A 0 A_JumpIfInventory("BRFSAMMO",1,1)
// goto ready
NULL A 0 A_TakeInventory("BRFSAMMO",1)
Тут, в предпоследней строке,
DOONFOREVER:
NULL A 0 A_jumpifinventory("BRFS",15,"ready")
goto altfire+15
Переход у тебя также будет работать неверно. Из-за чего -- уже писал выше.
* * *
DOONFOREVER:
Как заменить altfire на reload и привязать к кнопке
В смысле "привязать"? Reload и AltFire по-умолчанию можно настроить через "Customize controls". Или ты про свою кнопку говоришь? Тогда тебе нужно DEFBINDS изучать.
Однако я сомневаюсь, что ты это имел ввиду. Если я понял правильно, то в коде чуть ниже есть привязка AltFire'а к Reload'у и наоборот.
Код с исправлениями. Попутно пофиксил неработавший флаг "+WEAPON.NOAUTOFIRE" (исходя из того, что код -- Беретты, и что вообще этот флаг есть):
Скрытый текст:
// Код я практически не переделывал, лишь добавил отступы и убрал ошибки. Ну и синтаксис, немного.
actor BRFS : Ammo
{
inventory.maxamount 15
inventory.icon "PISTCLIP"
}
Actor BRFSAmmo : Ammo 6004
{
inventory.amount 15
inventory.maxamount 150
inventory.pickupsound "pickups/pistolammo"
inventory.pickupmessage "Picked up Barret92FS ammo."
inventory.icon "CLIPA0"
states
{
Spawn:
CLIP A 1
loop
}
}
Actor Reload : Inventory
{
inventory.maxamount 1
}
Actor Barreta92FS : weapon 4501
{
spawnid 239
Weapon.SlotNumber 2
weapon.kickback 500
weapon.selectionorder 2000
weapon.ammotype1 "BRFS"
weapon.ammogive1 15
weapon.ammouse 1
weapon.ammotype2 "BRFSAMMO"
weapon.ammogive2 15
obituary "%o ate %k' s Barreta92FS!!!"
+WEAPON.NOAUTOFIRE
+WEAPON.AMMO_OPTIONAL
states
{
spawn:
BRF9 A 1
loop
ready:
BRF9 E 1 A_weaponready
null A 0 A_jumpifinventory("BRFS",0,"reload")//
loop
deselect:
BRF9 Q 1 A_lower
loop
Select:
BRF9 Q 1 A_raise
loop
Fire:
TNT1 A 0 A_JumpIfInventory("BRFS",1,2)
TNT1 A 0 A_JumpIfnoammo("altfire")
Goto altfire
TNT1 AAAA 0
BRF9 E 1
BRF9 A 0 A_playsound("BRF92F")
BRF9 B 1 A_FireBullets (0.3, 0, 1, 27, "BulletPuff")
NULL A 0 //A_FireCustomMissile("8mmCasingSpawner",0,0,0)
BRF9 C 2 A_GunFlash
BRF9 D 1
BRF9 B 1 //A_ReFire
goto Ready
Flash:
MSHF AB 2
Stop
altfire:
Reload:
NULL A 0 A_JumpIfInventory("BRFS", 0, "Ready")
NULL A 0 A_JumpIfInventory("BRFSAMMO",1,1)
goto ready
BRF9 FG 2
BRF9 HIJ 3
BRF9 K 1
BRF9 LM 2
BRF9 NOP 3
//A_PlaySound("GLOKAQ")
NULL A 0 A_JumpIfInventory("BRFSAMMO", 1, 1)
goto ready
NULL A 0 A_TakeInventory("BRFSAMMO",1)
NULL A 0 A_GiveInventory("BRFS",1)
NULL A 0 A_jumpifinventory("BRFS", 0, "ready")
goto altfire+14
}
}