Скриптове за чудовища
Има два обекта за създаване на скриптове (известни още като скриптове) в Half-Life:scripted_sequenceиscripted_sentence. Първият е отговорен за движенията, извършвани от чудовището/героя, независимо дали става дума за ходене, бягане, натискане на бутон, разклащане на машина за газирани напитки или почесване на брадичката му. Вторият служи за гарантиране, че героят е произнесъл някаква фраза. В същото време главата му ще се обърне към слушателя, а устата му ще се отвори в съответствие с амплитудата на звука.
Scripted_sequence- възпроизвеждане на движение. Този (точков) обект обект се поставя там, където обектът, на който е зададен, ще отиде или ще се изпълнява. Може да се постави близо до пода, но се уверете, че никакви чужди блокове не преминават през него, дори и само по ръба. Основните настройки са зададени както следва:
- Име(targetname) е името, използвано за извикване на скрипта. Активаторът, както и навсякъде, може да бъде всяко същество, включително самото чудовище.
- Ъгъл- посоката, към която ще се изправи чудовището, когато стигне до желаната точка.
- Целе обект, който се активира след завършване на този скрипт, т.е. след като чудовището стигне до точката и направи необходимата анимация. Обикновено този обект е друга scripted_sequence за същото чудовище или бутон, който е щракнал.
- Забавяне преди задействане(закъснение) - закъснението между края на анимацията и задействането на целевия обект.
- Kill Target- обектът, който ще бъде премахнат от картата след края на сценария (често поставяйте името на същото чудовище тук, ако трябва да го накарате да отиде зад ъгъла и да изчезне)
- Целево чудовище(m_iszEntity) е името на чудовището, което изпълнява скрипта. Може да бъде и име на клас (напр. monster_scientist)- в този случай scripted_sequence ще избере всяко чудовище от този клас в рамките на радиуса, посочен в полетоРадиус на търсене
- Анимация на действие(m_iszPlay) е името на анимацията, която чудовището ще направи, когато стигне до местоположението на тази scripted_sequence. Ако искате чудовището просто да върви някъде без допълнителна анимация, оставете това поле празно.
- Неактивна анимация(m_iszIdle) е името на анимацията, която чудовището ще изпълнява, докато не бъде извикана scripted_sequence. Например, на картатаc1a2b.bspучен пада в шахтата на асансьора - докато стигнете до върха, той ще потрепва и когато играчът премине спусъка, той ще извърши анимацията на падане (освен това scripted_sequence има параметъра „Преместване на позиция“ = Мигновено и са зададени флаговете „Оставяне на трупа“ и „Без прекъсвания“, които ще бъдат обсъдени сега). Или зомби, което яде трупове и скача нагоре-надолу при вида на играча.
Сега флагове за scripted_sequence:
- 4 =Повтарящ се- задайте, ако сценарият трябва да се активира много пъти (например учени, които се разхождат между компютрите в началото на играта),
- 8 =Оставете трупа— ако в края на анимацията чудовището умре (например при падане), тогава с този флаг трупът няма да изчезне.
- 32 =Без прекъсвания- ако играчът се опита да поведе чудовището зад себе си или да го застреля в момента на разиграване на сценария, сценарият няма да бъде прекъснат.
- 64 =Замяна на AI- Сценариите обикновено се игнорират, ако чудовището е в битка. Но този флаг кара чудовището да изпълни скрипта, независимо какво прави.
- 128 =Няма ход на скрипт- След изиграване на хода, чудовището ще се върне на мястото, където е било в началото на хода.
- 256 =9-ти недокументиран флаг(без име, номер на флаг 2 9-1=256) - кара чудовището след анимацията на празен ход непрекъснато да повтаря движението, посочено в Idle_animation - анимация на празен ход до нулиране или следващото извикване на друга scripted_sequence (пример на картата c1a0d.bsp от Half-Life, наречена "coffeebreak"). Същият флаг в Half-Life 2 се наричаLoop in Post Idle.
Има един малък трик - ако има две scripted_sequence с еднакви имена, действащи върху различни чудовища, тогава поведението на чудовищата ще бъде синхронизирано по следния начин: едното от чудовищата, което се е приближило до техния обект scripted_sequence по-рано, няма да изпълни веднага анимацията, а ще изчака, докато другото също достигне точката си, и тогава ще извършат движенията си заедно. Пример за това може да се види точно пред реактора, когато учените включват едновременно скенерите. Ако едно от чудовищата прекъсне изпълнението на скрипта, то другото също ще го прекъсне.
Отделен въпрос, който е косвено свързан със сценариите, са учените, седнали на столове. За това се използва обектътmonster_sitting_scientist. Теоретично можете да го поставите на произволна височина от седалката (за предпочитане някъде на височина от около сто единици), тя все още ще слезе до желаното ниво, основното е да се уверите, че под нея и на известно разстояние от нея (≈4 единици) има само седалка, а не твърди дръжки или облегалка, в противен случай играта ще определи неправилно височината и ученият ще бъде или твърде висок, или твърде нисък.
Когато чудовището се придвижи до желаната точка, то винаги се опитва да използва мрежата от обекти info_node, дориако движението е причинено от сценарий. Възлите са вид възлови точки на пътеките, подобни на тези, по които ботовете се движат в мултиплейър режим. Поставянето им е доста просто - изберете обектаinfo_nodeи го хвърлете.
Височината над пода може да бъде всяка, играта все пак ще ги свали независимо до нивото си. Не са необходими параметри, играта отново автоматично ще изчисли кой възел от кой се вижда (ще се появи надпис при първото зареждане на картата - „Графиката на възела е остаряла. Изгражда се отново.“) и ще го запази в папката maps\graphs. Поставете ги предимно на кръстовища и ъгли. Не правете разстоянието между тях твърде голямо и не ги трупайте на купчина. Поставете два info_nodes близо до вратите - от едната и от другата страна (можете да добавите параметъра hinttype със стойност 1). На стълбите също се нуждаете от горната и долната част на парчето. Ако има проблем със стълбите, направете стъпалата по-ниски (8-12 или дори 16 единици всяко) и по-дълги (за да стъпите, хората с марж от 32 стъпала ще са достатъчни, възможно е малко по-късо)

Имаше друг инцидент, когато картата беше актуализирана, бяха поставени нови възли за навигация info_node и героите не искаха да ходят по новите дори с помощта на scripted_sequence и се преместиха от крак на крак в пътеките. Оказа се, че за това са виновни (!) настройките на антивирусната програма. Антивирусната забрани игратапишете актуализации на пътя, т.е. в maps\graphs заменете .nod и .nrp файловете при първото зареждане на актуализирана карта.
Местоположението на този обект няма значение. Той е конфигуриран по същия начин като предишния.
- Имее името за активиране.
- Целе името на обекта, който ще се задейства след края на фразата. Това често се използва за задействане на линия за отговор на друг герой.
- Име на изречение— име на звуковото събитие, т.е. описание на звуковия файл за фразата. Важно е в началото да поставите удивителен знак и да напишете името на събитието с главни букви. Например една от забележките на учения: !SC_IDLE0.
- Тип говорителе името на чудовището, което изговаря фразата
- Време на изречението— Време на изречението. Най-вероятно той служи като индикатор за това колко дълго обектът ще гледа на слушателя.
- Радиус на търсене— радиус на търсене на говорещо чудовище (по подразбиране = 512)
- Тип слушател- името на слушащото чудовище, към което този, обръщайки се с реплика, ще обърне глава. По правило той също ще се обърне, слушайки репликата. Ако фразата е адресирана до играча, тогава напишете тук играч. Ако слушателят е твърде далеч, репликата няма да прозвучи.
- Обем 0-10- обем (по подразбиране максимум = 10)
- Радиус на звука- диапазон на слуха
- 0 - Малък радиус - малък радиус (по подразбиране),
- 1 - Среден радиус - среден,
- 2 - Голям радиус - широк радиус,
- 3 - Пусни навсякъде - възпроизвежда навсякъде, например, когато някой говори в мегафон.
Както при scripted_sequence, трябва да знаем името на специалното звуково събитие. Това не е същото като името на wav файла. Това е тяхната група. Отново отидете в архива pak0.pak и намерете файла в звуковата папкаsentences.txt, чиято вътрешност е подредена по следния начин:
Първо, името на самото звуково събитие е с главни букви, което ще заместим в scripted_sentence (например в полето Sentence Name=!SC_IDLE0), а след това, разделени с интервал, списъкът с wav-кутии без разширение, които ще се възпроизвеждат на свой ред в това събитие. В този пример има само един от тях, но в звуковите събития на парашутистите ще видите масовото им използване:
Машината ще възпроизведе Sound/hgrunt/clik.wav, след това Sound/hgrunt/yessir.wav и отново първия звук. И ако не посочите поддиректория чрез писане
Всяко чудовище има своя собствена група от събития - за учените имената им започват с SC_, за пазачите (известни още като Barney) - с BA_, за парашутистите (известни още като Human Grunts) - HG_ и т.н. Вярно е, че нищо не пречи да се използва реч от един клас за характер на друг. Ако добавите свои собствени речи, не забравяйте да ги запишете и в този файл, който прикачите към вашия мод. Звуковите .wav файлове трябва да са 8-битови, за да могат говорещите герои да отворят устата си. Иначе, ако например са войници с противогази, тогава може да се използва и 16-битов звуков файл и никой няма да си движи устата, докато произнася думи.
Във файлаsentences.txtима още няколко означения: запетаи, точки и удивителни знаци между имената на звуковите файлове. Точка означава кратка пауза, запетая - малко по-дълга, а удивителен знак - повишаване на тона и силата на звука. Примери:
HG_TAUNT1 hgrunt/clik приемливо, задръж. позиция щракване
HG_ANSWER0 hgrunt/clik Ъъъъ разбирам, клик(p120) клик
HG_CHARGE1 hgrunt/щракване преместване!. в! щракнете
FAR_WAR5 атмосфера/(v10 p120) jetflyby1
В скоби буква с цифра означава преобразуване на звук. Ако използватеповече от един ефект подред, след което ги разделете с интервали:
PПромяна на височината (с други думи изместване или транспониране - английски Pitch) - в диапазона 50-150. 100 без промяна, 50 много ниско (една октава, т.е. 2 пъти по-ниско), 150 много високо. Настройте на 130 и хората говореха с високи карикатурни гласове в променени фрази.
VОбем (от обем) — % от стандартния обем. 100 без промяна, 50 половината от стандартния обем.
SСтарт - начало на възпроизвеждане на звука в % от началото на файла. 0 се възпроизвежда от началото на wav файла, 25 пропуска 25%.
EКрай (от край) — Крайна позиция на възпроизвеждане в % от края на звука. 100 приключва възпроизвеждането в самия край (както обикновено). И 80 завършва на 80% от wav файла.
TКомпресия (от Time compress) - Времева компресия на звука в % (без промяна на височината). 100 възпроизвеждания без промяна, 50 възпроизвеждания 2 пъти по-бързо - възпроизвеждат се само всеки 2 wav байта, 30 - възпроизвеждат се 30% по-бързо. Нещото рядко е полезно, дори специалните части се намесват в прегласа, въпреки че в Half-Life специалните сили го използваха, за да симулират загуба на звук в радиото.
Това е всичко, добри и интересни сценарии за вас!
Сред обектите, които контролират звука, вижте също: ambient_generic се използва за възпроизвеждане на звуци, env_sound добавя ефекти към всички звуци в дадена област на силата на звука и speaker - произволно възпроизвеждани звуци от набор като през високоговорител.