SCRIPT 5 Опубликовано 7 Января 2010 В этой статье я не буду писать тупые и неинтересные уроки, которые есть в любом факе по модмейкерству, а буду помещать лишь интересные (на мой взгляд) уроки и небольшие статьи Добавим в файл config\gameplay\encyclopedia_zone.xml новую статью: <!-------------------------------- Activation - Basic -----------------------------> <article id="zone_anomalies_activation_basic" name="zone_anomalies_activation-basic" group="Anomalies"> <texture x="500" y="150" width="100" height="100">ui_icon_photo</texture> <text>enc_zone_anomalies_activation_basic</text> </article> Здесь: article id - внутреннее имя статьи, именно на него ссылаются в файлах игрыname - имя статьи, отображаемое в игре, подгружается из строкового массиваtexture - картинка и её позиция в статье, в данном случае мы использовали обычный белый шумtext - текст статьи, отображаемый в игре, подгружается из строкового массива Добавим например в config\gameplay\info_l01escape.xml (инфопорции уровня "Кордон") ссылку на получение статьи - скажем, к трупу у туннеля, при обыске которого выдается информация о аномалиях в туннеле (вы его обнаруживаете, проходя второе спецзадание от Сидоровича). Найдем эти строки и дополним их: Так как в статье у нас есть такое поле: <text>enc_zone_anomalies_activation_basic</text> Да и название тоже не написано прямо, а ссылается на определенную строку, то добавим этот самый text в config\text\rus\string_table_enc_zone.xml, в нашем случае: <string id="enc_zone_anomalies_activation-basic"> <text>Активация - базис</text> </string> <string id="enc_zone_anomalies_activation_basic"> <text>С артефактами связана, помимо всего прочего, ''(ну, и так далее, там большой текст)''...</text> </string> Дополнительно. Чтобы статья добавлялась при получении определенного задания, в ..._task.xml (вместо ... стоит название уровня) нужно прописать конструкцию вида: <article>название_задания_descr</article> <!-- труп у аномалии --> <info_portion id="esc_tutorial_dead_novice"> <article>tutorial_moving_anomaly</article> <article>zone_anomalies_activation_basic</article> </info_portion> Главное - никогда не путайте article id, name и text статьи. Я в данном примере это сделать легко. Лучше называйте их непохожими друг на друга названиями. В файле gamedata\scripts\xr_kamp.script находим: -- играть на гармошке -- if npc:object("harmonica_a") then -- self.npc[npc_id].states["play_harmonica"] = true -- self.npc[npc_id].states["wait_harmonica"] = true -- self.kamp_states["pre_harmonica"] = true -- self.kamp_states["harmonica"] = true -- self.kamp_states["post_harmonica"] = true -- else Раскомментируем эти строки, для этого удалим --. перед строками, исключения строка "-- играть на гармошке" Затем нужно добавить музыку. Например сталкерам, открываем папку gamedata\sounds\characters_voice\human_01\stalker\music и добавляем туда свою музыку. Имя файла должно быть harmonica_* (где *, 1, 2, 3 и т.д.). Формат файла должен быть *.ogg. Таким же образом добавляем музыку остальным группировкам. При заходе на экран главного меня муз. заставка будет выбираться случайно из добавленных вами. 1. В директорию gamedata\sounds\music положить два канальных ogg-файла с нужной музыкой, например: my_music_l.ogg (левый канал) и my_music_r.ogg (правый канал) 2. Открыть файл gamedata\config\ui\ui_mm_main.xml, найти в нем строку: <menu_sound random="0" > и заменить на: <menu_sound random="1" > 3. В этом же файле найти строку: <menu_music>music\wasteland2</menu_music> и ниже нее выставить следующую строку: <menu_music>music\my_music</menu_music> 4. Сохранить файл. 5. Если требуется вставить больше муз. заставок, то в параметре random укажите их количество. !!! Возьмите на заметку !!! в строке <menu_sound random="0" > вместо 0 указывайте не количество композиций, а количество композиций - 1, то есть, если вы добавили скажем еще одну мелодию, к той, что была по дефаулту у вас получится примерно так: <menu_sound random="1" > <menu_music>music\wasteland2</menu_music> <menu_music>music\my_music</menu_music> 1. Кладём ролик в папку gamedata\textures\sleep\. Собственно, в любую папку, лишь бы она была в каталоге textures. Просто в sleep лежат ролики сна в оригинале. имя файла любое, формат ogm, а разрешение ролика вроде можно сделать любое. Я не стал заморачиваться и просто скопировал существующий ролик сна с монолитом. 2. Озвучку ролика кладем по той-же схеме в папку в корневом каталогу gamedata\sounds\. У меня папка называется my_sleep. Имена файлов для левого и правого канала должны выглядеть так my_sleep_sound_l.ogg и my_sleep_sound_r.ogg длина звуков может быть разной и вообще говоря не совпадать с длиной ролика. 3. Правим файл gamedata\config\ui\ui_movies.xml. Добавляем туда что-то в этом роде: <my_dream> <play_each_item>1</play_each_item> <global_wnd x="0" y="0" width="1024" height="768"> <auto_static x="0" y="0" width="1024" height="768" stretch="1"> <window_name>back</window_name> <texture>intro\intro_back</texture> </auto_static> </global_wnd> <item type="video"> <sound>my_sleep\my_sleep_sound</sound> <pause_state>on</pause_state> <function_on_stop>sleep_manager.stopper</function_on_stop> <video_wnd x="0" y="0" width="1024" height="768" stretch="1"> <texture x="0" y="1" width="512" height="286">sleep\dream_sarcofag</texture> </video_wnd> </item> </my_dream> Название тега my_dream - это моё имя для сна. Если я верно всё понимаю, то вся эта фигня описывает окно, в котором играется видеоролик. 4. Теперь собственно добавляем сон. Правим файл gamedata\config\misc\dream.ltx. Там есть секции с именами [regular_dream#] где # - это номера снов. Сейчас там есть regular_dream1, regular_dream2 и regular_dream3. Добавляем секцию [regular_dream4] dream = my_dream probability = 40 type = happy параметры:dream - это ранее заданное имя сна (в нашем случае my_dream).probability - ясное дело, что нужно для вычисления вероятности появления именно этого сна. Но я пока не понял по какому алгоритму она вычисляется на основе этого параметра. Я просто сделал число побольше, дабы протестировать побыстрее.type - может быть nightmare, normal и happy. По названию вроде понятно, что это. Но на что влияет пока не ясно. 5. Ну и завершающий этап. В этом же файле в секцию [dreams] к параметру regular добавляем к списку новый сон regular_dream4. Вроде такого: regular = regular_dream1, regular_dream2, regular_dream3, regular_dream4 Тестируем... Опа! Новый сон. Поскольку я звуки взял случайно, то при этом в левом ухе у меня орет кот, а в правом играет мрачный эмбиент =) Ну и естественно работать будет только при установленном АМК. Что там именно сделано, для того чтобы сон вообще был, я пока не разбирался. 3 Thank you for your honesty. Now fuck off and die. Поделиться этим сообщением Ссылка на сообщение