Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые! Пред.  1, 2, 3 ... 28, 29, 30 ... 350, 351, 352  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!Ответить
АвторСообщение
BL@CK DE@TH
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 16 points
1274

Doom Rate: 1.13
Ссылка на пост №561 Отправлено: 12.04.09 14:51:56

Посмотри Хеллспавн кибера.

С этим разобрался, спасибо.

Вот ещё один вопрос:

Мой игрок стреляет выпускает три снаряда за один раз, естественно, три раза проигрывается анимация атаки, но если во время этой атаки он получает повреждения и проигрывается анимация боли, то его снаряды всё-равно продолжают вылетать. Как сделать, чтобы во время причинения вреда игроку его атака мгновенно прекращалась, например, как у монстров?
1
nprotect
= Captain =
Next rank: - Major - after 227 points
2413

Doom Rate: 2.45
Ссылка на пост №562 Отправлено: 12.04.09 16:14:17
BL@CK DE@TH :
Мой игрок стреляет выпускает три снаряда за один раз, естественно, три раза проигрывается анимация атаки, но если во время этой атаки он получает повреждения и проигрывается анимация боли, то его снаряды всё-равно продолжают вылетать

ну хоть код бы привел, для начала
1 2 1
BL@CK DE@TH
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 16 points
1274

Doom Rate: 1.13
Ссылка на пост №563 Отправлено: 12.04.09 17:15:36
На примере игрока-Cyberdemon-а.

Полный код:


//CyberDemon//

ACTOR iCyberdemon : PlayerPawn
{
Health 4000
Speed 0.7
Radius 22
Height 75
Mass 1000
painchance 20
Player.StartItem "cyberlauncher"
Player.StartItem "Cyberdoomsday"
Player.DisplayName Cyberdemon
Player.ForwardMove .5 .5
Player.SideMove .5 .5
Player.MaxHealth 4000
Player.SoundClass cyberdemon
Player.ViewHeight 89
+BOSS
+NOSKIN
+FLOORCLIP
+NORADIUSDMG
+BOSSDEATH
states
{
Spawn:
CYBR AB 10
CYBR B 5 A_GiveInventory ("MonsterSuit",1)
Loop
See:
CYBR A 6 A_PlaySound ("spider/walk")
CYBR B 6 A_PlaySound ("Cyber/Hoof")
CYBR CD 6
Loop
Missile:
CYBR F 12 A_CyberAttack // See Rocket
CYBR F 12 A_CyberAttack
CYBR F 12 A_CyberAttack
goto See
Melee:
CYBR E 6
CYBR F 12 BRIGHT
CYBR E 12
CYBR F 12 BRIGHT
CYBR E 12
CYBR F 12 BRIGHT
CYBR E 12
Goto Spawn
Pain:
CYBR G 10 A_PlaySound ("Cyber/pain")
Goto Spawn
Death:
CYBR H 7
CYBR I 7 A_PlayerScream
CYBR J 7 A_NoBlocking
CYBR K 7
CYBR L 7
CYBR MNO 7
CYBR P -1
Stop
XDeath:
CYBR H 7
CYBR I 7 A_PlayerScream
CYBR J 7 A_NoBlocking
CYBR K 7
CYBR L 7
CYBR MNO 7
CYBR P -1
Stop
}
}

ACTOR CyberLauncher : Weapon
{
OBITUARY "%o was splattered by Cyber%k."
Weapon.AmmoUse 0
Weapon.AmmoType "cyberball"
+WEAPON.NOAUTOFIRE
Inventory.PickupMessage "$GOTLAUNCHER"
States
{
Ready:
CYBL A 1 A_WeaponReady
Loop
Deselect:
NULL A 0 SetPlayerProperty (0, 0, 0)
CYBL A 1 A_Lower
Loop
Select:
CYBL A 1 A_Raise
Loop
Fire:
NULL A 0 SetPlayerProperty (0, 1, 0)
CYBL A 6 A_Gunflash
CYBL B 12 Bright
CYBL A 12
CYBL B 12 Bright
CYBL A 12
CYBL B 12 Bright
NULL A 0 SetPlayerProperty (0, 0, 0)
CYBL A 35
CYBL A 0 A_ReFire
Goto Ready
Spawn:
LAUN A -1
Stop
}
}

ACTOR Rocket2
{
Radius 11
Height 8
Speed 20
Damage 26
DamageType Fire
Projectile
+RANDOMIZE
+DEHEXPLOSION
+ROCKETTRAIL
+EXPLODEONDEATH
SeeSound "weapons/rocklf"
DeathSound "weapons/rocklx"
States
{
Spawn:
MISL A 1 Bright
Loop
Death:
MISL B 8 Bright A_Explode
MISL C 6 Bright
MISL D 4 Bright
Stop
}
}
1
M@@@H!aK
- Sergeant -
Next rank: = Sergeant = after 15 points
325

Doom Rate: 2.83
Ссылка на пост №564 Отправлено: 12.04.09 17:34:45
BL@CK DE@TH
Насколько я помню, игрок, попадая в Pain State, никогда не прерывает текущего действия - Pain State игрока только меняет его внешний вид. В общем-то это даже логично - в Pain State попадает актор изображающий игрока (iCyberdemon), а стейты стрельбы в это время контролируются совсем другим актором - CyberLauncher'ом.
BL@CK DE@TH
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 16 points
1274

Doom Rate: 1.13
Ссылка на пост №565 Отправлено: 12.04.09 17:51:34

BL@CK DE@TH
Насколько я помню, игрок, попадая в Pain State, никогда не прерывает текущего действия - Pain State игрока только меняет его внешний вид. В общем-то это даже логично - в Pain State попадает актор изображающий игрока (iCyberdemon), а стейты стрельбы в это время контролируются совсем другим актором - CyberLauncher'ом.

Т.е. получается, что эту проблему решить или есть какие-то способы? Можно-ли в самом Cyberlauncher-е прописать Pain или триггер который будет прерывать стрельбу во время получения игроком повреждения?
1
Часовщик
UAC Sergeant Major
Next rank: UAC Sergeant Major after 33 points
727

Doom Rate: 3.41
Ссылка на пост №566 Отправлено: 12.04.09 18:30:23
насколько я знаю у оружия нету пейн стейта. можно сделать так:
рокетланчер спонит невидимый и неосязаемый актор который вылетает из него на какоето микроскопическое расстояние, тутже моментально стреляет рокетой и умирает. сделать этому актору стейт пэйн, попадая в который он будет переходить в стейт смерти. получится может не вточности также как у кибердемона, но похоже
1
Archi]ASTS[
UAC General
Next rank: Unavailable after 0 points
12719

Doom Rate: 1.87
Ссылка на пост №567 Отправлено: 12.04.09 19:41:34
BL@CK DE@TH
А не проще ли сделать по одному выстрелу? :P
2 1 1
BL@CK DE@TH
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 16 points
1274

Doom Rate: 1.13
Ссылка на пост №568 Отправлено: 12.04.09 21:17:17

BL@CK DE@TH
А не проще ли сделать по одному выстрелу?

Проще, но хочется сделать как в оригинале.
1
M@@@H!aK
- Sergeant -
Next rank: = Sergeant = after 15 points
325

Doom Rate: 2.83
Ссылка на пост №569 Отправлено: 13.04.09 10:27:43
BL@CK DE@TH
Если очень хочется, попробуй давать игроку в пейн-стейте некий предмет инвентори, а через некоторое время забирай его обратно. Перед каждым выстелом проверяй с помощью A_JumpIfInventory наличие этого айтема и выпрыгивай из стейта стрельбы, если он есть. Должно работать, хотя может потребоваться некоторая возня с параметрами, чтобы все это работало прилично.
Archi]ASTS[
UAC General
Next rank: Unavailable after 0 points
12719

Doom Rate: 1.87
Ссылка на пост №570 Отправлено: 13.04.09 12:24:48
BL@CK DE@TH :
хочется сделать как в оригинале.

Мне до последнего казалось что кибер стреляет по одному выстрелу.

Мне кажется так сделано для увеличения мощности кибердемона. Я бы не хотел стрелять выстрела подряд.
2 1 1
nprotect
= Captain =
Next rank: - Major - after 227 points
2413

Doom Rate: 2.45
Ссылка на пост №571 Отправлено: 13.04.09 17:01:13
M@@@H!aK :
попробуй давать игроку в пейн-стейте некий предмет инвентори

не факт, что такое будет работать. как я понял, действие CyberAttack выполняется даже в стейте Pain, так что какие бы там условные переходы с инвентори не стояли, он все равно будет выполнять это действие
1 2 1
M@@@H!aK
- Sergeant -
Next rank: = Sergeant = after 15 points
325

Doom Rate: 2.83
Ссылка на пост №572 Отправлено: 13.04.09 17:09:36
nprotect :
не факт, что такое будет работать

Сейчас посмотрю еще раз, что там написано...

Прочитал приведенный выше текст Decorate внимательнее... Хм, так там, оказывается, вообще как-то странно все сделано. Зачем такой огород городить? Зачем A_CyberAttack и прочее? Можно написать обычный PlayerPawn, в котором нет никаких экшнов, а всю стрельбу вынести в код собственно оружия. И стрелять не A_CyberAttack'ом, а нормальным A_FireCustomMissile. Точно также можно реализовать и торможение игрока во время стрельбы (при желании можно сделать, чтобы он даже прицел сдвинуть не мог, пока все три ракеты не выплюнет - все в коде собственно вепона)
Alex3005
- Master Corporal -
Next rank: = Master Corporal = after 40 points
200

Doom Rate: 1.02
Ссылка на пост №573 Отправлено: 14.04.09 01:26:21
Народ помогите с thing_hate в декорейте
M@@@H!aK
- Sergeant -
Next rank: = Sergeant = after 15 points
325

Doom Rate: 2.83
Ссылка на пост №574 Отправлено: 14.04.09 05:09:09
alex3005
Пишешь у одного типа монстров что-то вроде вроде:



Spawn:
              POSS A 0
              POSS A 0 Thing_ChangeTID(0,1) // Первый тип монстров, все имеют TID 1
              POSS A 0 Thing_Hate(0,2,4) // ... и люто, бешено ненавидят монстров с TID 2
              POSS AB 10 A_Look
      Goto Spawn+3



А у второго типа монстров аналогично:



Spawn:
              TROO A 0
              TROO A 0 Thing_ChangeTID(0,2) // Второй тип монстров, все имеют TID 2
              TROO A 0 Thing_Hate(0,1,4) // ... и люто, бешено ненавидят монстров с TID 1
              TROO AB 10 A_Look
      Goto Spawn+3




Недостатки: каждый монстр первого или второго типа обязан иметь определенный tid.

Посмотри в Wiki про типы ненависти в Thing_Hate - я поставил 4, но, может быть, тебе нужен какой-то другой вариант.
NoMaD
- Corporal -
Next rank: = Corporal = after 2 points
98

Doom Rate: 1.63
Ссылка на пост №575 Отправлено: 14.04.09 15:38:56
Как я могу сделать эффект, чтоб игрок мог перешагнуть один раз линию,
а обратно через нее не мог вернуться?
nprotect
= Captain =
Next rank: - Major - after 227 points
2413

Doom Rate: 2.45
Ссылка на пост №576 Отправлено: 14.04.09 15:46:16
Nomad :
Как я могу сделать эффект, чтоб игрок мог перешагнуть один раз линию, а обратно через нее не мог вернуться?

скриптом. один раз перешагнул - значение переменной изменилось, а потом делаешь в скрипте:

SetLineBlocking(lineid ,BLOCK_EVERYTHING);
1 2 1
BL@CK DE@TH
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 16 points
1274

Doom Rate: 1.13
Ссылка на пост №577 Отправлено: 14.04.09 17:16:46

Сейчас посмотрю еще раз, что там написано...

Прочитал приведенный выше текст Decorate внимательнее... Хм, так там, оказывается, вообще как-то странно все сделано. Зачем такой огород городить? Зачем A_CyberAttack и прочее? Можно написать обычный PlayerPawn, в котором нет никаких экшнов, а всю стрельбу вынести в код собственно оружия. И стрелять не A_CyberAttack'ом, а нормальным A_FireCustomMissile. Точно также можно реализовать и торможение игрока во время стрельбы (при желании можно сделать, чтобы он даже прицел сдвинуть не мог, пока все три ракеты не выплюнет - все в коде собственно вепона)

Вот с этого момента поподробнее, пожалуйста. Я сам только недавно взялся за скрипты, поэтому много чего не понимаю.
1
M@@@H!aK
- Sergeant -
Next rank: = Sergeant = after 15 points
325

Doom Rate: 2.83
Ссылка на пост №578 Отправлено: 14.04.09 21:14:28
BL@CK DE@TH :
Вот с этого момента поподробнее, пожалуйста.

Чего ты хочешь добиться? Сделать игру за кибердемона?

Тогда вот список того, что тебе нужно:
1) Поставить камеру выше (кибердемон высокий)
2) Сделать игроку больше здоровья
3) Сделать одно, неизменяемое оружие, которое стреляет пачками по три ракеты, не дает игроку двигаться во время стрельбы и прерывает огонь при получении боли, так?

Первые два пункта делаются элементарно с помощью соответствующего класса игрока. Изучай, как сделан стандартный класс в думе: DoomPlayer и не городи огород. Никакой стрельбы из стейтов плееркласса.

Чтобы сделать оружие, можно начать с переделки обычного рокет ланчера: RocketLauncher. Повтори первые три строчки стейта Fire еще два раза и получишь тройной выстрел. Поиграйся с задержкой, чтобы получилась нужная частота выстрела. Плюс добавить торможение игрока во время выстрела с помощью SetPlayerProperty

Выглядеть это будет примерно так:

 Fire:
    MISG B 0 SetPlayerProperty(0, 1, 0) // "Тормозим" игрока
    MISG B 8 A_GunFlash
    MISG B 12 A_FireMissile
    MISG B 0 A_ReFire

    MISG B 8 A_GunFlash
    MISG B 12 A_FireMissile
    MISG B 0 A_ReFire

    MISG B 8 A_GunFlash
    MISG B 12 A_FireMissile
    MISG B 0 A_ReFire
    MISG B 0 SetPlayerProperty(0, 0, 0) // Обратно разрешаем двигаться
    Goto Ready


Как сделать, чтобы при получении боли игрок переставал стрелять, я уже описал. Возможно, это не будет работать, а тестить это сейчас мне лень. ;-) Но SetPlayerProperty работает, это я сейчас проверил. Разберись, как работают джампы, в частности, A_JumpIfInventory. Идея - выпрыгнуть из стейта стрельбы (не забыв вернуть игроку возможность двигаться) при наличии у игрока некого инвентори:


Actor Flag_PlayerIsInPainState : Inventory
{
   Inventory.MaxAmount 1
}


Инвентори этот давать в пейн стейте playerpawn'а, забирать по выходу из него. Перед каждым выстрелом проверять с помощью джампа наличие этого предмета. Короче, как-то так:


 Pain:
    PLAY G 0 A_GiveInventory("Flag_PlayerIsInPainState",1)
    PLAY G 4
    PLAY G 4 A_Pain
    PLAY G 0 A_TakeInventory("Flag_PlayerIsInPainState",1)
    Goto Spawn



 Fire:
    MISG B 0 SetPlayerProperty(0, 1, 0)
    MISG B 0 A_JumpIfInventory("Flag_PlayerIsInPainState",1,12) // Проверяем, находимся ли мы в Pain State
    MISG B 8 A_GunFlash
    MISG B 12 A_FireMissile
    MISG B 0 A_ReFire

    MISG B 0 A_JumpIfInventory("Flag_PlayerIsInPainState",1,8) // Проверяем, находимся ли мы в Pain State
    MISG B 8 A_GunFlash
    MISG B 12 A_FireMissile
    MISG B 0 A_ReFire

    MISG B 0 A_JumpIfInventory("Flag_PlayerIsInPainState",1,4) // Проверяем, находимся ли мы в Pain State
    MISG B 8 A_GunFlash
    MISG B 12 A_FireMissile
    MISG B 0 A_ReFire
    MISG B 0 SetPlayerProperty(0, 0, 0)
    Goto Ready


Я это не проверял, и мог ошибиться где-то в смещениях при джампах. Короче, идею я тебе подал. ;-)
BL@CK DE@TH
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 16 points
1274

Doom Rate: 1.13
Ссылка на пост №579 Отправлено: 14.04.09 21:47:34

Я это не проверял, и мог ошибиться где-то в смещениях при джампах. Короче, идею я тебе подал.

Спасибо, товарищ! Буду потихоньку разбираться.
1
NoMaD
- Corporal -
Next rank: = Corporal = after 2 points
98

Doom Rate: 1.63
Ссылка на пост №580 Отправлено: 15.04.09 06:59:00
nprotect
Block_everything ни черта не работает, но мне нужен только плаер,
тогда я ввел плаеру таг и написал в скрипте без всяких переменных
тот код: работает.
Но за SetLineBlocking спасибо :)
Страница 29 из 352Перейти наверх Пред.  1, 2, 3 ... 28, 29, 30 ... 350, 351, 352  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!