|
Re: Уроки скриптологии
6. Голосовая система SVM (Standard Voice Module).
Основные элементы голосовой системы размещены в файле SVM.d [pre] //************************************************** ********* // Класс C_SVM (объявление всех переменных для SVM системы) //************************************************** *********
CLASS C_SVM { * *// для функции B_Say_GuildGreetings * *var string MILGreetings; * * * * * * * *// милиция приветствует милицию или паладинов * *var string PALGreetings; * * * * * * * *// паладины приветствуют паладинов или магов * *var string Weather; * * * * * * * * * * // скверная погода * *// для функции B_Say_AttackReason * *var string IGetYouStill; * * * * * * * *// атакующий НПС имеет цель убить ГГ * *var string DieEnemy; * * * * * * * * * *// восклицание в адрес атакуемого врага * *var string DieMonster; * * * * * * * * *// восклицание в адрес атакуемого монстра * *var string Addon_DieMonster; * * * * * *// восклицание в адрес атакуемого монстра (доп. фраза1 для аддона) * *var string Addon_DieMonster2; * * * * * // восклицание в адрес атакуемого монстра (доп. фраза2 для аддона) * *var string DirtyThief; * * * * * * * * *// восклицание в адрес атакуемого вора (карманная кража) * *var string HandsOff; * * * * * * * * * *// восклицание в ардес грабителя (сундуки, двери) * *var string SheepKiller; * * * * * * * * // восклицание в ардес убийцы овец * *var string SheepKillerMonster; * * * * *// восклицание в ардес монстра, убивающего овец * *var string YouMurderer; * * * * * * * * // восклицание в ардес убийцы человека * *var string DieStupidBeast; * * * * * * *// охрана ворот отбивает атаку монстра * *var string YouDareHitMe; * * * * * * * *// восклицание в ардес плохого человека * *var string YouAskedForIt; * * * * * * * // восклицание на обнаженное оружие * *var string ThenIBeatYouOutOfHere; * * * // просьба покинуть помещение * *var string WhatDidYouDoInThere; * * * * // охрана видит, как ГГ выходит из помещения с ограниченным доступом * *var string WillYouStopFighting; * * * * // охрана заканчивает атаковать преступника * *// для функции B_Say_AttackEND * *var string KillEnemy; * * * * * * * * * // НПС добивает врага * *var string EnemyKilled; * * * * * * * * // НПС убил врага * *var string MonsterKilled; * * * * * * * // НПС убил опасного монстра * *var string Addon_MonsterKilled; * * * * // НПС убил опасного монстра (доп. фраза1 для аддона) * *var string Addon_MonsterKilled2; * * * *// НПС убил опасного монстра (доп. фраза2 для аддона) * *var string ThiefDown; * * * * * * * * * // НПС дрался с вором (карманная кража) * *var string RumfummlerDown; * * * * * * *// НПС дрался с грабителем (сундуки, двери) * *var string SheepAttackerDown; * * * * * // НПС дрался с убийцей овец * *var string KillMurderer; * * * * * * * *// НПС дрался с убийцей людей * *var string StupidBeastKilled; * * * * * // охрана ворот убивает монстра * *var string NeverHitMeAgain; * * * * * * // НПС дрался с плохим человеком * *var string YouBetterShouldHaveListened; // НПС дрался с ГГ, т.к. он не убрал оружие * *var string GetUpAndBeGone; * * * * * * *// НПС дрался с незваным гостем * *var string NeverEnterRoomAgain; * * * * // НПС дрался с ГГ после выхода из помещения с ограниченным доступом * *var string ThereIsNoFightingHere; * * * // охрана дралась с зачинщиком драки * *// для функции C_WantToFlee * *var string SpareMe; * * * * * * * * * * // не тронь меня (не используется) * *var string RunAway; * * * * * * * * * * // пора сматываться * *// для функции C_WantToCallGuardsForFight * *var string Alarm; * * * * * * * * * * * // охрана вызывает охрану * *var string Guards; * * * * * * * * * * *// крутой парень вызывает охрану * *var string Help; * * * * * * * * * * * *// гражданин зовет на помощь * *// для функции B_AssessMurder * *var string GoodMonsterKill; * * * * * * // похвала в адрес убийцы монстра * *var string GoodKill; * * * * * * * * * *// похвала в адрес убийцы человека * *// для функции B_AssessTalk * *var string NOTNOW; * * * * * * * * * * *// если НПС не хочет говорить * *// для функции ZS_Attack * *var string RunCoward; * * * * * * * * * // восклицание в адрес убегающего противника * *// для функции ZS_ClearRoom * *var string GetOutOfHere; * * * * * * * *// к ГГ в чужом помещении обращается крутой парень * *var string WhyAreYouInHere; * * * * * * // к ГГ в чужом помещении обращается простой парень * *var string YesGoOutOfHere; * * * * * * *// ГГ покидает чужое помещение * *// для функции ZS_ObservePlayer * *var string WhatsThisSupposedToBe; * * * // НПС видит крадущегося ГГ * *var string YouDisturbedMySlumber; * * * // НПС разбужен ГГ * *// для функции ZS_RansackBody * *var string ITookYourGold; * * * * * * * // найдено золото * *var string ShitNoGold; * * * * * * * * *// золота нет * *var string ITakeYourWeapon; * * * * * * // найдено оружие * *// для функции ZS_ReactToDamage * *var string WhatAreYouDoing; * * * * * * // НПС ударил дружественного НПС * *// для функции ZS_ReactToWeapon * *var string LookingForTroubleAgain; * * *// НПС проиграл сражение и лезет снова * *var string StopMagic; * * * * * * * * * // предупреждение на магию * *var string ISaidStopMagic; * * * * * * *// повторное предупреждение на магию * *var string WeaponDown; * * * * * * * * *// предупреждение на обнаженное оружие * *var string ISaidWeaponDown; * * * * * * // повторное предупреждение на обнаженное оружие * *var string WiseMove; * * * * * * * * * *// уружие убрано * *// для функции ZS_Unconscious * *var string NextTimeYoureInForIt; * * * *// крутой парень встает после драки * *var string OhMyHead; * * * * * * * * * *// простой парень встает после драки * *// для функции ZS_WatchFight * *var string TheresAFight; * * * * * * * *// крутой парень наблюдает сражение * *var string OhMyGodItsAFight; * * * * * *// простой парень наблюдает сражение * *var string GoodVictory; * * * * * * * * // приветствие победетилю другу * *var string NotBad; * * * * * * * * * * *// приветствие нейтральному победителю * *var string OhMyGodHesDown; * * * * * * *// возмущение нападением * *var string CheerFriend01; * * * * * * * // друг наносит повреждение * *var string CheerFriend02; * * * * * * * // ещё повреждение * *var string CheerFriend03; * * * * * * * // и ещё повреждение * *var string Ooh01; * * * * * * * * * * * // друг получает повреждение * *var string Ooh02; * * * * * * * * * * * // ещё повреждение * *var string Ooh03; * * * * * * * * * * * // и ещё повреждение * *// для функции ZS_MagicSleep * *var string WhatWasThat; * * * * * * * * // пробуждение от магического сна * *// для функции TA_Sleep * *var string GetOutOfMyBed; * * * * * * * // кровать НПС занята * *var string Awake; * * * * * * * * * * * // пробуждение * *// для функции B_AssignAmbientNEWS * *var string ABS_COMMANDER; * * * * * * * // ГГ заплатил штраф милиции (не используется) * *var string ABS_MONASTERY; * * * * * * * // ГГ заплатил штраф магам (не используется) * *var string ABS_FARM; * * * * * * * * * *// ГГ заплатил штраф наемникам (не используется) * *var string ABS_GOOD; * * * * * * * * * *// согласие * *// --------------------------------- * *var string SHEEPKILLER_CRIME; * * * * * // осуждение убийцы овец * *var string ATTACK_CRIME; * * * * * * * *// осуждение драчуна * *var string THEFT_CRIME; * * * * * * * * // осуждение вора * *var string MURDER_CRIME; * * * * * * * *// осуждение убийцы * *// --------------------------------- * *var string PAL_CITY_CRIME; * * * * * * *// осуждение ГГ паладина * *var string MIL_CITY_CRIME; * * * * * * *// осуждение ГГ милиционера * *var string CITY_CRIME; * * * * * * * * *// осуждение городского криминала * *// --------------------------------- * *var string MONA_CRIME; * * * * * * * * *// осуждение ГГ послушника и мага * *var string FARM_CRIME; * * * * * * * * *// осуждение ГГ наемника * *var string OC_CRIME; * * * * * * * * * *// осуждение ГГ в Минентале * *// для функции B_Say_ToughGuyNews * *var string TOUGHGUY_ATTACKLOST; * * * * // ГГ атаковал крутого парня и победил * *var string TOUGHGUY_ATTACKWON; * * * * *// ГГ атаковал крутого парня и проиграл * *var string TOUGHGUY_PLAYERATTACK; * * * // ГГ атаковал крутого парня и прекратил сражение * *// золото * *var string GOLD_1000; * * * * * * * * * // 1000 золотых * *var string GOLD_950; * * * * * * * * * *// 950 золотых * *var string GOLD_900; * * * * * * * * * *// 900 золотых * *var string GOLD_850; * * * * * * * * * *// 850 золотых * *var string GOLD_800; * * * * * * * * * *// 800 золотых * *var string GOLD_750; * * * * * * * * * *// 750 золотых * *var string GOLD_700; * * * * * * * * * *// 700 золотых * *var string GOLD_650; * * * * * * * * * *// 650 золотых * *var string GOLD_600; * * * * * * * * * *// 600 золотых * *var string GOLD_550; * * * * * * * * * *// 550 золотых * *var string GOLD_500; * * * * * * * * * *// 500 золотых * *var string GOLD_450; * * * * * * * * * *// 450 золотых * *var string GOLD_400; * * * * * * * * * *// 400 золотых * *var string GOLD_350; * * * * * * * * * *// 350 золотых * *var string GOLD_300; * * * * * * * * * *// 300 золотых * *var string GOLD_250; * * * * * * * * * *// 250 золотых * *var string GOLD_200; * * * * * * * * * *// 200 золотых * *var string GOLD_150; * * * * * * * * * *// 150 золотых * *var string GOLD_100; * * * * * * * * * *// 100 золотых * *var string GOLD_90; * * * * * * * * * * // 90 золотых * *var string GOLD_80; * * * * * * * * * * // 80 золотых * *var string GOLD_70; * * * * * * * * * * // 70 золотых * *var string GOLD_60; * * * * * * * * * * // 60 золотых * *var string GOLD_50; * * * * * * * * * * // 50 золотых * *var string GOLD_40; * * * * * * * * * * // 40 золотых * *var string GOLD_30; * * * * * * * * * * // 30 золотых * *var string GOLD_20; * * * * * * * * * * // 20 золотых * *var string GOLD_10; * * * * * * * * * * // 10 золотых * *// для функции B_Say_Smalltalk (TA_Smalltalk) * *var string Smalltalk01; * * * * * * * * // ...если ты думаешь... * *var string Smalltalk02; * * * * * * * * // ...может быть... * *var string Smalltalk03; * * * * * * * * // ...не особенно хитер.... * *var string Smalltalk04; * * * * * * * * // ...у меня хватает проблем... * *var string Smalltalk05; * * * * * * * * // ...это не моя проблема... * *var string Smalltalk06; * * * * * * * * // ...я ещё очень зол... * *var string Smalltalk07; * * * * * * * * // ...кое-что болтают... * *var string Smalltalk08; * * * * * * * * // ...это не пройдет со мной... * *var string Smalltalk09; * * * * * * * * // ...это всегл лишь слухи... * *var string Smalltalk10; * * * * * * * * // ...что-то они замышляют... * *var string Smalltalk11; * * * * * * * * // ...я тебе что говорил... * *var string Smalltalk12; * * * * * * * * // ...нельзя думать также... * *var string Smalltalk13; * * * * * * * * // ...я не хочу быть в его шкуре... * *var string Smalltalk14; * * * * * * * * // ...ничего нового... * *var string Smalltalk15; * * * * * * * * // ...всё ясно... * *var string Smalltalk16; * * * * * * * * // ...не нужно меня спрашивать... * *var string Smalltalk17; * * * * * * * * // ...много чего болтают... * *var string Smalltalk18; * * * * * * * * // ...моё мнение известно... * *var string Smalltalk19; * * * * * * * * // ...я говорил то же самое... * *var string Smalltalk20; * * * * * * * * // ...я не верю, что что-нибудь изменится... * *var string Smalltalk21; * * * * * * * * // ...наверное, ты прав... * *var string Smalltalk22; * * * * * * * * // ...посмотрим, что из этого выйдет... * *var string Smalltalk23; * * * * * * * * // ...я думал, что вопрос закрыт... * *var string Smalltalk24; * * * * * * * * // ...я не хочу больше это слышать... * *// крутой парень (SLD/MIL/DJG) * *var string Smalltalk25; * * * * * * * * // ...он был пьян... * *var string Smalltalk26; * * * * * * * * // ...со мной это не пройдёт... * *var string Smalltalk27; * * * * * * * * // ...все убежали, а я остался... * *// преданный Инносу (NOV/KDF/PAL) * *var string Smalltalk28; * * * * * * * * // ...так написано в священных книгах... * *var string Smalltalk29; * * * * * * * * // ...я действую по приказу Инноса... * *var string Smalltalk30; * * * * * * * * // ...никто не может идти против богов... * *// комментарии учителей * *var string NoLearnNoPoints; * * * * * * // ГГ не хватает опыта * *var string NoLearnOverPersonalMAX; * * *// учитель не способен обучить ГГ * *var string NoLearnYoureBetter; * * * * *// ГГ обучен по максимуму * *var string YouLearnedSomething; * * * * // ГГ чему-то научился * *// для функции B_AssignCityGuide * *var string UNTERSTADT; * * * * * * * * *// нижний город * *var string OBERSTADT; * * * * * * * * * // верхний город * *var string TEMPEL; * * * * * * * * * * *// храм * *var string MARKT; * * * * * * * * * * * // рынок * *var string GALGEN; * * * * * * * * * * *// виселица * *var string KASERNE; * * * * * * * * * * // казармы * *var string HAFEN; * * * * * * * * * * * // гавань * *// ------------------------------- * *var string WHERETO; * * * * * * * * * * // где-то * *// ------------------------------- * *var string OBERSTADT_2_UNTERSTADT; * * *// верхний город -> нижний город * *var string UNTERSTADT_2_OBERSTADT; * * *// нижний город -> верхний город * *var string UNTERSTADT_2_TEMPEL; * * * * // нижний город -> храм * *var string UNTERSTADT_2_HAFEN; * * * * *// нижний город -> гавань * *var string TEMPEL_2_UNTERSTADT; * * * * // храм -> нижний город * *var string TEMPEL_2_MARKT; * * * * * * *// храм -> рынок * *var string TEMPEL_2_GALGEN; * * * * * * // храм -> виселица * *var string MARKT_2_TEMPEL; * * * * * * *// рынок -> храм * *var string MARKT_2_KASERNE; * * * * * * // рынок -> казармы * *var string MARKT_2_GALGEN; * * * * * * *// рынок -> виселица * *var string GALGEN_2_TEMPEL; * * * * * * // виселица -> храм * *var string GALGEN_2_MARKT; * * * * * * *// виселица -> рынок * *var string GALGEN_2_KASERNE; * * * * * *// виселица -> казармы * *var string KASERNE_2_MARKT; * * * * * * // казармы -> рынок * *var string KASERNE_2_GALGEN; * * * * * *// казармы -> виселица * *var string HAFEN_2_UNTERSTADT; * * * * *// гавань -> нижний город * *// сражение * *var string Dead; * * * * * * * * * * * *// предсмертный вздох * *var string Aargh_1; * * * * * * * * * * // реакция на удар * *var string Aargh_2; * * * * * * * * * * // ещё удар * *var string Aargh_3; * * * * * * * * * * // и ещё удар * *// доспехи * *var string ADDON_WRONGARMOR; * * * * * *// несоответствующая одежда * *var string ADDON_WRONGARMOR_SLD; * * * *// одеяние не соответствует наёмнику * *var string ADDON_WRONGARMOR_MIL; * * * *// одеяние не соответствует милиционеру * *var string ADDON_WRONGARMOR_KDF; * * * *// одеяние не соответствует магу огня * *var string ADDON_NOARMOR_BDT; * * * * * // одеяние не соответствует бандиту * * * *var string ADDON_DIEBANDIT; * * * * * * // умри, бандит * *var string ADDON_DIRTYPIRATE; * * * * * // грязный пират * *// фразы ГГ * *var string SC_HeyTurnAround; * * * * * *// оклик * *var string SC_HeyTurnAround02; * * * * *// ещё оклик * *var string SC_HeyTurnAround03; * * * * *// и ещё оклик * *var string SC_HeyTurnAround04; * * * * *// и ещё оклик * *var string SC_HeyWaitASecond; * * * * * // постой * *var string DoesntWork; * * * * * * * * *// не работает * *var string PickBroke; * * * * * * * * * // сломано * *var string NeedKey; * * * * * * * * * * // нужен ключ * *var string NoMorePicks; * * * * * * * * // нужны отмычки * *var string NoPickLockTalent; * * * * * *// я не умею вскрывать замки * *var string NoSweeping; * * * * * * * * *// нельзя обыскать * * * *var string PICKLOCKORKEYMISSING; * * * *// отсутствует ключ и отмычки * *var string KEYMISSING; * * * * * * * * *// нет ключа * *var string PICKLOCKMISSING; * * * * * * // нет отмычки * *var string NEVEROPEN; * * * * * * * * * // не открывается * *var string MISSINGITEM; * * * * * * * * // нет предмета * *var string DONTKNOW; * * * * * * * * * *// не знаю * *var string NOTHINGTOGET; * * * * * * * *// нечего взять * *var string NOTHINGTOGET02; * * * * * * *// нечего взять (доп. фраза1) * *var string NOTHINGTOGET03; * * * * * * *// нечего взять (доп. фраза2) * *var string HEALSHRINE; * * * * * * * * *// молитва Инносу об исцелении * *var string HEALLASTSHRINE; * * * * * * *// последняя молитва Инносу об исцелении * *var string IRDORATHTHEREYOUARE; * * * * // путешествие на Ирдорат * *var string SCOPENSIRDORATHBOOK; * * * * // заклинание, открывающее книгу * *var string SCOPENSLASTDOOR; * * * * * * // заклинание, открывающее последнюю дверь * *// аддон * *var string TRADE_1; * * * * * * * * * * // покажи свой товар * *var string TRADE_2; * * * * * * * * * * // покажи свой товар (доп. фраза1) * *var string TRADE_3; * * * * * * * * * * // покажи свой товар (доп. фраза2) * *var string VERSTEHE; * * * * * * * * * *// понимаю * *var string FOUNDTREASURE; * * * * * * * // нашел сокровища * *var string CANTUNDERSTANDTHIS; * * * * *// не понимаю * *var string CANTREADTHIS; * * * * * * * *// не могу прочитать * *var string STONEPLATE_1; * * * * * * * *// каменная плитка 1 * *var string STONEPLATE_2; * * * * * * * *// каменная плитка 2 * *var string STONEPLATE_3; * * * * * * * *// каменная плитка 3 * *var string COUGH; * * * * * * * * * * * // чёрт (не используется) * *var string HUI; * * * * * * * * * * * * // непереводимая фраза (не используется) * *var string Addon_ThisLittleBastard; * * // амбарная книга Фрэнсиса * *var string ADDON_OPENADANOSTEMPLE; * * *// заклинание, октрывающее храм Аданоса * *var string ATTENTAT_ADDON_DESCRIPTION; *// покушение на Эстебано * *var string ATTENTAT_ADDON_DESCRIPTION2; // покушение на Эстебано (доп. фраза1) * *var string ATTENTAT_ADDON_PRO; * * * * *// убить предателей * *var string ATTENTAT_ADDON_CONTRA; * * * // поиск типов * *var string MINE_ADDON_DESCRIPTION; * * *// нужен в шахте * *var string ADDON_SUMMONANCIENTGHOST; * *// вызов Кваходрона * *var string ADDON_ANCIENTGHOST_NOTNEAR; *// не работает * *var string ADDON_GOLD_DESCRIPTION; * * *// вопрос о добыче золота };
// Далее в файле идёт инициализация голосом и текстом SVM инстанций. // Пример: Объявление instance SVM_х(C_SVM), где х - номер голоса НПС. // Каждая строка в теле инстанции имеет формат: name = "voice_name"; * *// text // *где: * *name - имя параметра класса C_SVM // * * * * *voice_name - имя голосового файла // * * * * *text - текст произносимой фразы (субтитр)
// Данная инстанция предназначена для внутреннего использования экзешником instance SVM_0(C_SVM) * * * * * * * { };
// Все остальные инстанции (SVM_1 - SVM_19) используются с инициализацией нужных внутренних переменных применительно к голосам НПС, их мы рассматривать не будем.
// !!!!!!
// максимальное кол-во SVM блоков const int SVM_MODULES = 20;
[/pre] Любая текстовая фраза в скриптах, начинающаяся с символа $ххх интерпретирутся как ссылка на переменную SVM инстанции c именем ххх. Таким образом, например, написав один раз в скрипте строку $SHITNOGOLD, можно, в зависимости от НПС, который её произносит, изменять текст и голос фразы.
|