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

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


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

Куфзук, там у Чепепа с командой сделана логика валкера в точку смарта свободовцев. Такая же ситуация с атакой бандитов на кладбище техники.
Ссылка на комментарий
SkyLoader, тогда почему тебе этот вариант не подходит, вполне достойно выглядит?
Ссылка на комментарий
Привет всем. Кто подскажет, как заставить один гулаг напасть на другой?

Очень просто - в customdata всех нападающих неписей прописать:

 

[smart_terrains]
имя смарта, в котором отряд до нападения = {-инфопоршень - сигнал к атаке}
имя смарта, на который надо напасть = {+инфопоршень - сигнал к атаке}

Кстати, кто-нибудь знает, какой скрипт читает секцию smart_terrains и разбирает всё это дело? А то я что-то кроме xr_wounded ничего не нашёл...

 

P.S. этот метод не пойдёт, если нужен любой состав смарта (т.е. если в нём любые неписи, а не только те, которым всё это дело прописано). Можно сделать и это, но если ответ на вопрос (который чуть выше) не будет найден, то придётся возиться с net_packet().

 

P.P.S. Кто знает, уменьшатся ли проблемы со стеком, если снизить настройки графики?

 

так и называется: smart_terrain.script. Куфзук

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

Куфзук, дело в том, что я хочу, чтобы это было димамично для каждого смарта.

Полтергейст, дело в том, что неписи считают этот гулаг своим и не бегут с оружием на изготовку на этот гулаг. И то, если гулаг заполнен, то это не прокатит - неписи пойдут гулять.

 

 

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

Подскажите мне пожалуйста, как сделать, чтобы после взрыва гранаты на ее месте что-то спавнилось? (например кусок колбасы =) ).

Точка ЛЦУ у вас на лбу это тоже чья-то точка зрения.

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

SkyLoader,

Фэйк гранаты движковой. Его отследить никак нельзя.

Почему нельзя, можно. Если прицепить к гранате биндер, то видно, что после броска граната из инвентаря удаляется, а заместо неё спавнится другая с тем же биндером (секцию не помню, та-же или нет), но без серверного объекта. Она и летит дальше. Так что можно отследить.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

Люди, может кто подсказать что может означать такой лог?

* MEMORY USAGE: 268209 K

[16-9] get_xml_name for[maingame_pda_msg.xml] returns [maingame_pda_msg.xml]

! Missing ogg-comment, file: e:\games\stalker\gamedata\sounds\monsters\cat\idle.ogg

! Missing ogg-comment, file: e:\games\stalker\gamedata\sounds\monsters\cat\attack_hit.ogg

! Missing ogg-comment, file: e:\games\stalker\gamedata\sounds\monsters\cat\take_damage.ogg

! Missing ogg-comment, file: e:\games\stalker\gamedata\sounds\monsters\cat\die.ogg

[16-9] get_xml_name for[maingame_pda_msg.xml] returns [maingame_pda_msg.xml]

[16-9] get_xml_name for[maingame_pda_msg.xml] returns [maingame_pda_msg.xml]

[16-9] get_xml_name for[maingame_pda_msg.xml] returns [maingame_pda_msg.xml]

[16-9] get_xml_name for[maingame_pda_msg.xml] returns [maingame_pda_msg.xml]

[16-9] get_xml_name for[maingame_pda_msg.xml] returns [maingame_pda_msg.xml]

[16-9] get_xml_name for[maingame_pda_msg.xml] returns [maingame_pda_msg.xml]

! Cannot find saved game ~~~ nil self.object in motivator_binder

* Log file has been saved successfully!

 

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: e:\games\stalker\gamedata\scripts\_g.script:1121: bad argument #2 to 'format' (string expected, got no value)

 

stack trace:

 

 

Не верный формат аргумента. В контексте чего такой вылет, логику правишь? Куфзук

Изменено пользователем Куфзук

Prefiero morir de pie, que vivir siempre arrodillado.
 

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

Появилось много вопросов:

1) Действует ли на акторе :get_enemy()? (враги ГГ)

Должен. Министр.

2) Например, есть есть бочка. Если непись смотрит в сторону бочки, то он будет ее видеть? (для непися :see() бочку)

Должен. Министр.

3) Как можно заспавнить турель (не в амк), если место спавна будет онлайн? Просто у меня идет спавн турели, только если она будет далеко от ГГ. А если вблизи, то она появляется на пол секунды и исчезает.

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

Друзья, дайте пожалуйста совет. Очень часто во время боя происходит вылет -

 

[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: ...hing\s.t.a.l.k.e.r\gamedata\scripts\state_mgr.script:194: C stack overflow

 

[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: ...hing\s.t.a.l.k.e.r\gamedata\scripts\rx_wmgr.script:579: C stack overflow

 

 

Я так понимаю эти два вылета по сути одна проблема...

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

Куфзук стоит АМК+Аддон IMM плюс свои правки (думаю они и виноваты) и различные мелкие дополнения. Случился во время отбивания атаки бандитов на свалке на кладбище техники. Саму сцену не трогал, да и на Свалке ничего не делал кроме пары новых аномалий не менял.

 

Тогда, нам сложно будет тебе помочь, мы же не знаем, что именно ты делаешь.

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

Изменено пользователем Куфзук

Prefiero morir de pie, que vivir siempre arrodillado.
 

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

Тогда без ковыряния smart_terrain.script тут никак не обойтись. Я делал как-то, чтобы неписи не прописывались во враждебном гулаге, это не сложно. Но здесь вопрос поставлен немного по-другому - сделать, чтобы они наплевали на счётчик свободного места в смарте и шли всё равно. Надо будет доделать это как-нибудь, вряд ли есть другие способы.

 

Чтобы шли "с оружеем на изготовку", надо, чтобы они заранее заметили врага. Иначе приётся ковырять многострадальный state_mgr.script, чтобы непись всегда был в состоянии "danger", пока не займёт смарт.

 

gamedata\scripts\state_mgr.script:194: C stack overflow

Скрипт этот перегружает стек. Не знаю как и почему, там дофига evaluator'ов и в связи с этим разбираться с ними нелегко. Бывает, что вылетает без лога.

Если перенести state_mgr из ЗП, то вылет пропадает, но полностью перенести его пока не получилось, для этого нужен кто-то, кто хорошо разбирается в evaluator'ах.

 

@"StreloK"

~~~ nil self.object in motivator_binder

 

Замените функцию xr_motivator.AddToMotivator(npc) на такую:

function AddToMotivator(npc)

if alife() and npc ~= nil then

npc:bind_object(this.motivator_binder(npc))

end

end

Если не поможет - сносите свои правки, я как-то тоже доправился, что командир военных на кордоне и двое спецназовцев были фактически без биндера (вернее, без self.object'а для него) и глючили.

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

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

 

ПС-а за что эта функция отвечает? Ну так для справки.

Изменено пользователем @"StreloK"

Prefiero morir de pie, que vivir siempre arrodillado.
 

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

Эта функция отвечает за добавление биндера к неписю. Я просто поставил проверку на npc == nil, чтобы биндер не создался по ошибке "сам по себе". Но вряд ли это поможет, у меня такое было с военными на кордоне. Проблему решил удалением трёх глючных неписей из all.spawn - всё заработало. После этого несколько раз изменял свои правки, попробовал этих неписей вернуть - вернулись без проблем, таких глюков нет.

 

P.S. вычислить глючащего npc можно так: начать новую игру (или перейти на тот уровень, где глючит), сохраниться и попробовать загрузить это сохранение. Если будет ошибка ""SAVE FILE IS CORRUPT", то это хорошо. Далее, в xr_motivator, в функции загрузки, надо найти

  if reader:r_eof() then
    abort("SAVE FILE IS CORRUPT")
  end

и заменить на

  if reader:r_eof() then
    abort("SAVE FILE IS CORRUPT! NPC: %s", self.object:name())
  end

 

При чтении self.object ещё не обнулился и можно отследить имя глючащего.

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

SkyLoader

Привет всем. Кто подскажет, как заставить один гулаг напасть на другой?

 

Способ есть но он не совсем прост (может есть и проше).

Гулаг имеет состояния функция function load_states(gname, type) в файле

загрузки работ гулага для каждого состояния может быть свой набор работ с соответствуюшей логикой.

состояния определяются вышеприведенной функцией пример

 

    if type == "esc_bridge" then
        return function(gulag)
            if db.actor ~= nil then
                if ( level.get_time_hours() >= 5 and level.get_time_hours() <= 22 ) then
                    return 0  -- день
                else
                    return 1  -- ночь
                end
            else
                return gulag.state
            end
        end    
              end

 

так вот для каждого состояния можно создать набор работ с соответствующими путями и логикой

копирующую допустим логику бандитов с атп ,и при переключении в это состояние сталкеры из лагеря

пойдут отбивать свои работы у гопников :ny_ph34r_1:

 

Черновой вариант в 6 часов утра сталкеры из лагеря(не все) идут на атп а в 22 должны вернутся.

http://narod.ru/disk/6764780001/gamedata.rar.html

Версия 1.0004 чистая новая игра обязательна

 

c111c6c6d4084b853a32dab059291998.jpg

617b187d63ef2ff61ff2605bdba60489.jpg

cc368b1b2df360f3b70ecdcb28cc4c8d.jpg

20a84d30a72a5b4605bfd9c8df131d81.jpg

 

Измененны gulag_escape.script

gulag_escape.ltx

way_01_escape.ltx

 

 

 

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

 

 

Фаил

gulag_escape.script функция и состояния работ а также сылки на логику для работ

типа esc_lager_defend

 

if type == "esc_lager" then
                return function(gulag)
            if db.actor ~= nil then
                if ( level.get_time_hours() >= 6 and level.get_time_hours() <= 22 ) then
                    return 0  -- день
                else
                    return 1  -- ночь
                end
            else
                return gulag.state
            end
        end
    end

 

в фаил way_01_escape.ltx

в пути работ esc_lager_defend поставленны координаты от путей работ

типа

 

[esc_fabrika_bandit_day_look4]

points = p0,p1

p0:name = wp00|a=sit

p0:flags = 0x1

p0:position = 117.269721984863,-7.4942798614502,7.90426397323608

p0:game_vertex_id = 118

p0:level_vertex_id = 420418

p0:links = p1(1)

 

p1:name = name00|a=sit

p1:flags = 0x1

p1:position = 115.921424865723,-7.13775825500488,9.20606803894043

p1:game_vertex_id = 118

p1:level_vertex_id = 418794

 

 

[esc_fabrika_bandit_day_walk4]

points = p0

p0:name = wp00

p0:flags = 0x1

p0:position = 114.109931945801,-7.49428033828735,7.85036134719849

p0:game_vertex_id = 118

p0:level_vertex_id = 416373

 

файл gulag_escape.ltx

подкоректированна логика работ типа

[logic@esc_lager_defend1]

 

 

 

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

Министр, Полтергейст, спс.

AKKK1, спс. Да, я насчет этого уже думал. Если посылать весь гулаг нападать, то можно гулагу дать состояние return 3 (в бою).

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

Подскажите пожалуйста, какие файлы отвечают за выдачу стволов на арене? А то че то перекопал все файлы и не нашел.

 

В файле xr_effect.script, функция bar_arena_teleport. Куфзук

Изменено пользователем Куфзук
アレクセイ 高い
Arekusei takai
Ссылка на комментарий

SkyLoader

 

Состояний может быть достаточно много

0,1,2,3,5,6,7,8 и.т.д

важно для каждого состояния создать работу с соответствуюшей логикой

причем координаты работы могут находится в любом месте на любой локации

Т.е допустим имеем 10 сталкеров (население гулага) и 8 состояний

требуется создать функцию переключения состояний в зависимости от определенных условий(любых)

например от числа месяца

 

1,8,3,4,15 return 1 сидим в лагере

.............. return 2 сидим в лагере в других местах

.............. return 3 нападаем на блок пост

.............. return 4 нападаем на атп

.............. return 5 ну и т.д

.............. return 6

............. return 7

.............. return 8

 

для каждого состояния требуется 10 работ с соответствуюшей логикой и путями

 

итого получаем 10*8= 80 работ для 10 сталкеров с разными путями и логикой :ny_z_2: тот сталкер

да и для разных состояний могут использоватся соответствующие квесты и диалоги

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

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

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

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

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

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

Войти

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

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

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