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

[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-го билда, все работало

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

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

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

Nevada47,

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

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

 

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

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

lekzd,

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

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

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

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

Министр

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

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

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

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

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

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
Ссылка на комментарий

Подскажите как изменить изношенность оружия 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а о создании квестов в теме Справочник по функциям и классам (ссылка, кстати, есть в шапке <_< ). Министр.

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

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

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

ALEX BOY,

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

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

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

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

таймеры АМК

 

 

IQDDD,

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

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

 

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

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

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

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

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

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

Войти

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

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

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