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

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


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

@dsh @Okichi а возможно как-то скриптово проверить все объекты которые в онлайне, даже если они на другой локации, ну т.е. которым запрещено уходить в оффлайн вообще?

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

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

@Баба ЯГА насчет "вот прям всех" на всех локациях - не знаю. На тех локах, где актора нет - там и так все в оффлайне, емнип.
Все живое в онлайне получалось так находить  на текущей локации - нужно при загрузке , перед выходом актора в онлайн, перебрать все объекты,
которые есть в db.creatures.
В db.creatures  - все "живые" онлайновые объекты на локе, может, есть что похожее и для неживых? Тоже интересно )

След от кругов на воде - это тоже след (с)

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

@Okichi вот и мне интересно именно для неживых и в онлайне, для тех же рюкзаков

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

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

@Баба ЯГА Все онлайн-объекты:

for id, v in pairs(db.storage) do
    local obj = level.object_by_id(id) -- объект на текущей локации
    if obj then …

  • Нравится 1
  • Полезно 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@Norman Eisenherz @naxac @dsh @Okichi перебрал все онлайн объекты на Свалке, стоял возле долговцев, отбежал в другой конец локации, к переходу на Кордон, трупы важных персонажей, типа бандюка Кабана и бандюка у развалин - всё время в онлайне, с этим разобрались, потому и когда в них складывать вещи, то ничего не тормозит при подходе к ним, а вот с рюкзаком - магия, он как раз уходит в оффлайн, но при подходе к нему - ничего не тормозит, хоть там будет 100500 вещей в нём... В чём же всё-таки секрет интересно? По-поводу визуала - я ошибался. Признаю.

Изменено пользователем Баба ЯГА
  • Полезно 1

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

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

Народ, запутался уже, прошу вашей помощи.

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

Скрытый текст

FATAL ERROR
 
[error]Expression    : vertex || show_restrictions(m_object)
[error]Function      : CPatrolPathManager::select_point
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\patrol_path_manager.cpp
[error]Line          : 155
[error]Description   : any vertex in patrol path [agr_army_lager_guard10_walk] in inaccessible for object [l03_agroprom_stalker_0008]
 

stack trace:

Постоянные жалобы на то, что мол пути найти не может НО!

- лагерь не имеет никаких привязок к space_restrictor-ам

- никаких space_restrictor, не допускающих нахождение посторонних на территории института нету

- все way-поинты находятся на АИ-сетке

- у всех сталкеров, привязанных к АИ-сетке нет никаких привязок к space_restrictor-ам

 

Вот в чём причина вылета может быть тогда? Делал такие-же лагеря на других локах - всё работало отлично.

 

Скрытый текст

    ------------------ НИИ Агропром. Новый Лагерь ------------------------------------------
    if type == "agr_army_lager" then
        t = { section = "logic@agr_army_lager_walker1",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker2",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker3",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker4",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker5",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_kamp1",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker6",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_kamp2",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker7",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker8",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker9",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker10",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker11",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker12",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker13",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker14",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker15",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker16",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        t = { section = "logic@agr_army_lager_walker17",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
        end

 

    if type == "agr_army_lager" then
        return function(gulag)
            return 0
        end
    end

 

    if gulag_type == "agr_army_lager" then
        return npc_community == "military"
    end

Скрытый текст

;*************** agr_army_lager *******************

[logic@agr_army_lager_walker1]
active = walker1@agr_army_lager

[walker1@agr_army_lager]
path_walk = guard1_walk
path_look = guard1_look


[logic@agr_army_lager_walker2]
active = walker2@agr_army_lager

[walker2@agr_army_lager]
path_walk = guard2_walk
path_look = guard2_look


[logic@agr_army_lager_walker3]
active = walker3@agr_army_lager

[walker3@agr_army_lager]
path_walk = guard3_walk
path_look = guard3_look


[logic@agr_army_lager_walker4]
active = walker4@agr_army_lager

[walker4@agr_army_lager]
path_walk = guard4_walk
path_look = guard4_look


[logic@agr_army_lager_walker5]
active = walker5@agr_army_lager

[walker5@agr_army_lager]
path_walk = guard5_walk
path_look = guard5_look


[logic@agr_army_lager_kamp1]
active = kamp1@agr_army_lager

[kamp1@agr_army_lager]
center_point  = institute_camp_center
path_walk = institute_camp_center_task
radius = 2.4
danger = danger_ignore@agr_army_lager
on_timer = 150000 | kamp3@agr_army_lager

[kamp3@agr_army_lager]
center_point  = angar_camp_center
path_walk = angar_camp_center_task
radius = 2.4
danger = danger_ignore@agr_army_lager
on_timer = 150000 | kamp1@agr_army_lager


[logic@agr_army_lager_walker6]
active = walker6@agr_army_lager

[walker6@agr_army_lager]
path_walk = guard6_walk
path_look = guard6_look


[logic@agr_army_lager_kamp2]
active = kamp2@agr_army_lager

[kamp2@agr_army_lager]
center_point  = institute_camp_center
path_walk = institute_camp_center_task
radius = 2.4
danger = danger_ignore@agr_army_lager


[logic@agr_army_lager_walker7]
active = walker7@agr_army_lager

[walker7@agr_army_lager]
path_walk = guard7_walk
path_look = guard7_look


[logic@agr_army_lager_walker8]
active = walker8@agr_army_lager

[walker8@agr_army_lager]
path_walk = guard8_walk
path_look = guard8_look


[logic@agr_army_lager_walker9]
active = walker9@agr_army_lager

[walker9@agr_army_lager]
path_walk = guard9_walk
path_look = guard9_look


[logic@agr_army_lager_walker10]
active = walker10@agr_army_lager

[walker10@agr_army_lager]
path_walk = guard10_walk
path_look = guard10_look


[logic@agr_army_lager_walker11]
active = walker11@agr_army_lager

[walker11@agr_army_lager]
path_walk = guard11_walk
path_look = guard11_look


[logic@agr_army_lager_walker12]
active = walker12@agr_army_lager

[walker12@agr_army_lager]
path_walk = guard12_walk
path_look = guard12_look


[logic@agr_army_lager_walker13]
active = walker13@agr_army_lager

[walker13@agr_army_lager]
path_walk = guard13_walk
path_look = guard13_look


[logic@agr_army_lager_walker14]
active = walker14@agr_army_lager

[walker14@agr_army_lager]
path_walk = guard14_walk
path_look = guard14_look


[logic@agr_army_lager_walker15]
active = walker15@agr_army_lager

[walker15@agr_army_lager]
path_walk = guard15_walk
path_look = guard15_look


[logic@agr_army_lager_walker16]
active = walker16@agr_army_lager

[walker16@agr_army_lager]
path_walk = guard16_walk
path_look = guard16_look


[logic@agr_army_lager_walker17]
active = walker17@agr_army_lager

[walker17@agr_army_lager]
path_walk = guard17_walk
path_look = guard17_look


[danger_ignore@agr_army_lager]
ignore_distance = 5

Скрытый текст

[smart_terrain]
type = agr_army_lager
capacity = 19
communities = military

Ссылка на лог

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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

@DarkSnowder, один из этих рестрикторов преграждает "l03_agroprom_stalker_0008" путь к заветной цели - "agr_army_lager_guard10_walk".

S.T.A.L.K.E.R. CoP Objects (upd 28.10.24)

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

@WinCap Дык никаких рестрикторов в том то и дело на пути ни у кого нет.

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

Ссылка на комментарий
1 час назад, DarkSnowder сказал:

никаких рестрикторов в том то и дело на пути ни у кого нет.

А как вы это определили?  Посмотрите радиус и тип  рестра, который сказал вам ВинКап - возможно, он дстатоточно большой, чтобы захватывать доступные нпс точки пути.
Тут такое дело - если рестриктор с типом 2, то он будет добавлен каждому  неписю в ин_рестрикшнс без всяких доп. указаний, по умолчанию. 
Лучше всего - вывести для проблемного НПС-а всё, что у него в ин_рестрикшнс, и уже там будет видно, что конкретно ему мешает.

  • Нравится 1

След от кругов на воде - это тоже след (с)

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

@WinCap @Okichi Да, действительно дело было в реестре - удалил их всех и всё заработало. Чтож, буду восстанавливать их потихоньку и смотреть, какой реестр был глючным.

  • Согласен 1

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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

Добро всем.

 

Решил адаптировать функцию медика в ТЧ, перенёс диалог, внёс все нужные функции, и при старте диалога на мед помощь выскакивает вот такой вылет

Скрытый текст

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: d:\s.t.a.l.k.e.r\gamedata\scripts\dialogs.script:330: attempt to compare number with nil
 

stack trace:

 Ссылается он вот на эту функцию проверки состояния здоровья игрока

Скрытый текст

function actor_needs_bless(first_speaker, second_speaker)
    if db.actor.health < 1 or
            db.actor.radiation > 0 or
            db.actor.bleeding > 0 then
        return true
    end

    return false
end

В частности на db.actor.bleeding > 0 then.

Я так понял всё дело в цифре 0, но как тогда в ТЧ проверку на кровотечение сделать в пределах этой функции. В скриптах родного ТЧ ничего такого не находил пока что.

Скрытый текст

-- Medic support
function medic_magic_potion(first_speaker, second_speaker)
    db.actor.health = 1
    db.actor.power = 1
    db.actor.radiation = -1
    db.actor.bleeding = 1
end

function actor_needs_bless(first_speaker, second_speaker)
    if db.actor.health < 1 or
            db.actor.radiation > 0 or
            db.actor.bleeding > 0 then
        return true
    end

    return false
end

function actor_is_damn_healthy(first_speaker, second_speaker)
    return not actor_needs_bless(first_speaker, second_speaker)
end

 

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

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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

@DarkSnowder, если правильно помню, в ТЧ для кровотечения только чтение - db.actor:get_bleeding().

Изменено пользователем WinCap
  • Согласен 3

S.T.A.L.K.E.R. CoP Objects (upd 28.10.24)

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

@WinCap тут дело в том, что функция при диалоге на лечение в случае оказании помощи игроку не может это кровотечение остановить, то бишь значение > 0 она не определяет как прекращение кровотечения у ГГ. Если ёё закомментировать, вылет пропадает, но кровотечение у ГГ не вылечивается. Дело не в том, что там некорректно указано db.actor.bleeding, а то, что числовое значение > 0 для него указано некорректно. Вот меня и интересует, какое значение там должно быть, чтобы лечение ГГ шло как по маслу.

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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

@DarkSnowder а после db.actor разве не двоеточие?

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

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

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

@UriZzz Нет, в оригинальном скрипте одна точка. При двоеточии вылет без лога, проверял.

  • Спасибо 1

Лучше сделать мод с 0, чем пытаться залатать багованный.

DarkSnowder.gif

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

@I am Dead но можно эмулировать, путём спавна в инвентарь и съедания бинта. Костыльно конечно...

Мож что в x-ray ext есть???

  • Согласен 2

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

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

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

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

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

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

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

Войти

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

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

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