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

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


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

гопыч, в bind_stalker => actor_binder:on_item_take (obj) вставляешь:

if obj and obj:section() == "device_pda" then
local snd_obj = xr_sound.get_safe_sound_object([[путь\до\звука]])
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 5.0)
end

Как видишь, надо вставить путь до звука.

 

// Зачем лишние проверки? Одной проверки секции предмета достаточно. Министр.

Министр, Как говорил Artos, проверка на существование итема не лишняя.

// При этом и достаточно не нужная. Министр.

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

Garry_Galler, Через внешнюю программу:

 

пишешь программу с постоянным циклом через ~100 мс

на С и Delphi есть функция GetAsyncKeyState(key) - возвращает true или false в зависимости от нажатия кнопки номер Key

в цикле перебираешь все 200 клавиш

и записываешь последовательность нажатия в файл

 

если нужно скриптами из игры это читать, то тут валялся где-то мод shoc_keylogger

 

фактически получается клавиатурный шпион, который начинает/перестает работать только после нажатия [~]

 

как-то делал такую прогу для 1935-го билда, все работало

i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх

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

Доброго вечера. Подскажите, где нужно прописать диалоги одного НПС другому, чтоб сработал инфопоршень на сдачу, получение квеста.

«Ну и жесть!» Сказал асфальтовый каток, оглянувшись назад на бывшую "копейку".

Nevada47.gif

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

Nevada47,

Подскажите, где нужно прописать диалоги одного НПС другому

одного NPC другому - это как? Неписи друг с другом не общаются.

 

// Он имел в виду дублирование диалогов одного НПСа другому, т.е. что бы у них они были одинаковы. Министр.

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

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

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

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

 

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

lekzd,

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

Раз скриптово никак - то и смысла нет эту тему реализовывать.

ЗЫ: А GetAsyncKeyState() это ведь WinAPI, а не С или Делфи.

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

Министр

При этом и достаточно не нужная. Министр

А вот это ты зря. Ты не представляешь сколько раз такие вот "ненужные" на первый взгляд проверки спасали меня от вылета на рабочий стол.

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

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

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

Вопрос: а как добавить квесту детальное описание? Вот Title - это заголовок. Text - название задачи. А где и как прописать описание?

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

Gonarh,

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

------------------------------------------------------------------------------------

Вот примерный код функции проверки попадания точки в пятиугольный полигон (у меня код был с выводом данных на худ) - в качестве объекта проверки я использовал ГГ:

 

минус в том, что данный полигон двумерный - код для трехмерного полигона будет сложнее. Я его так и не сделал. Знаний по векторной алгебре маловато.

local xp ={-236.02,-241.46,-249.19,-249.29,-242.755}  -- Массив x-координат полигона
local zp = {-172.39,-174.65,-172.84,-166.224,-167.63} -- Массив z-координат полигона

function GetPointInPoligonNew(xp,zp,point)
local c = 0
local j = #xp
for i = 1, #xp do 
  if ((((zp[i]<=point.z) and (point.z<zp[j])) or ((zp[j]<=point.z) and (point.z<zp[i]))) 
  and (point.x > (xp[j] - xp[i]) * (point.z - zp[i]) / (zp[j] - zp[i]) + xp[i])) then
   c = 1- c
end
j = i
end
return c
end

function Update()
local point = db.actor:position()
local n = this.GetPointInPoligonNew(point) 
return n == 1 
end 

Функция вернет true когда объект - в данном случае ГГ - окажется в указанном  полигоне.

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

Gonarh,

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

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

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

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

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

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

 

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

Подскажите как изменить изношенность оружия NPC?

 

// Какое именно оружие? Которое у него в руках или то, которые выпадает при смерти? На то которое в руках смысла менять износ нету, т.к. если не ошибаюсь неписям пофиг на него. Износ же оружия выпадаемого при смерти (или остающегося у НПСа в рюкзаке) определяется в death_manager.script. Министр.

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

Ув. товарищи форумчане!!! Кто нибудь может подсказать, какие файлы нужно отредактировать в геймдате. Хочу у свободовского торговца Скряги сделать параметр бесконечных денег, потому что у него всего доступно 5000 руб. в чистой игре. Тоговать с ним при таких условиях, согласитесь не очень удобно, когда у тебя на продажу вещей в 2, а то и в 3 раза больше указанной суммы. Редактирование нужной строчки в файле под названием character_desc_military.xml (надеюсь опытным модмейкерам не надо объяснять за что этот файлик отвечает) приводит к тотальному вылету именно на армейских складах. Если кто-то хочет поделиться опытом, пишите пожалуйста в личку, чтоб посты не листать в дальнейшем. Спасибо заранее.

Ссылка на комментарий
// Какое именно оружие? Которое у него в руках или то, которые выпадает при смерти? На то которое в руках смысла менять износ нету, т.к. если не ошибаюсь неписям пофиг на него. Износ же оружия выпадаемого при смерти (или остающегося у НПСа в рюкзаке) определяется в death_manager.script. Министр.

А какие параметры я должен править в этом файле чтоб изменить износ оружия NPC которое выпадает после смерти?

Строгое предупреждение от администратора n6260
http://www.amk-team.ru/forum/index.php?sho...st&p=341828

Будешь ленится читать тему как следствие, получишь последствия ;)

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

Вобщем возникла у меня идея, каждому нпс свой визуал приделать, наделал текстурок моделек взял собрал это всё и решил на лагере новичков поэксперементировать, в all.spawn в блоках stalker, esc_lager в поле visual_name прописал путь к визуалу, создаю новую игру, и изменений не происходит. Только ли в all.spawn нужно менять путь к визуалу, ведь например в character_desc_escape описываюстья параметры всех нпс на локации.

Сообщение от администратора n6260
Для смены визуала просто измени визуал в чарестер_деске. И все. Алл_спавн не требуется трогать.

 

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

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

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

Усердно пилю Кордон...

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

Как выключить (или, хотя бы, убрать) раскачку камеры (головы) при беге/ходьбе? bobbing_effector изменял - эффекта не заметил.

Сообщение от администратора n6260
А сравнить файлик постпроцесс с таким же из оригинала?

 

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

Очень странно. Сначала я изменял секцию bobbing_effector hex'ом в самом .db архиве, чтобы не распаковывать. Нашёл, всё изменил. Результата нет. А вот щас распаковал, изменил и заработало. :mellow:

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

Несколько вопросов:

1. Как сделать, чтобы торговля у непися появилась только после определенного диалога?

Пример: говорю с неписем о рыбалке, после этого он начинает торговать.

2. Как сделать, чтобы диалог у непися исчез во время другого диалога?

Пример: говорю о помидорах, а диалог о огурцах исчезает.

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

Пример: заказываю у непися удочку, через 12 часов появляется диалог, что он ее принес + СМСка.

 

// Если честно, то все ответы можно найти посмотрев цикл статей malandrinusа о создании квестов в теме Справочник по функциям и классам (ссылка, кстати, есть в шапке <_< ). Министр.

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

Мне "Винторез" - единственный друг, надежда, опора и сила.
Уродов сегодня так много вокруг, патронов бы только хватило. (с)

Официальный Discord-сервер по NS OGSR. 
Неофициальный филиал "У Костра", но тоже Discord-сервер.

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

Всем нам хорошо известно, как ускорить или замедлить время в игре. За это отвечает параметр time_factor в alife.ltx. Но его значение записывает в сейв игры, поэтому если его изменить и загрузить игру, эффекта не увидим. Внимание, вопрос: как изменить time_facotr в файле сохранения?

Сообщение от администратора n6260
Всегда помогало просто погрузить актора в сон.
Ссылка на комментарий

ALEX BOY,

1. Как сделать, чтобы торговля у непися появилась только после определенного диалога?

2. Как сделать, чтобы диалог у непися исчез во время другого диалога?

Смотри тему "справочник". Там смотри про диалоги - вроде как все ответы должны быть. По п.1 ответ должен быть в части 3 "диалогов".

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

таймеры АМК

 

 

IQDDD,

как изменить time_facotr в файле сохранения?

Сохрани значение в pstor актора. При загрузке прочитай его обратно и поменяй тайм-фактор.

 

 

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

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

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

 

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

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

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

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

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

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

Войти

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

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

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