Мододельник для чайников
|
|
Мерфи | Дата: Четверг, 25.06.2009, 16:46 | Сообщение # 1 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Если вы не знаете, как сделать невидимые аномалии, как изменить силу оружия, как изменить носимый вес и пр., то вы пришли по адресу. В этой статье мы рассмотрим структуру файлов и папок Сталкера, а также вы сможете научиться создавать свои собственные модификации.
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 16:46 | Сообщение # 2 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Вступление: Как вы наверно заметили, в папке с игрой содержатся несколько файлов типа gamedata.dbN , где N – это число или буква. Это игровые архивы, в которые запакованы все файлы конфигураций, видеоролики, музыка, звуки, скрипты и прочее. Можно их править HEX-editor’ом, но лучше скачать специальную утилитку STALKER_Data_Unpacker и распаковать в отдельную папку(с именем gamedata, позже поймёте почему) их содержимое. Вот после этого можно начать разгребать весь тот мусор, который вы извлекли. Структура файлов и папок: Рассмотрим, что-же содержится в папке gamedata: Папка ai – в ней содержатся файлы типа *.efd, через которые очевидно управляется искусственный интеллект тех же npc например. Папка anims – здесь и так всё понятно, игровая анимация, а также эффекты камеры. Папка config содержит в себе многие игровые параметры, к ней мы ещё вернёмся. Папка levels – это игровые уровни, ака локации, на которые поделена игра (как карты в CS) Папка meshes – игровые модели, в формате .ogf Папка scripts – скрипты Папка shaders – шейдеры, для двух рендеров(DX8 и 9) Папка sounds – звуки и музыка, кот. используются в игре. Формат .ogg* Папка spawns – отвечает за самую ужасную вещь в игре – респаун противников и др. людей, животных. Папка textures – в ней содержаться текстуры домов, оружия, монстров и др. Формат - .dds(DirectDraw Surface Image) Файлы: game.graph, gamemtl.xr, lanims.xr, particles.xr, resource.h, senvironment.xr, shaders.xr, shaders_xrlc.xr, stalkergame.inf. Введение в моддинг: Именно с папкой config придётся работать для редактирования многих параметров игры. Но начнём сначала: Перед тем, как начать редактирование файлов игры, нужно в каталог Сталкера поместить ту самую папку gamedata, в которую были извлечены игровые файлы. *Все файлы нам не понадобятся, поэтому можно оставить только папки config, scripts(а конкретно файл se_respawn*****ipt), textures, sounds, а всё остальное удалить(а можно и не удалять) Также хочу заметить, что если распаковать все архивы .dbN в папку с игрой, то это может дать несколько дополнительных FPS. Текстуры: В папке textures лежат файлы формата .dds, которые можно открыть программой Adobe Photoshop с установленным DDS-плагином. Плагин. Скрин с корректными настройками. Скрипты: se_respawn.sсript – файл, отвечающий за респаун. Время респауна можно уменьшить, путём небольших изменений в этом файле. Он открывается обычным блокнотом(notepad). Ищем в нём строку idle_time:setHMSms( 0, 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000) и меняем её на idle_time:setHMSms( math.random(X, Y), 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000) где X и Y - числа, задают диапазон случайной переменной в часах отвечающей за респаун. Звуки и музыка: Любой файл в папке sounds можно заменить на другой, но при этом нужно сохранить все параметры звукового файла, который был использован в игре. Например, чтобы заменить музыку в приёмнике у Сидоровича, нужно файл sounds\scripts\magnitofon\magnitofon_2.ogg, заменить на любой другой.(У оригинального файла винамп мне выдал свойства: Average bitrate : 60 kbps Nominal bitrate : 80 kbps Channels : 1 Sampling rate: 44100 Hz.
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 16:51 | Сообщение # 3 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Config/Weapons: Параметры оружия вы можете найти в папке config\weapons, файлы типа w_ak74.ltx открываются тоже блокнотом. Разберём содержимое файла например w_groza.ltx Во первых стоит обратить внимание на значение пременной(буду их так называть) cost, это цена оружия, т.е. сколько гроза будет стоить у продавца. Переменная weapon_class означает, к какому классу относится оружие, в данном случае - assault_rifle. ammo_limit – лимит боеприпасов(в игре не используется) ammo_mag_size – размер магазина. Можно поставить например 900, тогда о перезарядке можно совсем не вспоминать. ammo_class – класс патронов, используемых оружием. Здесь [/b]ammo_9x39_pab9[/b], ammo_9x39_sp5, ammo_9x39_ap. hit_power – сила оружия. Чем больше, тем лучше silencer_hit_power - сила оружия, когда на него одет глушитель. misfire_probability - вероятность осечки при максимальном износе. condition_shot_dec - увеличение износа при каждом выстреле. visual – модель оружия. zoom_enabled - поддерживается ли оптика. Config/Сreatures: actor.ltx – параметры главного героя. В этой же папке находятся файлы с параметрами npc, монстров и пр. Рассмотрим некоторые переменные на примере actor.ltx visual – модель персонажа. max_walk_weight - максимальный вес, при достижении которого игрок перестает двигаться. pickup_info_radius – радиус от ГГ, в котром над предметами выводятся их названия. camera_height_factor – высота ГГ. По умолчанию стоит 0.85, но можно увеличить рост ГГ до 0.95 например. disp_base – разброс. Если уменьшать, то и разлёт уменьшается соответственно. wound_incarnation_v - скорость заживления раны. cant_sprint_power_begin - порог силы меньше которого актер не может бежать в спринте. hit_probability_gd_novice hit_probability_gd_stalker hit_probability_gd_veteran hit_probability_gd_master Эти строчки отвечают за вероятность попадания по вам, при разных уровнях сложности. Хотите чтобы враги стреляли не очень метко, уменьшайте значения. Также в файле присутсвуют комментарии на русском языке, так что разобраться в остальных переменных не составит труда. Config/System.ltx: start_blood_size - размер раны чтоб начала капать кровь. stop_blood_size - размер раны чтоб кровь остановилась. max_weight – вес, с которым ГГ может бежать. Config/Misc: В дополнение к конфигам оружия: cвойства патронов находятся в файле weapons.ltx, а бронежилетов – в outfit.ltx. Свойства артефактов находятся в файле artefacts.ltx и файлах zone_ART.ltx, предметов – items. ltx, где ART – название артефакта(например zone_gravi.ltx). Параметры артефактов: health_restore_speed - скорость восстановления здоровья (0.0001 = +100%) radiation_restore_speed - скорость накопления радиации (0.0004 = 4). Если поставить отрицательное число, то артефакт будет ускорять выведение радиации. idle_particles – если закоментить её символами «--« -, то аномалия исчезнет. Чтобы отключить звуковое оповещение, то находим строку visible_by_detector и меняем on на off. Иммунитеты: strike_immunity - удар. shock_immunity - электрошок. chemical_burn_immunity - химический ожог. telepatic_immunity - телепатия. radiation_immunity - радиация. wound_immunity - разрыв. explosion_immunity - взрыв. fire_wound_immunity - огнестрел.
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 16:53 | Сообщение # 4 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| items.ltx: Параметры предметов: В этом файле в квадратных скобках написан тот предмет, чьи параметры идут ниже, за квадр. скобками. Например: [kolbasa]:identity_immunities. Параметры на примере колбасы: class – к какому классу принадлежит предмет. visual – модель. cost – цена. eat_health – сколько восстанавливает здоровья.(если будет 0, то колбаса лечить не будет.) eat_power - сколько восстанавливает силы. eat_radiation - сколько выводит/или добавляет радиации. (Насчёт этого не уверен, надо тестить.) inv_weight – вес предмета. Outfit.ltx: Параметры костюмов: actor_visual – модель костюма. inv_weight – вес костюма. cost – цена костюма. коэффициенты иммунитета самого костюма: burn_immunity см. коэффиц. ... fire_wound_immunity ; NO RESISTANCE burn_protection - коэффициент защиты от огня strike_protection - коэффициент защиты от пуль shock_protection - коэффициент защиты от молний wound_protection - коэффициент защиты от кровотечений (?) radiation_protection - коэффициент защиты от радиации telepatic_protection - коэффициент защиты от телепатии chemical_burn_protection - коэффициент защиты от хим. ожогов. explosion_protection - коэффициент защиты от взрыва fire_wound_protection - коэффициент защиты от кровотечений(от огня) nightvision_sect – тип ночного видения(плохой/хороший). Если ПНВ нету, то строку добавить, если его нужно убрать, строку закомментируйте(--).
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 16:54 | Сообщение # 5 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Торговцы: Вещи, которые продают торговцы можно отредактировать(добавить/убрать) в файлах с именем [b]trade_YYY.ltx[.B], где [b]YYY[.B] – это имя торговца(например [b]trade_barman.ltx[.B]) Итак, поехали: Структура файла на самом деле очень проста, под зачком ; прописаны сами предметы, а после него – комментарий(чтоб понятно было). Например ;Аммуниция. В квадратные скобки заключены([barman_generic_buy]), как бы сказать, “условия”. Лучше показать на примере: В самом начале(практически) файла trade_barman.ltx идёт строка содержания [barman_generic_buy], т.е. она означает, что ниже прописанные предметы торговец может купить. Сами предметы например: ;Артефакты af_medusa = 1, 0.3 af_cristall_flower = 1, 0.3 af_night_star = 1, 0.3 af_vyvert = 1, 0.3 af_gravi = 1, 0.3 af_gold_fish = 1, 0.3 af_blood = 1, 0.3 af_mincer_meat = 1, 0.3 или ;ADDONS wpn_addon_scope = 0.7, 0.2 wpn_addon_scope_susat = 0.7, 0.2 Посмотрим какие ещё “условия” содержит этот файл и их значение: [supplies_start] - начальный ассортимент [supplies_after_darkvalley] - ассортимент, после выполнения квеста в тёмной долине [supplies_after_brain] - ассортимент, после “выжигателя мозгов” [barman_start_sell] - цены по которым торговец(бармен в данн. сл.) продает в начале [barman_after_darkvalley_sell] - аналогично [barman_after_brain_sell] Итак: чтобы добавить предмет к торговцу, после строки [supplies_start], находим интересующую нас категорию(а это может быть: ;Аммуниция/;Оружие/;Броники/;Медикаменты/;Еда и др.) и после всех прописанных в данной категории предметов добавляем ещё одну строчку для своего предмета(а именно название модели(т.к. оно совпадает с названием самого предмета) и после знака = параметры(о них чуть ниже)). Ну я так и знал что вы ничего не поймёте, поэтому пример: Чтобы добавить бармену винтовку Гаусса, находим строки после условия [supplies_start] - ;Оружие wpn_pb = 3, 0.6 wpn_walther = 3, 0.6 wpn_mp5 = 3, 0.6 wpn_ak74u = 3, 0.5 и внизу прописываем wpn_gauss = N, n.n *о значениях после знака = см. ниже. Все имена оружия, амуниции, снаряжения и т.п. можно найти в папках gamedata\meshes\equipments, gamedata\meshes\weapons, gamedata\meshes\food. Заметьте, что wpn_gauss нужно писать без расширения .ogf Значения: После знака = у вальтера например стоит цифра 3, а после запятой – 0,6. Первое, для гаусса у нас стоит N, это количество(в штуках) предметов. Т.е. если поставить значение 999, то у бармена будет 999 гауссов. А второе: 1. В разделах supplies вторая цифра это вероятность появления данного предмета (от 0.1 до 1). 2. В разделе buy - первая цифра максимальная цена покупки, вторая минимальная (зависит от отношения торговца к Меченному - рейтинг, репутация)[Предположительно. – прим.] 3. Соответственно в разделах sell - первая цифра минимальная цена продажи, вторая - максимальная (точнее множитель на "истинную цену" предмета). В итоге должно получиться: [supplies_start] ;Оружие wpn_pb = 3, 0.6 wpn_walther = 3, 0.6 wpn_mp5 = 3, 0.6 wpn_ak74u = 3, 0.5 wpn_gauss = 6, 1 И тогда у торговца мы получим ровно 6 винтовок Гаусса.
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 16:57 | Сообщение # 6 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Создание рандомного выбора муз. заставки главного меню: При заходе на экран главного меня муз. заставка будет выбираться случайно из добавленных вами. 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 укажите их количество. Автор идеи - VM NPC покупают оружие: Чтобы обычные сталкеры и др. npc могли покупать у ГГ оружие, нужно править файл gamedata\config\misc\trade_generic.ltx. Его структура точно такая же, как и у любого другого торговца. После строки [generic_buy] находим строку ;Оружие и после неё у каждого вида ставим зачения N и n.n. Можно например так: ;Оружие wpn_pm = 0.08, 0.12 wpn_pb ;NO TRADE wpn_fort = 0.08, 0.12 wpn_hpsa = 0.08, 0.12 wpn_beretta = 0.08, 0.12 wpn_walther = 0.08, 0.12 wpn_sig220 ;NO TRADE … … А чтобы у npc продавалось оружие, нужно проделать тоже самое, только после строки [generic_sell] Метод я проверял, вроде как работает. Чтобы после покупки персонаж не выкидывал купленное оружие(а также чтобы подбирал его с земли), в файле gamedata\config\creatures\m_stalker.ltx строку can_select_items = off меняем на can_select_items = on и строку use_single_item_rule = on меняем на use_single_item_rule = off . Объекты, которые можно перемещать: В файле system.ltx в конце есть строка [ph_capture_visuals], после неё идёт список перетаскиваемых вещей. Например чтобы можно было таскать монстров, в конец добавляем: //Monsters monsters\mutant_boar\mutant_boar monsters\krovosos\krovosos monsters\kontroler\kontroler monsters\dog\dog monsters\flesh\flesh monsters\dog\dog_cmn_1 monsters\flesh\flesh monsters\poltergeist\poltergeist monsters\pseudodog\pseudodog monsters\snork\snork monste rs\burer\burer monsters\chimera\chimera monsters\cat\cat monsters\zombi\zombi_1 monsters\rat\rat_1 monsters\tushkano\tushkano Как сделать так, чтоб не убиралось из рук оружие в некоторых локациях?: В файле gamedata\scripts\sr_no_weapon*****ipt найти и закомментировать (поставить перед ними --) строки bind_stalker.hide_weapon() bind_stalker.restore_weapon() и в файле zone_no_weapon*****ipt ищем строки hide_weapon() и заменяем их на restore_weapon() Способ подходит и для предыдущего файла.
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 16:58 | Сообщение # 7 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Как приделать к оружию оптику, глушитель, подствольник?: Находим в файле оружия строку ;addons и пишем после(без комментарие естественно(или перед ними ставьте + значения после знака = можно менять): ;addons scope_status = 2 0 - нет,1 - несъемный, 2 - можно ставить прицел silencer_status = 0 0 - нет,1 - несъемный, 2 - можно ставить глушитель grenade_launcher_status= 0 0 - нет,1 - несъемный, 2 - можно ставить подствольник zoom_enabled = true Вкл/выкл возможность зума scope_zoom_factor = 50 значение зума scope_name = wpn_addon_scope название прицепляемого прицела scope_x = 47 положение прицела на картинке, x scope_y = 0 положение прицела на картинке, y silencer_name = wpn_addon_silencer название глушителя silencer_x = 218 положение глушителя на картинке, x silencer_y = 9 положение глушителя на картинке, y grenade_launcher_name= wpn_addon_grenade_launcher название подствольника grenade_launcher_x = 126 положение подствольника на картинке, x grenade_launcher_y = 24 положение подствольника на картинке, y КАК ИЗМЕНИТЬ НОСИМЫЙ ВЕС? В файле \gamedata\config\creatures\actor.ltx находим переменную max_item_mass – это максимальный вес при достижении которго игрок перестает двигаться max_walk_weight - максимальный вес, до достижения которого можно передвигаться В файле \gamedata\config\ system.ltx изменяем переменную max_weight – это вес который игрок несет не напрягаясь.
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 16:58 | Сообщение # 8 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Как убрать/увеличить время для обычных квестов?: В файле gamedata\config\misc\task_manager.ltx найти и изменить все строки вида time = 86400 Чтобы совсем убрать лимит - просто закомментировать их (--) Как убрать intro-ролики в начале?: В свойствах ярлыка прописываем после пути к exe-шнику: -nointro Получиться должно что то вроде(это как у меня): "D:\Games\S.T.A.L.K.E.R. Shadow of Chernobyl\bin\XR_3DA.exe" -nointro Как включить motion blur?: В свойствах ярлыка прописываем после пути к exe-шнику: -mblur В файле user.ltx(можно и в консоли) параметру r2_mblur присваиваем значение например 0.15 Работает только на DirectX 9. Как увеличить время спринта?: В файле actor.ltx меняем параметр sprint_koef. Как поменять кол-во жизни монстрам?: В файле m_*.ltx(где * - название монстра, например m_controller.ltx; находится в папке gamedata\config\creatures) меняем параметр health Как повесить на пояс больше артефактов?: В файле system.ltx изменяем параметр max_belt с 5 на 10 (max_belt = 10) Ищем файл inventory_new.xml и в нём меняем <dragdrop_belt x="645" y="136" width="410" height="60" cell_width = "60" cell_height="60" rows_num="1" cols_num="5"/> на <dragdrop_belt x="590" y="118" width="410" height="104" cell_width = "52" cell_height="52" rows_num="2" cols_num="5"/> что соответствует 10 артефактам. При желании поправив соответствующим образом файлы system.ltx и inventory_new.xml можно получить 12,14,16 и более слотов под артефакты.
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 16:59 | Сообщение # 9 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Создание новых веток диалога: Создание новых веток диалога. 1) Списки веток диалогов содержатся в файлах вида gamedata/config/gameplay/character_desc_*.xml Это например: character_desc_zombied.xml character_desc_stalker.xml character_desc_g arbage.xml итд. Файлы character_desc_*.xml можно сравнить со стволом дерева диалогов. В них перечисляется названия прикрепляемых веток диалогов Например вот список веток диалога с Сидоровичем взятый из файла character_desc_escape.xml <start_dialog>escape_trader_start_dialog</start_dialog> <actor_dialog>escape_trader_talk_info</actor_dialog> <actor_dialog>escape_trader_jobs</actor_dialog> <actor_dialog>tm_trader_dialog</actor_dialog> <actor_dialog>tm_trader_reward</actor_dialog> <actor_dialog>escape_trader_done_blockpost_box</actor_dialog>< br> В свою очередь каждая ветка диалога также может ветвится. 2) Ветвление веток прописывается уже в других файлах. Например ветвление веток диалога с Сидоровичем содержится в файле gamedata/config/gameplay/dialogs_escape.xml Возьмем оттуда к примеру ветвление ветки escape_trader_jobs (ветвление веток обычно очень большое поэтому я приведу только часть): <dialog id="escape_trader_talk_info"> <precondition>escape_dialog.trader_has_talk_info_w r</precondition > <has_info>tutorial_end</has_info> <phrase_list> <phrase id="1"> <text>escape_trader_talk_info_1</text> <next>100</next> <next>99</next> <next>9995</next> </phrase> … … … <phrase id="0"> <text>escape_trader_talk_info_0</text> <next>1</next> </phrase> </phrase_list> </dialog> Здесь <precondition>…</precondition> - это проверка выполнения условия. Ветка появится в диалоге, только если условие выполняется. Конкретно <precondition>escape_dialog.trader_has_talk_info_w r</precondition> из ветки escape_trader_talk_info есть обращение к функции trader_has_talk_info_wr находящейся в файле скрипте gamedata/scripts/escape_dialog*****ipt Функция выглядит так: function trader_has_talk_info_wr( trader, actor ) return true end Насколько понимаю она возвращает true только в случае если мы разговариваем с trader_ом т.е. с Сидоровичем. Т.е проверкой условия <precondition>escape_dialog.trader_has_talk_info_w r</precondition> проверяется с кем ведется диалог, и если диалог ведется с Сидоровичем в ветке <dialog id="escape_trader_talk_info"> по крайней мере этим условием пропускается в списк реплик. Но для конкретной ветки может быть несколько precondition и других условий. Далее <has_info>tutorial_end</has_info>Если я верно понимаю, это так же своего рода проверка условия В данном случае проверка на то закончена стадия tutorialа или нет. Т.е ветка допустится в список реплик если стадия tutorialа закончена. А далее идут конкретные фразы содержащие ссылки на вытекающие фразы Фраза: <phrase id="0"> <text>escape_trader_talk_info_0</text> <next>1</next> </phrase> это основа ветки escape_trader_talk_info. (Вообще как я понял в любой основной ветке любого диалога фраза <phrase id="0"> будет основой из которой далее будет все вытекать) <next>1</next> - это ссылка на вытекающую фразу <phrase id="1"> : <phrase id="1"> <text>escape_trader_talk_info_1</text> <next>100</next> <next>99</next> <next>9995</next> </phrase> В свою очередь <next>100</next>, <next>99</next>, <next>9995</next> это ссылки на фразы веточки растущие из фразы <phrase id="1">. ) Текст каждой фразы содержится уже в четвертом файле. Для диалога с Сидоровичем тексты лежат в файле gamedata/config/text/rus/stable_dialogs_escape.xml <string id="escape_trader_talk_info_0"> <text>Есть несколько вопросов.</text> </string> <string id="escape_trader_talk_info_1"> <text>Спрашивай, только я ведь всего не знаю. Сам понимаешь, сижу тут целыми днями, а жизнь - она вся там, снаружи, в Зоне. Могу рассказать о Зоне вообще, а немного могу о ближайших окрестностях, где сам ходил.</text> </string> Эти строки содержат тексты для фраз <phrase id="0"> и <phrase id="1"> Итого диалоги разложены по 4 а то и более файлам. Да кстати, путь по веткам может быть зацикленным если того требует диалог. Например так: <phrase id="0"> <text>…</text> <next>1</next> <next>2</next> </phrase> <phrase id="1"> <text>…</text> <next>11</next> <next>12</next> </phrase> <phrase id="11"> <text>…</text> <next>1</next> - Это возврат к фразе 1. (зацикливание) <next>111</next> </phrase> Теперь пример практического применения того, о чем было сказано выше: Добавим в диалог с Сидоровичем ветку своего собственного изготовления. Например такую: Меченый: Сидрыч а что это у тебя зеленые человечки, что по столу бегают, такие худые? Сидорович: Чего?!! Меченый: Ты их совсем, совсем не кормишь? Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился… Шутник.
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 16:59 | Сообщение # 10 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| 1) В файле gamedata/config/gameplay/character_desc_escape.xml в конце списка веток для trader_а суем свою ветку с произвольным названием. (например <actor_dialog>escape_trader_letat_gusi</actor_dialog>) Т.е у нас получится так … <specific_character id="escape_trader" no_random = "1"> … … … <start_dialog>escape_trader_start_dialog</start_dialog> <actor_dialog>escape_trader_talk_info</actor_dialog> <actor_dialog>escape_trader_jobs</actor_dialog> <actor_dialog>tm_trader_dialog</actor_dialog> <actor_dialog>tm_trader_reward</actor_dialog> <actor_dialog>escape_trader_done_blockpost_box</actor_dialog>< br> <actor_dialog>escape_trader_letat_gusi</actor_dialog> </specific_character> … Записываем изменения и с файлом character_desc_escape.xml все. 2) Теперь берем файл gamedata/config/gameplay/dialogs_escape.xml Диалогу: Меченый: Сидрыч а что это у тебя зеленые человечки, что по столу бегают, такие худые? Сидорович: Чего?!! Меченый: Ты их совсем, совсем не кормишь? Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился… Шутник. Который мы хотим реализовать будет соответствовать такая структура: <phrase id="0"> <text>escape_trader_ letat_gusi_0</text> <next>1</next> </phrase> <phrase id="1"> <text>escape_trader_ letat_gusi_1</text> <next>2</next> </phrase> <phrase id="2"> <text> escape_trader_ letat_gusi_2</text> <next>3</next> </phrase> <phrase id="3"> <text> escape_trader_ letat_gusi_3</text> </phrase> условия наличия ветки в диалоге можно взять из ветки <dialog id="escape_trader_talk_info"> Т.е берем условия <precondition>escape_dialog.trader_has_talk_info_w r</precondition > и <has_info>tutorial_end</has_info> (Можно было конечно прописать в скрипте еще одно условие для ветки, чтоб она появилась только один раз, а потом больше не возникала. Но об этом как нибудь позже допишу.) В итоге у нас получилась такая структура: <dialog id="escape_trader_letat_gusi"> <precondition>escape_dialog.trader_has_talk_info_w r</precondition > <has_info>tutorial_end</has_info> <phrase_list> <phrase id="0"> <text>escape_trader_letat_gusi_0</text> <next>1</next> </phrase> <phrase id="1"> <text>escape_trader_letat_gusi_1</text> <next>2</next> </phrase> <phrase id="2"> <text> escape_trader_letat_gusi_2</text> <next>3</next> </phrase> <phrase id="3"> <text> escape_trader_letat_gusi_3</text> </phrase> </phrase_list> </dialog> Которую нужно вставить в любом месте между dialog id_шниками других веток в файле dialogs_escape.xml. Главное не промахнутся и засунуть именно между, а не внутрь одного из dialog id Все что находится между тегами <dialog id="***"> и </dialog> это внутенности конкретного dialog id Т.е совать наш <dialog id="escape_trader_letat_gusi"> …. </dialog> надо <dialog id="*** "> … </dialog> здесь <dialog id="*** "> … </dialog> но <dialog id="*** "> не здесь </dialog> После сохранения внесенных изменений с файлом dialogs_escape.xml все.
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:00 | Сообщение # 11 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| 3) Теперь вбиваем сами текстовички в файле gamedata/config/text/rus/stable_dialogs_escape.xml Т.е нам надо в файле stable_dialogs_escape.xml вставить такую конструкцию: <string id="escape_trader_letat_gusi_0"> <text>Сидрыч а что это у тебя зеленые человечки, что по столу бегают, такие худые?</text> </string> <string id="escape_trader_letat_gusi_1"> <text>Чего?!!</text> </string> <string id="escape_trader_letat_gusi_2"> <text>Ты их совсем, совсем не кормишь?</text> </string> <string id="escape_trader_letat_gusi_3"> <text>В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился… Шутник.</text> </string> в любом месте между уже существующими string id <string id="*** "> </string> сюда <string id="*** "> </string> Но не внутрь одного из существующих string id <string id="*** "> не сюда </string> После сохранения изменений, у нас все готово. Можно грузить игру и смотреть что получилось.
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:00 | Сообщение # 12 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Оружие загораживает пол-экрана. Как это исправить?: В файле конфига выбранного оружия меняем: position = 0, -0.075, 0 ; было 0,0,0 zoom_offset = -0.112400,0.091800,-0.115000 ; было -0.112400,0.016800,-0.115000 Где найти файл user.ltx?: Для Windows XP в директории X:\Documents and Settings\All Users\ Общие документы \STALKER-SHOC Для Windows Vista в директории X:\Users\Public\Documents\STALKER-SHOC Как изменить силу врагов?: В файле gamedata\config\creatures\actor.ltx найти строки hit_probability_gd_novice = 0.20 hit_probability_gd_stalker = 0.30 hit_probability_gd_veteran = 0.40 hit_probability_gd_master = 0.50 Они отвечают за вероятность попадания по вам при разных уровнях сложности. Гармошка: Для возврата в игру губной гармошки, ищем в папке gamedata\scripts файл xr_kamp*****ipt и открываем его блокнотом. Далее ищем строку -- играть на гармошке . Сам скрипт выглядит так: -- играть на гармошке -- if npcbject("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 self.npc[npc_id].states["play_harmonica"] = false self.npc[npc_id].states["wait_harmonica"] = false self.kamp_states["pre_harmonica"] = false self.kamp_states["harmonica"] = false self.kamp_states["post_harmonica"] = false -- end В данном случае знак -- означает, что строки скрипта игра не использует, а просто пропускает их, переходя к следующей части. Значит нужно убрать знак – из тех строк, которые нам нужны. Должно получится: -- играть на гармошке if npcbject("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 self.npc[npc_id].states["play_harmonica"] = false self.npc[npc_id].states["wait_harmonica"] = false self.kamp_states["pre_harmonica"] = false self.kamp_states["harmonica"] = false self.kamp_states["post_harmonica"] = false end Всё, теперь можете запускать игру и наслаждаться.*
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:04 | Сообщение # 13 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Как менять скорострельность и удобность оружия?: В папке gamedata/config/weapons в файлах конфигурации оружия ищи control_inertion_factor чем меньше параметр - тем выше удобство. и rpm - скорострельность. Как положить оружие в другой слот?: В папке gamedata/config/weapons в файлах конфигурации оружия ищи SLOT и меняй на 1 (вместо ножа) или 2 (пистолетный слот) Добавление новых опций в меню игры?: Открываем файл gamedata\config\ui\ui_keybinding.xml. В нём находим строку <group name="kb_grp_common"> и после неё пишем: <command id="kt_turn_engine" exe="turn_engine"/> <command id="kb_cam_1" exe="cam_1"/> <command id="kb_cam_2" exe="cam_2"/> <command id="kb_cam_3" exe="cam_3"/> Таким образом в меню игры добавляются 4 новых опции, а именно: смена камеры и кнопка включения двигателя. Также можно добавлять сюда др. клавиши(если знать консольные команды) Скрипты дверей: Покажу вам на примере, как открыть дверь в саркофаге без дешифра) мы просто сделаем дверь открытой по умолчанию, этот трюк можно использовать в любом направлении, в том числе и для новых квестов Идём в gamedata\config\scripts и ищем скрипт нужной двери или объекта, нам нужна дверь в саркофаге и это sar_door.ltx Вот вам скрипт с моими комментариями, мои комментарии после символа ;, в вашем скрипте они не нужны, так что удалите их если будете копировать отсюда... [logic] ;Основное действие active = ph_door@locked ; При нажатии кнопки "Действия" выполняется скрипт [ph_door@locked] [ph_door@locked] ; То что выполняется сейчас locked = true ; Закрыто на замок, значение правда ("Закрыто", при нажатии на кнопку действия ничего не произойдёт) closed = true ; Прикрыта, правда ("Прикрыта", при нажатии на кнопку действия дверь октроется) tip_open = tip_door_coded ; Всплывающая подсказка "Дверь закодирована" on_info = {=actor_has_decoder} ph_door@coded ; При нажатии на кнопку действия идёт проверка есть ли декодер [ph_door@coded] ; Если есть декодер то... locked = true ;Закрыто, правда closed = true ;Прикрыто, правда tip_open = tip_door_decode ; Всплывающая подсказка "Декодировать" on_info = {!actor_has_decoder} ph_door@locked on_use = ph_door@decoding %+sar_access_decoding% ; При начале декодирования, пошёл процесс декодирования и выполняется скрипт sar_access_decoding [ph_door@decoding] ; В процессе декодирования locked = true closed = true tip_open = tip_door_decoding on_info = {+sar_finish_decoding} ph_door@unlocked ; Завершение скрипта sar_finish_decoding и выполнение ph_door@unlocked [ph_door@unlocked] ; Дверь разкодирована и открыта locked = false closed = false show_tips = false Если мы хотим увидеть правдивые концовки, но мы уже в саркофаге и у нас нет дешифра, то мы просто можем изменить везде locked = false на true closed = false на true И в зависимости что вам надо и где можете менять и изменять, тут всё предельно просто и понятно...
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:05 | Сообщение # 14 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Всё это "добро" было с сайта www.new-stalker.my1.ru Активация артефактов Распишу по пунктам как добавить например к "огненому шару" аномалию Жарка... Открываете файл: gamedata/config/misc/artefacts.ltx И там в самом начале файла такая секция: ;Артефакты, которые при активизации создают аномальные зоны ;формат: {секция_артефакта} = {секция_зоны},Radius,Power [artefact_spawn_zones] af_medusa = zone_mosquito_bald_weak, 2.0, 30.0 Обозначает что артефакт af_medusa при активации создаст аномальную зону zone_mosquito_bald_weak с радиусом 2 метра и мощностью 30 (возможно влияет и на время жизни аномалии) Кончается этот список по идее строчкой: mp_af_electra_flash = zone_witches_galantine, 3, 50.0 и сразу после неё пишете: af_fireball = zone_zharka_static, 3, 30.0 В принципе можно прописать там не статик а zone_zharka_weak незнаю что из них правильнее использовать... статик работает тоже.В той-же папке есть файл zone_zharka, где описаны свойства зон _weak, _average, _strong( слабая, средняя, сильная), а также зона zone_zharka_static. После этого у вас игра станет вылетать с ошибкой про невозможность обнаружить последовательность описывающую анимацию активации аномалии. А это всё там же в начале файла чуть ниже того где вы добавили новый артефакт в список есть такие строчки: [af_activation_gravi] ;---------------------------------------------------------------------------------------------------------------------------------------- ;format: time(sec), sound_name, light_R,G,B, light_range, particle_name, af_animation_name ;---------------------------------------------------------------------------------------------------------------------------------------- st arting = 5.0, anomalygravi_idle00, 0.5, 1.0, 1.5, 5.0, "anomaly2artefact_gravi_blast_start", "idle" flying = 2.0, anomalygravi_idle01, 0.8, 1.0, 1.2, 3.0, "anomaly2artefactartefact_gravi", "idle" idle_before_spawning = 5.0, anomalygravi_blowout5, 1.0, 1.0, 1, 0.0, "anomaly2artefact_gravi_blast_finished", "idle" spawning = 1, anomalygravity_entrance, 0.9, 1.1, 1.01, 0.0, "", "idle" Что как раз и описывает анимацию.. По-хорошему надо написать свою анимацию к жарке но это честно говоря не обязательно... потому что нам сейчас важна не красота а работоспособность.... Так вот... из заголовка "[af_activation_gravi]" берем название последовательности af_activation_gravi и ищем сам артефакт af_fireball (кто уже забыл зачем, мы на него собирались вешать новую активацию) Найдете что-то вроде: [af_fireball]:af_base GroupControlSection = spawn_group $spawn = "artifactszharka fireball" $npc = on ; option for Level Editor ;$prefetch = 3 cform = skeleton class = ARTEFACT visual = physicsanomalyartefact_fire.ogf description = enc_zone_artifact_af-fireball inv_name = af-fireball И где-нибудь тут добавляете строчку: artefact_activation_seq = af_activation_gravi И на этом всё. Прописываем в artefacts.ltx в блоке [af_base]:identity_immunities вместо ;slot=10 вот это: slot=1. Насколько я знаю, знак ; зоначает, что строка закомментирована(неактивна) У себя я прописывал slot=1 между строчками inv_name = af-electra-moonlight inv_name_short = inv_weight = 0.05 slot = 1 inv_grid_x = 10 inv_grid_y = 10 для того артефакта, который хочу активировать. В игре берем артефакт в первый слот и активируем. By XiaNi Получено с http://www.stalkerin.gameru.net/wiki...82%D0%BE%D0%B2
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:05 | Сообщение # 15 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Добавление статей в PDA Добавление статьи На примере статьи из Artefact Activation Mod разберем их добавление в PDA: • Добавим в файл 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> Здесь: • o article id - внутреннее имя статьи, именно на него ссылаются в файлах игры o name - имя статьи, отображаемое в игре, подгружается из строкового массива o texture - картинка и её позиция в статье, в данном случае мы использовали обычный белый шум o text - текст статьи, отображаемый в игре, подгружается из строкового массива • Добавим в, например, config\gameplay\info_l01escape.xml (инфопорции уровня "Кордон") ссылку на получение статьи - скажем, к трупу у туннеля, при обыске которого выдается информация о аномалиях в туннеле (вы его обнаруживаете, проходя второе спецзадание от Сидоровича). Найдем эти строки и дополним их: <!-- труп у аномалии --> <info_portion id="esc_tutorial_dead_novice"> <article>tutorial_moving_anomaly</article> '''<article>zone_anomalies_activation_basic</article>''' </info_portion> Главное - никогда не путайте article id, name и text статьи. Я в данном примере это сделать легко. Лучше называйте их непохожими друг на друга названиями. • Так как в статье у нас есть такое поле: <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>
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:06 | Сообщение # 16 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Редактирование NPC Вступление В этой статье мы научимся редактировать NPC: изменять содержимое их инвентаря, реплики, поведение, имя, и другие параметры. Параметры За параметры NPC отвечают файлы: \config\gameplay\character_desc_[название локации].xml Каждый из них разбит на секции - по одной на NPC. Используются следующие параметры: • <name>...</name> - Имя (ссылка на строку в текстовом массиве). • <icon>ui_npc_...</icon> - Иконка для диалогов/торговли. • <bio>..._bio</bio> - Биография (в игре не используется). • <class>...</class> - Класс (лучше не трогать).Imp 12:46, 12 августа 2007 (EEST)Нужно для того что-бы автоматические респавнеры могли спавнить немного разных персонажей. То есть например в игре есть описание восьми (кажеться может и больше) разных новичков и что бы при автоматическом респавне не получалась куча братьев-близнецов, респавнер настраивается на класс персонажей и спавнит случайным образом разных персонажей одного класса. • <community>...</community> - Группировка. • <rank>...</rank> - Ранг. • <reputation>...</reputation> - Репутация. • <money min="..." max="..." infinitive="..."/> - Количество денег (infinitive="1" - бесконечные деньги). • <snd_config>...</snd_config> - Набор звуков. • <crouch_type>-1</crouch_type> - Тип приседания. Лучше не трогать. • <visual>actors\...</visual> - Внешность. Влияет как на внешний вид костюма, так и на его свойства. Укажите здесь экзоскелет - и персонаж действительно в нем окажется: как по внешности, так и по свойствам. • <supplies>...</supplies> - Предметы, находящиеся у него в инвентаре. Некоторые из них в игре не отображаются, поэтому не удивляйтесь присутствию здесь предметов вроде рации или фонарика. В игре отображаються все предметы, просто при торговле есть ограничения на допустимые к торговле предметы, а при смерти персонажа, "запрещенные" предметы удаляються скриптом. Imp 12:46, 12 августа 2007 (EEST) • <start_dialog>...<start_dialog> - Приветственный диалог. Их может быть несколько, с различными условиями появления. • <actor_dialog>...</actor_dialog> - Диалоги с игроком. Практика Изменим, например, параметры NPC по имени Волк. Откроем файл: \config\gameplay\character_desc_escape.xml
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:06 | Сообщение # 17 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| И найдем в нем раздел, ему соответствующий: <!---------------------esc_wolf---------------------> <specific_character id="esc_wolf" team_default = "1"> <name>esc_wolf_name</name> <icon>ui_npc_u_stalker_neytral_balon_1</icon> <bio>esc_wolf_bio</bio> <class>esc_wolf</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <rank>434</rank> <reputation>5</reputation> <money min="600" max="2000" infinitive="0"/> <snd_config>characters_voice\human_01\stalker\</snd_config> <crouch_type>-1</crouch_type> <visual>actors\neytral\stalker_neytral_balon_1</visual> <supplies> [spawn] \n wpn_pm \n ammo_9x18_fmj = 1 \n wpn_ak74u \n ammo_5.45x39_fmj \n device_torch \n hand_radio \n </supplies> #include "gameplay\character_criticals_4.xml" // <start_dialog>escape_lager_volk_talk</start_dialog> <start_dialog>dm_hello_dialog</start_dialog> <actor_dialog>dm_cool_info_dialog</actor_dialog> <actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog> <actor_dialog>tm_wolf_dialog</actor_dialog> <actor_dialog>tm_wolf_reward</actor_dialog> </specific_character> Изменим некоторые параметры. Выдадим ему FN2000 и Desert Eagle, примем в "Долг" и сделаем неограниченное количество денег: <!---------------------esc_wolf---------------------> <specific_character id="esc_wolf" team_default = "1"> <name>esc_wolf_name</name> <icon>ui_npc_u_stalker_neytral_balon_1</icon> <bio>esc_wolf_bio</bio> <class>esc_wolf</class> <community>dolg</community> <terrain_sect>stalker_terrain</terrain_sect> <rank>434</rank> <reputation>5</reputation> <money min="600" max="2000" infinitive="1"/> <snd_config>characters_voice\human_01\stalker\</snd_config> <crouch_type>-1</crouch_type> <visual>actors\neytral\stalker_neytral_balon_1</visual> <supplies> [spawn] \n wpn_deagle \n ammo_11.43x23_fmj = 1 \n wpn_fn2000 \n ammo_5.56x45_ap \n ammo_5.45x39_fmj \n device_torch \n hand_radio \n </supplies> #include "gameplay\character_criticals_4.xml" // <start_dialog>escape_lager_volk_talk</start_dialog> <start_dialog>dm_hello_dialog</start_dialog> <actor_dialog>dm_cool_info_dialog</actor_dialog> <actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog> <actor_dialog>tm_wolf_dialog</actor_dialog> <actor_dialog>tm_wolf_reward</actor_dialog> </specific_character>
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:08 | Сообщение # 18 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Создание новой группировки Новая группировка Сегодня мы создадим новую группировку. Назовем её, скажем, "Ветер". Не суть важно. Практика: Базовый уровень 1. Для начала в game_relations.ltx и в таблицу отношений группировок в конце и в заголовке добавляем название своей группировки и коэффициенты отношений к ней у других группировок. Также, не забываем прописать её собственное отношение к другим группировкам: [communities_relations] ;|actor |act_dol|act_fre|stalker|monolit|militar|killer |ecolog |dolg |freedom|bandit |zombied|strange|trader|arena_enemy|wind| ;================================================= ================================================== ============================== actor = 0, 0, 0, 0, -5000, -5000, -5000, 0, 0, 0, -5000, -5000, 0, 0, -5000, 0 actor_dolg = 0, 0, 0, 0, -5000, -500, -5000, 5000, 600, -5000, -5000, -5000, 0, 0, -5000 actor_freedom = 0, 0, 0, 0, -5000, -5000, -5000, -1500, -5000, 5000, 0, -5000, 0, 0, -5000, 0 stalker = 0, 0, 0, 0, -5000, -5000, -5000, 0, 0, 0, -5000, -5000, 0, 0, -5000, 0 monolith = -5000, -5000, -5000, -5000, 5000, -5000, -5000, -5000, -5000, -5000, 5000, 5000, -5000, 0, -5000, 0 military = -5000, -5000, -5000, -5000, -5000, 5000, -5000, 0, -5000, -5000, -5000, -5000, 0, 0, -5000, 0 killer = -5000, -5000, 0, -5000, -5000, -5000, 5000, -5000, -5000, -5000, 0, -5000, -5000, 0, -5000, 0 ecolog = 0, 600, -5000, 0, -5000, 1000, -5000, 5000, 500, -5000, -500, -5000, 0, 0, 0, 0 dolg = 0, 600, -5000, 0, -5000, -500, -5000, 5000, 5000, -5000, -5000, -5000, 0, 0, 0, 0 freedom = 0, -5000, 600, 0, -5000, -5000, -5000, -1500, -5000, 5000, 0, -5000, 0, 0, 0, 0 bandit = -5000, -5000, 0, -5000, -5000, -500, 0, -5000, -5000, 0, 0, -5000, -5000, 0, -5000, 0 zombied = -5000, -5000, -5000, -5000, 5000, -5000, -5000, -5000, -5000, -5000, -5000, 5000, -5000, 0, -5000, 0 stranger = 0, 0, 0, 0, -5000, -5000, -5000, 0, 0, 0, -500, -5000, 0, 0, 0, 0 trader = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 arena_enemy = -5000, -5000, -5000, -5000, -5000, -5000, 0, 0, 0, -5000, -5000, 0, 0, 0, 0, 0
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:08 | Сообщение # 19 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| wind = 0, 0, 0, 0, -5000, -5000, -5000, 0, 0, 0, -5000, -5000, 0, 0, -5000, 0 Также, изменим эту строку, добавив туда имя и номер группировки: ;названия группировок communities = actor, 0, actor_dolg, 1, actor_freedom, 2, stalker, 5, monolith, 6, military, 7, killer, 8, ecolog, 9, dolg, 10, freedom, 11, bandit, 12, zombied, 13, stranger, 14, trader, 15, arena_enemy, 16, wind, 18, Отсчет идет построчно начиная сверху. Хотя есть небольшой нюанс. У первых трех строк - нумерация начинается с нуля, с остальных группировок она идет как надо. Для wind выставили 18, так как мы эту группировку отделили от других. Далее, в разделе [communities_sympathy] в конце добавляем свою группировку и коэффициент "впечатлительности" - чем он меньше, тем меньше отношение группировки будет меняться к вам в целом: [communities_sympathy] actor = 0.0 actor_dolg = 0.0 actor_freedom = 0.0 stalker = 0.0 monolith = 0.0 military = 0.0 killer = 0.0 ecolog = 0.0 dolg = 0.1 freedom = 0.1 bandit = 0.0 zombied = 0.0 trader = 0.0 stranger = 0.0 arena_enemy = 0.0 wind = 0.0 2. После этого в файле death_manager*****ipt ищем строку local community_list и в скобках добавляем название своей группировки: function init_drop_settings() local community_list = { "stalker", "dolg", "freedom", "bandit", "military", "zombied", "ecolog", "killer", "monolith", "arena_enemy", "actor_dolg", "wind" } 3. В файле death_items_by_communities.ltx пишем [x]:stalker (вместо x - название вашей группировки): [...] af_dummy_spring = 0 af_fuzz_kolobok = 0 ;Еда vodka = 0 [arena_enemy] [actor_dolg] [wind]: stalker bread = 0 kolbasa = 0 vodka = 0 energy_drink = 0.3 4. Если предусматривается респавн бойцов новой группировки, в se_respawn*****ipt прописываем в local simMaxCount = { после строчек с зомбированными сталкерами строку: wind_novice = 20, wind_regular = 20, wind_veteran = 20, wind_master = 6, 5. Чтобы при убийстве непися новой группировки игра не вылетала в xr_statistic*****ipt, после строки: zombied_novice = 1, zombied_experienced = 2, zombied_veteran = 3, zombied_master = 4, пишем dark_stalker_novice = 1, dark_stalker_experienced = 2, dark_stalker_veteran = 3, dark_stalker_master = 4, 6. Ну а в character_desk_x.xml выбираем любого NPC (или группу) и меняем группировку на свою: <!---esc_wolf---> <specific_character id="esc_wolf" team_default = "1"> <name>esc_wolf_name</name> <icon>ui_npc_u_stalker_neytral_balon_1</icon> <bio>esc_wolf_bio</bio> <class>esc_wolf</class> <community>wind</community> [...] 7. Чтобы у персонажа в графе "Группировка" отображалось не "wind", а "Ветер", зарегистрируем соответствующую строку в файле string_table_general.xml: <?xml version="1.0" encoding="windows-1251" ?> <string_table> <string id="wind"> <text>Ветер</text> </string> <string id="actor"> <text>Одиночка</text> </string> [...] 8. Существует возможность создать для нашей новой группировки места, где они будут ходить (*_terrain брать из m_stalker.ltx): То есть, к примеру, существует секция: [stalker_terrain] 255,000,255,255 008,001,255,255 ;Разрешено ходить по опасным местам на баре 012,001,255,255 ;Разрешено ходить по опасным местам на Милитари Тогда можно создать новую, по аналогии: [wind_terrain] 255,000,255,255 008,001,255,255 ;Разрешено ходить по опасным местам на баре 012,001,255,255 ;Разрешено ходить по опасным местам на Милитари 010,001,255,255 ;Разрешено ходить по опасным местам на янтаре
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:09 | Сообщение # 20 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Здесь, очевидно, указаны координаты самого уровня. Для каждого уровня существует своя начальная координата. Продвинутый уровень: Такой метод достаточно примитивен. Это не полноценная группировка. Нам нужны соответствующие диалоги, возможность получения квестов и вступления в группировку, уникальные NPC. Квесты: Добавим квесты, которые нужно выполнить для группировки. Пока - простые поручения распространенных типов. Во-первых, пропишите в список диалогов персонажа следующие строки: <actor_dialog>[что-нибудь]_dialog</actor_dialog> <actor_dialog>[что-нибудь]_reward</actor_dialog> Примеры названий: tm_trader_dialog, tm_wolf_dialog... Внимание! Метод не проверен. Этим мы добавили ему ветку диалога "Есть работа?", а также ветку для награды за квест/отказа от него. Теперь зарегистрируем в task_manager.ltx набор новых заданий. [...] ;--------Wind------------------------ ;----------Kill Stalker---- wind_kill_stalker ;----------Find Item---- wind_find_item [...] ;tasks for Wind [wind_find_item] type = find_item community = actor text = [ссылка на текст с рассказом заказчика о задании] description = [ссылка на текст с описанием задания] parent = [имя NPC-заказчика] target = scientific_outfit reward_money = 5000 reward_reputation = +5 reward_rank = 4 reward_item = wpn_sig_m1 time = 86400 [wind_kill_stalker] type = kill_stalker community = actor text = [ссылка на текст с рассказом заказчика о задании] description = [ссылка на текст с описанием задания] parent = [имя NPC-заказчика] target = sim_stalker_master_master reward_money = 4000 reward_reputation = +5 reward_rank = 9 reward_item = ammo_5.56x45_ap, ammo_5.56x45_ap, ammo_5.56x45_ap time = 86400 Не забудьте прописать описания заданий в текстовые массивы. Подробнее о редактировании task_manager.ltx читайте в уроке, посвященном однотипным квестам. Да, и зарегистрируйте сами ветки диалогов в файле dialogs.xml. Вот пример того, как это сделано для заданий "Долга": <dialog id="tm_dolg_dialog" priority="-1"> <init_func>task_manager.init_dolg_task_dialog</init_func> </dialog> <dialog id="tm_dolg_reward" priority="0"> <init_func>task_manager.init_dolg_reward_dialog</init_func> <precondition>task_manager.has_active_vendor_tas k</precondition> </dialog> Соответственно, пройдем туда, куда указывает строка task_manager.init_dolg_task_dialog - в task_manager*****ipt: function init_dolg_task_dialog(dlg) get_random_task():init_task_dialog(dlg, "dolg") По аналогии делаем и с нашим "Ветром". Вступление в группировку: Реализуем возможность вступления в группировку. Прописываем в dialogs*****ipt такие action'ы: ----------------------------------------------------------------------------------- -- Community -----------------------------------------------------------------------------------
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:09 | Сообщение # 21 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| [...] function actor_set_wind (actor, npc) printf ("ACTOR NOW IN WIND COMMUNITY" if db.actor then db.actor:set_character_community ("actor_wind", 0, 0) end return true end После чего создадим диалог, и сделаем в нем фразу с action'ом вида <action>actor_set_wind</action>. Советую изучить урок, посвященный диалогам. [править] Новые NPC Лучше всего всё вышеприведенное повесить на нового, уникального персонажа. Способ его спавна описан здесь.
Создатель этого сайта. Помните такого?
|
|
| |
Мерфи | Дата: Четверг, 25.06.2009, 17:10 | Сообщение # 22 |
*Put some cool phrase here*
Группа: Администратор
Сообщений: 3541
Статус: Не на сайте
| Вычисляем координаты Нашел на одном форуме, достаточно интересно. Как получить координаты для спавна предмета или НПЦ. Скрипт сей найден на каком-то форуме, проверен и работает функция спавна имеет вид alife():create(section,position,levelvertex,gameve rtex) Где: section - имя того/чего спавним position,levelvertex,gamevertex - координаты, позиция вершины обьекта, и сектора карты. Напишу подробно, как очень про100 их узнать: Заходим, предварительно распаковав, в каталог gamedata/scripts/ И там в файле ui_main_menu*****ipt в конце дописываем это: function main_menu:OnButton_credits_clicked() local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000) end Теперь в игре идём на то место (или ногами или деморекордом), где спавним обьект, выходим в меню игры, и жмём на клавишу СОЗДАТЕЛИ (CREDITS) - соответственно нашему взоры не предстаёт никакой список создателей, а мы услышим звуковой сигнал, после чего выходим в игру из меню, и в строке сообщений высветиться вся инфа. Всё - F12 или на бумажку.
Создатель этого сайта. Помните такого?
|
|
| |
|