Перейти к контенту
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

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