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

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


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

@BoBaH_671, секция для тайников разумеется не работает, в оригинале только развеселым костылем, ставишь флаг в юз колбек неписей на трупов, потом проверяешь ui_carbody, проверяешь этот флаг, если он не взведен, то значит шаримся по тайнику, а вот по какому конкретно - не понятно, а колбек есть только на взятие из, поэтому надо костыль развивать, фейково перекидываем предмет от одного к другому и узнаем с каким конкретно тайником имеем дело. Ву-а-ля.

 

P.S. на 7 движке есть колбек для тайника на юз, чем убиваются все вышеописанные костыли, выводы думай сам.

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

Вопросы, вопросы... Ничего не знаю.
Вопрос: копаясь в броне (а копаюсь я там давно), недавно заметил такой параметр power_loss. Интересно, что в релизе он присутствует только у 2-х комбезов: сталкера и "Ветер свободы" (значения 0.87 и 0.77 соответственно).
Из названия могу предположить, что эта строчка отвечает за расход выносливости конкретно в этом костюме, но я не уверен. В сборке 2571 есть похожая строчка: power_restore_speed, она есть только у одного комбеза, в релизе он вырезан.
Кто что скажет?

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

  BoBaH_671

Юзание тайника можно "увидеть" если написать к ним свой биндер, а у него отлавливать калбек callback.use_object. Причем Вы можете сделать свою секцию для предмета O_INVBOX своего тайника со своим биндером, не затрагивая уже существующие тайники, ибо задача перецепляния Вашего биндера в конфигах игры к существующим долгая и для внимательных людей.

 

Собственно вопрос - в биндере сталкера есть callback.take_item_from_box и есть callback.on_item_take, но первый не вызывается на взятие предметов из трупа, а второй как бы не того плана калбек. Как отловить каллбек на взятие преметов именно из трупа, вот чтобы можно было прицепить на него function takeItemFromCorpse(corpse,item).

Благодарю!

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

Поиском вроде прошёлся, первый пост изучил, но конкретно моего вопроса не нашёл, увы.
Итак, меня которую игру подряд слегка утомляет такая фигня, что при встрече отрядов "Долга" и "Свободы" последние практически всегда дохнут полным составом, ибо 9*39 - это вам не шутки решил я уравнять слегка шансы, но так, чтобы не трогать конфиги пукалок и боеприпасов. А так как я достаточно давно добавил адаптацию Арсенал-мода для АМК 1.4.1, то решение пришло само - раздать новые стволы неписям. И разнообразия добавится, и кого-то из свободовцев в экзе можно вооружить всамделишными лупомётами: МГ-42, МГ-3, ПКМ. Глядишь и шансы какбэ уравняются.
Полез я значит в gameplay чтобы по локациям раздать стволы народу (я вообще решил заодно гопников усилить, ибо отстреливать их стало скучно). Ну ок, разобрался где там ружбайки выдаются - замечательно же, выдал почти везде, но вот незадача, в файле для припяти нет ни долга, ни свободы. Не, ну правда, а ведь они появятся там - и будут друг дружку истребялять. Ну ок, я рассудил так: раз есть достаточно крупный файл character_desc_simulation.xml и вроде ни за какую локацию он не отвечает, то, видимо, рандомные группы формируются из него. Попробовал сначала эксперимент поставить на кошках наёмниках - и проканало вроде. Но я пока что какбэ не уверен в назначении этого файла. Так что первый вопрос: а за что отвечает этот самый character_desc_simulation.xml?

Ну и скролля шаблоны в этом файле натолкнулся на такую строчку:

wpn_ak74u = 1, 0, 1, 0 \n

Ну с названием ружбайки всё понятно, а вот что за цифери стоят потом? За что они отвечают? Так как в аналогичных строках для другого оружия я встречал только 1 и 0, то предполагаю, что каждая цифра означает наличие/отсутствие чего-либо. Но нигде в каментах к файлу я не обнаружилописания этих переменных. Причём иногда эти цифры не ставятся. Так что подскажите, камрады.
И решусь задать ещё один вопрос - он ко мне пришёл прямо сейчас, так что по его поводу я ничего не искал.
Вот раздобыл я кучу ружбаек разных в процессе игры. Мне стало скучно и пошёл я на Кордон, ну чтобы пацанов из Лагеря Новичков норм вооружить значит. Затарился патронами нужными, чтобы неписи могли ружбайки юзать, броников набрал кучу. 300 кг между прочим в рюкзаке потащил в кустюме специальном. Приношу, раздаю броники так, чтобы новый пнджак был дороже, чем старый у чувака. Отбегаю, он применяется - и вот ужо у костра сидят: долговец, свободовец, вояка и монолитовец, ну и базарят - красота да и только. Один только чувак в белой куртке так и не сменил одёжку, при этом его ранг уже был "мастер" на момент раздачи. Чому так произошло? Но это не главный вопрос, ибо всё интереснее стало, когда я пукалки начал раздавать. Чуваки, вооружённые "калашами", новыми ружбайками, даже "грозой", отказываются пользоваться. Просто оставляют в инвентаре. Более того, через несколько дней количество юзеров АК-74 только увеличилось. Ситуация такая, что когда НПС получает "калаш", то он тут же ставит оную бабаху в слот, если есть нужные патроны, а предыдущую пукалку выбрасывает в инвентарь. Я предположил, что на каждой локации, или для каждого типа НПС есть свой приоритет по оружию, причём цена ствола роли не играет. Так вот, где прописаны эти параметры и насколько глобально они влияют на поведение НПС?

Ну вот как-то так. Если пропустил ответы в выдаче поиска, то ткните, пожалуйста носом, но больно не бейте :)

 

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

 

 

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

Этот самый фактор где-то в конфигах прописан, или "волшебное число" в движке прибитое гвоздями, или как-то из чего-то высчитывается ?


 

 

Но самое интересное не это, а то, что игра не ругалась на эту ошибку при запуске. Как это понимать?

Очень просто: при запуске игры проверка какой-либо валидности содержимого скриптов не производится. А вот при вызове кода, содержащего ошибку будет вылет. Это как раз подтверждает, что данная ф-ция у Вас не вызывается - иначе была-бы ошибка.

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

@UnLoaded, а почему она не вызывается? Делал по подобию, потом Карлан предложил код. Ни в том, ни в другом случае функция не вызывается?
А как её тогда вызвать?

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

 

 

Этот самый фактор где-то в конфигах прописан, или "волшебное число" в движке прибитое гвоздями, или как-то из чего-то высчитывается ?

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

 

 

 

Юзание тайника можно "увидеть" если написать к ним свой биндер, а у него отлавливать калбек callback.use_object. Причем Вы можете сделать свою секцию для предмета O_INVBOX своего тайника со своим биндером, не затрагивая уже существующие тайники, ибо задача перецепляния Вашего биндера в конфигах игры к существующим долгая и для внимательных людей.

Благодарю за исправление, а то я напутал с коллбеками, да, в оригинале use_object возможно применить к любому юзабельному гейм-объекту.

 

 

 

Собственно вопрос - в биндере сталкера есть callback.take_item_from_box и есть callback.on_item_take, но первый не вызывается на взятие предметов из трупа, а второй как бы не того плана калбек. Как отловить каллбек на взятие преметов именно из трупа, вот чтобы можно было прицепить на него function takeItemFromCorpse(corpse,item). Благодарю!

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

 

@Vier_E, с таким тебя кроме как в тутор больше некуда отправить. По цифрам после оружия, могу ошибаться, но вроде это мусор, у оружия после цифры могут идти только флаги аддонов, вероятность спавна и установка состояния.


То есть грубо говоря фулл комплект выглядит как-то так:

wpn_ak74 = 1, scope, silencer, launcher, prob=0.8, cond=0.5 \n
  • Спасибо 1
Ссылка на комментарий

Такой вопрос: а кол-во купленного\проданного торгашам шмота где-нибудь учитывается ? Т.е. можно-ли отследить сколько денег\шмота "прошло" в обоих направлениях между ГГ и конкретным торгашом ?

 

Ф-ция change_goodwill(...) вроде как может применяться в произвольной комбинации ? Т.е. можно установить благосклонность НПС -> ГГ и ГГ -> НПС. А в чем смысл ? Понятно, что изменение благосклонности торгаша к ГГ имеет смысл, к примеру в рассчете стоимости шмота при торговле, а вот обратное отношение где учитывается\используется ?

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

Такой вопрос: а кол-во купленного\проданного торгашам шмота где-нибудь учитывается ? Т.е. можно-ли отследить сколько денег\шмота "прошло" в обоих направлениях между ГГ и конкретным торгашом ?

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

 

Ф-ция change_goodwill(...) вроде как может применяться в произвольной комбинации ? Т.е. можно установить благосклонность НПС -> ГГ и ГГ -> НПС. А в чем смысл ? Понятно, что изменение благосклонности торгаша к ГГ имеет смысл, к примеру в рассчете стоимости шмота при торговле, а вот обратное отношение где учитывается\используется ?

Я тебе скажу что и "прямое" отношение дефакто нигде не используется. Возможность такая есть, и использовать ее тоже можно с пользой, банально я сделал тесно переплетающуюся таблицу рангов, репутации, гудвилов, группировок, можно еще включать иное, можно сделать совсем по другому и будет лучше, мне просто надоело постоянно переделывать структуры своих монструозных таблиц. Чтобы сделать красиво и действительно уникально как я задумывал, надо писать таблицу невообразимых размеров, где индивидуально учитывать десятки параметров для каждого экономического агента. Отдельной разработкой это просто никому не надо будет, в рамках глобального мода я думаю это будет очень интересно.

 

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

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

Все же знают, что напрямую из логики НПС или чего-то еще нельзя вызвать функцию из другого скрипта, а только из xr_effects.script. Такой вопрос: как объявить свой скрипт глобально, чтобы из него можно было всё вызывать?

Добавлено Dennis_Chikin,

Только что в скриптовании разбирали - с самого amk уже можно. См. xr_logic.pick_section_from_condlist()

Ранее был известен под ником BoBaH_671.

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

 

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

 

Хм. это получится калбек на юзание трупа, а не калбек на извлечение итема из трупа. т.е. нужно типа take_item_from_corpse.

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

@BoBaH_671, файл - xr_logic.script, функция - function pick_section_from_condlist(actor, npc, condlist), там ассоциативный массив строится, там и меняй, и функцию и условия (xr_effects, xr_condiions). Еще советую переписать и xr_conditions с его артефактом :).

 

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

 


По теме отношений и торговли: если кому-то интересно я могу написать пример на основе массивов DTL о том как мне кажется будет относительно полным конфигом. 

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

Продублирую, ибо затеряется.

Копаясь в броне (а копаюсь я там давно), недавно заметил такой параметр power_loss. Интересно, что в релизе он присутствует только у 2-х комбезов: сталкера и "Ветер свободы" (значения 0.87 и 0.77 соответственно).
Из названия могу предположить, что эта строчка отвечает за расход выносливости конкретно в этом костюме, но я не уверен. В сборке 2571 есть похожая строчка: power_restore_speed, она есть только у одного комбеза, в релизе он вырезан.
Кто что скажет?

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

 

 

Кто что скажет?

Ну что тебе сказать: все ты правильно понял, именно выносливость увеличивается(должна) в этих двух брониках. Хотя не факт, что этот power_loss читается и отрабатывается движком, но это ты уж сам можешь проверить, поигравшись со значением и побегав в этих брониках.

Добавлено Dennis_Chikin,

Факт. А вот restore - только в окошке в свойствах отображается.

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

@Vier_Eза что отвечает этот самый character_desc_simulation.xml?

 

Тут изначально содержатся конфиги нпс которые будут спавниться в лагеря где не предусмотрены локационные нпс, к примеру новички которые приходят на кордон со свалки. Так же тут профили свободовцев на барьере (это прописано в All.spawn). Ещё там находятся уникальные нпс (Отец Диодор, Воробей, Прапор, Барин и т.д.). Ну и там прописаны профили нпс на арене.

 

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

 

Теперь мой вопрос  - может кто скинуть ссылку на скрипты чтоб нпс кидали гранаты и лечили союзников? Или бы в личке объяснили бы как такой скрипт сделать?

Где-то я скачивал его 4 года назад, но уже не помню где, винт где он у меня был сдох. В поиске набирал, но то что надо не нашёл.

Мод с уже встроенным мне не нужен, я шаманю с Р.М.А модом, хочу туда добавить.

И  вот 2й вопрос, насколько я помню, те скрипты с метанием гранат и лечением союзников были беззвучные, а даёт ли движок ТЧ возможность добавить звук для нпс?

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

NFSNeedForSpirt.gif

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

В оригинале есть какой-нибудь эффект, ну чтоб типа ГГ от взрыва сильно дёрнуло? Название не подскажите?

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

Ранее был известен под ником BoBaH_671.

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

Полная сборка всех AI-паков от xStream, Bak и Monnoroch для ТЧ, ЧН, ЗП.

Для ТЧ, как для оригинала, так и для чистого АМК 1.4.1. Есть также Full_AI_edition_Super (xStream+Bak+Monnoroch).

Читай ридми, адаптируй. Ссылка - http://rusfolder.com/44084384

Изменено пользователем BFG
  • Спасибо 1

"Кругом зомби.....у меня кончаются патроны...."

Ссылка на комментарий
В поиске набирал, но то что надо не нашёл.

Сейчас попробовал: вбил "AI пак для ТЧ SoC" - 153 тыс. результатов на Яндексе... Включая и то, о чем BFG уже написал.

 

какой-нибудь эффект, ну чтоб типа ГГ от взрыва сильно дёрнуло?

Название не подскажу, но выбрать из имеющихся не так уж и сложно:

local pp_eff_id = 12001
local pp_eff_power = ....
level.add_pp_effector("duality_circle.ppe", pp_eff_id, true)
level.set_pp_effector_factor(pp_eff_id, pp_eff_power)
Файлы с имеющимися эффектами смотреть в gamedata\anims, их там не более 3-х десятков.
 

 

Такой вопрос: а кол-во купленного\проданного торгашам шмота где-нибудь учитывается ? Т.е. можно-ли отследить сколько денег\шмота "прошло" в обоих направлениях между ГГ и конкретным торгашом ?

 

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

Порыл, так сказать, чуток носом, вроде нашел вариант без всяких супер-костылей и монструозностей: в bind_stalker, добавляем кэллбэк "trade_sell_buy_item" и обработчик к нему.

Вот то, что у меня сейчас в начально-тестовом варианте:

function actor_binder:trade_sell_buy_item(obj, dir, cost)
     if obj then
          local who_name = nil
          if obj:parent() then
               who_name = obj:parent():character_community() --profile_name()
          end
          local msg = tostring(who_name)..", "..obj:section()..", "..tostring(dir)..", "..tostring(cost)
          news_manager.send_tip(db.actor, msg, nil, nil, 30000)
     end
end

Результат на экране:

 - при покупке бинта у сталкера - "stalker, bandage, false, 40"

 - при продаже хлеба сталкеру - "actor, bread, true, 4"

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

 

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

@UnLoaded, это выйдет только без мгновенного обновления, чтобы сделать мгновенное обновление надо будет городить юбер-костыль. Ну если статистики ради - то на здоровье, можно и так. Если копнешь чуть глубже там этот артефакт всплывет, я когда еще для 6 версии писал, я там на двух по моему массивах и трех коллбеках делал это все, так как без костылей паренты не успевали обновляться, даже по таймеру, а далее еще были проблемы с интерфейсом, но решить можно. В оригинале это вообще негодный коллбек, выведенный, предполагаю, только для статистики, кстати она уже там есть, только для денег, можешь вставить и товары, ну а если делать что-то большее чем статистика, то тут этот коллбек играет далеко не ведущую роль, но тоже задействован. В оригинале есть на торговлю еще 3 коллбека, это trade_perform_operation, он как раз для денег, и trade_start и trade_stop, но они тупо сигнальные, поэтому туда кроме самого факта начала/конца ничего не передается (но как отследить и того и другого я думаю догадаться элементарно). Они, к слову, заюзаны в mob_trader.script, можешь посмотреть. 

 

В общем на 6 патче околонормально сделать можно, но окольными путями, как я и делал на додвижковом варианте.

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

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

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

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

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

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

Войти

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

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

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