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

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

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

macron, panzyuza, подобные "зависоны" и в чистом ТЧ встречается, а уж в модах, где и аномалии добавляются и неписи респавнятся - нередкость.

Т.к. это имеет корни в движке исправить недопустимость подобного без правки движка невозможно.

Исправить последствия? Вероятно можно, мониторя все подобные трупы (уже физ.объекты) и возвращая им массу.

Ну а поупражняться подобным "футболом" можно при помощи гравипушки (см. соотв. мод).

 

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

Roman82, техника в игре (БТРы и вертушки) и сами не имеют группировки и не обучены в исходных скриптах различать группировки неписей.

Хочется изменить - см. мод АМК (или аналоги), где БТРов "подружили" с вояками. Ну и конечно все дело в логике (читай туторы) - какую цель задано - в ту и стреляет техника.

 

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

FANAT

Загрузочным окном рулит файл XR_3DA.exe, там и ищи координаты. :crazy:

 

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

proper70

Конечно можно проверить атакует ли монстр актора иль иную непись. Расписывать различные варианты тут бессмыслено и гораздо поще и нагляднее посмотреть это в модах. И в том же АМК собаки атакуют ГГ, выбивая оружие, и контролер зомбирует неписей. Во многих модах есть атака кровососа ... Бери и смотри.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Artos

Спасибо большое за ответ. Да, в логике БТРа прописан враг актер, с военными я его уже померил (бтр), их он не трогает. Создал отдельную секцию в game_relations actor_military, прописал дружбу с военными, все путем. Но вот как быть с бтром...

Логика -

[logic]

active = ph_car@idle

on_hit = hit

 

[hit]

on_info = %+esc_blockpost_alarm%

 

[ph_car@idle]

target=actor

fire_range=100

fire_repeat=50

auto_fire=true

track_target=true

on_info = {=gulag_casualities_ge(esc_blokpost:5)} ph_car@eliminate, {+esc_blockpost_alarm} ph_car@eliminate

on_death_info = esc_btr_killed

 

[ph_car@eliminate]

target=actor

fire_range=130

fire_repeat=50

auto_fire=true

track_target=true

on_info = {+esc_blockpost_normal} ph_car@idle

on_death_info = esc_btr_killed

 

 

Ежели убрать target=actor то тогда весь его (бтра) смысл пропадает. Ведь он должен не подпускать ГГ к блокпосту. Вот теперь ломаю голову.

Изменено пользователем Roman82
Ссылка на комментарий
Конечно можно проверить атакует ли монстр актора иль иную непись. Расписывать различные варианты тут бессмыслено и гораздо поще и нагляднее посмотреть это в модах. И в том же АМК собаки атакуют ГГ, выбивая оружие, и контролер зомбирует неписей. Во многих модах есть атака кровососа ... Бери и смотри.

 

То о чем ты говоришь - это уже сама атака, ее механизм. А мне нужно отследить момент когда монстр увидел первый раз ГГ и только начал атаку, момент переключения его логики с прогулочной (или какой там еще) на атаку.

 

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

proper70, извини, но прежде чем атаковать, именно идет ряд проверок на различные условия, которые и можно использовать для определения "увидел в первый раз" иль иного ...

Код: oEnemy = oNPC:get_enemy() --/or oNPC:best_enemy() - враг/цель/жертва как раз может использоваться для определения момента появления oEnemy! Без его наличия - атаки монстра нет. А различные иные раздражители (денджеры) только могут предшесвовать атаке.

Ну и логика переключается на именно атаку также только при наличии объекта-врага, иначе - различные логики "тревожные иль паники". Вот и пляши от этого ...

И, кстати, наличие врага еще не означает атаку и придется попотеть ... типа мониторить дистанцию/дирекцию/...

 

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

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

Если хочешь, чтобы БТР защищал от актора, то глупо в вояки его записывать. Если же записал в вояки - то и БТР не должен "актора не пущать на блокпост" ... Вот тут и правь логику БТРу, так, чтобы он именно в друзей не стрелял, в том числе и актора-вояку.

Ну а твои слова: "с военными я его уже померил (бтр), их он не трогает" - предполагаю пустословие. Без правки скриптов схемы ph_car.script и др. ты никого не "помирил". Просто цель у твоего БТРа одна - актор, вот и не трогает вояк. Сделаешь, чтобы стрелял по разным - и вояк не помилует. ;)

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Нет под рукой примера, но в игре точно есть функция проверки принадлежности к группировке.Так почему бы ее не поставить условием переключения между "идловой" и атакующей схемами - по типу{!actor_communiti="militari"} ph_car@eliminate (за синтаксис не ручаюсь)

Кстати если вместо actor поставить целью anemy то БТР атакует любого кто нанес ему хит - проверено.

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

gruber

Твоя "проверенная" замена для target просто напросто отключает задание цели и БТР реагирует только на обидчика. Правильнее тогда просто не задавать этот параметр.

Ну а функций проверок группировок конечно же немало, однако схема БТРа (ph_car) все одно их не понимает в режимах атаки/огня. Перереключаться то секции по условию "группировка актора" можно, но тогда можно только актора исключать из заданной цели, а вот оборонять позицию (а не только себя) без правки схемы не получится. Требуется задавать скрипом выбор подходящей цели и огонь по ней.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Artos, Так я понял, что автору вопроса именно нужно было оградить актера от атак БТР, в случае если актер сам военный. ;)

Ну судя по посту ниже, я все таки понял правильно, актер - военный, БТР молчит, в другом случае - стреляет.Так что метод с переключением секций по функции, должен дать искомый результат :P

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

gruber, однако ты пропустил его же слова:

Roman82 Ежели убрать target=actor то тогда весь его (бтра) смысл пропадает.
Т.о. как только он сделает первый этап по смене секций, возникнет вопрос: "А почему у меня БТР вообще ни в кого не стреляет?"

Ведь, не забываем, всем остальным неписям, независимо от группировок эти БТРы и вертушки - пофигу (они их не замечают) и никто сам стрелять в БТР не будет. Так, что ... если только кто случайно железяку заденет - тогда получит очередь ... независимо от группировки. :crazy:

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Artos

Заканчиваю квест, где гг пробирается на Агропром как бы воякой. Но дело в том что я с двух сторон поставил по БТРу. В game_relations создал отдельный класс, где вояки к гг дружелюбны, перевожу гг в этот класс, вояки становятся нейтральными, но техника продолжает шмалять. Для логики ph_car я не нашел команды типа friend или что-то типо этого. Возникла мысль перевести бтры в друзья с помощью команды function set_friends и function set_enemies в xr_effects.

function set_friends(actor, npc, p)

local npc1

for i, v in pairs(p) do

npc1 = level_object_by_sid(v)

if npc1 and npc1:alive() then

--printf("_bp: %d:set_friends(%d)", npc:id(), npc1:id())

npc:set_relation(game_object.friend, npc1)

npc1:set_relation(game_object.friend, npc)

end

end

end

 

function set_enemies(actor, npc, p)

local npc1

for i, v in pairs(p) do

--printf("_bp: set_enemies(%d)", v)

npc1 = level_object_by_sid(v)

if npc1 and npc1:alive() then

npc:set_relation(game_object.enemy, npc1)

npc1:set_relation(game_object.enemy, npc)

end

end

end

 

 

npc1 я так понимаю должен быть сид бтра?

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

При загрузке сейва у блокпоста долга на свалке ловим такой вылет

FATAL ERROR

[error]Expression    : ini_file.section_exist(section)
[error]Function      : CTradeParameters::process
[error]File          : e:\stalker\patch_1_0004\xr_3da\xrgame\trade_parameters_inline.h
[error]Line          : 111
[error]Description   : cannot find section logic@gar_dolg_blokpost_kamp5

Что он может означать?Данная работа прописана и в скрипте и в гулаг.лтх.И секция есть.

Ссылка на комментарий
panzyuza, Самой секции нету, имя ее проверь, если прописывал, может ошибся где..

FANAT.gif

Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения'

Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация

Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации

Ссылка на комментарий
FANAT, секции работ я вообще не трогал.Как было в стандарном сталкере, так все и осталось.Просто первый раз такое при загрузке сейва.Обычно случаеться при сохранении вблизи гулагов, где есть нпс.То ли нпс не может получить данную работу, когда ее выполнял до сохранения, хотя вылетало бы не из за секции. Изменено пользователем panzyuza
Ссылка на комментарий
Roman82: В game_relations создал отдельный класс, где вояки к гг дружелюбны, перевожу гг в этот класс, вояки становятся нейтральными, но техника продолжает шмалять

Ты все же почитай статьи на вика-сайтах по логике и перечитай ранее сказанное.

Повторяю (относительно конфигов и скриптов исходной игры):

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

2. Как бы ты не упражнялся с переключениями техники, но в качестве цели в самих секциях можно указывать или "ничего" или "точку обстрела" или конкретного НПС (актора или по stiry_id).

Условностями тут никак без переделки самой схемы ph_car не обойтись.

Как уже упоминал, взгляни в тот же АМК-мод, и посмотри как те же БТРы подружены с вояками. Там же есть коды, предохраняющие стрельбы ими по "своим".

Ну а чтобы БТРы начали стрелять не только по конкретной цели, а сами выбирали бы для себя врага - также потребуется доработка схемы или доп.скрипты. Примеры можно посмотреть, например, в SIMBIONe, где и вертушки не только по актору стреляют и БТРы могут и по вертушкам стрелять ...

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Artos,

Засучивай рукава и ...

- или анализируй все строки кодов относящиеся к биндеру твоего непися;

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

Вероятнее всего у тебя все же зависание из-за гулаговой логики, хотя она у тебя и простейшая. Раз в оффлайне твой НПС дошагивает до работы - смотри в онлайновых кодах биндера апдейта гулага. Возможно некорректные методы применяешь или иные ошибки ...

Я переспавнил гулаг и пути. Только в этот раз еще добавил работу kamp'ера.

[logic@gar_depo_bandit_kamp1]
active = kamp@gar_depo_bandit_kamp1

[kamp@gar_depo_bandit_kamp1]
center_point = camp_center1
soundgroup = gar_depo_bandit

 

В итоге произошел вылет:

scripts\xr_logic.script:378: attempt to index field '?' (a nil value)

Отсюда можно понять, что происходит это в момент установки работы в гулаге:

_G[filename].set_scheme(npc, ini, scheme, section, db.storage[npc_id]["gulag_name"])

Думаю, это связано с ["gulag_name"], т.к. вряд ли ошибка в айдишке непися.

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

Всем привет!

Народ, пытался совместить мод New Guiders Mod v2.0 Final (Проводники Автор: Stalk15 ) со своей солянкой - проводники водят без проблем, по той локации, на которой я, а при нажатии на другую локу - вылет с логом:

[error]Arguments : LUA error: ...s.t.a.l.k.e.r.2\gamedata\scripts\bind_stalker.script:401: attempt to index global 'packer' (a nil value)

 

Вещь то нужная, скажите кто понимает, что не так..

Мы типа сталкеры, мы крутые

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

Хек, без строк кода твоего скрипта bind_stalker можно только гадать.

Наиболее вероятна банальная оЧепятка в аргументе: packer => packet

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

IIPAIIOP Решение твоей проблемы , но нужна переигровка - сейв ДО отключения выжигателя http://www.amk-team.ru/forum/index.php?s=&...st&p=415987

Если такой вариант не устраивает , то советую прочитать начиная с этого http://www.amk-team.ru/forum/index.php?s=&...st&p=401448 сообщения и ниже, там Charsi описывает как устранить проблему с этими телепортами (фантомами).

Удачи.

Пост на усмотрение куратора.

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

У меня вопрос:

Как сделать кнопку в инвентаре и выполнение скрипта по нажатии на неё?

Заранее благодарен!

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

Примерно на половине игры размер автосейвов и квиксейвов стал 1.9,1.94,2 мб.Не вызовет ли это дальнейших осложнений в продолжении игры?Или нужно будет save-load править?

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

panzyuza, задавай, плз, вопросы более понятно ...

Если тобою НЕ упомянуты обычные (именованые) сохранения - следует ли понимать что именно только с авто- квик- сохранениями у тебя недопонятки по об'ему?

В чем собственно сомнения и тревога? Чем таким "страшным" тебе кажутся упомянутые цифры?

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

Есть сомнения по размерам и наличию мусора в сэйвах - смотри сколько об'ектов в игре используется (хотя бы по кол-ву игровых ID), их 'ассортимент' и делай выводы (самостоятельно!). Никто за тебя в твоем моде/игре не скажет будут ли у тебя осложнения иль это тобою и задумано так ...

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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