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

Шпаргалка AMK: Ковыряние

Ковыряние


Определение позиции актора

Помогите, пожалуйста, с вычислением позиции актёра. Как узнать координаты я знаю (rs_stats 1), а вот как узнать вектор? Заранее большое спасибо.
Где-то был 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 чтоб в дальнейшем избежать неприятностей типа (двух обойм на человека).
При зависимости 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


Тайники и награды: Редактирование содержимого

treasure_manager.ltx в «миске» и во 4 строчке прописываешь, что ты хочешь, получится
должно получится примерно так :
[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 (чем меньше значение, тем чаще вападают тайники)


×
×
  • Создать...