Профиль




Гость!
Для всех функций сайта вам необходимо зарегистрироваться,или просто войти под своим логином.


Участники сайта
Сегодня Четверг, 26.12.2024
 
Меню сайта

 
Мини-чат
 
Обновления ролевой
  • КПК MatiVip (0)
  • Анкета (109)
  • КПК Цыганок (0)
  • Железнодорожное депо (260)
  • Жд туннель (152)
  •  
    Обновления блога
    [27.04.2014][Рассказы пользователей]
    Братья по несчастью (0)[Цыганок]

    [23.04.2014][Рассказы пользователей]
    Братья по несчастью (0)[Цыганок]

    [23.12.2013][Рассказы пользователей]
    История сталкера Щепки глава 2 (0)[Mafia50000]

    [22.12.2013][Книга сайта]
    История сталкера Щепки. Глава 1 (4)[Mafia50000]

    [11.10.2013][Рассказы пользователей]
    Братья по несчастью (3)[Цыганок]

     
    Мы В Контакте
    ⇓⇓⇓Подпишись!⇓⇓⇓

    Реклама на сайте

    [ Новые сообщения · Участники · Правила сайта · Поиск · RSS ]
    • Страница 1 из 2
    • 1
    • 2
    • »
    для тех кто хочет заниматся модостроем
    GoReLaZДата: Пятница, 11.11.2011, 23:40 | Сообщение # 1
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    Респаун, один из самых часто задаваемый вопросов на форумах. Вот, решил написать статью, дабы не втирать одно и тоже каждому, кто не может с этим разобраться.

    --------------------------------------------------------------------------------

    --------------------------------------------------------------------------------
    RESPAWN NPC-----------------------------------------------------------------------------
    Для создания респавна, понадобится два файла, all.spawn и spawn_section.ltx. Это минимальный набор. Для полной настройки респавнера, нужны ещё character_desc_simulation.xml и npc_profile.xml.

    --------------------------------------------------------------------------------

    1. В all.spawn создаём секцию респавнера

    [10000]
    ; cse_abstract properties
    section_name = respawn
    name = имя респавнера
    position = координаты (x,y,z)
    direction = 0,0,0

    ; cse_alife_object properties
    game_vertex_id = гейм-вертекс
    distance = 10
    level_vertex_id = левел-вертекс
    object_flags = 0xffffff3e
    custom_data = END
    [respawn]
    respawn_section = esc_urody_respawn_1,12, esc_urody_respawn_2,9
    max_count = 8
    min_count = 4
    max_spawn = 2
    idle_spawn = medium
    conditions = 100
    END

    ; cse_shape properties
    shapes = shape0
    shape0type = sphere
    shape0offset = 0,0,0
    shape0radius = 1

    ; cse_alife_space_restrictor properties
    restrictor_type = 0

    ; se_respawn propertiesЕсли используется программа XrSpawner, то копируем любую секцию respawn; меняем имя объекта, координаты, и в окошке скрипт прописываем

    [respawn]
    respawn_section = esc_urody_respawn_1,12, esc_urody_respawn_2,9
    max_count = 8
    min_count = 4
    max_spawn = 2
    idle_spawn = medium
    conditions = 100Где respawn_section = id респавн-секций из файла spawn_section.ltx. Цифры после запятой, означают отношение одной секции к другой. Если планируется одинаковое колличество респавна из каждой секции, то цифры ставить не требуется. max_count = колличество респавн-запросов за период времени, пока ГГ находится на уровне. При переходе на другой уровень, счётчик max_count сбрасывается. (ставить не обязательно) min_count = минимальное колличество нпс, для экстренного респавна. (ставить не обязательно) max_spawn = колличество нпс за один цикл респавна. idle_spawn = тип спавна. Известно три типа medium, often, seldom. Обычно, используется тип medium. conditions =Условие респавна. Можно установить проверку условий (инфопоршень), где респавн будет происходить только при выполнении условия. Номер означает общий процент выполнения респавна. Например так conditions = {+инфо} 100, 0 где, респавн будет происходить со сто-процентной вероятностью, только при наличии установленного инфопоршна.
     
    Кол-во символов:
    GoReLaZДата: Пятница, 11.11.2011, 23:41 | Сообщение # 2
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    2. В файле spawn_section.ltx, создаём респавн-секции

    [esc_urody_respawn_1]stalker
    $spawn = respawnesc_urody_respawn_1
    character_profile = sim_urody_novice
    spec_rank = novice
    community = bandit

    [esc_urody_respawn_2]stalker
    $spawn = respawnesc_urody_respawn_2
    character_profile = sim_urody_regular
    spec_rank = regular
    community = banditГде esc_urody_respawn_1 id респавн-секции. sim_urody_novice и sim_urody_regular классы профайлов нпс. novice и regular ранги нпс. bandit группировка нпс.

    --------------------------------------------------------------------------------

    3. В файле npc_profile.xml регистрируем классы sim_urody_regular и sim_urody_novice

    character id=sim_urody_regular
    classsim_urody_regularclass
    character

    character id=sim_urody_novice
    classsim_urody_noviceclass
    character
    --------------------------------------------------------------------------------

    4. Создаём профили, в файле character_desc_simulation.xml, с классами sim_urody_regular и sim_urody_novice и группировкой bandit.

    --------------------------------------------------------------------------------

    --------------------------------------------------------------------------------
    RESPAWN MUTANTOV-------------------------------------------------------------------------------
    В принципе, респавн мутантов идентичен респавну нпс. Но с одним лишь отличием, которое его значительно упрощает. Вся настройка респавна мутантов, ограничивается секцией в файле all.spawn. Вписываем секцию респавнера, как указано в -RESPAWN NPC-. Все настройки идентичны, кроме строки respawn_section = . В ней прописываем типы мутантов, из файла se_respawn.script. Такие как flesh_weak, flesh_normal, dog_weak, boar_strong, и т.д..

    --------------------------------------------------------------------------------

    --------------------------------------------------------------------------------
    ОБЩИЕ НАСТРОЙКИ--------------------------------------------------------------------------------
    Обязательные условия респавна

    1. На уровне обязательно должен быть хоть один гулаг для респавнящихся нпс и мутантов. Так как колличество неписей для респавна, ориентируется по доступным местам в гулагах.

    2. Респавн производится, только если под гулагами есть доступные работы.

    3. На каждом уровне, респавн ограничен определёнными типами неписей. Данные ограничения установлены в файле miscsmart_terrain_presets.ltx. Чтобы сделать возможным респавн неписей, не предусмотренных на данном уровне. Надо в секции нужного уровня, дописать требуемые типы неписей.
     
    Кол-во символов:
    GoReLaZДата: Пятница, 11.11.2011, 23:41 | Сообщение # 3
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    Для проверки созданного респавнера, можно не ждать когда сработает системный респавн, а вызвать принудительно респавн в нужной секции. Для этого, прописываем в любой логике, вызов функции %=respawner_spawn(имя респавнера)%. Где, имя респавнера - имя секции, созданой в файле all.spawn. Скобки обязательны.

    Например, можно создать рядом с зоной респавнера, временный рестриктор. И в кастом дате рестриктора, прописать вызов функции принудительного вызова респавна, в нужном респавнере, при входе ГГ в зону рестриктора

    [logic]
    active = sr_idle@in

    [sr_idle@in]
    on_actor_inside = %=respawner_spawn(имя респавнера)% sr_idle@out

    [sr_idle@out]
    on_actor_outside = sr_idle@inФункция принудительного вызова респавна, находится в файле xr_effects.script.

    --------------------------------------------------------------------------------

    --------------------------------------------------------------------------------
    RESPAWN ITEMS-------------------------------------------------------------------------------
    Респавн инвентаря в инвентарных ящиках, несколько отличается от способа респавна неписей.

    --------------------------------------------------------------------------------

    1. Первое, что нам нужно сделать, это создать инвентарный ящик в файле all.spawn

    [10000]
    ; cse_abstract properties
    section_name = inventory_box
    name = имя ящика
    position = координаты x,y,z
    direction = 0,0,0

    ; cse_alife_object properties
    game_vertex_id = гейм-вертекс
    distance = 0
    level_vertex_id = левел-вертекс
    object_flags = 0xffffffba

    story_id = ай-ди ящика

    ; cse_visual properties
    visual_name = equipmentsitem_box_01
    --------------------------------------------------------------------------------

    2. Затем, в файле game_story_id.ltx регистрируем id ящика. (выбираем любое свободное число).

    --------------------------------------------------------------------------------

    3. Создаём респавнер в файле all.spawn. Координаты и размеры зоны респавнера, должны быть такими, чтоб инвентарный ящик поместился внутри зоны респавнера

    [10001]
    ; cse_abstract properties
    section_name = respawn
    name = имя респавнера
    position = координаты x,y,z
    direction = 0,0,0

    ; cse_alife_object properties
    game_vertex_id = гейм-вертекс
    distance = 2
    level_vertex_id = левел-вертекс
    object_flags = 0xffffff3e
    custom_data = END
    [respawn]
    respawn_section = список вещей респавна
    idle_spawn = -1
    parent = ай-ди ящика
    item_spawn = true
    max_count = 7
    END

    ; cse_shape properties
    shapes = shape0
    shape0type = box
    shape0axis_x = 0.5,0,0 (ширина зоны респавнера, по X)
    shape0axis_y = 0,0.5,0 (высота зоны респавнера)
    shape0axis_z = 0,0,1 (ширина зоны респавнера, по Z)
    shape0offset = 0,0,0

    ; cse_alife_space_restrictor properties
    restrictor_type = 3

    ; se_respawn propertiesГде

    respawn_section = список вещей респавна. Как и в респавнерах неписей, возможна прописка соотношений между вещами. Например

    respawn_section = wpn_pm,2, vodka,2, medkit,1, energy_drink,2, ammo_9x18_fmj,3
    idle_spawn = тип спавна. Инвентарь не имеет типов спавна, поэтому ставится (-1).

    parent = ай-ди инвентарного ящика, в котором производить респавн вещей.

    item_spawn = (truefalse) возможность включения и отключения респавна. Можно задавать условия.

    max_count = количество респав-циклов за определённый период времени. (Пока ГГ находится на уровне. После перехода ГГ на другой уровень, счётчик сбрасывается).

    --------------------------------------------------------------------------------

    4. Создаём вызов респавна. Обычно вызов производится из smart_terrain. В custom_data любого подходящего smart_terrain, под секцией [smart_terrain], вписываем вызов респавна

    [smart_terrain]
    respawn = имя респавнера И респавн будет производиться, при каждом пополнении нпс, под данным смартом.
     
    Кол-во символов:
    GoReLaZДата: Пятница, 11.11.2011, 23:43 | Сообщение # 4
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    Активация артефактов
    Распишу по пунктам как добавить например к "огненому шару" аномалию Жарка...
    Открываете файл: 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
    ;----------------------------------------------------------------------------------------------------------------------------------------
    starting = 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

    Добавление статей в 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>

    Редактирование 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
    И найдем в нем раздел, ему соответствующий:
    <!---------------------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>

    Создание новой группировки
    Новая группировка
    Сегодня мы создадим новую группировку. Назовем её, скажем, "Ветер". Не суть важно.
    Практика:
    Базовый уровень
    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

    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 ;Разрешено ходить по опасным местам на янтаре

    Здесь, очевидно, указаны координаты самого уровня. Для каждого уровня существует своя начальная координата.
    Продвинутый уровень:
    Такой метод достаточно примитивен. Это не полноценная группировка. Нам нужны соответствующие диалоги, возможность получения квестов и вступления в группировку, уникальные 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
      -----------------------------------------------------------------------------------

      [...]

      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
      Лучше всего всё вышеприведенное повесить на нового, уникального персонажа. Способ его спавна описан здесь.

      Вычисляем координаты
      Нашел на одном форуме, достаточно интересно.
      Как получить координаты для спавна предмета или НПЦ. Скрипт сей найден на каком-то форуме, проверен и работает функция спавна имеет вид
      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 или на бумажку.
     
    Кол-во символов:
    GoReLaZДата: Пятница, 11.11.2011, 23:54 | Сообщение # 5
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    Настройка погоды и освещения

    Содержание
    1 Значение параметров погодных и относящихся к ним конфигов
    1.1 Параметры погоды
    1.2 Параметры бликов
    1.3 Параметры фонарика
    2 Авторы

    Значение параметров погодных и относящихся к ним конфигов

    Параметры погоды
    [sect_default_weather]

    01:00:00 = default_weather_01
    02:00:00 = default_weather_02
    ...

    Здесь указывается время смены типов погоды, каждый тип включает в себя свой скайбокс и индивидуальные параметры освещения, дождя, грозы, и звука окружения. Переход осуществляется не скачкообразно, а плавно, практически не заметно.
    [default_weather_01] ; имя типа погоды, описание которого ведется в этом блоке.

    flares = flares_gradient1 ; здесь указывается имя заготовки блика
    от солнца (заготовки прописаны в файле flares.ltx).

    sky_texture = skysky_14_cube ; это имя используемого скайбокса. cкайбокс - это куб,
    окружающий всю локацию, на 6 граней которого натянуты 6 текстур из файла, указанного
    в этой строке. нужно обратить внимание, что строка содержит еще и путь к файлу.

    sky_rotation = 0 ; определяет положение (азимут) скайбокса на описываемый час.

    sky_color = 1.0, 1.0, 1.0 ; это цвет неба, или, точнее, цвет рассеянного света,
    формат из 3 цифр, как и в параметрах ниже, подразумевает цветовую модель RGB,
    учитывая то, что здесь максимальная интенсивность цвета (255), здесь равна 1.0.
    например, цвет неба, равный [1.0, 0.0, 0.0] - зальет окрестность ярко красным светом.
    стоит учитывать, что здесь описывается не цвет, а свет, поэтому параметр,
    например, [0,0,0] - даст не черный цвет, а отсутствие вообще какого либо света.
    аналогично эффекту смешивания в фотошопе (screen).

    clouds_texture = skysky_oblaka ; это - имя тектуры облаков. не путать со скайбоксом.

    clouds_color = 0.333, 0.341, 0.431, 0.7, 1.7 ; это цвет облаков, первые 3 цифры -
    это RGB (см.выше), четвертая - это видимость (непрозрачность) текстуры облаков,
    т.е 0 - облаков не видно, а 1 - полная видимость. пятая цифра - скорость движения
    облаков.

    far_plane = 350 ; это, судя по всему, дальность видимости (расстояние, на котором
    "обрезается" карта).

    fog_distance = 350 ; в DX9 это расстояние, на котором туман фактически "прекращает"
    действовать. непосредственно дымка, интенсивность которой задаётся fog_density,
    "висит" в радиусе fog_distance. за пределами этого радиуса часть геометрии "съедается"
    и вместо неё отображается небо (скайбокс). правильно подобранная текстура неба
    имитирует вдали клубы тумана. а уже дальше снова проявляется геометрия уровня (холмы
    и т.д.). в DX8-режиме туман рудиментарен и обсуждать его нет особого смысла.

    fog_color = 0.043, 0.043, 0.055 ; непосредственно сам цвет тумана.

    fog_density = 0.9 ; это плотность тумана, выставив значение в 0, можно увидеть
    четкие края карты.

    rain_density = 0.2 ; это плотность дождя, действует, видимо, как и туман.

    rain_color = 0.21, 0.21, 0.27 ; цвет (непосредственно капель) падающего дождя.

    thunderbolt = thunderbolt_collection_default ; это имя заготовки грозы, если грозы
    не предусмотрено, значение можно оставить пустым.

    bolt_period = 4.5f ; это время между вспышками молний. значение прописано не в
    секундах. В принципе, эмпирически установлено, что в грозовую погоду желательно
    ставить значения около 20f, в дождливую - в районе 50f.

    bolt_duration = 0.35f ; это собственно продолжительность фазы вспышки молнии.
    выставив высокое значение, можно вовсе получить не молнию, а некое плавно
    нарастающее свечение.

    wind_velocity = 0.0 ; сила ветра.

    wind_direction = 0.0 ; направление ветра.

    ambient = 0.0425, 0.045, 0.0475 ; общее освещение локации, те тона, в которые она
    будет окрашена (цвет и интенсивность света фонового освещения там, где не светит солнце -
    выставив значения в [0,0,0] - получим кромешную тьму в зданиях и под навесами.
    работает только на R2.

    lmap_color = 1.0, 1.0, 1.0 ; видимо, цвет лайтмапа.

    hemi_color = 0.0425, 0.045, 0.0475, 0.1 ;по слухам, параметр, идентичный амбиенту,
    только предназначенный для статичного освещения. насчет четвертой цифры - не в курсе.

    sun_color = 0.0, 0.0, 0.0 ; свет солнца, его интенсивность также влияет на тени,
    если солнце не светит, теней от него не будет.

    sun_dir = -18.0, 291 ; положение солнца, первая цифра - это высота, знак минус означает,
    что солнце выше горизонта. от горизонта до горизонта солнце описывает полукруг, значения
    в игре соотносятся с градусами, то есть от -0 до -180, зенит -90, вторая цифра определяет
    положение солнца относительно сторон горизонта, нулевое значение вроде соответствует югу.

    env_ambient = ambient_env_rain ; это набор звуков окружения.

    Параметры бликов

    Находятся в файле flares.ltx.
    [flares_sun_rise] ; название cекции, параметры которой описываются ниже

    flare_opacity = 0.340, 0.260, 0.500, 0.420, 0.260, 0.260 ; непрозрачность
    каждого отражения, в порядке от дальнего к ближнему.

    flare_position = 1.300, 1.000, 0.500, -0.300, -0.600, -1.000 ; позиция каждого
    отражения на оси, порядок соотв. верхнему.

    flare_radius = 0.080, 0.120, 0.040, 0.080, 0.120, 0.300 ; радиус каждого
    отражения, порядок соотв. верхнему.

    flare_textures = fxfx_flare1.tga, fxfx_flare2.tga,
    fxfx_flare2.tga, fxfx_flare2.tga, fxfx_flare3.tga,
    fxfx_flare1.tga

    ; имена текстур, использованных на каждое отражение, порядок аналогичен.
    можно заметить, что прописан формат *.tga, в действительности используются,
    как и везде, текстуры *.dds, а вообще - поддержка формата *.tga под вопросом.

    flare_shader = effectsflare ; шейдер.

    flares = on ; параметр включает или выключает блики, например, для луны -
    они не уместны.

    gradient = on ; параметр, включающий/выключающий ореол вокруг светила,
    дающий эффект ослепления.

    gradient_opacity = 1.0 ; непрозрачность ореола.

    gradient_radius = 0.7 ; радиус ореола.

    gradient_texture = fxfx_gradient.tga ;имя текстуры ореола.

    gradient_shader = effectsflare ; аналогично [flare_shader].

    source = on ;параметр, включающий/выключающий отображение источника, то есть
    самого солнца или луны.

    source_radius = 0.03 ; радиус источника.

    source_texture = fxfx_sun_rise.tga ;имя используемой для источника текстуры.

    source_shader = effectssun ; аналогично [flare_shader].

    source_ignore_color = false ; игнорирование цвета источника.

    Параметры фонарика

    Файл находится по следующему пути:
    config\models\objects\light_night.ltx
    [torch_definition]

    range = 30 ; дистанция в метрах.

    range_r2 = 30 ; дистанция в метрах (для динамического освещения).

    color = 0.22,0.22,0.22,0.2 ; цвет, из 4 компонентов <r,g,b,a> значением от 0 до 3.

    color_r2 = 1.1,1.1,1.1,0.0 ; цвет, из 4 компонентов <r,g,b,a> значением от 0 до 3
    (для динамического освещения).

    omni_range = 3 ; дистанция освещения от фонариков неписей в метрах.

    omni_range_r2 = 3 ; дистанция освещения от фонариков неписей в метрах (для динамического
    освещения).

    omni_color = 1.0,1.0,1.0,0.1 ; цвет фонариков неписей, из 4 компонентов <r,g,b,a>
    значением от 0 до 3.

    omni_color_r2 = 1.0,1.0,1.0,0.1 ; цвет фонариков неписей, из 4 компонентов <r,g,b,a>
    значением от 0 до 3 (для динамического освещения).

    color_animator = empty ; цвет аниматора (empty - аниматор не используется).

    spot_texture = internalinternal_light_torch_r2 ; текстура яркой точки (для динамического
    освещения).

    spot_angle = 45 ; угол освещения в градусах.

    glow_texture = glowglow_torch_r2 ; текстура свечения фонарика, когда он направлен в глаза
    (обязательный параметр).

    glow_radius = 0.3 ; радиус свечения в метрах.

    guide_bone = lights_bone ; кость, к направлению которой привязывается фонарик (изменять
    строго не рекомендуется).

    Авторы

    Статья создана по материалам, предоставленным:
    Argus
    Saharov
    sergy172
    Xarvius
    NightVz
    GoReLaZ
     
    Кол-во символов:
    GoReLaZДата: Пятница, 11.11.2011, 23:55 | Сообщение # 6
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    Подготовка.

    Устанавливаем active perl.

    Заходим в папку с программой ggEditor_01.Создаем там папки Cs или Cop(Смотря на какую игру делаете) и папку Soc.В папке Soc создаем папку gamedata и кидаем в нее файл game.graph(Важно чтобы game.graph лежал там, иначе программа не прочитает.) из мода, или от ТЧ.В папке gamedata создаем папку levels и кидаем туда папку с уровнем, который мы хотим портировать. Далее возвращаемся в папку Soc и туда кидаем папку с ACDC для ТЧ, туда же кладём all.spawn.Запускаем соответствующий батник для распаковки all.spawn`а.

    Далее в папку ggEditor_01\Cs или Cop, кидаем папку с соответствующим ACDC, опять-же кладем туда all.spawn, распаковываем.

    В итоге у нас должно получиться 2 распакованных all.spawn`а, game.graph от ТЧ и папка с переносимым уровнем.

    С приготовлениями всё.
    Основная работа.

    Запускаем программу ggEditor.Видим там два окошка. В левом открываем game.graph от ТЧ, а в правом — от ЗП или ЧН(В ЗП и ЧН граф вшит в all.spawn, ищите его там.)(Нужно выбрать тип файлов для ЧН — graph.bin, а для ЗП — все файлы и открыть в папке с ACDC файл section4.bin). В окошках мы видим список уровней. В левом окошке находим нужный нам уровень и нажимаем на соответствующую стрелку для переноса уровня в нужный нам граф. Нажимаем в правом окошке «сохранить».После того, как граф сохранился, можно закрыть программу, она нам больше не понадобится. Потом этого шагаем в папку с ACDC для ЧН\ЗП и удаляем старые файлы section4.bin или graph.bin.Затем переименовываем файлы graph.bin.new или section4.bin.new в graph.bin и соответственно section4.bin.

    Далее идем в папку с ACDC от ТЧ, находим там файл alife_наша_локация и копируем его. Затем шуруем в папку с ACDC от ЧН\ЗП, вставляем скопированный нами файл. Открываем этот файл, сносим все, оставляем только одну секцию спавна(Лучше всего если это будет какой-нибудь объект), присваиваем секции номер не меньше 20000, сворачиваем на время этот файл. Далее нужно подогнать вертексы. Для этого запускаем батник ggtool, ждем некоторое время, после чего появляются имена локаций, а рядом с ними числа. Смотрим это число рядом с нашей локацией(в ЧН это скорее всего будет 1620, а в ЗП 934).Далее разворачиваем alife_ файл с нашей локацией, ищем там строку «game_vertex_id» и пишем там число которое появилось рядом с нашей локацией при запуске батника ggtool.Затем обращаем свой взор на строку «level_vertex_id».К исходному значению строки прибавляем число, которое мы записали в строку «game_vertex_id», полученное число записываем. Далее, в добавляемых потом секциях спавна нужно писать эти числа. Мы подогнали вертексы.

    Затем открываем файл all.ltx.Вписываем туда свой alife_ файл локации, way_ файлы не трогаем. Меняем на соответствующее число локации строку level_count.

    После этого открываем файл alife_zaton(для ЗП) или alife_marsh(для ЧН)и ищем там гг по строке «section_name = actor».Нашли?Отлично. Теперь присваиваем этой секции спавна позицию(новую позицию прописываем также в строке "upd:position = ") и вертексы как у единственного предмета в файле alife_новая_локация. При следующей распаковке, если вы все сделали правильно, наш актор окажется в файле alife_новая_лока.

    Мы почти закончили с пробной сборкой новой локации(пока без перехода).

    Осталось только прописать наш новый уровень в файл ACDC Cop\acdccop.pl(для ЗП)либо в файле ACDC Cs\stkutils\level.pm.

    В этих файлах ищем такие строки(для ЗП):

    use constant levels_info => (
    { gvid0 => 934, },
    { gvid0 => 883, name => 'jupiter_underground' },
    { gvid0 => 857, name => 'labx8' },
    { gvid0 => 666, name => 'pripyat' },
    { gvid0 => 317, name => 'jupiter' },
    { gvid0 => 0, name => 'zaton' },

    И если у вас число когда мы запускали батник ggtool тоже 934 то прописываем так:

    use constant levels_info => (
    { gvid0 => 934, name => 'ваша_локация' },
    { gvid0 => 883, name => 'jupiter_underground' },
    { gvid0 => 857, name => 'labx8' },
    { gvid0 => 666, name => 'pripyat' },
    { gvid0 => 317, name => 'jupiter' },
    { gvid0 => 0, name => 'zaton' },

    А в файле level.pm от ACDC ЧН вы увидите такой текст:

    use constant levels_info => (
    { gvid0 => 1620, },
    { gvid0 => 1573, name => 'l12_hospital' },
    { gvid0 => 1565, name => 'l11_stancia2' },
    { gvid0 => 1524, name => 'l10_limansk' },
    { gvid0 => 1511, name => 'l09_agroprom_undeground' },
    { gvid0 => 1313, name => 'l08_military' },
    { gvid0 => 1212, name => 'l07_yantar' },
    { gvid0 => 1057, name => 'l06_agroprom' },
    { gvid0 => 961, name => 'l05_red_forest' },
    { gvid0 => 743, name => 'l04_darkvalley' },
    { gvid0 => 472, name => 'l03_escape' },
    { gvid0 => 245, name => 'l02_garbage' },
    { gvid0 => 0, name => 'l01_marsh' },

    Прописать там свой уровень нужно точно так-же как в файле от ACDC ЗП:

    use constant levels_info => (
    { gvid0 => 1620, name => 'ваша_локация' },
    { gvid0 => 1573, name => 'l12_hospital' },
    { gvid0 => 1565, name => 'l11_stancia2' },
    { gvid0 => 1524, name => 'l10_limansk' },
    { gvid0 => 1511, name => 'l09_agroprom_undeground' },
    { gvid0 => 1313, name => 'l08_military' },
    { gvid0 => 1212, name => 'l07_yantar' },
    { gvid0 => 1057, name => 'l06_agroprom' },
    { gvid0 => 961, name => 'l05_red_forest' },
    { gvid0 => 743, name => 'l04_darkvalley' },
    { gvid0 => 472, name => 'l03_escape' },
    { gvid0 => 245, name => 'l02_garbage' },
    { gvid0 => 0, name => 'l01_marsh' },

    Всё.Собираем all.spawn.
    Сборка геймдаты.

    Осталось собрать gamedat`у для игры и смотреть что получилось. Итак, приступим:

    В папке с игрой создаем папку gamedata, а в ней папки configs, levels, spawns.В папку spawns ложим получившийся при сборке all.spawn.new(или new.spawn), не забывая переименовать его в all.spawn.В папку levels ложим уровень из ggEditor_01\Soc\gamedata\levels\ваша_локация.Затем заходим в папку с уровнем, удаляем файл level.ai и переименовываем файл level.ai10 в level.ai.

    Теперь осталось только прописать уровень в конфигах.Из распакованной геймдаты игры берем файлы configs\game_graphs.ltx, game_levels.ltx, game_maps_single.ltx.

    game_graphs.ltx для ЧН должен выглядеть так:

    [location_0]
    000 = "..."
    001 = "эскейп"
    002 = "свалка"
    003 = "агропром"
    004 = "агропром-подземка"
    005 = "темная долина"
    006 = "лаборатория X-18"
    007 = "даркскейп"
    008 = "Бар"
    009 = "Росток"
    010 = "Янтарь"
    011 = "лаборатория X-16"
    012 = "Милитари"
    013 = "Мертвый город"
    014 = "Радар"
    015 = "Радар бункер"
    016 = "Припять"
    017 = "станция АЭС"
    018 = "ваша_локация"


    [location_1]
    000 = "..."
    001 = "ограниченный доступ"
    002 = "запрещенный доступ"

    [location_2]
    000 = "..."
    001 = "не для игрока"

    [location_3]
    000 = "..."
    001 = "ваша_локация"

    game_graphs для ЗП должен выглядеть так:

    [location_0]
    000 = "..."
    001 = "ваша_локация"
    002 = "sim_smart_2"
    003 = "sim_smart_3"
    004 = "sim_smart_4"
    005 = "sim_smart_5"
    006 = "sim_smart_6"
    007 = "sim_smart_7"
    008 = "sim_smart_8"
    009 = "sim_smart_base"



    [location_1]
    000 = "..."
    001 = "ограниченный доступ"
    002 = "запрещенный доступ"

    [location_2]
    000 = "..."
    001 = "не для игрока"

    [location_3]
    000 = "..."
    ... . .......................
    112 = "pri_a22_smart_terrain"
    113 = "pri_a25_smart_terrain"
    114 = "pri_a28_arch"
    115 = "pri_a28_base"
    116 = "pri_b28_evac"
    117 = "pri_a28_heli"
    118 = "pri_a28_school"
    119 = "pri_a28_shop"
    120 = "pri_b301"
    121 = "pri_b302"
    122 = "pri_b303"
    123 = "pri_b304_monsters_smart_terrain"
    124 = "pri_b305_dogs"
    125 = "pri_b306"
    126 = "pri_b307"
    127 = "pri_b35_mercs"
    128 = "pri_b35_military"
    129 = "pri_b36_smart_terrain"
    130 = "pri_sim_1"
    131 = "pri_sim_2"
    132 = "pri_sim_3"
    133 = "pri_sim_4"
    134 = "pri_sim_5"
    135 = "pri_sim_6"
    136 = "pri_sim_7"
    137 = "pri_sim_8"
    138 = "pri_sim_9"
    139 = "pri_sim_10"
    140 = "pri_sim_11"
    141 = "pri_sim_12"
    142 = "ваша_локация"


    [graph_points_draw_color_palette]
    default = 0x6000ffff
    000_000_000_000 = 0x60ff00ff

    Далее лезем в game_levels.ltx. Там в самом начале, где список уровней, вписываем "level183"(число не менее 183.) Листаем файл до самого конца и в конце пишем следующее:

    [level183]
    name = ваша_локация
    caption = "ваша_локация"
    offset = 700.0, 1000.0, -840.0
    weathers = [default]
    id = 183

    Затем открываем файл game_maps_single.ltx и прописываем свой уровень в секции "[level_maps_single]", а затем создаем примерно такую секцию для нашего уровня:

    [ваша_локация]
    global_rect = 307.0, 90.0, 717.0, 500.000000
    weathers = dynamic_default

    Всё.Запускайте игру и пробуйте, что получилось.

    Соединение с остальными уровнями.

    Предлагаю вам не терять зря времени просто бегая по подключенной локации, а замерить координаты для создания перехода.Координаты будем снимать на 2-х локациях:на подключенной и на той на которую вы хотите сделать переход соответственно.На каждой локации нам нужно снять по две координаты(координата самого перехода и координата места в которое будет бросать при переходе с второй локации, вторую координату делаем на пару метров дальше, потому как если сделать близко, то сразу же будет кидать обратно, на локацию с которой переходим.).Как снять координаты, я думаю все знают, поэтому объяснять здесь не буду.

    Мы отмерили все необходимые нам координаты.

    Затем распаковываем сделанный нами ранее all.spawn.Теперь в нужных нам локациях, в alife_ файлах добавляем следующую секцию спавна:

    [1]
    ; cse_abstract properties
    section_name = level_changer
    name = escgar_level_changer - уникальное имя
    position = 28.060224533081,16.556184768677,685.80151367188 - координаты перехода
    direction = 0,0,0
    cse_abstract__unk1_h16 = 0x1
    ; cse_alife_object properties
    game_vertex_id = 1142 - геймвертексы
    distance = 0
    level_vertex_id = 308110 - геймвертексы
    object_flags = 0xffffff3e
    ; cse_shape properties
    shapes = shape0
    shape0:type = box
    shape0:axis_x = 1.25219917297363,0,0
    shape0:axis_y = 0,3.09340000152588,0
    shape0:axis_z = 0,0,1.25219917297363
    shape0:offset = 0,0,0
    ; cse_alife_space_restrictor properties
    restrictor_type = 3
    ; cse_alife_level_changer properties
    dest_game_vertex_id = 1187 - вертексы локи на которую ведет переход
    dest_level_vertex_id = 212769 - вертексы локи на которую ведет переход
    dest_position = 39.396331787109,0.48722490668297,-299.7674505469 - позиция куда кидает
    dest_direction = 0,0,0 - поворот гг
    dest_level_name = l02_garbage - на какую локу кидает
    dest_graph_point = start_actor_01
    silent_mode = 1
    ; se_level_changer properties

    Изменяем только те места, которые я прокомментировал, комментарии соответственно, удаляем. Всё готово.Собираем all.spawn и запихиваем в игру.

    Убедительная просьба к начинающим модмейкерам.Пожалуйста, если вы только начали заниматься модами, то я вам настоятельно не советую заниматься подключением локаций.Наберитесь опыта, подучитесь элементарному.Я вас учить этому не подписывался.

    Да и еще.Если будете переносить секции спавна, то для массовой замены гейм вертексов и левел вертексов можно использовать блокнот: открываем наш файл в блокноте=> правка=> заменить, и пишем что на что заменять.

    Автор статьи: БАТЯ-STALKER

    О способе подключения поведал: джЭдай (ака Panisher)

    Если у вас что-то не получается или появились вопросы, есть тема на форуме.

    Далее нужно подогнать вертексы. Для этого запускаем батник ggtool, ждем некоторое время, после чего появляются имена локаций, а рядом с ними числа. Смотрим это число рядом с нашей локацией(в ЧН это скорее всего будет 1620, а в ЗП 934).Далее разворачиваем alife_ файл с нашей локацией, ищем там строку «game_vertex_id» и пишем там число которое появилось рядом с нашей локацией при запуске батника ggtool.Затем обращаем свой взор на строку «level_vertex_id».К исходному значению строки прибавляем число, которое мы записали в строку «game_vertex_id», полученное число записываем. Далее, в добавляемых потом секциях спавна нужно писать эти числа. Мы подогнали вертексы.
     
    Кол-во символов:
    GoReLaZДата: Воскресенье, 13.11.2011, 13:56 | Сообщение # 7
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    прога для создания однотипных квестов очень проста в управлении и с примерами
     
    Кол-во символов:
    AveryДата: Воскресенье, 13.11.2011, 16:14 | Сообщение # 8
    Ст. Лейтенант
    Группа: Долг
    Сообщений: 149
    Награды: 21
    Репутация: 10
    Статус: Offline
    у меня крыша поехала

    "Зона сама рассудит, кто отмычка, кто шакал, а кто легенда зоны." - Дмитрий Силов "Закон Снайпера"
    Мои новые рассказы, читать всем! Просьба оставлять комментарии!
    Часть 1
    Часть 2
     
    Кол-во символов:
    GoReLaZДата: Воскресенье, 13.11.2011, 22:04 | Сообщение # 9
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    ну кому что)))
     
    Кол-во символов:
    Андрюха-ПулемётчикДата: Воскресенье, 13.11.2011, 22:50 | Сообщение # 10
    Пулемётчик
    Группа: Долг
    Сообщений: 524
    Награды: 18
    Репутация: 30
    Статус: Offline
    И не лень столько писать?А бы запарился и бросил.
    А вообще вопрос: я с модами вообще не дружу( вернее с модостроением ), поетому спрашиваю : как создавать файлы форматов: spawn, xml ,ltx? Как ?


    [img]http://nick-name.ru/forum....mg]
     
    Кол-во символов:
    GoReLaZДата: Воскресенье, 13.11.2011, 23:11 | Сообщение # 11
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    Андрюха-Пулемётчик, смотри моно поискать проги для создания таких файлов а мона создать тхт но само слово тхт в названии неписать а втавить spawn, xml ,ltx и прочее главное не как создать а как открыть и запустить чтоб работало
     
    Кол-во символов:
    GoReLaZДата: Воскресенье, 13.11.2011, 23:13 | Сообщение # 12
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    но для того штоботкрыть и работало нуны проги
     
    Кол-во символов:
    GoReLaZДата: Воскресенье, 13.11.2011, 23:18 | Сообщение # 13
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    и я не всё писал сам некоторые статьи брал с других сайтов некоторые сам
     
    Кол-во символов:
    GoReLaZДата: Воскресенье, 13.11.2011, 23:20 | Сообщение # 14
    Лейтенант
    Группа: Долг
    Сообщений: 52
    Награды: 3
    Репутация: 3
    Статус: Offline
    Используя прогу acdc от bardak'a декомпилим all.spawn
     
    Кол-во символов:
    Макс_ЛисДата: Понедельник, 14.11.2011, 17:38 | Сообщение # 15
    Бродяга
    Группа: Одиночки
    Сообщений: 1116
    Награды: 159
    Репутация: 131
    Статус: Offline
    Кто им один хочет заниматься ?!
    Бред блин. angry







    Люблю три вещи,запах ели,осень и её....Зону...
     
    Кол-во символов:
    • Страница 1 из 2
    • 1
    • 2
    • »
    Поиск:


     
    Наш опрос
    А вы играете ещё в S.T.A.L.K.E.R.?
    Всего ответов: 787
     
    Поиск
     
    Обновления форума
  • Дневник Меченого (18)
  • Модостроение (5)
  • Stalker CS 'Clear shot - realistic' 13 от Ghost team (2)
  • Стрелки все сюда! (23)
  • S.T.A.L.K.E.R.: SHADOWS OF FUKUSIMA (14)
  •  
    Обновления файлов
    [28.03.2018][Моды]
    S.T.A.L.K.E.R.: Зов Припяти - Выживший. Побег из Зоны (0)
    [24.03.2018][Моды]
    S.T.A.L.K.E.R.: Зов Припяти - Время Альянса 3. Связь времён (2)
    [17.03.2018][Моды]
    S.T.A.L.K.E.R.: Тени Чернобыля - Золотой Шар. Завершение (0)
    [10.12.2017][Моды]
    S.T.A.L.K.E.R.: Lost World Troops of Doom (5)
    [02.07.2017][Моды]
    S.T.A.L.K.E.R.: Тени Чернобыля - Народная Солянка 2016 (2)
     
    Топ пользователей
    Таченко
    Постов: 2566
    Репутация: 174
    Файлов: 7
    Кальтер
    Постов: 1233
    Репутация: 77
    Файлов: 0
    Макс_Лис
    Постов: 1116
    Репутация: 131
    Файлов: 0
    Снайпер
    Постов: 1012
    Репутация: 91
    Файлов: 7
    Химик
    Постов: 746
    Репутация: 128
    Файлов: 0
    Лабус
    Постов: 665
    Репутация: 25
    Файлов: 2
     
    Статистика
     
    Партнеры
    Мир Геймеров GoGetSSL Site Seal
    Используются технологии uCoz