Общие правки игровых файлов Сталкер
Сделай архив из файла "actor.ltx" и просто прикрепи ссылку на этот архив (загрузи архивчик на Яндекс-Диск или Облако-Майл и потом скопируй ссылку) к своему сообщению, с пожеланиями необходимых параметров.
Те, кто ЗАХОЧЕТ помочь тебе, а потом еще и сможет найти время для этой помощи тебе - обязательно переделают тебе этот файл.. Останется просто раз-архивировать и засунуть на его постоянное место.
Вес - 450, макс 500 (на худе или в инвентаре конечно же покажет другие цифры, но это только отображение картинки). Прыжок - 9. Базовая точность ГГ - 0,8 (остальное - 0).
Все иммунитеты и способности ГГ (мораль, голод, алкоголь, сон, кровотечение, и прочее) - уменьшены \ увеличены на один порядок от запятой (было 0,07 стало 0,007, или наоборот, было 0,0128 стало 0,128).
P.S. Кстати... В НС2016 - в файле "актера" назначается не только просто переносимый вес, но и максимально возможный. А вот где именно назначается само отображение максимального веса - я особо не искал, потому как не очень-то и нужно было...
Ссылка правленый файл актера: cloud.mail.ru/public/13RH/snkwT8wYy
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- zima59
- Не в сети
- МОДЕРАТОР
- ЛЕГЕНДА ЗОНЫ
- Сообщений: 4503
- Спасибо получено: 29666
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Две gamedata и название один в один? Ты ни чего не путаешь? Так быть не может.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Воссталкерившийся
- Не в сети
- МОДЕРАТОР
- ЛЕГЕНДА ЗОНЫ
- Сообщений: 4813
- Спасибо получено: 37162
2 геймдаты? В обоих одновременно, не пробовал править?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- LAKI
- Не в сети
- МОДЕРАТОР
- ЛЕГЕНДА ЗОНЫ
- Сообщений: 6489
- Спасибо получено: 50172
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Я просто уменьшил на порядок (а в Оружии и Броне - на Два порядка) вес любого предмета в рюкзаке. А что там в основном? Правильно! Патроны, Арты, Оружие, Броня.
Посидел часов пять-шесть за правкой веса предметов в параметрах игры, зато у меня теперь по-полторы тыщи патронов 5.45, 7.62, 12х70 Дробь, и около десятка стволов... Ну и прочее... И все это весит у меня около 30-40 килограмм, при разрешенных - не более 100 кг. И рюкзак не рвется, и всего - ну просто много!
Кому надо будет - пишите в личку, постараюсь сразу скинуть, хотя служба не дает свободного времени ну просто совсем.
zima59
Ты не поверишь, но то, что ты мне советуешь про дисперсию и Биорадар- вычислил именно я... Потому что проблемы с Биорадаром и в НС 2010 --- тоже были если править базовый разброс ГГ. Я просто не стал про это писать в теме НС 2016
stalkermod.ru/forum/29-modostroenie/35635-obshhie-pravki-igrovyh-fajlov-stalker/Page-8/Page-114.html#233487
А вот за подсказку расположения "отображения" циферок максимального веса в секции инвентаря - мой тебе респект и пожимание руки!! В НС2010+ДМХ+"еще чего-то там" --- это как раз пригодится..
P.S. Поправь тогда мой текст, где я описывал изменения (пост #233747, текст под спойлером), если тебе не трудно. В смысле - допиши\поправь описание по правке веса, где\куда...
Не надо приписывать себе то, что давно известно.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- zima59
- Не в сети
- МОДЕРАТОР
- ЛЕГЕНДА ЗОНЫ
- Сообщений: 4503
- Спасибо получено: 29666
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- mixa280
- Не в сети
- НОВИЧОК
- Сообщений: 133
- Спасибо получено: 92
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- zima59
- Не в сети
- МОДЕРАТОР
- ЛЕГЕНДА ЗОНЫ
- Сообщений: 4503
- Спасибо получено: 29666
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- mixa280
- Не в сети
- НОВИЧОК
- Сообщений: 133
- Спасибо получено: 92
Пропиши af_part_monolit как это делается смотри здесь .
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- irinka.md
- Не в сети
- ПРИБЫВШИЙ
- Сообщений: 17
- Спасибо получено: 3
Krus1971. Как называется Булыжник, чтобы прописать его в рюкзак? Спасибо.
Пропиши af_buliz .
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Есть два гарантированных способа. Оба способа - не мои. Найдено на просторах Интернета.
1. Прописать нужный предмет Торговцам.
Редактирование торговцев
Содержание
1 Общее
2 Файлы
2.1 Структура файла
2.2 Расширяем ассортимент
3 Авторы
Общее
Урок посвящен редактированию ассортимента торговцев в игре. Эта, в общем-то несложная процедура у многих вызывает вопросы, поэтому я и решил разъяснить, что да как.
Файлы
Ассортимент товаров у торговцев хранится в файлах вида trade_[...].ltx, где ... - системное имя торговца. Это файлы:
trade_barman.ltx - Бармен
trade_dolg.ltx - сержант Петренко на базе группировки "Долг"
trade_ecolog.ltx - Сахаров
trade_freedom.ltx - Скряга на базе группировки "Свобода"
trade_trader.ltx - Сидорович
trade_generic.ltx - обычный сталкер
Все они хранятся в папке:
...\S.T.A.L.K.E.R\gamedata\config\misc\...
Структура файла
Разберем структуру файла trade_barman.ltx:
[trader]
buy_condition = barman_generic_buy
sell_condition = {+yan_labx16_switcher_primary_off} barman_after_brain_sell, {+bar_darklab_document_done} barman_after_darkvalley_sell, barman_start_sell
buy_supplies = { yan_labx16_switcher_primary_off} supplies_after_brain, { bar_darklab_document_done}
supplies_after_darkvalley, supplies_start
Здесь содержатся условия, от которых зависит диапазон продаваемых/покупаемых торговцем предметов. То есть, например, после выполнения квеста на "Янтаре" соответствующее условие считается выполненным, и ассортимент сменяется на новый, из другого раздела.
После этого идет раздел [barman_generic_buy], содержащий предметы, которые бармен покупает.
Структура записи в этом разделе:
wpn_walther = 0.3, 0.1
wpn_walther - имя предмета, в данном случае - пистолет "Вальтер"
0.3 - максимальная цена, по которой торговец купит предмет
0.1 - минимальная цена, по которой торговец купит предмет
Цена зависит от репутации игрока.
Далее идет раздел [supplies_start] - ассортимент, предоставляемый барменом в начале игры. Он поделен на категории:
[supplies_start]
;'''Аммуниция'''
ammo_9x18_fmj = 15, 0.6
...
;'''Оружие'''
wpn_pb = 3, 0.6
...
;'''Броники'''
stalker_outfit = 3, 0.7
...
;'''Медикаменты'''
bandage = 5, 0.6
...
;'''Еда'''
bread = 10, 0.5
...
На самом деле можете добавлять новый предмет, куда захотите, все эти "категории" существуют исключительно в целях удобства. Игра их не учитывает.
Теперь о структуре одной записи:
wpn_walther = 3, 0.6
wpn_walther - имя предмета, в данном случае - пистолет "Вальтер"
3 - количество предметов этого типа у торговца
0.6 - вероятность появления каждого из них
То есть если значения равны 4, 0.5, то это означает, что у торговца в ассортименте появятся два предмета этого типа.
Далее идет раздел [barman_start_sell]. Рассмотрим структуру записи в нем:
wpn_walther = 2, 4
wpn_walther - имя предмета, в данном случае - пистолет "Вальтер"
Цена высчитываетя по формулае (2+4)/2 * базовую цену предмета*(МР).
Модификатор Репутации (МР) - Цена зависит от репутации игрока. (по умолчанию = 1)
Расширяем ассортимент
Чтобы добавить в начальный ассортимент, например, винтовку FN2000, проделаем следующее:
1. Добавим её в раздел [supplies_start]:
;Оружие
...
wpn_fn2000 = 2, 0.5
2. Добавим её в раздел [barman_start_sell]:
;Оружие
...
wpn_fn2000 1, 3
Ну а чтобы оно не пропадало после выполнения важных заданий, запишите её и в ассортименты для выполненных условий.
Авторы
Статья создана:
BAC9-FLCL
Редактор:
Deja Vu
2. Сделать скрипт спавна предмета, через уже существующий в игре готовый скрипт.
Скрипт спавна предмета
config\system.ltx
scripts\ui_main_menu.script
Остальное будем делать с нуля. Я придерживаюсь политики минимального вмешательства в уже имеющиеся файлы.
Скрипт
Итак, как это сделать. Начнем с самого простого. Сначала создадим наш новый скрипт, который и будет заниматься вызовом других скриптов. Назовем его ui_cheat.script и положим ко всем остальным скриптам.
Вот его содержание:
-- инициализация
class "cheat" (CUIScriptWnd)
function cheat:__init(owner) super()
self.owner = owner
self:InitControls()
self:InitCallBacks()
end
function cheat:__finalize() end
function cheat:InitControls()
-- здесь будут все контролы
end
function cheat:InitCallBacks()
-- здесь будут все каллбаки (ну или обработчики)
end
-- сразу созадим ф-ию для выхода
function cheat:on_quit()
local console = get_console()
self:GetHolder():start_stop_menu (self.owner, true)
self:GetHolder():start_stop_menu (self,true)
self.owner:Show (true)
-- если мы вызывались из игры, то убираем главное меню
if level.present() and (db.actor ~= nil) and db.actor:alive() then
console:execute("main_menu off")
end
end
Теперь нужно как-то этот скрипт вызвать. Я решил пойти по проторенной дорожке, и вызывать его из главного меню. Пока мы не будем создавать там новых кнопок, а повесим его запуск на горячую клавишу. Например на F1, из игры будет удобно жать Esc и сразу F1. Но можете и другую кнопку использовать. Итак, открываем файл ui_main_menu.script, идем в самый конец и ищем там такую ф-ию:
function main_menu:OnKeyboard(dik, keyboard_action)
Это обработчик нажатий клавиш. Ииспользуемые клавиши перечислены в lua_help.script (ищите строку C++ class DIK_keys). Итак, вместо
-- if dik == DIK_keys.DIK_S then
-- self:OnButton_load_spawn()
-- else
if dik == DIK_keys.DIK_Q then
self:OnMessageQuitWin()
end
мы напишем
-- раскоментируем и заоодно включим убранное спавн меню
if dik == DIK_keys.DIK_S then
self:OnButton_load_spawn()
elseif dik == DIK_keys.DIK_Q then
self:OnMessageQuitWin()
-- а вот это обработка кнопки F1. при ее нажатии будет вызываться ф-ия OnButton_cheat()
elseif dik == DIK_keys.DIK_F1 then
self:OnButton_cheat()
end
То есть при нажатии на S будет вызывать спавн меню, на Q - мгновенный выход из игры, ну а F1 запустит функцию OnButton_cheat().
То есть, вот один из вариантов запуска, привязка к горячей клавише. Но еще нет самой ф-ии, поэтому допишем в конец файла:
function main_menu:OnButton_cheat()
-- если еще ни разу не вызывали, то обозначим наш новый скрипт
if self.cheat_dlg == nil then
self.cheat_dlg = ui_cheat.cheat()
self.cheat_dlg.owner = self
end
-- останавливаем родительский элемент, запускаем свой, но родителя показываем.
self:GetHolder():start_stop_menu(self.cheat_dlg, true)
self:GetHolder():start_stop_menu(self, true)
self:Show(true)
end
Запуск по кнопке уже есть, но нет возврата обратно. Исправим это, вернемся к файлу ui_cheat.script и сделаем там обработчик нажатий клавиш. В конец файла допишем:
function cheat:OnKeyboard(dik, keyboard_action)
CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
-- сразу же производим действия для возврата
self:on_quit()
-- на выход повесим Esc
if dik == DIK_keys.DIK_ESCAPE then
-- тут ничего не делаем
end
end
return true
end
Теперь надо проверить работоспособность. Запускаем игру, в главном меню жмем F1, анимация должна тормознуть, мышь бегать. Если произошел вылет - открываем блокнот и вставляем из буфера предсмертное послание игры. (Надеюсь, все помнят, что при ошибке и краше в буфере остается лог ошибки?) Если вылета нет, то нажимаем Esc и возвращаемся в меню. Такую же проверку желательно провести и в самой игре. Визуально должен пропасть HUD, но должна остаться картинка. Можно снимать скриншоты
Предметы
Теперь наша задача в том, чтобы в обработчик нажатий клавиш внести новые ф-ии. Начнем, например, со спавна предметов. Посмотрим, как спавнятся квестовые монстры и вещи и сделаем также (добаляем в конец ui_cheat.script):
-- spawn_item - необходимый предмет
-- dist - радиус появления (случайно)
function cheat:spawn_item(spawn_item, dist)
local pos = db.actor:position()
local dir = db.actor:direction()
pos = pos:add(dir:mul(dist))
-- создаем предмет в dist метрах прямо перед нами
alife():create(spawn_item, pos, 1, db.actor:game_vertex_id())
end
Можно спавнить предметы прямо в инвентарь -- Neo][
Функция будет выглядеть следующим образом(соответственно надо учитывать отсутствие параметра dist, при вызове функции и не применять при спавне техники и монстров):
function cheat:spawn_item(spawn_item)
alife():create (spawn_item, db.actor:position(), db.actor:level_vertex_id(),
db.actor:game_vertex_id(), db.actor:id())
end
Добавление от HikeR.
Таким образом, кстати, передаются квестовые предметы. Используйте в своих скриптах и новых квестах.
Функцию можно добавить к существующей, тогда при ее вызове будет проверятся количество аргументов
и вызываться нужная. В С++ это называется "перегрузка" (если не ошибаюсь
Теперь необходимо вызвать эту функцию. Привяжем кнопки 1 и 2 на цифровой клавиатуре к появлению Грозы и патронов к ней. В функцию cheat:OnKeyboard после строки:
if dik == DIK_keys.DIK_ESCAPE then
добавим следующее:
elseif dik == DIK_keys.DIK_NUMPAD1 then self:cheat1()
elseif dik == DIK_keys.DIK_NUMPAD2 then self:cheat2()
и создадим эти функции (опять добавляем в конец файла):
function cheat:cheat1()
-- колдуем грозу на расстоянии 3 метров.
self:spawn_item("wpn_groza", 3)
end
function cheat:cheat2()
self:spawn_item("ammo_9x39_sp5", 3)
end
Транспорт
Спавнить транспорт мы будем аналогично, но тут есть небольшая проблема. В конфигах для траспорта отсутствуют необходимые параметры, все-таки машины в игре были вырезаны. Но нам это не помеха, поэтому начнем с Нивы.
Создадим новый файл с именем cars_spawn.ltx
[ven_niva]
class = SCRPTCAR
cform = skeleton
visual = physics\vehicles\niva\veh_niva_u_01.ogf
Сохраним его к остальным конфигам транспорта, то есть в config\models\vehicles. Это минимальный набор для правильного появление нового объекта в игре. Но игра еще не знает, что мы добавили новый конфиг, поэтому немного подредактируем system.ltx. В начале файла есть множество команд #include ..., они подключают конфиги. найдем последний include и добавим наш конфиг:
#include "models\vehicles\cars_spawn.ltx"
Далее по накатанной дорожке. Допишем функцию вызова спавна:
function cheat:cheat3()
self:spawn_item("ven_niva", 5, 10)
end
и назначим ей кнопку 3 на цифровой клавиатуре:
elseif dik == DIK_keys.DIK_NUMPAD3 then self:cheat3()
Все. Можно запускаться и смотреть. Жмем Esc, потом F1 (главное меню пропадает, остается просто картинка), потом 1, 2 или 3 на цифровой клавиатуре. в выбранном радиусе будут появляться автоматы, патроны и Нивы.
Однако, оружие и боеприпасы при появлении падают на землю, а вот траспорт остается висеть в воздухе. Я пытаюсь понять, что можно сделать, но пока просто киньте в нее болт. Машина упадет и покатится, если стоит на неровной поверхности.
Продолжение следует...
Монстры
Аналогично добавляем монстров и прочую живность. Функция:
function cheat:cheat4()
-- создаем монстра подальше от нас
self:spawn_item("dog_weak", 20)
end
Обработка клавиши 4
elseif dik == DIK_keys.DIK_NUMPAD4 then self:cheat4()
Сон по желанию
Если у Вас установлен Dream mod, то можно и его повесить на кнопку.
function cheat:cheat5()
sleep_manager.sleep_three_hours()
end
Предполагается, что имя скрипта sleep_manager.script, а в нем есть функция sleep_three_hours(), то есть спать 3 часа. Сам я не пользовал этот мод, поэтому могу ошибаться.
Внимание!!!
При описанном способе спавна есть некоторые трудности. Предмет создает в направлении вектора игрока, который не всегда совпадает с направдением взгляда. Можете включить внешний обзор и увидеть, что при небольших поворотах ноги игрока не двигаются. Чтобы гарантированно повернуться сделайте пару шагов вперед
Желательно выбирать ровную поверхность, либо поверхность с наклоном от игрока. Если спавнить в гору - то предмет вообще не появится, вернее он появится, но провалится под уровень.
Первый способ проще, второй - надежнее и универсальнее, но сложнее.
Выбор за тобой.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- continent
- Не в сети
- ЗНАТОК ЗОНЫ
- Сообщений: 275
- Спасибо получено: 462
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- LAKI
- Не в сети
- МОДЕРАТОР
- ЛЕГЕНДА ЗОНЫ
- Сообщений: 6489
- Спасибо получено: 50172
Попробуй вот такой вариант:
Открыть файл: amk_utils.script
И замени: RestrictionStock = 1
На: RestrictionStock = nil
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Vieras
- Не в сети
- ВЕТЕРАН ЗOНЫ
- Сообщений: 1030
- Спасибо получено: 5294
LAKI Ой! А у меня нет такого файла
…ссылки на видео просьба не предлагать…
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- LAKI
- Не в сети
- МОДЕРАТОР
- ЛЕГЕНДА ЗОНЫ
- Сообщений: 6489
- Спасибо получено: 50172
Найти функцию:
=============
<menu_sound random="1" >
<!--whell_sound>car\apc_run</whell_sound>
<whell_click>car\test_car_stop</whell_click-->
<menu_music>music\Terrapack-Empty_noise</menu_music>
<menu_music>music\ma\Into_Oblivion</menu_music>
<menu_music>music\ma\Mi_Pobedim</menu_music>
<menu_music>music\ma\Svet_Dalekoy_Zvezdi</menu_music>
<menu_music>music\ma\Triumf_Voli</menu_music>
<menu_music>music\ma\Uvertura</menu_music>
<menu_music>music\ma\Verni_Angel_Moi</menu_music>
<menu_music>music\ma\Vstan_S_Kolen</menu_music>
<menu_music>music\ma\Neverland</menu_music>
<menu_music>music\ma\Pustoy_Perron</menu_music>
<menu_music>music\ma\Vrema_povernut</menu_music>
<menu_music>music\ma\Zvezda</menu_music>
<menu_music>music\ns\IWantToBeWithYou</menu_music>
<!--menu_music>music\oop\music_buusty4</menu_music>
<menu_music>music\oop\music_buusty5</menu_music-->
</menu_sound>
И заменить на:
============
<menu_sound random="0" >
<menu_music>$no_sound</menu_music>
</menu_sound>
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Если нет ответа на первый вопрос, то на такой вопрос ответ нужен если есть: Как сделать так, чтобы все стандартные тайники были видны или как настроить их стоимость? Ответ "А ты не пробовал сначала купить тайники, сделать скриншоты и по скрину искать" меня не устроит!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Воссталкерившийся
- Не в сети
- МОДЕРАТОР
- ЛЕГЕНДА ЗОНЫ
- Сообщений: 4813
- Спасибо получено: 37162
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
открываешь gamedata\scripts\ui_main_menu.script там ищешь строки
if dik==DIK_keys.DIK_Q then
self:OnMessageQuitWin()
elseif dik == DIK_keys.DIK_H then
local treasures = {
{location = "zat", cnt = 55},
{location = "jup", cnt = 50},
{location = "pri", cnt = 31}
}
for k,v in pairs (treasures) do
for i=1,tonumber(v.cnt) do
xr_effects.give_treasure(nil, nil, {tostring(v.location).."_hiding_place_"..i})
end
end
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Сталкеров в Зоне
|