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

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

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

@Змея, 1. Часто по сюжетам мне надо бежать с группой по 10-20 нпс. Обычно я для всех делаю один переходный волкер. Дальше, после получения сигнала в последней точке, они занимают свои места. (В патруле пробовал, тоже разбегаются.)

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

 

 

Надо дело довести до конца!

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

Нужно сделать переход, появляющийся по условию. Он прописан в game_story_ids.ltx:

5490 = "lc_yan_agr"

С начала игры я его удаляю стандартно:

function lc_del()
	local lc_del = alife():story_object(story_ids.lc_yan_agr)
	if db.actor ~= nil then
		alife():release(lc_del, true)
			return true
		end
			return false
end

А как его заспавнить обратно? Конструкция типа

function lc_cr()
	local story_id = story_ids.lc_yan_agr
	local spawn_id = alife():spawn_id(story_id)
	if db.actor ~= nil then
		alife():create(spawn_id)
		return true
	end
		return false
end

не работает.

Изменено пользователем dPlayer
Ссылка на комментарий
1 час назад, riddik121 сказал:

В патруле пробовал, тоже разбегаются

В патруле идут покрасивше. И по одному пути. А в волкере по одному пути запузырить 10 неписей, начнут толкаться. Нужно несколько делать. Но вообще тут мне кажется на любителя...Если скрипт патруля не правленый - тоже бывают толкаются, причем иногда даже с командиром))

Насчет разбегания.

Уходить из алайфа не пробовала - хлопотно при 600 метрах, но при сейв-лоаде уходят максимум в ближайшую точку, но никак не в первую. Вот это испробовано на живых неписях тыщу раз. Кстати якобы некрасивость всего этого действа(обычный псевдобаг ТЧ - даже не напрягает ни разу) устраняется очень просто. Делаешь предпоследнюю точку поближе к последней.

Но смысл всего этого действа не в устранении разбегания...я устала повторять уже. Щас начну видео с репликами Дезинтегратора выкладывать - честное слово...

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

 

Изменено пользователем Змея
  • Полезно 1
Ссылка на комментарий

@dPlayer,  в  alife():spawn_id( number ) передается не story_id, а spawn_story_id объекта. Подробнее читай здесь.

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

@Charsi, заработало) Только не сразу понял, потому что не появляется значок перехода на миникарте. Как быть?

Отметка задается стандартным

level.map_add_object_spot(obj.id, "level_changer", "to_agroprom")

в level_tasks.script.

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

level.map_add_object_spot ставит метку на клиентский (онлайновый) объект, поэтому сработает только при загрузке на локации с точкой перехода.

Можно использовать level.map_add_object_spot_ser для установки метки на серверный объект сразу при его создании.

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

@abramcumner, я хоть и юзаю гулаги, но был бы не против иметь скрипт с правками. Есть он у тебя, или где его можно взять? На всякий случай...

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

При эффекте "качания" ГГ от контролёра низ экрана будто бы растягивается, как баганная геометрия. Чем править?

 


24601526_s.jpg

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

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

@Змея, Замучился с логикой. Вот что получилось:

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

[smart_terrains]
none = true

[logic]
active = {-wiz_mracobes_dialog2_portion} walker, {+wiz_mracobes_dialog2_portion -wiz_mracobes_walker3_portion} patrol, {+wiz_mracobes_walker3_portion -wiz_mracobes_dialog4_portion} walker@3, {+wiz_mracobes_dialog4_portion -wiz_mracobes_walker4_portion} patrol@2, {+wiz_mracobes_walker4_portion} walker@4
on_death = death

 

[walker]             ------------тут начальная точка группы
path_look = wiz_dold_mrakobes_11_look
path_walk = wiz_dold_mrakobes_11_walk
on_info = {+wiz_mracobes_dialog2_portion} patrol

 

[patrol]           -----------это путь перехода
path_walk = wiz_dold_mrakobes_base_go_walk
on_signal = base2 | %+wiz_mracobes_walker3_portion% walker@3
danger = danger_condition

 

[walker@3]
path_look = wiz_dold_mrakobes_base_1_look
path_walk = wiz_dold_mrakobes_base_1_walk
on_info = {+wiz_mracobes_dialog4_portion} patrol@2
danger = danger_condition

 

[patrol@2]
path_walk = wiz_dold_mrakobes_base_out_walk
on_signal = wizout2 | %+wiz_mracobes_walker4_portion% walker@4
danger = danger_condition

 

[walker@4]
path_look = wiz_dold_out_1_look
path_walk = wiz_dold_out_1_walk
danger = danger_condition

 

[danger_condition]
ignore_distance_corpse = 0
ignore_distance_sound = 0
danger_inertion_time_grenade = 0
danger_inertion_time_hit = 500
danger_inertion_time_corpse = 0
danger_inertion_time_sound = 0
danger_inertion_time_ricochet = 0

Теперь банда никуда не разбегается. Но есть нехороший, но терпимый момент: когда НПС идут по патрульному пути и сталкиваются с врагом они переходят в боевой режим. Стреляют, воюют, перемещаются к врагу. Потом, когда бой заканчивается они бегут обратно к той точке патрульного пути с которого перешли в боевой режим и продолжают дальше идти. Ещё один момент, если лидер (по патрульному пути commander = true) остаётся жив, то вся группа, дойдя до конечной точки и получив сигнал, занимает позиции в следующий волкер. Но если лидер погибает, группа добегает до конечной точки, получает сигнал, вновь избранный системой лидер переходит в следующий волкер, а остальные НПС бегут обратно к последней точке патрульного пути и происходит всё заново пока вся группа по одному не перейдут в следующий волкер.

 

Надо дело довести до конца!

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

Халлоу.Как определить ,что ты нужную функцию выдрал из движка?Например нужен параметр fraer_the_masliny_poymal_effect ?

 

Ну, да поможет Вам F1, да сохранит Вас F2, во имя Control`а, Alt`а и святого Delet`а. Enter.


Подарки

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

    Привет всем мододелам!

    Не смотря на то, что я играю в солянку 2018, я пишу именно сюда, потому, что в ОП-2 реализовано то, что я хотел бы изменить в своём варианте. Возможно уже где то описывалось, но я долго искал и не смог найти. 
    Как можно ограничить количество патронов в игре(5,56 и 5,45), что бы появился смысл использовать другие виды оружия и расстреливать весь найденный боезапас?
    Я уже обнулил появление патронов в рюкзаках трупов через файлы:
    death_generic.ltx

    death_items_by_communities.ltx

    death_items_by_levels.ltx

    death_items_count.ltx
    ********

    Ещё пробую править файлы:
    ph_box_generic.ltx 

    ph_box_items_by_communities.ltx 

    ph_box_items_by_levels.ltx 

    ph_box_items_count.ltx 
    Что бы ограничить появление патронов в дроп-боксах (разбиваемых ящиках с сюрпризами).
    ------------------------------------------------------------------------------------------------------

    Но патроны по прежнему легко добываются из подобранного оружия. 
    В связи с этим два вопроса:
    1. Где и как прописать, что бы в подобранных стволах патронов не было?
    2. Где и как прописать, что бы в трупах стволы тоже оказывались пустыми, потому что, через вышеперечисленные файлы можно отрегулировать только появление самих патронов в рюкзаках трупов. Но эти цифры никак не влияют на количество патронов, при разрядке стволов из трупов, или подобранных стволов?

    Добавлено  Murarius,

    Перемещено.

    Ссылка на комментарий
    В ‎14‎.‎12‎.‎2018 в 20:26, Houdini_one сказал:

    При эффекте "качания" ГГ от контролёра низ экрана будто бы растягивается

    Было такое. Ковыряй постэффект. Это вроде как из-за его "перегруженности" что ли, точно не помню.

    New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор

    Русификатор для игры Vendetta: Curse of Raven's Cry

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

    @riddik121,  ты переход в базовый валкер то дополни условием.
     

    on_signal = base2 | %+wiz_mracobes_walker3_portion% walker@3
    on_info = {+wiz_mracobes_walker3_portion}walker@3


    Кстати - а на каком движке ты работаешь? У нас на ХРЕ такой вид записи актива дает вылет сразу при загрузке игры.

    Попозже воспроизведу.

    • Нравится 1
    Ссылка на комментарий

    @Jekyll, мне сказали, что сами эффекты криво сделаны в рендере, без его правки не обойтись...

    ищу человека, который смог бы заняться разработкой погоды на OGSR.
    кто может помочь - пишите в ЛС.

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

    Итак - продолжим.

    Движок XRE rev.232.

    Секция актив выглядит так.

    active = {=is_day}walker@mil_3_stalk_11_post,{=is_evening}kamp@mil_3_stalk_11_kamp,{=is_night}sleeper@mil_3_stalk_11_sleep

    Вылет на синхронизации на раб.стол.

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

     

    ! Unknown command:  *INFO:object 'zmil_stalker_0030': section 'logic': section 'active' has no conditionless else clause
    ATTENTION! Game is interrupted! The information in lines above.

    [error]Arguments     : LUA error: ... publishing\s.t.a.l.k.e.r\gamedata\scripts\_g.script:1350: attempt to call global 'exit' (a nil value)

    stack trace:

     

    Секцию актив пишем так:

    active =,{=is_day}walker@mil_3_stalk_11_post,{=is_evening}kamp@mil_3_stalk_11_kamp,sleeper@mil_3_stalk_11_sleep

    Никакого вылета. 

    Но некоторые перцы на локации при НИ грузятся не так как положено в секцию, которая соответствует условию в активе, а в последнюю секцию, которая написана без условия. То есть в данном случае - в секцию sleeper. 

    Вот что за беда?

    ЗЫ...Ошибок в секциях нет - здесь только глюки копипаста.

    ЗЫЫ. Вообще создалось впечатление, что на Милитари вследствии большого количества выдаваемых в начале поршней - движок не справляется с обработкой предусловий, прописанных в логике персонажей. Но есть еще парочка супер-багов, которые я не могу объяснить. Да и внятных ответов пока не услышала.

    1. Неписи - отличные по комьюнити от военных, вообще неохотно переходят из секции в секцию. Или начинают глючить в самых обычных местах. Например перейдя в ремарк не отрабатывают ни прописанную анимацию ни прописанный звук.

    2. Вообще эпический баг.

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

    Явно нет реакции на предусловие =actor_in_zone...Либо гад не хочет переходить в секцию подхода к мит_зоне...

    Гадство какое-то.

    Изменено пользователем Змея
    • Полезно 1
    Ссылка на комментарий

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

    if type == "jup_bratva_atp" then
            t = { section = "logic@jup_bratva_atp_kamp1",
                idle = 0,
                prior = 10, state = {0},
                in_rest = "", out_rest = ""
            }
            table.insert(sj, t)
            t = { section = "logic@jup_bratva_atp_kamp2",
                idle = 0,
                prior = 10, state = {0},
                in_rest = "", out_rest = ""
            }
            table.insert(sj, t)
            t = { section = "logic@jup_bratva_atp_kamp3",
                idle = 0,
                prior = 10, state = {0},
                in_rest = "", out_rest = ""
            }
            table.insert(sj, t)
          end

    и вот так

    if type == "for_ban" then
            t = { section = "logic@for_ban_walker1",
                idle = 0,
                prior = 10, state = {0},
                in_rest = "", out_rest = ""
            }
            table.insert(sj, t)
            t = { section = "logic@for_ban_walker2",
                idle = 0,
                prior = 10, state = {0},
                in_rest = "", out_rest = ""
            }
            table.insert(sj, t)
             
         end

    бесполезно всё.( Сталкеры просто уходят из гулага.

    Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

    @Хемуль36рус, Возможно не полностью прописана скриптовая база.

    gamedata\scripts\gulag_имя.script:

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

    1. Вычитка из секции логики.
    function load_job(sj, gname, type, squad, groups)
        if type == "jup_bratva_atp" then
            ...
        end
        if type == "for_ban" then
            ...
        end
    end

    2. Установка состояний лагеря.
    function load_states(gname, type)
        if type == "jup_bratva_atp" then
            return function(gulag)
                return 0
            end
        end
        if type == "for_ban" then
            return function(gulag)
                return 0
            end
        end
    end

    3. Проверка соответствия группировки нпс гулагу.
    function checkStalker(npc_community, gulag_type, npc_rank, se_obj)
        if gulag_type == "jup_bratva_atp" then
            return npc_community == "..."
        end
        if gulag_type == "for_ban" then
            return npc_community == "..."
        end
    end

     

     

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

    @gam, Вот и странно то, что все прописано так как нужно, а гулаг не работает.  Вообще не понятно, почему.

    Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

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

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

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

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

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

    Войти

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

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

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

    AMK-Team.ru

    ×
    ×
    • Создать...