Шпаргалка AMK: Ковыряние
Ковыряние
Questions
Определение позиции актора
Где-то был PositionInformerPro от V.I.R.U.S'а, но не помню,на каком форуме я его видел. Удобная штука.
На крайняк допиши вот это в ui_main_menu.script в самый конец, по кнопке "титры" теперь будет вместо них выскакивать сообщение с координатами (Автор - не я):
function main_menu:OnButton_credits_clicked() -- Выдадим сообщение о нашем местоположении local text local vid local gvid local a = vector() -- Тип переменной local text a = db.actor:position() -- Наше положение в координатах vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000) end
Правка свойств ГГ: Чтобы БТР не стрелял в ГГ
Кому нужно убрать ГГ в качестве цели для техники на блокпосту, открывайте gamedata\config\scripts\esc\, там:
Для БТРа, в файле esc_blockpost_btr.ltx - строки target=actor заменить на target=nil
Для вертолёта, в файле esc_blockpost_heli.ltx - строки combat_enemy = actor заменить на combat_enemy = nil - либо удалить
Правка свойств ГГ: Некоторые переменные на примере actor.ltx
visual – модель персонажа.
max_walk_weight -максимальный вес, при достижении которого игрок перестает двигаться.
pickup_info_radius – радиус от ГГ, в котром над предметами выводятся их названия.
camera_height_factor – высота ГГ. По умолчанию стоит 0.85, но можно увеличить рост ГГ до
0.95 например.
disp_base – разброс. Если уменьшать, то и разлёт уменьшается соответственно.
wound_incarnation_v -скорость заживления раны.
cant_sprint_power_begin -порог силы меньше которого актер не может бежать в спринте.
hit_probability_gd_novice
hit_probability_gd_stalker
hit_probability_gd_veteran
hit_probability_gd_master
Эти строчки отвечают за вероятность попадания по вам, при разных уровнях сложности. Хотите
чтобы враги стреляли не очень метко, уменьшайте значения.
Также в файле присутсвуют комментарии на русском языке, так что разобраться в остальных
переменных не составит труда.
Config/System.ltx:
start_blood_size -размер раны чтоб начала капать кровь.
stop_blood_size -размер раны чтоб кровь остановилась.
max_weight – вес, с которым ГГ может бежать.
вращение камеры при попаданиях -рандомный баг на статике
вроде правится выставлением cam_inert > 0 в user.tlx
стартовые рублики ГГ зашиты в allspawn-e. Проще всего в первом квесте Волка
(gamedata/config/misck/task_manager.ltx строку найдешь сам) прописать нужную тебе сумму в
вознаграждения
Открываем ...\S.T.A.L.K.E.R\gamedata\scripts\escape_dialog.script, и ищем такую функцию
(строку):
function give_weapon_from_trader(trader, actor)
dialogs.relocate_item_section(trader, "wpn_pm", "in")
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(trader, "wpn_knife", "in")
--dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
end
После выделенной строки вставляем такую конструкцию:
dialogs.relocate_money(trader, здесь указываем необходиму сумму денег, "in")
dialogs.relocate_item_section(trader, "wpn_spas12", "in")
Должно получиться примерно так:
function give_weapon_from_trader(trader, actor)
dialogs.relocate_item_section(trader, "wpn_pm", "in")
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(trader, "wpn_knife", "in")
--dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_money(trader, 10000, "in")
dialogs.relocate_item_section(trader, "wpn_spas12", "in")
end
В итоге, после взятия у Сидоровича квеста на "Ночную звезду", в самом начале, ГГ будет выдано
10000 рублей и СПАС-12.
Правка свойств ГГ: Переносимый вес
Максимальный переносимый вес прописан в gamedata/config/creatures/actor.ltx строчка max_walk_weight
Отображение веса в инвентаре (выше этого значения нельзя бегать): gamedata/config/inventory_sect.ltx строчка max_weight.
Правка свойств ГГ: Отключение дрожания оптики
gamedata\config\misc\effectors.ltx
[zoom_inertion_effector]
camera_move_epsilon = 0.03
disp_min = 0.0
speed_min = 0.001
zoom_aim_disp_k = 0.18
zoom_aim_speed_k = 0.00
delta_time = 1350
заменить на:
[zoom_inertion_effector]
camera_move_epsilon = 0.03
disp_min = 0.00
speed_min = 0.000
zoom_aim_disp_k = 0.0
zoom_aim_speed_k = 0.00
delta_time = 2000
Правка свойств ГГ: Стартовый набор ГГ (от Сидоровича)
\gamedata\scripts\escape_dialog.script надеюсь ты найдёшь где там что кому отдаёт.
функция transfer_deneg выдаёт после квеста ночная звезда... Когда отдал, ему.
функция give_weapon_from_trader это когда перед выдачой квеста дает.
Правка свойств ГГ: Бессмертие
В папке gamedata\config\creatures есть файл actor.ltx. В нем находишь вот это (xxxxx - это уровень сложности на каком ты играешь, например master)
[actor_immunities_gd_xxxxx] burn_immunity = 1.0;коэффициенты иммунитета strike_immunity = 1.0 shock_immunity = 1.0 wound_immunity = 1.0 radiation_immunity = 1.0 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 1.0 fire_wound_immunity = 1.0
и меняешь цифры на 0 - ГГ будет бессмертным. Можно не все менять, тогда можно сделать, например, что ГГ будет пуленепробиваемым, но будет дохнуть в аномалиях и т. п.
Правка свойств ГГ: Голод
В actor.ltx поменял:
satiety_v = 0.000005 на 0.000025
теперь есть нужно почаще, раз в 4-6 часов, соответственно батоны не лишний вес в рюкзаке,
порой и за кусок хлеба дратся прийдется
satiety_health_v = 0.0001 на 0.00001
Правка свойств ГГ: Советы хардкорщика
В actor.ltx поменял
satiety_v = 0.000005 на 0.000025
теперь есть нужно почаще, раз в 4-6 часов, соответственно батоны не лишний вес в рюкзаке, порой и за кусок хлеба дратся прийдется
satiety_health_v = 0.0001 на 0.00001
Ну от чего так быстро восстанавливается здоровье? Теперь "кровь камня" будет приносить побольше пользы, а здоровье само по себе будет восстанавливатся довольно медленно.
bleeding_v = 0.0005 на 0.0025
wound_incarnation_v = 0.003 на 0.001
min_wound_size = 0.0256 на 0.005
Теперь без бинтов - никуды!
идее должен быть одинаков.
Можно например оставить в конфигах верхний потолок ttx чтоб в дальнейшем избежать неприятностей типа (двух обойм на человека).
При зависимости ttx настроек и ранга игрока создаеться совершенно иная концепция "сложности" которая может быть очень полезна для геймплея. В общем правка баланса в игре одна из самых сложных тем на сегодняшний момент.
В моем видение все таки интереснее ограничить сложность в игре в файле m.stalker а в частности на меткости врагов.
Вот мой вариант секции в файле астоr.ltx
hit_probability_gd_novice = 0.20
hit_probability_gd_stalker = 0.40
hit_probability_gd_veteran = 0.60
hit_probability_gd_master = 0.80
При новичке шанс попадания около 20% что являеться довольно оптимальным вариантом для первого прохождения игры.
Далее сложность по рангам начинает расти в арифметической прогрессии и достигает 80% на
мастере.
При мастере я намеренно не делаю упор на хардкор 1.0 т.к такая меткость абсолютно не соответствует действительности при том что уже при этих характеристиках ГГ уже начинает ощущать всю "прелесть" данного ранга.
Правка свойств ГГ: Объем рюкзака
Если у тебя АМК+два патча открываешь тот же amk_utils.script, в начале находишь вот это:
RestrictionStock = 1
и меняешь на это:
RestrictionStock = nil
1. Взять файл restriction_stock.script из первого патча для АМК и заменить им существующий.
2. В файле amk_utils.script заменить
это:
--Callback на взятия предмета в инвентарь гг из ящика
function actor_item_from_box(box, item)
end
--Callback на взятие предмета в инвентарь гг
function actor_item_take(obj)
if obj ~= nil and RestrictionStock ~= nil then
restriction_stock.restriction_of_stock(obj,0)
end
end
--Callback на потерю предмета из инвенаря гг
function actor_item_drop(obj)
if obj ~= nil and RestrictionStock ~= nil then
restriction_stock.restriction_of_stock(obj,1)
end
end
на это:
--Callback на взятия предмета в инвентарь гг из ящика
function actor_item_from_box(box, item)
if item ~= nil then
restriction_stock.restriction_of_stock(item)
end
end
--Callback на взятие предмета в инвентарь гг
function actor_item_take(obj)
if obj ~= nil then
restriction_stock.restriction_of_stock(obj)
end
end
--Callback на потерю предмета из инвенаря гг
function actor_item_drop(obj)
end
З.Ы. Только новые вещи не забудь в restriction_stock.script по аналогии с существующими добавить,
иначе ограничения на них не будут распространяться.
На данный момент мы имеем такие варианты:
4 объема оружия
2 объема брони
Плюс объем аптечек
1. Добавляешь через запятую ещё одну вложенную таблицу, например:
_weapons_C6 = {"оружие_раз","оружие_два","оружие_три"}
2. Добавляешь ещё одно условие в парсинге ниже:
elseif kk == "_weapons_C6" and count>2 then
amk.send_tip("Не многовато ли стволов, рембо?",nil,nil,5)
amk.drop_item(actor,_obj)
status = 1
break
здесь count>2 определяет, больше какого числа предметов будет срабатывать ограничение
для этой группы.
Вот, собственно, и всё. По аналогии сделай и для остальных групп предметов.
1. Добавляешь через запятую вложенные таблицы по числу новых групп, например:
_outfits_1 = {"костюм_раз"},
_outfits_2 = {"костюм_два"},
_outfits_3 = {"костюм_три"}
2. Добавляешь столько же условий в парсинге ниже:
elseif kk == "_outfits_1" and count>2 then
amk.send_tip("Для этого костюма в рюкзаке нет места",nil,nil,5)
amk.drop_item(actor,_obj)
status = 1
break
elseif kk == "_outfits_2" and count>2 then
amk.send_tip("Для этого костюма в рюкзаке нет места",nil,nil,5)
amk.drop_item(actor,_obj)
status = 1
break
elseif kk == "_outfits_3" and count>2 then
amk.send_tip("Для этого костюма в рюкзаке нет места",nil,nil,5)
amk.drop_item(actor,_obj)
status = 1
break
Правка свойств ГГ: Промежуток времени между сном
в amk_mod.script в разделе SLEEP_AMK
function test_for_need_sleep_matras(oid) if alife():object(oid)==nil then local enemy=false for a=0,65534 do local obj=level.object_by_id(a) if obj then if (( IsStalker(obj) and amk.get_npc_relation(obj,db.actor)=="enemy" ) or IsMonster(obj)) and obj:position():distance_to(db.actor:position())<40 and obj:see(db.actor) then enemy=true break end end end if enemy==true then amk.send_tip(game.translate_string("not_need_sleep_enemy"),nil,nil,5) else if amk.load_variable("blowout",-1)>-1 and amk.load_variable("blowout",-1)<5 then amk.send_tip(game.translate_string("blowout_not_sleep"),nil,nil,5) else if amk.load_variable("block_sleep_menu",0)==0 then -- if amk.load_variable("gg_need_sleep",0)>10 then local spwn=ui_cheat.cheat(get_hud()) level.start_stop_menu(spwn,true) -- else -- amk.send_tip(game.translate_string("not_need_sleep"),nil,nil,5) -- end else amk.send_tip(game.translate_string("not_need_sleep_nrg"),nil,nil,5) end end end amk.spawn_item_in_inv("matras") end end
Правка свойств ГГ: Привязка еды к сну
В AMK_MOD найди такую строчку:
--'elseif (section=="medkit" or section=="medkit_army" or section=="medkit_scientic") then --' stype="med" а под ней допиши: elseif (section=="conserva" or section=="kolbasa" or section=="bread") then stype="food"
теперь сьешь 4 консервы или 4 хлеба(можно например 2 хлеба и 2 колбасы) можно будет поспать(как раньше с аптечками).
Правка свойств ГГ: Высота прыжка
В файле actor.ltx в папке gamedata\config\creatures, найди параметр
jump_speed
и задай ему нужную тебе величину, чем больше тем выше ГГ будет прыгать.
Правка свойств ГГ: Очистка слота бинокля
В файл bind_stalker.script вместо
function actor_binder:update(delta)
вставляешь:
local my_first = true function actor_binder:update(delta) if my_first then dbglog("check bino start") local slot4 = db.actor:item_in_slot(4) if slot4 then dbglog("actor has %s in slot4", slot4:name()) if slot4:section() ~= "wpn_binoc" then alife():release(alife():object(slot4:id()), true) amk.spawn_item_in_inv("wpn_binoc", db.actor) end end my_first = false end
Наличие бинокля в инвентаре обязательно.
Правка свойств ГГ: Разное
[spoiler='Как восстановить отметки врагов и пр. в бинокле?']gamedata\config\weapons\w_binoc.ltx, находим строку vision_present = false, меняем на vision_present = true. Все[/spoiler][spoiler='Как включить функцию "лечение едой":']В папке gamedata/config/misc находиш файл items.ltx в нем находиш секции [bread], [kolbasa], [conserva] и для каждой из них там есть параметр eat_health который нужно увеличить до нужных дебе значений. По дефолту для bread, eat_health = 0.05, для kolbasa 0.1 и для conserva 0.15[/spoiler][spoiler='Как убрать фонарик? ']Что-бы убрать фонарик, открываем файл gamedata\config\misc\items.ltx
Находим секцию [device_torch]:identity_immunities
Меняем строчку
slot = 9
на
slot = 1
Тепер фонарик располагается в слоте пистолета, убираем его в рюкзак и все.
health_restore_speed - прирост к скорости восстановления здоровья
radiation_restore_speed - прирост скорость вывода радиации
satiety_restore_speed - прирост к голоду
power_restore_speed - прирост к выносливости
bleeding_restore_speed - прирост к скорости остановки кровотечений[/spoiler][spoiler='Как увеличить радиус загрузки локации?']stalker\gamedata\config\alife.ltx
switch_distance = 650;
Можно и больше поставить...[/spoiler][spoiler='Правка кол-ва денег в лут-монеу']По поводу денег, кому не нравится меняем gamedata\scripts\lootmoney.script строки типа if npc_rank == "novice" and deadmoney >=70 then deadmoney=math.random(25,70) для всех рангов на if npc_rank == "novice" and deadmoney >=0 then deadmoney=math.random(0,money) - получаем рандом от 0 до полной суммы, if npc_rank == "novice" and deadmoney >=0 then deadmoney=money - получаем полную сумму, ну эт уже явный чит ))[/spoiler]
Тайники и награды: Награда за квест
Правильно ли я понимаю, что награда за квесты прописана в
E:\gamedata\config\misc\task_manager.ltx?
Если да, то где посмотреть награду за квесты Скряги, Макса и Кэпа? В указаннном файле я этих данных не нашёл...
В файле task_manager.ltx прописаны награды за однотипные квесты в ветке диалогов с квестовыми
персонажами и торговцами: "Мне нужна работа, есть что на примете?" Это такие
квесты как: принести предмет, найти артефакт, зачистить территорию от монстров, убить
сталкера, защитить лагерь (например, в ангаре на Свалке).
Награды за квесты Скряги, Макса и Кэпа пожно посмотреть, и соответственно, поправить в
файле dialogs_military.script.
Так, например, строка с наградой Макса выглядит так:
function send_desert_eagle (actor, npc)
dialogs.relocate_item_section(npc, "wpn_desert_eagle", "in")
end
Тайники и награды: Редактирование содержимого
должно получится примерно так :
[esc_secret_bridge_vagon]
target = 5000
name = esc_secret_0000_name
description = esc_secret_0000_descr
items = ammo_5.45x39_ap,190,medkit_army,6,
wpn_addon_scope,wpn_ak74u_m1,stalker_m1,outfit_specnaz_m1,
wpn_groza_m1,wpn_spas12_m1,wpn_lr300_m1,wpn_svd_m1,wpn_sig_m1,wpn_colt_m1,wpn_val
_m1,wpn_rg6_m1,outf it_dolg_m1
Тайники и награды: Наполнение редких тайников
Подскажите, какие файлы отвечают за наполнение редких тайников в АМК?
gamedata\scripts\treasure_manager.script
массив rare_list
Вероятность выпадения тайников -в treasure_manager.script
rarets = 90 (чем меньше значение, тем чаще вападают тайники)
Тайники и награды: Частота выпадения тайников
Частота выпадения:
treasure_manager.script -редактируешь его получаешь частоту выпадание тайников -65 меняй
на что-нить допустим на 10...
Если подразумевается вероятность выпадения тайников, то в treasure_manager.script
rarets = 90 (чем меньше значение, тем чаще вападают тайники)