Среда, 24.04.2024, 07:05
Главная » Статьи » Прочее » PainEditor

Экшены геймплея. Описание и применение.

Рассмотрим некоторые экшены оригинального PK. Все экшены вводятся в колонках OnTouch, OnKill, OnPlay для боксов, предметов и всего, где есть такие колонки.

Статья в первую очередь создана для тех, кто хоть как-то знаком с редактором уровней. Если же нет, то вам сюда.

Для экшенов с настройкой позиции:
Для лёгкого определения позиции можно создать какой-либо предмет в нужной точке и скопировать его позицию (строка:Pos). Либо:p.Pos.X,p.Pos.Y,p.Pos.Z - текущая позиция игрока. Либо заменить "p" на имя любого предмета на уровне, чтобы задействовать его позицию.

Для экшенов с назначением партиклей:
Узнать имя партикля можно, запустив PainEditor и в левом углу, открыв редактор партиклей ParticleFX, в верхнем поле просмотреть эффекты и их имена.
--======================================================

Экшен Snd2D(sound)
Например:
Snd2D:"actor/Oficer/bomb-explode1"
--------
Воспроизводит выбранный звук.
-----------------------------------------------------------------------------

Экшен SetEnvFX(obj,fxName,sound)
Например:
SetEnvFX:RainEnvironment_001,"camrain","misc/rain-loop"
--------
С помощью этого экшена можно на ходу менять партикль и звук для боксов c погодой (Environments).
Подробнее: SetEnvFX:имя созданного бокса,"название партикля","путь к звуку". Можно поставить один бокс на уровень и менять его содержимое по мере необходимости. Также можно отключить партикли и звуки, если оставить поля пустыми.
Этот экшен необходим, если на уровне стоит несколько таких боксов с разными эффектами.
-----------------------------------------------------------------------------

Экшен Message(textID)
Например:
Message:782
--------
Показывает на экране сообщение (указываем ID текста в языковом файле (номер строки), т.е. Lang_Russian или Lang_English).
Если вы добавляете собственный текст, который может оказаться очень длинным,
то для переноса строки необходимо вставить символ \n.
-----------------------------------------------------------------------------

Экшен BindSound(entity,soundname,fstart,fend)
Например:
BindSound:Flame_factory_001,"items/dynamite_fuse_loop",15,40,1
--------
Привязывает звук к партиклю, который впоследствии будет циклично воспроизводиться. Поддерживается только моно. Цифры определяют начальный и конечный радиус проигрывания звука.
-----------------------------------------------------------------------------

Экшен UnbindAllSounds(entity)
Например:
UnbindAllSounds:Flame_factory_001
--------
Убивает все ранее привязанные к партиклю звуки.
-----------------------------------------------------------------------------

Экшен PFX(effect,scale,x,y,z)
Например:
PFX:"checkpoint_fx1",1,-7.6638,2.1416,-1.8146
--------
Создать партикль в указанной точке.
Подробнее: PFX:"имя партикля",размер,позиция
-----------------------------------------------------------------------------

Экшен EarthQuake(timeout,range,move,rot,x,y,z)
Например:
EarthQuake:3,150,0.2,0.2
Либо
EarthQuake:3,150,0.2,0.2,-7.6638,2.1416,-1.8146 - с указанием конкретной позиции
--------
Создать землетрясение (трясение камеры).
Подробнее: EarthQuake:время трясения, рабочий радиус, движения камеры, повороты камеры
-----------------------------------------------------------------------------

Экшен Light(x,y,z,r,g,b,range1,range2,intensity,fin,fmax,fout)
Например:
Light:109.3100,2.6415,-11.2778,100,120,250,13,13,6,0.05,0.55,0.3
--------
Создать свет в указанной точке.
Подробнее: Light:Позиция,красный цвет,зелёный цвет,синий цвет,начальный радиус,конечный радиус,интенсивность света,время появления,задержка,время затухания
-----------------------------------------------------------------------------

Экшен Kill(p)
Например:
Kill:CheckPoint_001
--------
Убивает указанный обьект.
-----------------------------------------------------------------------------

Экшен SetImmortal(o,state)
Например:
SetImmortal:ammo_box_1_001,true
--------
Сделать предмет неуничтожимым. Значение true - активирует бессмертие. False - отключает.
-----------------------------------------------------------------------------

Экшен Launch(obj,...)
Например:
Launch:AmbushForPlayer_001
--------
Запуск или активация обьекта. Применимо для боксов, чекпоинтов, выхода с уровня.
-----------------------------------------------------------------------------

Экшен SetFrozen(obj,frozen)
Например:
SetFrozen:AmbushForPlayer_001,true
--------
Приостановить работу обьекта. Применяется опять же для боксов, чекпоинтов, выхода с уровня.
-----------------------------------------------------------------------------

Экшен SetEvolvePFX(entity,state)
Например:
SetEvolvePFX:Ai_StopBullet_FX_001,true
--------
Активирует и деактивирует партикль. Значение true - активирует. false - отключает.
-----------------------------------------------------------------------------

Экшен WalkAndJump(obj,area,point,anim,pow,uppow)
Например:
WalkAndJump:p,zgory,1,"atak1",16,11
--------
Заставить монстра идти в нужном направлении и совершить прыжок.
Подробнее: RunAndJump:имя монстра,имя установленной точки "CArea",1,"проиграть анимацию монстра",сила прыжка,высота прыжка
-----------------------------------------------------------------------------

Экшен Run(obj,area,point)
Например:
Run:MonstersSpawnPoint_001_0,Marea,1
--------
Заставить монстра бежать в нужном направлении.
Подробнее: Run:имя уже респанувшегося монстра,имя предварительно созданной точки "CArea",1. Монстр будет бежать по направлению к точке, не реагируя на игрока и получаемый урон. А потом придёт "в сознание" так сказать, и начнёт делать то, для чего был рождён, атаковать игрока.
-----------------------------------------------------------------------------

Экшен RunAndJump(obj,area,point,anim,pow,uppow,doNotUseWP)
Например:
RunAndJump:p,zgory,1,"atak1",16,11,true
--------
Заставить монстра бежать в нужном направлении и совершить прыжок.
Подробнее: RunAndJump:имя монстра,имя установленной точки "CArea",1,"проиграть анимацию монстра",сила прыжка,высота прыжка,true
-----------------------------------------------------------------------------

Экшен EnableDraw(entity,state,alsoChildren)
Например:
EnableDraw:ammo_box_1_001,false
--------
Сделать предмет невидимым. Значение false - скрывает предмет, true - показывает. Учтите, что предмет физически остаётся на карте, только становится невидимым. Также можно скрывать и партикли. Вдобавок если вы скрыли предмет, к которому был привязан партикль, то предмет исчезнет, а партикль останется.
-----------------------------------------------------------------------------

Экшен AI(obj,state)
Например:
AI:MonstersSpawnPoint_001_0,true
--------
Отключить AI монстру. Он будет просто стоять и нечего не делать. значение true - включает. false - отключает.
Подробнее: AI:имя уже респанувшегося или созданного монстра,true
-----------------------------------------------------------------------------

Экшен Damage(obj,damage)
Например:
Damage:Test_monster_001
Либо
Damage:Test_monster_001,99 - с указанием урона
--------
Нанести урон, будь то монстр или разрушаемый обьект.
Подробнее: Damage:имя предмета или уже респанувшегося или созданного монстра. По умолчанию наносится урон, равный запасу здоровья обьекта.
-----------------------------------------------------------------------------

Экшен Wait(sec)
Например:
Wait:3
--------
Ждать в секундах для выполнения следующего действия.
-----------------------------------------------------------------------------

Экшен WaitForCorpses(cnt)
Например:
WaitForCorpses:3
--------
Ждать, пока не будет убито указанное количество врагов для выполнения следующего действия.
-----------------------------------------------------------------------------

Экшен WaitForSouls(cnt)
Например:
WaitForSouls:3
--------
Ждать, пока не будет собрано указанное количество душ для выполнения следующего действия.
-----------------------------------------------------------------------------

Экшен Close(obj,cnt, showCnt, endLev)
Например:
Close:Slab_001,999
Либо
Close:Slab_001,5,true - проиграть звук после убийства указанного кол-ва врагов. (только для слабов).
--------
Закрыть дверь(слаб).
Подробнее: Close:имя слаба, количество убитых противников, после которых данный слаб откроется (подобно экшену WaitForCorpses)
-----------------------------------------------------------------------------

Экшен Open(obj)
Например:
Open:Slab_001
--------
Открыть дверь(слаб).
-----------------------------------------------------------------------------

Экшен OpenAllSlabsOnly()
Например:
OpenAllSlabsOnly
--------
Открыть все двери на уровне.
-----------------------------------------------------------------------------

Экшен OpenAllSlabs()
Например:
OpenAllSlabs
--------
Открыть все двери на уровне и уничтожить все амбуши(AmbushForPlayer).
-----------------------------------------------------------------------------

Экшен Fire(obj,tm)
Например:
Fire:Z_Test_monster_001,3
--------
Поджечь предмет или монстра.
Подробнее: Fire:имя предмета или уже респанувшегося или созданного монстра,время горения
-----------------------------------------------------------------------------

Экшен KillAllActors()
Например:
KillAllActors
--------
Уничтожить всех респанувшихся врагов на уровне. К боссам это не относится.
-----------------------------------------------------------------------------

Экшен ExplosionFX(x,y,z,fxscale)
Например:
ExplosionFX:-7.6638,2.1416,-1.8146,1
--------
Создать взрыв в указанной точке.
Подробнее: ExplosionFX:позиция,размер эффекта
-----------------------------------------------------------------------------

Экшен DemonOn()
Например:
DemonOn
--------
Превратиться в демона.
-----------------------------------------------------------------------------

Экшен DemonOff()
Например:
DemonOff
--------
Выключить превращение.
-----------------------------------------------------------------------------

Экшен Statue(obj,state)
Например:
Statue:Z_Test_monster_001,true
--------
Превратить врага в статую (заморозить). Значение true - активирует. false - отключает.
-----------------------------------------------------------------------------

Экшен -remove-
Например:
-remove-
--------
Удалить строку из колонки OnTouch, OnKill, OnPlay и всех аналогичных.
-----------------------------------------------------------------------------

Описаны не все экшены, а только те, которые знаю. Но и этих вполне хватит для создания полноценного геймплея.

-----------------------------------------------------------------------------
Дополнительно
-----------------------------------------------------------------------------
Экшен L:(Lua) 
Например:
L:Game.FearCard = true
--------
Позволяет задействовать какой-нибудь параметр из системных скриптов.
-----------------------------------------------------------------------------  

Либо:
L:lever_5_001:OnUse()
--------
Позволяет задействовать какую-нибудь функцию, специально написанную для того или иного предмета.
  Подробнее:  L:имя предмета:имя его функции    
-----------------------------------------------------------------------------  

Категория: PainEditor | Добавил: Havcom (30.09.2012)
Просмотров: 3396 | Комментарии: 7 | Теги: геймплей, PainKiller | Рейтинг: 5.0/2
Всего комментариев: 7
7 hardcor   (15.04.2014 08:31) [Материал]
Хороршая статья, можно много чего нового сделать.

6 Astaroth   (26.12.2012 15:43) [Материал]
Ещё есть скрипты:
EndOfLevelProcess()
WaitForWalk(obj)
WaitForBossKill()
WaitForJump(obj)
CloseAdd(obj,cnt, showCnt, endLev)
EnableDeathZone(name,enable)
Pin(entity,pin)
PlaySpawnSound(obj, d1, d2)
Вобщем их очень-очень много... %) Можно все скрипты увидеть в Data/LScripts/Classes/CAction.lua ;)

5 Astaroth   (21.12.2012 12:42) [Материал]
То что надо!!! :D

4 Doctor20   (30.09.2012 12:57) [Материал]
Отлично

2 Havcom   (30.09.2012 02:45) [Материал]
Для экшена Damage написал же, что по умолчанию наносится урон, равный здоровью обьекта.

Эти экшены для оригинала. Для BOOH'a что-то небыло. Но надо бы дописать. :)

А вообще это только стандартные экшены. Что-то более сложное, типа езды на "велосипеде" или захвата душ думаю ненужно.

3 Evgeniy   (30.09.2012 02:57) [Материал]
Как по мне,то нужны все тонкости. :)
Но,ты создатель,тебе и решать ;)

1 Evgeniy   (30.09.2012 02:40) [Материал]
Ещё можно добавить,что в сообщениях надо добавлять \n,чтобы перейти на новую строку..
-Что если не указывать функции Damage значение,то она уничтожит объект
-Есть же ещё функция RunAndJumpGib,дабы,например,создать разбивающихся мертвяков,как в Мёртвом городе :D
-Функция Dfade для затемнения
-L:Player.EnergySucker=true - для захвата душ
-RollerCoaster:wagonik,0.5,3 --- не знаю,как она действует...короче это вагончик в ЛунаПарке..

Вроде всё :D

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Мини-Профиль
Здравствуйте, гость. Войдите на сайт или зарегистрируйтесь.

E-mail:
Пароль:
ГАМАЗАВР
Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0