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

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


Halford

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

Добрый день!

 

Столкнулся с проблемой, когда гранаты невозможно взять в руки, причём, с самого старта игры. Знаю, это старый баг, но однозначного решения нигде не нашёл. Просто выкинуть гранаты, а потом подобрать - не помогает.

Пишу в эту тему, так как данный глюк вылез при сборке небольшого мода с влючённым новым худом от Руси (Радиация и Кардиограмма), разгрузкой и биорадаром. Конфиги гранат не правились. Может кто-то знает где "копать" для исправления данного бага? Что может вызывать этот глюк?

 

Сообщение от модератора n6260
Пока решения не встречал. Данный баг весьма прогрессирует даже в ЗП.

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


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

Elliond,

Позволю заметить, что элементарная невнимательность присутствует.

Лишняя буква "а":

Вот так надо:

#include "w_w2000.ltx"

И вообще это не в той теме вопрос.

 

Добавлено:

Имя файла w_walther_wa_2000.ltx --такое длинное имя (со столькими "нижними подчёркиваниями") ни один мододел и грамотный создатель оружия не мог задать (то же самое относится и к скриптам, где есть ограничение на длинну имени), поэтому причину проблемы ищи там, где ты этот ствол взял - либо сам переименовал файл. Такого .ltx не должно быть. Измени и проверь на более коротком имени.

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

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


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

Добрый день!

Вопрос простой:

При создании новых файлов, таких как: character_desc_new.xml, dialogs_new.xml или info_new_way.xml, эти файлы необходимо зарегистрировать в system.ltx в соответствующем разделе, по аналогии с существующими.

А вот надо ли регистрировать и, если надо, то где? Вот такие файлы:

tasks_new.xml --файл с заданиями, которые отображаются в ПДА.

и

storyline_new.xml --файл с описанием этих заданий.

В system.ltx - файлов, подобных этим, нет.

Возможно они не требуют регистрации?

 

 

 

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


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

and_modern,

Не совсем понятно, что требуется с детектором сделать в слоте, но вот как пример - функция - если определённый детектор в слоте, то выполняется действие (в данном случае рандомно спавнится артефакт в заданном радиусе от координат местоположения актёра, который попал в заданный спейс_рестриктор и выводится сообщение о появлении квестового артефакта):

function check_caterpillar_new()

if inventory.belt["detector_kruglov"]~=nil and inventory.belt["detector_kruglov"]>0 then

if db.actor and not db.actor:has_info("kruglov_art_spawn") then

local position = db.actor:position()

position.x = position.x + 10

local obj = alife():create("af_caterpillar_new",

position, db.actor:level_vertex_id(), db.actor:game_vertex_id())

db.actor:give_info_portion("kruglov_art_spawn")

news_manager.send_tip(db.actor, "обнаружен артефакт", nil, nil, 30000)

end

end

end

 

Детектор скриптовый. В слоте артов. Любые манипуляции с ним можно делать по условию: если детектор в слоте, то...

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

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


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

Добрый день!

В Сталкере ТЧ необходимо увеличить расстояние, на котором НПС начинают видеть монстров. По умолчанию, движущийся в определённую точку НПС начинает замечать мутантов и, соответственно, реагировать где-то за 10 метров до них. Где можно в конфигах увеличить расстояние для того, чтобы НПС начинали замечать мутантов и переходить в боевое состояние метров за 50.

В файлах типа m_stalker.ltx (папка: \gamedata\config\creatures), в которых есть такие строки, как:

 

;---VISIBILITY--------------------------------------------------------

vision_danger_section = stalker_vision_danger

vision_free_section = stalker_vision_free

eye_fov = 110;120

eye_range = 80

 

[stalker_vision_free]

min_view_distance = 0.4 ; коэффициент, который множится на eye_range, в зависимости от угла

max_view_distance = 0.8 ; коэффициент, который множится на eye_range, в зависимости от угла

visibility_threshold = 150.0 ; значение, при достижении суммой которого объект считается видимым

always_visible_distance = 0.1

time_quant = 0.005

 

[stalker_vision_danger]

min_view_distance = 0.7 ; коэффициент, который множится на eye_range, в зависимости от угла

max_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла

visibility_threshold = 120.0 ; значение, при достижении суммой которого объект считается видимым

always_visible_distance = 0.2

time_quant = 0.001

 

;---ENEMY------------------------------------------------------------

ignore_monster_threshold = 0.0 ;0.6 ;0.8

max_ignore_distance = 15.0

panic_threshold = 0.02

 

 

Возможно, что-то из этого нужно править. Кто знает, подскажите, пожалуйста.

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


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

Добрый день!

Есть среди прочих и такая вот анимация НПС: eat_vodka

Так вот, при назначении такой анимки какому-либо НПС,

очень часто оказывается, что собственно анимация отыгрывается, но бутылки в руке нет,

хотя в профиль этому НПС прописана водка, а также вписана (на всякий случай) строка:

#include "gameplay\character_food.xml", в котором вероятность появления водки увеличил до 100%.

И всё равно, в большинстве случаев, водка в руке не появляется - отыгрывается "пустая" анимация.

Тоже самое происходит и с гитарой и с гармошкой при их анимациях. В чём может быть причина?

И ещё, есть две секции водки: [vodka] и [vodka_a]. Я так понимаю, что для анимации как раз используется вторая?

Пробовал с обоими, результат прежний.

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

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


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

Gideon Vi,

Там всё очень просто: есть секции разных уровней.

В них прописаны координаты x,y и z и ещё, после запятой,

указан радиус зоны (в метрах), внутри которой не будут спавниться никакие аномалии.

Снял координату на местности, внёс в секцию нужной локации, указал радиус и всё.

 

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


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

FANAT,

Поделюсь своими скромными знаниями:

В ТТ2 трупы спавнятся "на ура" и лежат там, где им положено, до конца игры.

function spawn_trupak()

local obj = alife():create("esc_trupak",vector():set(-168.462,0.055,17.821),1737,1392)

local tbl = amk.read_stalker_params(obj)

tbl.sid = 30117

tbl.health = 0

tbl.updhealth = 0

amk.write_stalker_params(tbl, obj)

end

 

Чтобы труп не убирался уборщиком трупов, надо его прописать в исключения в определённом файле.

В ТТ2 это файл: sak_off_corpses.script - ценное наследие от мастера Сяка (NLC 5).

 

function off_corpses()

for a=1,65535,1 do

local obj = alife():object(a)

if obj then

local posobj = obj.position

local actorpos = db.actor:position()

local npc_name = obj:name()

if ((IsStalker(obj) or IsMonster(obj)) and not obj:alive() and npc_name~="bloodsucker_strong_ucen" and npc_name~="electro_chimera_ucen" and npc_name~="friend_krovosos" and npc_name~="gigant_strong_ucen" and npc_name~="super_krovosos" and npc_name~="dolg_dead1" and npc_name~="dolg_dead2" and npc_name~="dolg_dead3" and npc_name~="spy_aes_dead1" and npc_name~="spy_aes_dead2" and npc_name~="esc_stalker_corpse" and npc_name~="esc_stalker_corps1" and npc_name~="esc_stalker_corps1_0000" and npc_name~="esc_stalker_corps1_0001" and npc_name~="esc_stalker" and npc_name~="esc_trup_bratka" and npc_name~="esc_stalker_0000" and npc_name~="esc_trup_scene" and npc_name~="aes_stalker_0000" and npc_name~="aes_stalker" and npc_name~="dar_stalker0001" and npc_name~="dar_stalker" and npc_name~="gar_stalker_0000" and npc_name~="gar_stalker_0001" and npc_name~="gar_stalker_0002" and npc_name~="gar_stalker_0003" and npc_name~="gar_stalker_0004" and npc_name~="gar_stalker_0005" and npc_name~="agr_stalker_0000" and npc_name~="agr_stalker_0001" and npc_name~="agr_stalker_0002" and npc_name~="agr_stalker_0003" and npc_name~="agr_stalker_0004" and npc_name~="agr_stalker_0005" and npc_name~="val_sos_dead1" and npc_name~="val_sos_dead2" and npc_name~="val_escort_bandit1_dead" and npc_name~="val_escort_bandit2_dead" and npc_name~="val_lager_bandit16_0000" and npc_name~="bar_stalker" and npc_name~="rostok_stalker" and npc_name~="rostok_dead_stalker_01" and npc_name~="rostok_dead_stalker_03" and npc_name~="rostok_dead_stalker_02" and npc_name~="bar_ecolog_crush_dead" and npc_name~="bar_ecolog_crush_dead_0000" and npc_name~="bar_ecolog_crush_dead_0001" and npc_name~="rostok_dead_stalker_0000" and npc_name~="bar_ecolog_crush_dead_0002" and npc_name~="bar_ecolog_crush_dead_0003" and npc_name~="yan_stalker" and npc_name~="mil_stalker_0004" and npc_name~="mil_stalker_0001" and npc_name~="mil_stalker_0002" and npc_name~="mil_stalker" and npc_name~="mil_stalker_0000" and npc_name~="rad_stalker_dead" and npc_name~="rad_stalker_0005_dead" and npc_name~="rad_stalker_0006_dead_scientist" and npc_name~="rad_stalker_0007_dead_scientist" and npc_name~="rad_stalker_0008_dead_scientist" and npc_name~="kat_bandit_0006" and npc_name~="esc_trupak" and npc_name~="esc_trupak1" and npc_name~="esc_trupak2" and npc_name~="esc_kuvalda" and npc_name~="esc_minitrup1" and npc_name~="esc_minitrup2" and npc_name~="esc_minitrup3" and npc_name~="esc_minitrup4" and npc_name~="esc_minitrup5" and npc_name~="esc_minitrup6" and npc_name~="fab_trup" and npc_name~="nebo_prov") then

if posobj:distance_to(actorpos) > dist_to_corpses then

if obj.m_story_id > 30210 then

table.insert(tabl_corpses, obj)

else

table.insert(tabl_corpses_9510, obj)

end

end

end

 

Данный скриптовый файл прописывается в бинд_сталкер.скрипт

Вот сюда:

local corspoff = true

function actor_binder:update(delta)

if corspoff then

sak_off_corpses.off_corpses()

corspoff = false

end

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


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

FANAT,

Возьми файл целиком. Почисть от ненужного тебе. Вставь в свою сборку, пропиши его вызов в бинд_сталкер.скрипт и используй (хочешь, переименуй его как тебе угодно):

http://ifolder.ru/24611691

У тебя этот файл: amk_npc_profile.xml зарегистрирован в system.ltx?

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

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


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

FANAT,

Ну тут всё просто:

У тебя в профиле нового НПС, в файле: character_desc_amk.xml

прописан класс: <class>esc_otbrosi_1</class>

А в файле: amk_npc_profile.xml

ты почему то пишешь:

<character id="shapai_tryp">

<class>shpai</class>

</character>

А должно совпадать.

Исправь где-нибудь (неважно где), но чтобы совпадало.

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


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

Добрый день!

Возникла необходимость в ТЧ удалить (убрать) из ПДА разделы "Контакты" и "Ранги".

Каким образом более грамонтно это можно осуществить?

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

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


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

Добрый день.

Подскажите, кто знает, как правильно уменьшить вероятность возникновения дождя в игре и (или) в определённое время суток в частности. Интересует снижение вероятности появления дождя, именно как погодного явления, а не исключение его отображения на экране путём обнуления параметра плотности дождя: rain_density в конфигах погодных секций.

*Требуется сие для ТЧ + АМК_1.4.1.

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

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


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

Artos,

Спасибо! Всё понятно объяснено.

А если тоже самое необходимо проделать на чистом ТЧ,

в случае отключения динамической погоды в АМК.

В этом случае видимо что-то нужно менять уже в конфигурационных погодных файлах?

Если да, то каким образом это правильнее осуществить?

 

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


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

Artos, amik,

Условно понятно.

Снизить вероятность дождливой погоды:

есть доступные для обывателя варианты?

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


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

Artos,

Сложно понять даже профессионала с таким количеством орфографических ошибок.

Но тем не менее, может всё-таки возможно выдать элементарный тутор (только намёки)

для начинающих, как работать с погодой?

Наверняка есть знающие люди, не такие как "звёздный" Артос,

которые реально могут посоветовать конструктивный способ решения.

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

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


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

Добрый день.
Заспавненный через асдс объект (вертолёт) ведёт себя как объект абсолютно адекватно.
Прописанная в асдс, в логике секция:
[collide]
ignore_static
даёт объекту статичность и неприкаспемость в плане постэффектов от этого.
Если подобный объект спавнить скриптом, то возникают проблемы -
он не "садится" на местность, при контакте происходят всякие звуковые и визуальные безобразия.
[vertolet5]:identity_immunities
$spawn = "dynamic_objects\vertolet5"
visual = new_models\mi24_rja2.ogf
cform  = skeleton
class  = P_SKELET
remove_time = 9998
custom_data = scripts\collide_ignor.ltx

Секция в вынесенной логике в отдельный файл не работает:
[collide]
ignore_static
Вопрос:
Может как-то по-другому нужно лтх логику сформировать для "усадки" физобъекта на местность?
Может класс нужно изменить?

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


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

Речь идёт о любом объекте, не важно вертолёт это или просто бумажка.
Заспавнить летающий объект - проблем нет. Проблема именно в статичном объекте.

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


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

Для ещё большей конкретики:
заспавненный тот же самый предмет через асдс на тех же координатах, с прописанным:
[collide]
ignore_static

ведёт себя абсолютно адекватно.

В вынесенной в .ltx файл логике, секция:
[collide]
ignore_static

не хочет работать. Только в асдс...
 

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


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

Функция удаления не правильная.
function delete_brom()
    local sim = alife()
    local sobj
    for a = 1, 65534 do
        sobj = sim:object(a)
        if sobj and sobj:section_name() == "bar_drunk_dolg

 

" then
                sim:release(sobj,true)
                        break
        end
    end
end

Изменено пользователем antreg
  • Нравится 2

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


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

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