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

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


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

 

 

А вот с новым патроном, правда, не у меня самого, а у другогго мододела, был вылет. И пока он патрон в _г.скрипт не прописал, вылет не исчез. Возможно, это связано с перепаковщиком патронов (dunin_ammo.script).

Я на что-то такое напарывался сто лет назад. Имеет место быть. По-моему, если не ошибаюсь, проблемы были с боеприпасами на которых строился балласт в контейнерах артефактов.

 

@Vadyanchikus, ну так тут давно перестали обсуждать только оригинал, почему-бы и нет?;)

Ссылка на комментарий

Хочу локацию выдрать из одного мода, но проблемка возникла. Не умею я граф распаковывать/запаковывать, на сталкерине нашел какой-то ggtool, но не допёр, как им пользоваться, может, поможет кто?

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий

@BoBaH_671http://rghost.ru/8s2BVq2xK- прога GGRC. Распаковка и слияние графов. Батник для распаковки внутри. Просто кидай свой game.graph в папку с утилитой и жми батник. Не забудь скачать свежий Perl.

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

============================

Вопрос по оллспавну.

Добавил 10 секций новых.  Но есть засада небольшая.

У меня файл с последним № секции это - alife_limansk.ltx Туда и добавил десяток своих новых секций в самый конец файла. Номера секций выставил от последнего бОльшего номера.

Но в этих новых секция изменения на ЧАЭС. Я читал что компилятор сам как надо соберёт по локациям мою добавку и согласно lv добавить мои секции именно в ЧАЭС.

Но существует ещё файл с расширением *локация.section*

 

1. Имеет ли принципиальное значение порядок следования имён секций в этом файле ?

Т.е. если например в файле "alife_loka.ltx" первая секция идёт с именем name=12345restriktor, то я и в файле "loka.section" должен первым указать именно это имя.

 

2. Если я внёс 10 новых секций в файл alife_limansk.ltx, то мне надо их описание уже вносить в chaes.section или всё таки в limansk.section ?

 

Запутался чо то мну немного.

Изменено пользователем BFG
  • Спасибо 1

"Кругом зомби.....у меня кончаются патроны...."

Ссылка на комментарий

Всем привет, нужна помощь !

Когда игрок смотрит на предмет появляется надписи типа:" открыть ящик", "поднять предмет" и т.п., как скриптами определить этот  момент, когда игрок смотрит на какой-то предмет и определить что это(мне нужен объект ящика когда игрок смотрит на него)

Ссылка на комментарий

Если я внёс 10 новых секций в файл alife_limansk.ltx, то мне надо их описание уже вносить в chaes.section или всё таки в limansk.section ?

В хххх.section ничего вносить не нужно.

(мне нужен объект ящика когда игрок смотрит на него

Ищи его в распакованном all.spawn. В помощь: найти и скачать Mobile Manager v1.1.004.04a. Изменено пользователем alen_fantom
  • Спасибо 1
  • Не нравится 1
Ссылка на комментарий
Ищи его в распакованном all.spawn. В помощь: найти и скачать Mobile Manager v1.1.004.04a.

И что толку мне распаковывать спавн - это мне не нужно !

Мне нужно скриптами как-то (я не знаю как ! калбека такого нет, но где-то все равно это должно быть, а все скрипты мне не осилить ! я не знаю как это найти) понять когда игроку рисуется на экране надпись о том что он смотрит на какой либо юзебельный объект(оружие. труп, ящик ...) вот мне нужно в этот момент проверять СКРИПТАМИ(своими) что за объект перед ним, если это ящик то я хочу сделать кнопку что-бы в него положить все из инвентаря ГГ

Изменено пользователем antihumanist
Ссылка на комментарий

@antihumanist, как вариант, можно сканировать объекты в радиусе юзабельности от актора выбрать объекты подходящего класса, выяснять направление на объект, сравнить с направлением камеры актора, И если все проверки прошли то вот оно искомое событие.

Костыль конечно, но работать будет.

А по хорошему вот на это например событие можно было бы когда-то в далеком и светлом будущем добавить колбек в движке. Но пока его просто нету.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

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

Дело в том что есть игровое меню описанное в файлах "%gamefolder%\gamedata\config\ui\carbody_new_16.xml" и "%gamefolder%\gamedata\config\ui\carbody_new.xml"

 

Но при попытке добавить туда свою кнопку ничего не происходит, она не отрисовывается :-( Потому-что ее нужно регистрировать, а походу это происходит в движке игры :-(

А  добавить в уже созданный объект этого окна регистрацию новой кнопки ведь не получится, да и кроме того ей понадобится тогда функция обработчик.

Так-же есть калбек на момент когда актор забирает что либо из ящика, но нет калбека на момент когда он туда что либо кладет :-(

 

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

Ссылка на комментарий

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

Выстрел подобным же методом ловят, и ничего.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

@antihumanist, используй xray extensions, если нет возможности самому в движке добавить, что тебе нужно. Там есть методы:

db.actor:get_target_obj()  - возвращает объект, на который смотрит ГГ

level.get_target_dist() - расстояние до него

Ссылка на комментарий

понять когда игроку рисуется на экране надпись о том что он смотрит на какой либо юзебельный объект

 

Вот тебе ButcherMod_SoC, в нем есть практически все, что тебе надобно. Сделай по аналогии и будет тебе счастье...

Ссылка на комментарий

Прописал в логике непися такую штуку:

on_actor_dist_ge_nvis = 200| {!pda_ruksak} %=kill%

Если ГГ отойдет на 200 метров от непися и выполнено условие pda_in_ruksak, то непись умирает. (Должен умирать, читаем дальше.)

 

xr_conditions.script, функция:

function pda_ruksak()
return vovan.box_is_full("vovan_rukzak",leha_gps)
end
function box_is_full(box_section,items)
    local box = object_by_section_offline(box_section)
    if not box then
        return false
    end
    local item
    local result = true
    for id=1,65534 do
        item = alife():object(id)
        if item and item.parent_id == box.id then
            for i=1,#items do
                if item:section_name() == items[i].section then
                items[i].have = items[i].have+1
                                break
                end
            end
        end
    end
    for i=1,#items do
        if items[i].have < items[i].need then
            result = false
        end
        items[i].have = 0
    end
    return result
end
function object_by_section_offline(section)
local obj
for i=1,65534 do
obj = alife():object(i)
if obj and obj:section_name() == section then
return obj
end
end
return nil
end
function spawn_inv_box_gps()
alife():create("vovan_rukzak",vector():set(-175.233718, -1.182823, 179.458587),47716,343)
end
local leha_gps = {
{section = "leha_gps_band", need = 1, have = 0}
}

 

 

Если в рюкзаке vovan_rukzak лежит один итем с секцией leha_gps_band, то, по идее, условие pda_ruksak выполнено и непись должен умереть, но не умирает. Что я не так делаю? Если вставить такой прекондишен в диалог, то все работает, он появляется.
Изменено пользователем BoBaH_671

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий

 

 

Вот тебе ButcherMod_SoC, в нем есть практически все, что тебе надобно. Сделай по аналогии и будет тебе счастье...

там вообще не нашел расчета направления взгляда и т.п. насколько понял там по хиту определяется и расчет этот не требуется

Ссылка на комментарий

@BoBaH_671, может на 200 метрах нпс в оффлайн уходит и потому его логика уже не просчитывается?

В диалоге-то он заведомо в онлайне.

  • Спасибо 1
Ссылка на комментарий

 

 

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

Похоже на то. Вот строка из alife.ltx:

switch_distance = 150


 

 

там вообще не нашел расчета направления взгляда и т.п.

А на кой тебе вообще направление взгляда ? У тебя задача, как я понял из твоих пояснений:

 

 

если это ящик то я хочу сделать кнопку что-бы в него положить все из инвентаря ГГ

Ящик в который можно что-то положить - это инвентарный ящик. Для него имеется стандартный UI-интерфейс, чем он тебе не гож ? Или ты хочешь что-то ложить в НЕ инвентарные ящики ? Если да, то вобщем это можно скостылить, но как тогда из НЕ инвентарных ящиков брать что-то, туда положеное ? Ведь нужен UI-интерфейс, а он будет только у инвентарного ящика.

Ссылка на комментарий

 

 

Но и ходить(бегать) медленно тоже не в кайф.

Ну скажем так, это меня не пугает, иначе не шел бы на это, да и потом, уже после первого ответа я подогнал скорость ГГ под рядовых сталкеров методом проб и ошибок ;)


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

Дело в том, что я не пишу мод и даже не программист и то что ты расписал, для меня китайская грамота, в модостроении я разбираюсь... хм... как собака и пловец в воде, так вот я та собака =).

 

 

Насколько я понимаю - тебе надоело натыкаться на кого-нить во время сопровождения и т.д.

Товарищ попал прямо в точку, я просто хотел подогнать игру под себя ;)

Ссылка на комментарий

Подскажите пожалуйста такую вещь :

- есть рестриктор, заходя в который (наш ГГ ) на экран отправляется СМС, а потом через некоторое время ещё одно СМС.

Вот логика:

[logic]
active = sr_idle
[sr_idle]
on_actor_inside = {+ataka_start} sr_idle@time %=arhara_dialog.ataka_sms%
[sr_idle@time]
on_timer = 6000 | sr_idle@nil %+ataka2_start =arhara_dialog.ataka2_sms%
[sr_idle@nil]
END

На Вики читал статью, но ничего не понял, понял только что куда то надо поставить nil

Правильно ли он здесь поставлен ? У меня почему то СМС выдаются 2 раза. Как сделать так, чтобы срабатывал он только один раз ?

Спасибо.

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

"Кругом зомби.....у меня кончаются патроны...."

Ссылка на комментарий

@BFG, думаю, имелось ввиду просто nil. Вот так:

on_timer = 6000 | nil %+ataka2_start =arhara_dialog.ataka2_sms%
Типа специальный идентификатор, после которого отключается обработка логики. Изменено пользователем abramcumner
  • Спасибо 1
Ссылка на комментарий

@abramcumner, Тогда ОБА смс не будет выдаваться повторно ? 

И забыл 2 вопрос :

- если я поменяю как у тебя на примере, запакую оллспавн, то нужна ли будет НИ ? Или достаточно будет переиграть до получения поршня ataka_start ?

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

"Кругом зомби.....у меня кончаются патроны...."

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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