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

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


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

22 минуты назад, Купер сказал:

русской локали

Заменить на своё (только с транскрипцией на русский): 

https://disk.yandex.ru/i/2EA5JXc4LCw6BA

https://disk.yandex.ru/i/RvB6Q9AcjLX6eg

Здесь могла быть ваша реклама.

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

@mole venomous ,

36 минут назад, Купер сказал:

статьи вложены больше, чем на один уровень.

"Предложения торговцев->/хлеб/->хлеб" ?

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

@Купер А-а, так вопрос в том, как убрать хлеб/хлеб/хлеб...

Оно вроде не сильно по глазам бьёт...

Здесь могла быть ваша реклама.

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

@mole venomous , проблема, условно:

1. Предложения торговцев/->хлеб - ОК. Первый уровень вложения.

2. Предложения торговцев/->хлеб/->хлеб. Вложение 2-го уровня. Русская локаль уже не воспринимается.

Это я соизволил начудить или оно действительно так?

Раздел - статья. Работает.

Раздел - подраздел - статья. Не хочет.

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

Приветствую всех и поздравляю с наступившим.

Есть ли для ТЧ ОГСР какой-либо способ отследить перемещение с локации на локацию и зафиксировать имена локаций, желательно обеих.

Нужно для создания автосейва при переходе с локи на локу.

С коллбэком 'level_changer_action' вообще не разобрался, он работает лишь когда ГГ перемещается на точки пути из секции [pt_move_if_reject], либо я что-то делаю не так...

ps Выяснил, что коллбэк работает только на той локе, с которой уходишь. 

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

Здесь могла быть ваша реклама.

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

Покопайся в этом скрипте

 

https://github.com/dsh2dsh/op2ogse/blob/0e136454089cb4dc140a837fd59047c71818f460/gamedata/scripts/dsh/dsh_lc_fixes.script#L219

 

Просто на спауне проверяем, что имя текущего уровня не совпадает с тем, что сохранено в сейве, а потом сохраняем имя текущего уровня в сейве. Таким образом, если в одном спауне ты сохранил в переменную Кордон, а в следующем спауне у тебя текущая локация отличается от содержимого этой переменной - перешли на другую локацию.

 

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

Всем привет! 

Проблема возникла...

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

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : .\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...he ogsm - v1.0\gamedata\scripts\death_manager.script:128: attempt to index local 'se_obj' (a nil value)

У казывает на строку:  if se_obj.death_droped == true then

    --' Спрашиваем у серверного объекта генерились ли предметы
    local se_obj = alife():object(self.npc:id())
  if se_obj.death_droped == true then
        return
    end

Патч Ivg_brest 3.5 + Ai Additions

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

как в РПГ 7 сделать бесконечные ракеты , чтобы при выстреливании не происходил баг , когда ракета вылетает , а потом после выстрела на ее месте нету ничего , и после 2 выстрела будет производиться анимация выстрела и эффект , но сама ракета вылетать не будет? ( если на форуме есть такая тема то подскажите где) как можно пофиксить этот баг?

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

Для выстрела из гранатомета требуется доспавнивать ракету/снаряд. Иначе запускать нечего. В обычном движке она спавнится только при перезарядке, и при загрузке (если гранатомет уже заряжен).

Для того чтобы снаряд появлялся в других ситуациях (во время стрельбы очередью? :rolleyes: ) надо движок править.

  • Полезно 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

как в РПГ 7 сделать бесконечные ракеты

В ЧН делал, а вот как... Вроде бы в одной гранате 10 частей - как в пачке патронов...

 

AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64  правки Золотой Шар

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

Так ведь написано черным по белому

Спасибо! Я не программист, поэтому задаю глупые вопросы.

Вылет я поправил, должно было быть так:     if se_obj == nil or se_obj.death_droped == true then

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

В ЧН делал, а вот как... Вроде бы в одной гранате 10 частей - как в пачке патронов...

 

как такой же трюк провернуть? неужели только движок править? если править! то как?

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

Доброго дня комрадыю Вопрос таков

У моего бота прописана вот такая логика

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

[logic]
active = walker@bar
combat_ignore = combat_ignore
meet = no_meet

[walker@bar]
path_walk = chern_gurvinek_walk
path_look = chern_gurvinek_look
meet = no_meet
danger = danger_condition
on_actor_dist_le_nvis = 5 | remark@hello
;on_info = {-chern_bar_hurvinek_meeting} kamp
combat_ignore_cond = {=fighting_dist_ge_20}
 
[remark@hello]
anim = hello_wpn
target = actor
;anim_end = remark@talk
on_timer = 3000 | remark@talk
combat_ignore_cond = {=fighting_dist_ge_20}
meet = no_meet

;[remark@wait] 
;target = actor
;on_actor_dist_le_nvis = 3 | remark@talk %=xr_effects.gurvinek_give_equipment%
;meet = no_meet
;combat_ignore_cond = {=fighting_dist_ge_20}
 
[remark@talk]
snd = hurvinek_start_monolog
;on_game_timer = 12 |nil %=xr_effects.gurvinek_give_equipment%
on_game_timer = 12 | {-chern_bar_hurvinek_meeting} %=xr_effects.gurvinek_give_equipment +chern_bar_hurvinek_meeting%
combat_ignore_cond = {=fighting_dist_ge_20}
on_signal = sound_end | kamp
meet = no_meet
  
[kamp]
center_point = chern_lager_town_vegetables_camp_center
meet = meet
combat_ignore_cond = {=fighting_dist_ge_20}
 
[meet@helow]
meet_dialog = escape_talk_about_escape
use        = true
use_wpn        = true
 
[danger_condition]
ignore_distance = 15
 
[combat_ignore]

При подходе к нему и после проигрывания анимации hello происходит вылет вот с с таким логом

Сама функция выдачи предметов прописана в xr_effects и выглядит так

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

function gurvinek_give_equipment(first_speaker, second_speaker)
    local reward_items = math.random(1,3)
    if reward_items == 1 then -- Первый вариант
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_9x18_fmj", 2)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_pm")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_knife")
;              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_simple")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 1)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 3)
    end
    if reward_items == 2 then -- Второй вариант
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_12x70_buck", 5)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_bm16")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_knife")
;              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_simple")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 1)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 3)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "antirad", 1)
    end
    if reward_items == 3 then -- Третий вариант
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_12x70_buck", 5)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_9x18_fmj", 2)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_bm16")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_pm")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_knife")
;              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "detector_simple")
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 5)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit", 2)
              dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "antirad", 1)
    end
end

Может вы сможете подсказать, где я накосячил?

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

DarkSnowder.gif

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

@WinCap Спасибо, и в правду помогло

Слушай, а как мне указать, чтобы после начала звуковой дорожки, снаряга выдалась ток через 10 секунд? (как эти секунды правильно прописать?)

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

DarkSnowder.gif

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

как мне указать, чтобы ... снаряга выдалась ток через 10 секунд?

Нужно в строке on_game_timer время увеличить. Это же игровое время и 12 игровых секунд это... мгновение.

Напомню, что можно использовать и on_timer, где нужно указывать реальное время в миллисекундах.

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

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

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

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

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

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

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

Войти

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

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

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