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

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


Halford

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

Есть человеческие описания ВСЕХ эскспортов из lua_help.script? Значение переменных,результата,эффект,как в *.h МSVC.

Прошел Солянку, иду в NLC

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


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

А нету там комментированного файла,все делается кусками в форуме.

 

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

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

 

function drop_item(npc,item)

if item~=nil then

-- npc:mark_item_dropped(item)

npc:drop_item(item)

end

end

 

меняем на

npc:drop_item_and_teleport(item,point) //бросить предмет

point = npc:position() //это координаты НПС?

vid = npc:direction() //это направление от НПС вперед?

point:x = point:x + vid::x;

point:y = point:x + vid::y;

 

как продвинуть point на 1 метр по направлению vid и проверить ,что точка не внитри стенки?

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

Прошел Солянку, иду в NLC

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


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

Я удивлаяюсь,как это АПИ не документирован.Я начал,бросил клич добровольцам.

 

>лучше после выкидывания объекта давай ему пинок - так будет проще

Спасибо,попробую! Значит любой предмет из инвентаря можно метать? Может быть проблема,у артов АФАИК нет 3-Д модели,посмотрю как он летит.

 

Еще проблема,что после drop_item() он будет справа от неписи на земле,что нам совсем не нужно.Можно присвоить после drop_item() ему координаты неписи и толкнуть в направлении ее тела. Вообще-то надо убрать его из инвентаря,создать внутри неписи и толкнуть.npc_mark_item_dropped() что делает?Он в коде везде закомментирован и заменен удалением объекта.

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

Прошел Солянку, иду в NLC

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


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

Передираю комменты из ветки в lua_help.script. Своих знаний у меня нет.Пока мало,выложу завтра.

Прошел Солянку, иду в NLC

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


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

Помогите с модом швыряния предметами.Идем в

bind_stalker.script function actor_binder:on_item_drop (obj)

добавляем снизу

thrower.throw_object(self.object,obj).

 

Пишем функцию:

 

function throw_object(npc,obj)

printf("thrower 0")

if npc == nil

then

npc = db.actor

end

if obj == nil then return end

 

local dir = npc:direction()

local pos = obj:position()

dir:mul(1300)

pos:add(dir)

printf("thrower 1 %s %s vector %d %d %d",npc:section(),obj:section(),dir.x,dir.y,dir.z)

 

до сих пор все ОК: есть объект, есть вектор в направлении от неписи.Теперь,как его бросать?

local shell = obj:get_physics_shell()

получаем nil

obj.mass - тоже 0, из предмета не получается физической модели.

 

Пробую просто переместить его:

npc:mark_item_dropped(obj)

obj:set_desired_position(pos)

Все равно не выходит.

 

Прошел Солянку, иду в NLC

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


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

Сейчас счетчик инициализируется на 30 минут, когда ГГ заходит на ЧАЭС, прерывается если он уходит с нее , в том числе в реактор, или спит, и возобновляется при повторном посещении с того же момента.Если ГГ уходит после начала выброса в Припять,то там никакого выброса нет.

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

Нужна помощь.Имеется распакованные файлы и редактор all.spawn.

Найдено:

config\scripts\aes\aes_space_timer.ltx - файл счетчика.

[logic]

active = sr_idle

 

[sr_idle]

--инициализируется когда ГГ получает инфо aes_actor_road

on_info = {+aes_actor_road} sr_timer1

--отменяется,когда strelok_pda_have (что это за переменная?)

on_info2 = {+strelok_pda_have} nil

 

[sr_timer1]

type = dec

--начальное значение 30 минут

start_value = 1800000

argb = 255,255,255,255

-- когда достигает 0 или описанного ниже , то что будет?

on_value = 0 | %+aes_activate_zone% | 180000 | %+aes_timer_180000% | 120000 | %+aes_timer_120000% | 60000 | %aes_timer_60000% | 20000 | %+aes_timer_20000 +aes_activate_zone% | 5000 | %+aes_timer_5000%

--где это искать?

string = st_time_till_surge

 

scripts\sak.script

function switch_timer_stancia() - работает с вышеописанным,больше ссылок на нее нет.

--я не нашел данного объекта в all.spawn

if (obj and obj.name and obj:name() == "aes_space_restrictor_timer") then

--активировать скрипт таймера выше

params.custom="[logic]\ncfg = scripts\\aes\\aes_space_timer.ltx"

 

Прошел Солянку, иду в NLC

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


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

Помогите найти распаковщик all.spawn для Солянки.acdc.pl пишет "unknown zone_ameba", xr делает ГПФ или плохо распаковывает.

Сообщение от модератора n6260
Спроси у Архары - тяжело додуматься?

Прошел Солянку, иду в NLC

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


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

Объясните,как работает таймер выброса на ЧАЭС.all.spawn я распаковал,но из Оригинала.

alife_l12_stancia.ltx ,есть секция:

[7256]

; cse_abstract properties

section_name = space_restrictor

name = aes_space_restrictor_timer

position = 1010.24639892578,-0.097564697265625,-201.021408081055

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 2273

distance = 0

level_vertex_id = 405033

object_flags = 0xffffff3e

custom_data = <<END

[logic]

active = sr_idle

 

[sr_idle]

on_info = {+aes_actor_road} sr_timer1

 

[sr_timer1]

type = dec

start_value = 360000

argb = 255,255,255,255

on_value = 0 | %+aes_activate_zone% | 180000 | %+aes_timer_180000% | 120000 | %+aes_timer_120000% | 60000 | %aes_timer_60000% | 20000 | %+aes_timer_20000 +aes_activate_zone% | 5000 | %+aes_timer_5000%

string = st_time_till_surge

END

 

 

 

В Солянке добавлено ,судя по всему, добавлено

on_info2 = {+strelok_pda_have} nil,

то есть отключение секции ,когда приходит сообщение strelok_pda_have.

Вопрос,что есть aes_activate_zone, и откуда видно,что секция - это таймер.

 

Далее, в sr_timer.script (в распакованной gamedata),есть class "action_timer".Как он связан с данной секцией?

 

 

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

Прошел Солянку, иду в NLC

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


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

Таймер выброса на ЧАЭС и выжигания мозгов в Х-18

section_name = space_restrictor

type = dec

 

Что есть type space_restrictora? Я смотрел на другие, они все ссылки на секцию смарт террейна.Где находится определение dec - не нашел.

Прошел Солянку, иду в NLC

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


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

Что там ключевые слова, а что-имена переменных? [sr_timer1] - ключевое слово, которое говорит ,что это таймер (всё,что начинается на sr_timer ?), или type = dec говорит ,что это таймер?

 

Я хочу понять всю логику.Оно создает объект action_timer из sr_timer.script.Откуда оно знает и каким образом секция привязывается к скрипту ?

Кто вызывает action_timer:update и почему он тикает только внутри рестриктора?

Там

time_global() - db.storage[self.object:id()].activation_time , то есть время глобальное,пока я не внутри,он по идее тоже должен идти.

 

Протрассировал, activation_time меняется при повторном входе в рестриктор.Где?

 

Где вообще определены поля class action_timer : start_value, activation_time type...?

 

Вроде понял,позже объясню.

 

xr_logic.script activation_time инициализируется time_global(), а при записи save_logic() и загрузке пишется разница с текущим временем, то есть оно замораживается при выходе из любой логики, когда она становится неактивной.Эта переменная и используется таймером в том числе.

Чтобы таймер показывал время до настоящего выброса, надо патчить sr_timer.script:

 

value_time = (timer_next_blow - game_minutes()) * 60000

 

timer_next_blow определяется с помощью кода, скопированного из news_main.script:

local timer_next_blow = 0

 

function get_next_blowout_time()

if (timer_next_blow == 0)

then

local name, delay

for a=1,100,1 do

local tmp = amk.load_variable("gt"..a,nil)

if tmp ~= nil then

name = amk.load_variable("gt"..a, nil)

delay = amk.load_variable("gd"..a, nil)

if (name and delay and name == "blow_shift") then

timer_next_blow = delay

end

end

end

end

end

 

 

только на ЧАЭС и в Припяти это не работает и выдает все время 0.наверное в этих местах выбросы не происходят по обычному расписанию.Непорядок, опять надо пофиксить.

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

Прошел Солянку, иду в NLC

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


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

1.Дайте acdc или что еще, который способен распаковать all.spawn Солянки.

2.Кто понимает в blow_shift? Такой переменной нет в Припяти и ЧАЭС, соответственно выбросы не происходят по расписанию.Кто ее удаляет??? Другие игровые таймеры gt..a есть : таймеры сна и новостей.

Если это в all.spawn, который у меня распакован только от оригинала, вопрос отпадает, если дадите п.1.

 

У меня глюки!!! Прошел по 2-му разу, подхожу в Припяти к точке "найти дорогу на ЧАЭС" с южной стороны стадиона "Авангард".Оно показывает ролик с монолитовцем и монстрами на Авангарде и перебрасывает меня прямо на ЧАЭС, а не на стадион.Таймер выброса включается,когда ГГ бежит параллельно АЭС, но blow_shift присутствует.То есть есть 2 выброса - нормальный по расписанию и дефективный через 30 минут.Как должно быть?

Если это состояние - нормальное, то надо просто убрать таймер выброса, добавить индикацию времени выброса в ПДА (с погрешностью) и пофиксить разговор с Доктором, чтобы он говорил правду,когда будет выброс.

 

 

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

Прошел Солянку, иду в NLC

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


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

Помогите, со мной Голограмма на хочет говорить, сидит играет на гитаре.Это точно баг , он пофиксен, но я не могу накладывать патчи из-за того,что перестанут работать сейвы.Нужна правка руками.Где это прописано, говорит ли перс с ГГ?

Прошел Солянку, иду в NLC

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


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

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