Показать сообщение отдельно
Старый 22.05.2005, 20:40   #178
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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, можно, в зависимости от НПС, который её произносит, изменять текст и голос фразы.
Ответить с цитированием