Перейти к контенту

[SoC] Ковыряемся в файлах


Halford

Рекомендуемые сообщения

SoC v 1.0005

В секции детектора 'detector_advances' есть такой параметр:

night_vision_particle = damage_fx\heli_burn
Он имеет какое-то значение для детектора ?

 

Marafon6540

Проблема похоже в том, что окно класса CUIStatic по умолчанию не умеет отображать многострочный текст. И похоже методов класса, устанавливающих такое свойство нет.

Решить проблему можно прописав Ваше окно в xml-файле, к примеру так:

<st_wopisTXT x="600" y="140" width="320" height="200">
    <text align="c" complex_mode="1" x="1" y="1" a="250"></text> 
</st_wopisTXT>

здесь параметр complex_mode="1" как раз и обеспечивает многострочное отображение текста.

Затем создать окно, использовав этот xml-файл:

local xml = CScriptXmlInit()
xml:ParseFile("имя_файла.xml")-- файл-описатель элементов --
wopisTXT = xml:InitStatic("st_wopisTXT", self)

ну и далее, используйте wopisTXT для всех остальных манипуляций с окном.

 

Поделиться этим сообщением


Ссылка на сообщение

ТЧ v 1.0005

Вопрос по детекторам, артефактам и аномалиям:

1). Что и где надо изменить\убрать\добавить, что-бы убрать для всех артефактов эффекты свечения, подпрыгивания и др., ну т.е. чтоб они молча и тихо лежали на своих местах.

 

2). В ltx-файлах для аномалий указано много параметров, которые отвечают, судя по комментариям, за спаун артов при срабатывании аномалии. Эти параметры рабочие ? Просто, за все разы прохождения чистого ТЧ, ни разу не заметил случая, когда при срабатывании аномалии она бы рождала арт.

Там-же присутствуют параметры, опять-же судя по комментам, отвечающие за рождение артов в офф-лайне. Вопрос тот-же - они рабочие ?

 

3). По распознаванию зон детекторами:

у детектора 'detector_simple' для аномалии 'zone_radioactive' указано аж 8, как я понял из названия параметров (это начиная с "zone_sound_3_" и заканчивая "zone_sound_3_8"), звуковых эффектов. Чо они означают ? Предполагаю, что изменение звука при изменении расстояния до аномалии ?

Если я правильно предполагаю, то какое максимальное кол-во этих параметров, и как вычисляется сетка расстояний ?

Изменено пользователем AndreySol

Поделиться этим сообщением


Ссылка на сообщение

Капрал Хикс

Понял, спасибо.

Еще немного про арты. В базовой секции 'af_base' эти параметры отсутствуют, но если я их уберу из наследованных секций и вставлю в базовую, будут ли все арты наследовать эти параметры ?

 

А по остальным вопросам ?

Изменено пользователем AndreySol

Поделиться этим сообщением


Ссылка на сообщение

SoC v 1.0005

Проблема: есть НПС, заспауненный скриптово. У него имеется квест, с квестом все вроде нормально - говорю с неписем, получаю квест, нахожу квестовый предмет, приношу, отдаю - квест выполнен. Все гуд, кроме одного - при взятии квеста, на карте появляется отметка, но она указывает не на НПСа, а в другое место на локации (место зависит от "green_location" или "blue_location"). Уже примерно понимаю, что проблема похоже с неверным story_id, который при скриптовом спавне указать в create не возможно. Но пока задал вопрос здесь - вдруг что-то упустил, и это можно поправить в конфигурационных файлах ? Если нет, пните отсюда, пойду в раздел "Скриптование".

 

И еще - что означает "green_location" и "blue_location" ?

 

 

Изменено пользователем AndreySol

Поделиться этим сообщением


Ссылка на сообщение

ColR_iT

для метки, а именно функции map_add_object_spot_ser, которая ставит метку на серверный объект необходим не сюжетный идентификатор (story_id), а его id.

Извините, но Вы похоже сам вопрос не прочитали - я не спрашивал о том, какой ф-цией поставить метку на объект.

Вот, к примеру, выдержка из tasks_escape.xml

<objective>
    <text>tutorial_help_wounded_3</text>
    <map_location_type hint="escape_trader">blue_location</map_location_type>
    <object_story_id>Escape_Trader</object_story_id>
    <infoportion_complete>esc_serious_talk</infoportion_complete>
</objective>

Тэг <object_story_id> я иначе как "story_id объекта" перевести не могу. 'Escape_Trader' указанный в этом тэге зарегистрирован в game_story_ids.ltx:

[story_ids]
  ......
  003    = "Escape_Trader"

Значит, все-таки, story_id используется менеджером заданий для установки метки на объекты квестов ?

 

Artos

Проверяй свой квест и смотри на что же там ставится метка. Вероятнее всего ставится на квестовый предмет или место (рестриктор) где выполняется квест. Вот от этого и "пляши" ...

Вот код добавляемого мной квеста:

<game_task id="escape_search_tools_task">
    <title>Найти набор инструментов</title>
    <objective>
        <icon>ui_iconsTotal_find_item</icon>
        <object_story_id>Escape_Technic</object_story_id>
        <article>escape_story_search_tools</article>
        <infoportion_complete>escape_player_search_tools_complete</infoportion_complete>
    </objective>
    <objective>
        <text>Найти набор инструментов для техника</text>
        <object_story_id>Escape_Technic</object_story_id>
        <infoportion_set_complete>escape_player_have_tools</infoportion_set_complete>
    </objective>
    <objective>
        <text>Отнести инструменты технику</text><!--green_location-->
        <map_location_type hint="Принести инструменты технику">blue_location</map_location_type>
        <object_story_id>Escape_Technic</object_story_id>
        <infoportion_complete>escape_player_search_tools_complete</infoportion_complete>
    </objective>
</game_task>

 

'Escape_Technic' зарегистрирован в game_story_ids.ltx: 093 = "Escape_Technic". Сам НПС спаунится в Деревне новичков, квестовый предмет - на АТП, а метка, после активации квеста, появляется в лощинке с аномалиями за деревней, там где плоть разрывает и сообщение от Сидора об использовании болтов.

Очень похоже, что менеджер заданий просто не может правильно связать story_id, зарегистрированный в game_story_ids.ltx, с конкретным НПСом. Если мое предположение верно, то подскажите - это можно исправить в конфигурационных файлах, или же надо при скриптовом спауне НПСа устанавливать ему через нет-пакет требуемый story_id ?

Поделиться этим сообщением


Ссылка на сообщение

ТЧ v 1.0005

С логикой НПСов пытаюсь разбираться, что оно такое и с чем ее кушают. Есть НПС, спауню скриптово у входа в бункер Сидоровича. Прописываю ему:

[smart_terrains]
none = true;-- Чтоб не захватывался гулагами --

[logic]
active = kamp
;active = remark
danger = danger_ignore

[danger_ignore]
ignore_distance = 50

[kamp]
center_point = camp_point
path_walk = camp_point_task
def_state_moving = sprint;run

[remark]
anim = wait
no_move = true

 

Судя по тому, что прочитал о схеме "kamp" на Stalkerin, непись должен согласно указанному в 'def_state_moving' дойти до точки 'center_point' и затем там устроится и сидеть обычным бездельником. Вот только идет он куда попало и судя по всему под прописанную ему логику не попадает. Если сменить активную схему на 'remark' - то все вроде в порядке - НПС стоит как вкопаный, с ним можно поговорить\поторговать.

Что-то я не так делаю, подскажите, что ?

Поделиться этим сообщением


Ссылка на сообщение

Artos

почитай про логику повнимательнее и не стОит сводить все к упрощениям

Я читал на STALKER Inside Wiki, но там все для смарт-террейнов\гулагов, а вот для "одиночек" ничего нет, похоже.

НПСа спауню в непосредственной близости от актора(ГГ), поэтому он в он-лайн.

Естественно, координаты (вертексы) center_point должны соответствовать той локации, где должны быть посиделки.

Т.к. ты не дал информации по секции твоего center_point - гадай сам, не может узнать где эта точка, не может до нее дойти, т.к. на др.локации иль еще чего ...

Я пробовал все "точки", которые есть в описании гулагов для локации Кордон(Escape), результат тот-же - НПС не выполняет логику. При этом, если я указываю для center_point какое-то произвольное название точки, то получаю вылет. Значит указанные мною точки валидны, т.е. движок видит(понимает) ее координаты ? Точки которые я пробовал указывать, брал из gulag_escape.ltx, к примеру:

[kamp1@esc_lager]
center_point  = [b]camp_center[/b]
path_walk = camp_center_task
soundgroup = esc_lager
meet = meet@lager

По идее, НПС должен идти к этой точке, неважно где именно она расположена ?

Поделиться этим сообщением


Ссылка на сообщение

ColR_iT

причём эту точку необходимо самому поставить на локации, прописав её в файле путей, распакованного all.spawn, а не брать из какого-то файла

camp_center - это, если я правильно понял, одна из точек, прописанная в файле путей all.spawn для локации Кордон. Неужели я не могу использовать ее для логики своего НПСа ?

 

Artos

- функцию подключения логики (если логика не подключается в секции спавна).

Не очень понял, что это значит, остальное ниже. Ранг НПСа - 300.

Это из "spawn_sections.ltx"

[escape_technic_spawn]:stalker_trader
character_profile    = escape_technic
spec_rank        = novice
community        = trader
custom_data    = scripts\esc_technic.ltx

содержимое "esc_technic.ltx"

[logic]
active = kamp
;active = remark
trade = misc\trade_technic.ltx

[kamp]
center_point = camp_center
path_walk = camp_center_task

[remark]
anim = wait
no_move = true

[smart_terrains]
none = true

ф-ция спауна

function on_spawn_technic() 
    local obj = nil

    local a = vector()
    a.x = -246.51 
    a.y = -19.52 
    a.z = -144.60 
    local lV = 13193
    local gV = 8

    obj = alife():create("escape_technic_spawn", a, lV, gV)
    if obj then
    ----- сообщаем о создании НПС -----
        local text = "ф-ция спауна выполнена - создан НПС с id: "..tostring(obj.id)
        news_manager.send_tip(db.actor, text, nil, nil, 10000)
    end
end

 

Изменено пользователем AndreySol

Поделиться этим сообщением


Ссылка на сообщение

Несколько вопросов по логике и all.spawn:

1. В way-файлах разобранного all.spawn параметр "name" для точек пути - что он означает ? И почему у многих точек одинаковые "name", к примеру wp00, name00 и т.п.

 

Два следующих вопроса для варианта, когда НПСу логика прописана в кастом-дате и он не под гулагом.

 

2. У НПСа прописана логика, согласно которой он должен от центрального костра в Деревне новичков на Кордоне пойти в одну из комнат в доме, возле которого стоит Волк. Проблема в том, что НПС не может нормально зайти в эту комнату - в верандочку дома он заходит, а затем упирается в стенку в направлении этой комнаты и останавливается. Пробовал разбить путь на части - точки пути ставил перед входом в дом, на верандочке, в коридоре и последняя в комнате, но переход из верандочки в коридор для НПСа как барьер, упирается в стену и все ! В чем причина может быть ?

 

3. НПС отрабатывает схему "kamp", все вроде нормально - сидит у костра ест, пъет и т.д. Но если сделать сохранение\загрузку игры, то он, после загрузки, у костра не садится, а стоит тупо, ни на что не реагирует. В чем причина, как это можно исправить ?

 

Поделиться этим сообщением


Ссылка на сообщение

ColR_iT

2. Во всех домах в деревне, за исключение разрушенного, отсутствует АИ сетка, а как известно, НПС ходят исключительно по ней.

Как-то давненько, при прохождении игры видел как в режиме "дэнжер" один из НПСов забежал в этот-же дом в одну из комнат и сидел там, направив оружие в сторону опасности. Затем, когда опасность прошла, встал и спокойно вышел на улицу. Вот правда утверждать не берусь - было это на чистой ТЧ или на каком-то моде.

Да и на верандочке этого дома, на матрасе, спит НПС. Может не в сетке дело ?

 

Наличие АИ-сетки можно проверить\просмотреть\поправить в SDK ?

Убедительная просьба не задавать очевидных вопросов или вопросов для погадалок. --/Artos

Изменено пользователем Artos

Поделиться этим сообщением


Ссылка на сообщение

ColR_iT, Artos

Во-вторых, схема кампа, как было ранее показано, работает и при сохранениях и загрузках. Да, порою в игре встречается, что некоторые камперы тупо стоят у точки посиделок, пока не произойдет некоторое событие, после которого схема нормально активизируется ... Но эта помарка пока не решена ни в чистой игре ни в модах и причина не ясна.

Я проверял - в любом месте выполнения логики НПСом (опять-же указываю, что НПС не находится под гулагом), где я его "застал" сохранением\загрузкой он вырубается, т.е. стоит в состоянии, когда с ним невозможно взаимодействовать. Т.е. явно причина не в этой помарке, о которой Вы говорили выше, а в чем-то другом. Вот только в чем, я не знаю. Может и не в схеме кампа, как мне советовал Artos, но я не знаю в чем - потому и срашиваю. Спрашиваю не потому, что хочу получить от Вас готовое решение, как "образумить" моего НПСа, а потому-что предполагаю, что Вы, возможно, сталкивались в свое время с подобной проблемой, и можете подсказать мне ее решение.

 

Поделиться этим сообщением


Ссылка на сообщение

Что за файл m_person.ltx в gamedata\creatures ? За что он отвечает, зачем нужен ?

Поделиться этим сообщением


Ссылка на сообщение

panzyuza

И где оно, это самое бессмертие Сахарова в этом конфиге ?

 

Сообщение от модератора ColR_iT
Цитировать предыдущие посты вовсе не обязательно.
Изменено пользователем ColR_iT

Поделиться этим сообщением


Ссылка на сообщение

выдержка из alife_l01_escape.ltx разобранного all.spawn от ТЧ v 1.0005

[11]
; cse_abstract properties
section_name = breakable_object
name = meshes\brkbl#11.ogf
position = 33.298469543457, 23.0894298553467, 156.27995300293
direction = -0.0784034579992294, -0.0843100622296333, 1.57073950767517
id = 65535
version = 118
script_version = 6

; cse_alife_object properties
game_vertex_id = 0
level_vertex_id = 594270
object_flags = 0xffffffba

; cse_visual properties
visual_name = meshes\brkbl#11

; cse_alife_object_breakable properties

 

что за объект описан в этой секции ? В папке "meshes" модели brkbl#11.ogf нет.

Поделиться этим сообщением


Ссылка на сообщение

В чем может быть причина вот такого вылета при загрузке сохранения и при начале новой игры:

Expression : fatal error

Function : CInifile::r_string

File : E:\stalker\sources\trunk\xrCore\Xr_ini.cpp

Line : 352

Description : <no expression>

Arguments : Can't find variable MaxHealthValue in [m_trader]

Поделиться этим сообщением


Ссылка на сообщение

Капрал Хикс

Да не в переводе лога счастье, уважаемый. Уже разобрался, причина вылета была в синтаксической ошибке в скрипте se_stalker.script. Кто-бы знал что эти вещи так взаимосвязаны.

Сколько можно повторять: "Прежде чем задавать вопрос по ошибке - потрудитесь проверять чекерами!"

И, тебе абсолютно правильно посоветовали ЧИТАТЬ и ПОНИМАТЬ лог, т.к. он именно указывает не на синтаксическую ошибку, а на ошибку в секции спавна (что не исключает и кучи твоих ошибок в синтаксисе ...). --/Artos

 

Добавлено через 27 мин.:

Artos

Присвоить story_id при спавне скриптом можно только через нет-пакеты, .... Примеров в готовых модах предостаточно вместе с функциями работы с нет пакетами.

Да, действительно можно. Я, к примеру, попробовал это сделать в se_stalker.script в методах on_register() или on_spawn(). Все вроде получается, но с одной оговоркой - после скриптового спауна НПСа, в одном из этих методов происходит присваивание ему story_id (через модуль нет-пакетов), и результат такой - сразу после спауна, НПС не имеет этого присвоенного ему в серверной части story_id. Но если сделать сохранение\загрузку, то НПС (находящийся в он-лайн) после этого уже имеет присвоенный ему story_id.

К чему это все ? Вопрос к Вам - может Вы подскажете способ, как сделать так, что-бы сразу после скриптового спауна НПСа, он выходил в он-лайн уже с присвоенным ему story_id ?

Предполагаю, что это можно сделать в методах STATE_Write\STATE_Read, вот только как ?

 

Раз вопрос задан адресно, отвечу:

У меня нет никакого желания помогать и в очередной раз персонально разжевывать тем, кто не читает топики, шапки, ФАКи.

Если и этого (#4280) мало - то Вам противопоказано заниматься моддингом. (ИМХО) --/Artos

Изменено пользователем Artos

Поделиться этим сообщением


Ссылка на сообщение

Вопрос по спауну НПСа. ТЧ v 1.0005.

Добавленная секция в alife_l01_escape.ltx:

; cse_abstract properties
section_name = stalker_trader
name = escape_technic_name
position = -246.919998168945, -19.7299995422363, -143.419998168945
direction = 0.0445535257458687, -0.000645029998850077, 0.0144814234226942
version = 118
script_version = 6

; cse_alife_trader_abstract properties
money = 500000
trader_flags = 0
character_profile = escape_technic

; cse_alife_object properties
game_vertex_id = 5
distance = 1
level_vertex_id = 11351
object_flags = 0xffffff7b
custom_data = <<END
[spawn]
wpn_pm
wpn_bm16
ammo_9x18_fmj
ammo_12x70_buck
wpn_binoc
detector_simple
device_torch
conserva
bread

[logic]
cfg = scripts\esc_technic.ltx
END
story_id = 93

; cse_visual properties
visual_name = actors\novice\green_stalker_1

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 5
dynamic_out_restrictions = 
dynamic_in_restrictions = 

; cse_alife_monster_abstract properties

; cse_alife_human_abstract properties
equipment_preferences = 1, 1, 1, 2, 2
main_weapon_preferences = 0, 1, 0, 0
smart_terrain_id = 65535

; cse_ph_skeleton properties

; se_stalker properties
upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = -246.919998168945, -19.7299995422363, -143.419998168945
upd:o_torso = -0.000645029998850077, 0.0445535257458687, 0
upd:g_squad = 1
upd:g_group = 5

; cse_alife_human_stalker properties
upd:start_dialog =

 

содержимое esc_technic.ltx:

[smart_terrains]
none = true

[logic]
trade = misc\trade_technic.ltx
active = kamp
meet = meet
danger = danger_ignore

[danger_ignore]
ignore_distance = 5

[remark]
anim = wait
no_move = true

[kamp]
center_point = esc_lager_camp_center;
path_walk = esc_lager_camp_center_task;
soundgroup = esc_lager
on_info = {+escape_player_search_tools_complete} camper
meet = meet

[camper]
path_walk = technic_walk 
path_look = technic_look
def_state_moving = walk
combat_ignore_cond = always
meet = meet

[meet]
use = true
use_wpn = true
meet_talk_enabled = true

 

После начала новой игры, НПС спаунится в назначенной точке. Но вместо того, чтоб отработать первую назначенную ему секцию логики "kamp", тупо стоит на месте спауна. Вывести его из ступора можно, пробовал уходить подальше от него, или бросал гранату, так чтоб его не задело, но он среагировал - иногда он растормаживается и начинает идти в точку "center_point", где усаживается к костру и нормально отрабатывает секцию "kamp".

В чем причина может быть ? Пробовал разные значения object_flags (свои не выдумывал, взял те что использовали ПЫС для других НПСов), не помогает.

Изменено пользователем ColR_iT

Поделиться этим сообщением


Ссылка на сообщение

1. Пытаюсь заспавнить плафон освещения. За основу взял плафон из подвальчика в Деревне новичков на кордоне, что возле костра в центре.

Это добавил в alife_l01_escape.ltx распакованного all.spawn:

[865]

; cse_abstract properties
section_name = lights_hanging_lamp
name = light_alarm_glass_0004
position = -195.981475830078, -18.0143604278564, -134.596420288086
direction = 1.36992639454547e-011, 0, 3.14159274101257
version = 118
script_version = 6

; cse_alife_object properties
game_vertex_id = 36
level_vertex_id = 56182
object_flags = 0xffffffba

; cse_visual properties
visual_name = physics\light\new_light\light_alarm_glass

; cse_ph_skeleton properties

; cse_alife_object_hanging_lamp properties
main_color = 0xfffe8812
main_brightness = 0.699999988079071
main_range = 4
light_flags = 0x2a
lamp_fixed_bones = link
health = 100
main_virtual_size = 0.100000001490116
ambient_radius = 2
ambient_power = 0.200000002980232
main_bone = bone_lamp
main_cone_angle = 2.09439516067505
glow_radius = 0.699999988079071
ambient_bone = bone_omni

 

это код скриптового спауна:

local obj = alife():create(865)
if obj then
    level.map_add_object_spot_ser(obj.id, "alife_presentation_monstr", "плафон")
end

собрал all.spawn, начал НИ - нет плафона по указанным координатам, вызвал ф-цию - метка на глобальной карте появилась, а самого плафон опять нет.

Что я неправильно делаю ?

 

2. Попался мне пример скриптового спауна физических объектов на местности.

это прописываем в items.ltx к примеру:

[konteyner_00]:identity_immunities
$spawn = "physics\object"
visual = physics\box\konteyner_03.ogf;зеленый металлический контейнер
class  = O_PHYS_S
remove_time = 10000

далее спауним обычным способом. Вроде работает.

Вопрос у меня по параметру "remove_time" - он движком обрабатывается ? И что означает ?

Я смог перевести его как "время до удаления объекта", а у меня контейнер остается в натуре уж явно более 10000 мс. Или это не мс ?

 

3. Вопрос по добавлению объекта в игру здесь задавать ?

Изменено пользователем AndreySol

Поделиться этим сообщением


Ссылка на сообщение

Подскажите, в каких файлах находится функционал панели ввода кода для открытия дверей. Нашел только ui_numpad.script, а где все остальное - размещение панели в нужном месте, взаимодействие с актером(ГГ) ?

Поделиться этим сообщением


Ссылка на сообщение
ColR_iT А насчет непосредственно самого размещения объекта панели - по идее должно быть в all.spawn, но чет не нахожу в alife_-файлах. Что искать-то ?

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...