
Выкладываем различные уроки свои идеи.
Тех поддержки и ссылки на Объединённый Пак 2.2
Тех поддержка для тех кто играет с правками
Флуд в это теме не допустим, на это есть БАР
| Тема | Форум | Написано | Дата |
|---|---|---|---|
|
|

Выкладываем различные уроки свои идеи.
Тех поддержки и ссылки на Объединённый Пак 2.2
Тех поддержка для тех кто играет с правками
Флуд в это теме не допустим, на это есть БАР
Хочу предложить очень удобную и полезную программку "JSGME", для установки и удаления любых модов и правок в иге STALKER. Сам пользуюсь уже несколько лет. Всего за пару кликов мышки устанавливает или если надо удаляет любую правку. В случае каких то проблем с игрой Не нужно копаться в папках в поисках того что вы устанавливали.
@srsuh
1.Ссылка на скачку. Скачайте очень полезную утилиту, для смены "хоткеев" и быстрого сравнивания текста в файлах и быстрого поиска.
2.Ссылка Проги используемые: @lexa.3012
Ссылка на скачку торрента от 02.02.2021
system-software-for-windows-v351-2021-pc.rar 20.62К
скачиваний 141
Советую из-за простоты установки и не нужно делать лишних телодвижений с поиском чего-либо. lexa.3012
Описание: System software for Windows v.3.5.1
###
-DirectX (полная версия)
-Microsoft Visual С++ (2005-2008-2010-2012-2013-2019 x86 и x64 + Visual Studio 2010 F# Runtime 2.0 + F# Runtime 4.0 + Visual Basic 6.0 Runtime Plus 2.2 + Visual J# 2.0 Redistributable Package + Visual Basic 7 Runtime)
-Microsoft Visual C++ 2005-2008-2010-2012-2013-2019 Redistributable Package от Lisabon (15.01.2021)
-NET Framework Version 1.0 SP2 для Windows XP
-NET Framework Version 1.1 SP1
-NET Framework Version 3.5 SP1
-NET Framework Version 3.5 (для Windows 8, 8.1 и Server 2012 — 2012 R2)
-NET Framework Version 3.5 (для Windows 10 и Server 2019)
-NET Framework Version 4.0 (для Windows XP и Server 2003)
-NET Framework Version 4.6 Финал (для Windows Vista sp2 и Windows 8)
-NET Framework Version 4.8 Финал (DC 25.07.2019).
-NET Core Desktop Runtime 5.0.2
-Windows Media Video 9 VCM
-OpenAL 2.1.0
-Rapture3D 2.7.4
-NVIDIA PhysX 9.19.0218
-NVIDIA PhysX старая версия 9.13.1220
-NVIDIA PhysX Legacy 9.13.0604
-NVIDIA PhysX Legacy Full by CUTA
-RuntimePack Lite 20.3.3
-Games for Windows — LIVE 3.5.95.0 Final
-Java Platform SE 7 U80
-Java Platform SE 8 U281
-Java Platform SE 9.0.4 только для ОС Windows 32bit
-Java Platform SE 11.0.10 только для ОС Windows 64bit
-Java Platform SE 13.0.2 только для ОС Windows 64bit
-Java Platform SE 14.0.2 только для ОС Windows 64bit
-Java Platform SE 15.0.2 только для ОС Windows 64bit
-Java Platform от Lisabon SE JDK JRE v6 U161
-Java Platform от Lisabon SE JDK JRE v7 U161
-Java Platform от Lisabon SE JDK JRE v8 U281
-Java Platform от Lisabon SE JRE v9.0.4 только для ОС Windows 32bit
-Java Platform от Lisabon SE JDK v11.0.10 только для ОС Windows 64bit
-Java Platform от Lisabon SE JDK v13.0.2 только для ОС Windows 64bit
-Java Platform от Lisabon SE JDK v14.0.2 только для ОС Windows 64bit
-Java Platform от Lisabon SE JDK v15.0.2 только для ОС Windows 64bit
-Adobe Flash Player 32.0.0.465 для Internet Explorer
-Adobe Flash Player 32.0.0.465 для Firefox и Netscape
-Adobe Flash Player 32.0.0.465 для Opera и Chrome
-Adobe Flash Player ActiveX (для Windows 8, 8.1, 10, Server 2012-2019) 32.0.0.445
-Adobe Shockwave Player 12.3.5.205 (Repack by CUTA)
-Adobe AIR 32.0.0.125
-Microsoft Silverlight 5.1.50918.0
-Microsoft XNA Framework Redistributable (1.0, 2.0, 3.0, 3.1, 4.0)
-Microsoft XML v4.0 SP3
-Microsoft XML v6.0 SP1
-Windows Media Player Firefox Plugin 1.0.0.8
-Unity Web Player 5.3.8.0
-Vulkan Runtime 1.2.162.1
<specific_character id="actor" no_random = "1"> Под ней, после строки: <reputation>0</reputation> вставить вот это: <money min="1000000" max="1000000" infinitive="1"></money>
При проблемах обращаться к автору урока - @polkooovnik
Строки 348-350:
if db.actor:is_any_move() then --для фотки надо стоять на месте return false end
Смело комментируем
--[[if db.actor:is_any_move() then --для фотки надо стоять на месте return false end]]
Строка 357
if iAmMonster[clsid] and obj:alive() and db.actor:see(obj)
комментируем без зазрения совести
if iAmMonster[clsid] --[[and obj:alive() and db.actor:see(obj)]]
Строки 363-365
if (has_info("silent_hunt_start") and not has_info("silent_hunt_done")) and
(silent_hunt_monsters[clsid] and not has_info("monster_stealth_"..silent_hunt_monsters[clsid])) and
self:obj_in_shot(obj:bone_position("bip01_head"), 0, 2, 3.5, true, nil, nil, nil, nil, true)
тоже пускаем под нож, чтобы получилось
if (has_info("silent_hunt_start") and not has_info("silent_hunt_done")) and
(silent_hunt_monsters[clsid] and not has_info("monster_stealth_"..silent_hunt_monsters[clsid])) --[[and
self:obj_in_shot(obj:bone_position("bip01_head"), 0, 2, 3.5, true, nil, nil, nil, nil, true)]]
Строки 386-388
elseif (has_info("foto_ohota_start") and not has_info("foto_ohota_done")) and
foto_ohota_monsters[section] and not has_info(foto_ohota_monsters[section]) and
self:obj_in_shot(obj:center(), 5, 10, 3.0, false, nil, nil, nil, nil, false)
легким движением руки превращаем в
elseif (has_info("foto_ohota_start") and not has_info("foto_ohota_done")) and
foto_ohota_monsters[section] and not has_info(foto_ohota_monsters[section]) --[[and
self:obj_in_shot(obj:center(), 5, 10, 3.0, false, nil, nil, nil, nil, false)]]
---------------Мирилка с конкретным неписем---------------
--В gamedata\scripts\ui\ui_main_menu.script
--После:
-- elseif dik == DIK_keys.DIK_Q then --winsor:дурацкая затея...
-- self:OnMessageQuitWin()
--дописать:
--Вызов мира с конкретным неписем начало.
elseif dik == DIK_keys.DIK_I then -- Вызов: выходим в Г.Меню игры и жмём "I"-англ. "Ш"-русс. Можете поменять букву.
npc_drug()
get_console():execute("main_menu off")
--Вызов мира с конкретным неписем конец.
--Добавить в самый низ.
function npc_drug() -- Делаем непися другом
local npc = level_object_by_sid(425) -- Место 425 - "Боров" в скобки писать story_id НПС из файла config\game_stoty_ids.ltx Или из: gamedata\config\misc\cycle_task.ltx
if npc and npc:alive() then
npc:set_relation(game_object.friend, db.actor)
end
end
function level_object_by_sid( sid )
local sim = alife()
if sim then
local se_obj = sim:story_object( sid )
if se_obj then
return level.object_by_id( se_obj.id )
end
end
return nil
end
--Быстрое лечение, по квесту Доктора + на достижения.(стоит вылечить шесть NPC)
--Путь: gamedata\scripts\kostya_dialog.script
--Привести функцию к такому виду:
function doktor_lekar1_have()
if not has_info("doktor_lekar1_start") or has_info("acv_lekar2") then return end
local cnt = get_value("lekar",0)
cnt = cnt+1
if cnt == 1 then
sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_1_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_1]])
elseif cnt == 2 then
sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_2_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_2]])
elseif cnt == 3 then
sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_3_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_3]])
elseif cnt == 4 then
sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_4_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_4]])
give_info("doktor_lekar1_have")
elseif cnt == 5 then
give_info("acv_lekar")
elseif cnt == 6 then
give_info("acv_lekar2")
del_value("lekar")
return
end
set_value("lekar",cnt)
end
в kostya_dialog.script находим function stealth2_done() и ниже замеяем 6 строк этими:
create("s_inventory_box_stealth1",xyz(83.43,8.73,108.34),56772,2566)
create("s_inventory_box_stealth2",xyz(83.43,8.73,108.34),56772,2566)
create("s_inventory_box_stealth3",xyz(83.43,8.73,108.34),56772,2566)
local obj = create("s_inventory_box_stealth4",xyz(83.43,8.73,108.34),56772,2566)
obj:set_direction(0,1.57,0)
create("s_inventory_box_stealth5",xyz(83.43,8.73,108.34),56772,2566)
в arhara_dialog.script находим
function spawn_joystik()
local a = table.random(anders_joystik) и строку ниже заменяем этим:
obj = create("pult_anders", xyz(a.position.x,a.position.y,a.position.z), a.lv, a.gv)
level.map_add_object_spot_ser(obj.id, "red_location", "Джойстик") -- метка Eugen81 Автор адаптации: Christobal Hunta
gamedata\scripts\treasure.script
Находим этот код:
--' Юзание инициатора (возможность выдать тайник)
function CTreasure:use(npc)
local se_npc = server_object(npc:id())
if se_npc and se_npc.treasure_processed then return end
se_npc.treasure_processed = true
lootmoney.lootmoney(npc)
local rarets=992
-- если выбран редкий тип тайников, то снизим вероятность его выпадения
if math.random(1000) < rarets then
--log("return from use")
return
end
===========================
992 - это процентное соотношение к 1000, т.е. вероятность выпадения тайника: 0,8%. Больше 3% - 970, ставить не стоит. Да и то, только в начале игры, а как прибарахлились, лучше эту правку убрать.
gamedata\config\creatures\actor.ltx Сделай как тут и будет тебе щастя: ; Физические размеры героя. Позволяет залезать в тесные пространства, например, в трубы. ph_box0_center = 0.0, 0.9, 0.0 ph_box0_size = 0.35, 0.9, 0.35 ph_box1_center = 0.0, 0.65, 0.0 ; 2-е значение - высота ГГ в присяде ph_box1_size = 0.3, 0.65, 0.3 ; 2-е значение - высота ГГ в присяде ph_box2_center = 0.0, 0.4, 0.0 ; 2-е значение - высота ГГ в полном присяде ph_box2_size = 0.25, 0.4, 0.25 ; 2-е значение - высота ГГ в полном присяде stalker_restrictor_radius = .05;0.55;0.75;0.9 ; ограничение расстояния между сталкерами. Низкое значение полезно, когда кто-то загородил дорогу в тесных помещениях. stalker_small_restrictor_radius = .05; medium_monster_restrictor_radius = 0.1 =========================== Решение в сети гуляет очень давно))) В system.ltx параметр take_dist больше 2.9, на постоянное использование лучше не ставить! Если приперло - не можешь "дотянуться", только на время проблемы и потом вернуть обратно.
--Быстрое лечение, по квесту Доктора + на достижения.(стоит вылечить шесть NPC)
--Путь: gamedata\scripts\kostya_dialog.script
--Привести функцию к такому виду:
function doktor_lekar1_have()
if not has_info("doktor_lekar1_start") or has_info("acv_lekar2") then return end
local cnt = get_value("lekar",0)
cnt = cnt+1
if cnt == 1 then
sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_1_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_1]])
elseif cnt == 2 then
sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_2_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_2]])
elseif cnt == 3 then
sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_3_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_3]])
elseif cnt == 4 then
sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_4_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_4]])
give_info("doktor_lekar1_have")
elseif cnt == 5 then
give_info("acv_lekar")
elseif cnt == 6 then
give_info("acv_lekar2")
del_value("lekar")
return
end
set_value("lekar",cnt)
end
---------------
от @AMK-forum
scripts\binders\bind_actor --loc_radiation.update()
gamedata\scripts\arhara_dialog.script
Добавляем что нужно. Тут пример добавления простого штык-ножа, мед-аптечки, мухомора, пива, консервы и немного)) денег
--' получим аптечку и пм от Звездочёта
function noz_dat()
got("wpn_pm")
got("wpn_6x4_knife")
got("medkit")
got("medkit_scientic")
got("mushroom")
got("beer_a")
got("conserva")
got_money(3000)
end
===========================
Если хочется все "сделать красиво", правим еще и диалог, в: config\text\dialogs_arhara.xml
Ищем в нем текст: "Ты вот что... Держи аптечку и пистолет. Патронов нет, извини." - и меняем на что угодно, насколько фантазии хватит
gamedata\scripts\binders\bind_monster.script
-- Выбивание из рук оружия
local ac_slots={
[inventory_slots.NO_ACT_SLOT]=false,
[inventory_slots.KNIFE]=false,
[inventory_slots.PISTOL]=false,
[inventory_slots.RIFLE]=false,
[inventory_slots.SHOTGUN]=false
}
Пример на жетоне монолитовца. В gamedata\config\misc\quest_items.ltx находим по army_counter [army_counter]:II_DOC visual = dynamics\equipments\geton.ogf description = army_counter inv_name = army_counter_name quest_item = false ;вместо true ставим false inv_weight = 0.01 inv_grid_width = 2 inv_grid_height = 1 inv_grid_x = 69 inv_grid_y = 16 cost = 100 То же самое можно проделать с любым предметом, даже если этой строчки в его конфиге нет. В таком случае ее нужно добавить. Некоторые предметы могут быть не в quest_items.ltx а в item.ltx ----------------- от @tihik
В script\nsafe\safe_stealmanager.script найти два места self.enable=true self.enable=reader:readBool(self.classname,"enable",true) и заменить их на self.enable=false self.enable=false Кто-то по уму сделал скрипт, так что если enable=false, то обработка воровства не вызывается. ----------------- от @voluntas88
gamedata\scripts\treasure.script
Находим этот код:
--' Юзание инициатора (возможность выдать тайник)
function CTreasure:use(npc)
local se_npc = server_object(npc:id())
if se_npc and se_npc.treasure_processed then return end
se_npc.treasure_processed = true
lootmoney.lootmoney(npc)
local rarets=992
-- если выбран редкий тип тайников, то снизим вероятность его выпадения
if math.random(1000) < rarets then
--log("return from use")
return
end
===========================
992 - это процентное соотношение к 1000, т.е. вероятность выпадения тайника: 0,8%. Больше 3% - 970, ставить не стоит. Да и то, только в начале игры, а как прибарахлились, лучше эту правку убрать.
Все волшебство тут, погляди для саморазвития, показометр синий(только кнопки надо свои назначать) спавнер - зеленый.
==============================================
function main_menu:StartGame()
ui_mm_opt_add.check_options()
if (alife() ~= nil) then
console:execute ("disconnect")
end
console:execute("start server(all/single/alife/new) client(localhost)")
console:execute("main_menu off")
archievements.on_new_game()
end
--===спавнер===--
function main_menu:OnButton_load_spawn()
if self.spawn_dlg == nil then
self.spawn_dlg = ui_cheat_naxac.cheat_menu()
self.spawn_dlg.owner = self
end
self:GetHolder():start_stop_menu(self.spawn_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
--===спавнер===--
function main_menu:OnButton_save_clicked()
local save_dlg = ui_save_dialog.save_dialog()
save_dlg.owner = self
self:GetHolder():start_stop_menu(save_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
function main_menu:OnButton_options_clicked()
local opt_dlg = ui_mm_opt_main.options_dialog()
opt_dlg.owner = self
opt_dlg:UpdateControls()
self:GetHolder():start_stop_menu(opt_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
amk_mod.hud_update = true
end
function main_menu:OnButton_load_clicked()
local load_dlg = ui_load_dialog.load_dialog()
load_dlg.owner = self
self:GetHolder():start_stop_menu(load_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
---Показометр адпатация PLK ---
function main_menu:OnKeyboard(dik, keyboard_action) --virtual function
CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
-- local bind = dik_to_bind(dik)
if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
if dik == DIK_keys.DIK_ESCAPE then
if game_is_running() then
ui_mm_opt_add.check_options()
console:execute("main_menu off")
archievements.mm_opt()
end
elseif
key_handlers.handler_press(dik,dik_to_bind(dik)) then
elseif dik == DIK_keys.DIK_L then
self:OnButton_last_save()
-- лютый котик, ебашит все в онлайне --
elseif dik == DIK_keys.DIK_P then
pokazometr.show_actor_position()
-- показывает барбитуру и коды от дверей --
elseif dik == DIK_keys.DIK_O then
pokazometr.obkolishi_i_barbiturshiki()
-- котик выкашивающих все в радиусе 70м--
elseif dik == DIK_keys.DIK_V then
pokazometr.final_victory()
--- чистильщик трупов, выкашивание трулей, давление жабы, тушение аномалий партиклями --
elseif dik == DIK_keys.DIK_H then
pokazometr.cleaner()
--- лечение, вывод радиации, показ координтатов --
elseif dik == DIK_keys.DIK_NUMPAD4 then
pokazometr.zdoroviy()
--- выдача 100к ---
elseif dik == DIK_keys.DIK_K then
pokazometr.bablo()
--- показ меток на херобору --
elseif dik == DIK_keys.DIK_NUMPAD1 then
pokazometr.set_spots()
--- удаление меток вручную ---
elseif dik == DIK_keys.DIK_NUMPAD2 then
pokazometr.del_spots()
-- показ аномалий на мини-карте --
elseif dik == DIK_keys.DIK_NUMPAD3 then
pokazometr.show_anomalies()
-- набор багфиксов, необходимы тесты --
elseif dik == DIK_keys.DIK_U then
pokazometr.armistice()
-- показ рестрикторов --
elseif dik == DIK_keys.DIK_NUMPAD5 then
pokazometr.show_restrictors()
-- Полёт на болте --
elseif dik == DIK_keys.DIK_NUMPAD6 then
pokazometr.pokaz_stalkerov()
-- показ мобов и сталкеров --
elseif dik == DIK_keys.DIK_M then
pokazometr.show_mobs()
--- нюх на все, отлов обьектов в радиусе 5м с записью лога---
elseif dik == DIK_keys.DIK_NUMPAD8 then
pokazometr.nuh_na_vse()
elseif dik == DIK_keys.DIK_Q then
self:OnMessageQuitWin()
--===спавнер===--
elseif dik == DIK_keys.DIK_S then
self:OnButton_load_spawn()
--===спавнер===--
end
end
if keyboard_action == ui_events.WINDOW_KEY_RELEASED then
key_handlers.handler_release(dik,dik_to_bind(dik))
end
return true
end
if ui_mm_opt_creator.get_bool_user_param("pause_on_load") then
autopause.main()
end
==============================================
==============================================
==============================================
Если хочется несколько спавнеров, делаем так:
--===спавнеры===--
function main_menu:OnButton_load_spawnnaxac()
if self.spawnnaxac_dlg == nil then
self.spawnnaxac_dlg = ui_cheat_naxac.cheat_menu()
self.spawnnaxac_dlg.owner = self
end
self:GetHolder():start_stop_menu(self.spawnnaxac_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
-----------------
function main_menu:OnButton_load_spawnkot()
if self.spawnkot_dlg == nil then
self.spawnkot_dlg = spawner.spawn_items_dialog()
self.spawnkot_dlg.owner = self
end
self:GetHolder():start_stop_menu(self.spawnkot_dlg, true)
self:GetHolder():start_stop_menu(self, true)
self:Show(false)
end
--=============--
--******************************--
--===спавнеры===--
elseif dik == DIK_keys.DIK_S then
self:OnButton_load_spawnnaxac()
--==============--
elseif dik == DIK_keys.DIK_D then
self:OnButton_load_spawnkot()
--===спавнеры===--
от @Prophet13
gamedata\scripts\zvuki.script
Закомментировать как тут показано, эти строки:
if difficulty > 0 then
-- hide_wpn.on_info("rm_mp_start")
-- local delay_time=db.eat_snd:length()/1000
-- if delay_time<difficulty*3 then
-- delay_time=difficulty*3
-- end
-- timer("zvuki", delay_time, "zvuki.restore_weapon()")
end
--if has_info("ui_inventory") then
-- level.start_stop_menu(level.main_input_receiver(), true)
--end
Вариант от lexa.3012 - "Изящный"))) Выделил нужное красны
-- треть¤ рука, пр¤тание оружи¤ при съедании. на новичке не убираетс¤, далее по нарастающей
local difficulty = level.get_game_difficulty()
if difficulty > 0 then
hide_wpn.on_info("rm_mp_start")
local delay_time=db.eat_snd:length()/5000
if delay_time<difficulty*0 then
delay_time=difficulty*0
end
timer("zvuki", delay_time, "zvuki.restore_weapon()")
end
--[[if has_info("ui_inventory") then
level.start_stop_menu(level.main_input_receiver(), true)
end]]
end
end
Дополнение: отключение раздражающих звуков приема пищи и др. подобных звуков в этом же файле:
строки 35-74 содержат информацию о звуках. Для "проблемных" звуков удали/закомментируй целую строку, например:
bread = {"zwuk\\inv_sandwich","zwuk\\inv_kolbasa"},
-----------------
от @voluntas88
Похоже разобрался с выпадением исправных стволов и броников. Разработчики убрали из death_manager.script вот эти параметры:
local global_rebalance_cond = 15 --тут ставим 0 и разброса не будет local global_rebalance_loot = 0.1 local global_rebalance_cond = 15 --тут ставим 0 и разброса не будет local global_rebalance_loot = 0.1 Без них, все остальное вообще не работает. Остальное правится так же как и в 2.1, по этому мануалу.
-------------------
upd: не большое уточнение, с уровнем сложности еще увязанно, меняем -5 на 0
return -5 * level.get_game_difficulty() return -5 * level.get_game_difficulty()
Использовать при крайней необходимости и обязательно сделать именное сохранение и бэкап gamedata, перед манипуляциями с поршнями! А то можно так надвигать, что только хуже станет. В ui_main_menu.script добавить после:
if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
if dik == DIK_keys.DIK_ESCAPE then
if game_is_running() then
ui_mm_opt_add.check_options()
console:execute("main_menu off")
archievements.mm_opt()
end
--===Поршневая вызов===--
elseif dik == DIK_keys.DIK_H then
dvinem_porsh.dvinem_porsh_0()
elseif dik == DIK_keys.DIK_J then
dvinem_porsh.dvinem_porsh_1()
elseif dik == DIK_keys.DIK_K then
dvinem_porsh.dvinem_porsh_2()
--===**************===--
Создать скрипт: \scripts\dvinem_porsh.script с таким содержанием:
--===Поршневая===--
function dvinem_porsh_0()
db.actor: give_info_portion("тут вписываем поршень")
end
function dvinem_porsh_1()
db.actor: give_info_portion("koloda_kuznec_done")
end
function dvinem_porsh_2()
db.actor: give_info_portion("souls_house_done")
end
--koloda_kuznec_done - колода Кузнецова
--souls_house_done - Дом духов
--snipers_kuzya_done - Устранение помех
--===Поршневая===--
function dvinem_porsh_0()
db.actor: give_info_portion("тут вписываем поршень")
end
function dvinem_porsh_1()
db.actor: give_info_portion("koloda_kuznec_done")
end
function dvinem_porsh_2()
db.actor: give_info_portion("souls_house_done")
end
--koloda_kuznec_done - колода Кузнецова
--souls_house_done - Дом духов
--snipers_kuzya_done - Устранение помех
Вызовы и функции, не обязательно делать 3, лучше 1 и перезаписывать.
И в гл.меню жми что нужно.
Все поршни тут:
\config\gameplay
--info_aem.xml
--info_arhara.xml
--info_buusty.xml
--info_encyclopedia.xml
--info_new.xml
--info_oksana579.xml
--info_storyline.xml
--info_v92.xml
--info_volazar.xml
--info_wawka.xml
Но искать нужный сначала надо по названию задания(без ошибок) во всех конфигах
Все волшебство тут, погляди для саморазвития, показометр синий(только кнопки надо свои назначать) спавнер - зеленый.
==============================================
function main_menu:StartGame()
ui_mm_opt_add.check_options()
if (alife() ~= nil) then
console:execute ("disconnect")
end
console:execute("start server(all/single/alife/new) client(localhost)")
console:execute("main_menu off")
archievements.on_new_game()
end
--===спавнер===--
function main_menu:OnButton_load_spawn()
if self.spawn_dlg == nil then
self.spawn_dlg = ui_cheat_naxac.cheat_menu()
self.spawn_dlg.owner = self
end
self:GetHolder():start_stop_menu(self.spawn_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
--===спавнер===--
function main_menu:OnButton_save_clicked()
local save_dlg = ui_save_dialog.save_dialog()
save_dlg.owner = self
self:GetHolder():start_stop_menu(save_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
function main_menu:OnButton_options_clicked()
local opt_dlg = ui_mm_opt_main.options_dialog()
opt_dlg.owner = self
opt_dlg:UpdateControls()
self:GetHolder():start_stop_menu(opt_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
amk_mod.hud_update = true
end
function main_menu:OnButton_load_clicked()
local load_dlg = ui_load_dialog.load_dialog()
load_dlg.owner = self
self:GetHolder():start_stop_menu(load_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
---Показометр адпатация PLK ---
function main_menu:OnKeyboard(dik, keyboard_action) --virtual function
CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
-- local bind = dik_to_bind(dik)
if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
if dik == DIK_keys.DIK_ESCAPE then
if game_is_running() then
ui_mm_opt_add.check_options()
console:execute("main_menu off")
archievements.mm_opt()
end
elseif
key_handlers.handler_press(dik,dik_to_bind(dik)) then
elseif dik == DIK_keys.DIK_L then
self:OnButton_last_save()
-- лютый котик, ебашит все в онлайне --
elseif dik == DIK_keys.DIK_P then
pokazometr.show_actor_position()
-- показывает барбитуру и коды от дверей --
elseif dik == DIK_keys.DIK_O then
pokazometr.obkolishi_i_barbiturshiki()
-- котик выкашивающих все в радиусе 70м--
elseif dik == DIK_keys.DIK_V then
pokazometr.final_victory()
--- чистильщик трупов, выкашивание трулей, давление жабы, тушение аномалий партиклями --
elseif dik == DIK_keys.DIK_H then
pokazometr.cleaner()
--- лечение, вывод радиации, показ координтатов --
elseif dik == DIK_keys.DIK_NUMPAD4 then
pokazometr.zdoroviy()
--- выдача 100к ---
elseif dik == DIK_keys.DIK_K then
pokazometr.bablo()
--- показ меток на херобору --
elseif dik == DIK_keys.DIK_NUMPAD1 then
pokazometr.set_spots()
--- удаление меток вручную ---
elseif dik == DIK_keys.DIK_NUMPAD2 then
pokazometr.del_spots()
-- показ аномалий на мини-карте --
elseif dik == DIK_keys.DIK_NUMPAD3 then
pokazometr.show_anomalies()
-- набор багфиксов, необходимы тесты --
elseif dik == DIK_keys.DIK_U then
pokazometr.armistice()
-- показ рестрикторов --
elseif dik == DIK_keys.DIK_NUMPAD5 then
pokazometr.show_restrictors()
-- Полёт на болте --
elseif dik == DIK_keys.DIK_NUMPAD6 then
pokazometr.pokaz_stalkerov()
-- показ мобов и сталкеров --
elseif dik == DIK_keys.DIK_M then
pokazometr.show_mobs()
--- нюх на все, отлов обьектов в радиусе 5м с записью лога---
elseif dik == DIK_keys.DIK_NUMPAD8 then
pokazometr.nuh_na_vse()
elseif dik == DIK_keys.DIK_Q then
self:OnMessageQuitWin()
--===спавнер===--
elseif dik == DIK_keys.DIK_S then
self:OnButton_load_spawn()
--===спавнер===--
end
end
if keyboard_action == ui_events.WINDOW_KEY_RELEASED then
key_handlers.handler_release(dik,dik_to_bind(dik))
end
return true
end
if ui_mm_opt_creator.get_bool_user_param("pause_on_load") then
autopause.main()
end
==============================================
==============================================
==============================================
Если хочется несколько спавнеров, делаем так:
--===спавнеры===--
function main_menu:OnButton_load_spawnnaxac()
if self.spawnnaxac_dlg == nil then
self.spawnnaxac_dlg = ui_cheat_naxac.cheat_menu()
self.spawnnaxac_dlg.owner = self
end
self:GetHolder():start_stop_menu(self.spawnnaxac_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
-----------------
function main_menu:OnButton_load_spawnkot()
if self.spawnkot_dlg == nil then
self.spawnkot_dlg = spawner.spawn_items_dialog()
self.spawnkot_dlg.owner = self
end
self:GetHolder():start_stop_menu(self.spawnkot_dlg, true)
self:GetHolder():start_stop_menu(self, true)
self:Show(false)
end
--=============--
--******************************--
--===спавнеры===--
elseif dik == DIK_keys.DIK_S then
self:OnButton_load_spawnnaxac()
--==============--
elseif dik == DIK_keys.DIK_D then
self:OnButton_load_spawnkot()
--===спавнеры===--
-- Путь: gamedata\scripts\flamethrower.script
-- Найти и сделать как ниже.
function mbald_removed_have()
local value = get_value("mbald_removed", 0)
return value >= 1 ----- БЫЛО 3---------------- ЭКСПЕРИМЕНТЫ ВАСИЛЬЕВА---------------------------------------
end
function galant_removed_have()
local value = get_value("galant_removed", 0)
return value >= 1 ----- БЫЛО 3---------------- ЭКСПЕРИМЕНТЫ ВАСИЛЬЕВА---------------------------------------
end
function mincer_removed_have()
local value = get_value("mincer_removed", 0)
return value >= 1 ----- БЫЛО 3---------------- ЭКСПЕРИМЕНТЫ ВАСИЛЬЕВА---------------------------------------
end
--Проверяй. Должно быть достаточно по одной аннигиляции.
-----------------
от @lexa.3012
Подсказки:
Для поиска нужно полностью распаковать все файлы мода или игры в отдельную папку включая все патчи и фиксы.
Поиск будет производиться с помощью программы Total Commander.
Разбираться и знать эту программу совсем не обязательно. Достаточно запомнить расположение всего одной кнопки.
Примеры:
1. Поиск конкретного оружия по его описанию:
Допустим вы прочитали вот такое описание нужного вам ствола
"FN SCAR-Н - боевая штурмовая винтовка калибра 7,62 НАТО, разработанная американским подразделением бельгийской компании FN Herstal в 2004 году. SCAR-H Mk.17 Mod.0 штатно комплектуется съёмными открытыми прицельными приспособлениями, состоящими из складного регулируемого по дальности диоптрического целика и складной же мушки. Кроме того, на винтовку могут устанавливаться любые дневные или ночные прицелы с соответствующими кронштейнами. Приклад у всех вариантов винтовки FN SCAR складной вбок. Ресурс ствола винтовки составляет 16 000 выстрелов и более."
И хотите найти его параметры и прочее.
Для этого открываете Total Commander, а в нём папку с распакованными файлами игры или мода.
Так как параметры предметов находятся в подпапке config, то для ускорения поиска вам нужно открыть уже эту папку config.
Далее нажимаете на иконку с рисунком бинокля в шапке программы, ставите галочку в квадратике "С текстом", и пишите справа от галочки нужный для поиска текст.
В нашем случае мы возьмём вот этот кусочек - подразделением бельгийской компании FN Herstal
ВНИМАНИЕ !!! Текст должен быть абсолютно точным включая пробелы и знаки препинания.
Далее нажимаете кнопку "Начать поиск" и ждёте его окончания.
В результате поиска был найден один файл. Это arsenal_mod.xml
Кликаете 2 раза левой кнопкой мышки на строке с найденным файлом в окне "Результаты поиска", и программа автоматически найдёт вам этот файл.
Далее открываете этот найденный файл в текстовом редакторе (хоть в блокноте) и ищете заданное вами словосочетание - подразделением бельгийской компании FN Herstal
Нужный вам текст идёт под заголовком - <string id="enc_arsenal_scar_cry">
Возвращаетесь в подпапку config, и снова запускаете поиск уже по словосочетанию - enc_arsenal_scar_cry
В результате поиска было найдено два файла, но нам нужен только один расположенный в подпапке config\weapons\arsenal_mod\ar
Это файл w_scar_cry.ltx.
Всё... Мы нашли нужный нам ствол.
Поиск предмета по его названию осуществляется точно также.
2. Поиск неизвестного предмета по фразам в диалогах:
Допустим в разговоре с Кузькиной матерью вы прочитали вот такой диалог
" У меня на Большой Земле племянница сильно заболела. Сестра моя очень упрямая и консервативная в этом вопросе, не признает никакие современные лекарства, и лечит дочку только травами. Я и в Зону-то подалась только из-за этого лекарства. Всё, что нужно, заготовила и спрятала в двух разных местах."
Берём кусочек диалога - У меня на Большой Земле племянница сильно заболела
и ищем по этим словам в папке config.
Находим в config\text\rus файл stable_dialogs_buusty.xml
Открываем его в текстовом редакторе и ищем эту фразу.
Эта фраза идёт под заголовком - <string id="kuzmat_dialog1_5">
Обращаем внимание на характерное слово - kuzmat
Опять запускаем поиск в папке config уже по этому слову.
В результате будет найдено очень много файлов, но нас интересует предмет, а конфиги предметов обычно прописаны в подпапке config\misc
В этой подпапке найдено два файла.
Просматриваем оба на наличие слова kuzmat, и в файле arhara_items.ltx находим нужный предмет.
Это lekarstvo_kuzmat.
Также как и в примере с оружием можно найти тоже самое по названию предмета.
Например вы случайно продали одну банку настойки "Цитомегалия" для Кузькиной матери, и хотите её заспавнить, прописать в продажу и так далее...
Ищем по точному названию предмета. Это слово - Цитомегалия
Поиск вывел название файла содержащего это слово - string_table_enc_equipment.xml
Открываем этот файл, ищем нужное слово и смотрим как оно прописано в файлах игры
<string id="lekarstvo_kuzmat"> <text>Настойка "Цитомегалия"</text> </string> <string id="enc_equipment_lekarstvo_kuzmat"> <text>Лекарственный сбор "Цитомегалия". Способствует подавлению вирусной и бактериальной инфекции. Предупреждает и тормозит воспалительные процессы в организме. Повышает иммунитет, оказывает общеукрепляющее, защитное действие. Настоен на чистом спирту. Не употреблять в чистом виде и без особых рекомендаций врача!</text> </string>
Далее:
Берём например enc_equipment_lekarstvo_kuzmat и снова запускаем поиск уже по этому новому слову.
Получаем наводку на другой файл содержащий конфиги предметов - arhara_items.ltx
Открываем этот новый файл и ищем enc_equipment_lekarstvo_kuzmat
Получаем название предмета:
[lekarstvo_kuzmat]:lekarstvo
description = enc_equipment_lekarstvo_kuzmat
inv_name = lekarstvo_kuzmat
inv_name_short = lekarstvo_kuzmat
Поиск неизвестного предмета по фразам в диалогах:
Допустим в разговоре с Кузькиной матерью вы прочитали вот такой диалог
" У меня на Большой Земле племянница сильно заболела. Сестра моя очень упрямая и консервативная в этом вопросе, не признает никакие современные лекарства, и лечит дочку только травами. Я и в Зону-то подалась только из-за этого лекарства. Всё, что нужно, заготовила и спрятала в двух разных местах."
Берём кусочек диалога - У меня на Большой Земле племянница сильно заболела
и ищем по этим словам в папке config.
Находим в config\text\rus файл stable_dialogs_buusty.xml
Открываем его в текстовом редакторе и ищем эту фразу.
Эта фраза идёт под заголовком - <string id="kuzmat_dialog1_5">
Обращаем внимание на характерное слово - kuzmat
Опять запускаем поиск в папке config уже по этому слову.
В результате будет найдено очень много файлов, но нас интересует предмет, а конфиги предметов обычно прописаны в подпапке config\misc
В этой подпапке найдено два файла.
Просматриваем оба на наличие слова kuzmat, и в файле arhara_items.ltx находим нужный предмет.
Это lekarstvo_kuzmat.
Также как и в примере с оружием можно найти тоже самое по названию предмета.
Например вы случайно продали одну банку настойки "Цитомегалия" для Кузькиной матери, и хотите её заспавнить, прописать в продажу и так далее...
Ищем по точному названию предмета. Это слово - Цитомегалия
Поиск вывел название файла содержащего это слово - string_table_enc_equipment.xml
Открываем этот файл, ищем нужное слово и смотрим как оно прописано в файлах игры
<string id="lekarstvo_kuzmat"> <text>Настойка "Цитомегалия"</text> </string> <string id="enc_equipment_lekarstvo_kuzmat"> <text>Лекарственный сбор "Цитомегалия". Способствует подавлению вирусной и бактериальной инфекции. Предупреждает и тормозит воспалительные процессы в организме. Повышает иммунитет, оказывает общеукрепляющее, защитное действие. Настоен на чистом спирту. Не употреблять в чистом виде и без особых рекомендаций врача!</text> </string>
Далее:
Берём например enc_equipment_lekarstvo_kuzmat и снова запускаем поиск уже по этому новому слову.
Получаем наводку на другой файл содержащий конфиги предметов - arhara_items.ltx
Открываем этот новый файл и ищем enc_equipment_lekarstvo_kuzmat
Получаем название предмета:
[lekarstvo_kuzmat]:lekarstvo description = enc_equipment_lekarstvo_kuzmat inv_name = lekarstvo_kuzmat inv_name_short = lekarstvo_kuzmat
Замена награды в квестах:
Допустим вы хотите заменить автомат выдаваемый Волком на что то другое.
Сохраняемся перед сдачей квеста, сдаём его и смотрим какой автомат получили.
Находим (как описано выше) точное название этого автомата.
Пусть это будет wpn_ak74u.
В папке scripts запускаем поиск по wpn_ak74u
Будет найдено очень много файлов которые придётся просмотреть на предмет нахождения wpn_ak74u.
Ищем наиболее подходящее по смыслу.
Находим требуемое в файле sak_dialog.script.
Это
function take_sescape_lager_volk_ak(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "wpn_ak74u", "in") end Заменяем название оружия в скобочках на нужное. function take_sescape_lager_volk_ak(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "wpn_vintorez", "in") end
Снова загружаем сделанное ранее сохранение, и получаем у Волка Винторез.
Если нужно много предметов, то просто дублируем строку и вставляем нужное.
function take_sescape_lager_volk_ak(first_speaker, second_speaker)
dialogs.relocate_item_section(first_speaker, "wpn_vintorez", "in")
dialogs.relocate_item_section(first_speaker, "wpn_spas12", "in")
end
Если нужны деньги, то добавляем следующее:
dialogs.relocate_money(second_speaker, 10000, "in") где 10000 - это сумма.
Если нужно много патронов, то добавляем следующее:
sak.create_items_actor("ammo_12x70_kart",9)
где 9 - это количество пачек
Аптечки, гранаты и прочее добавляются точно также.
ИТОГО:
Такими способами можно найти что угодно и где угодно, вплоть до поршней и что вам еще взбредет в голову.
В Total Commander есть ещё одна полезная функция - это сравнение файлов по содержимому.
Открываем в левой и правой половинах программы файлы которые вы хотите сравнить. Они должны иметь одинаковое название.
Выделяете нужный вам файл. и в шапке программы под заголовком "файлы" нажимаете на - Сравнить по содержимому...
Изменения в файлах будут выделены другим цветом.
С помощью этого сравнения можно корректировать что угодно. Например подогнать скрипты под новый патч.
p.p.s.
Надеюсь после описанного выше в темах по моду будет поменьше одинаковых и просто осточертевших просьб типа - как называется и где находится...
Автор @shahvkit
any_bot_dis_change=any_bot_dis_change or (is_actor_enemy or is_actor_danger or any_enemy_see_actor)
И заменить на это:
any_bot_dis_change=false
от bastor
local ac_slots={
[inventory_slots.NO_ACT_SLOT]=false,
[inventory_slots.KNIFE]=false,
[inventory_slots.PISTOL]=false,
[inventory_slots.RIFLE]=false,
[inventory_slots.SHOTGUN]=false
}
от AMK-forum
scripts\ai\rx_gl.script stor.can_fire = true ;false stor.can_fire = true ;false
-----------------
от Prophet13
[army_counter]:II_DOC visual = dynamics\equipments\geton.ogf description = army_counter inv_name = army_counter_name quest_item = false ;вместо true ставим false inv_weight = 0.01 inv_grid_width = 2 inv_grid_height = 1 inv_grid_x = 69 inv_grid_y = 16 cost = 100
То же самое можно проделать с любым предметом, даже если этой строчки в его конфиге нет. В таком случае ее нужно добавить. Некоторые предметы могут быть не в quest_items.ltx а в item.ltx
-----------------
от tihik
Все волшебство тут, погляди для саморазвития, показометр синий(только кнопки надо свои назначать) спавнер - зеленый.
==============================================
function main_menu:StartGame()
ui_mm_opt_add.check_options()
if (alife() ~= nil) then
console:execute ("disconnect")
end
console:execute("start server(all/single/alife/new) client(localhost)")
console:execute("main_menu off")
archievements.on_new_game()
end
--===спавнер===--
function main_menu:OnButton_load_spawn()
if self.spawn_dlg == nil then
self.spawn_dlg = ui_cheat_naxac.cheat_menu()
self.spawn_dlg.owner = self
end
self:GetHolder():start_stop_menu(self.spawn_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
--===спавнер===--
function main_menu:OnButton_save_clicked()
local save_dlg = ui_save_dialog.save_dialog()
save_dlg.owner = self
self:GetHolder():start_stop_menu(save_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
function main_menu:OnButton_options_clicked()
local opt_dlg = ui_mm_opt_main.options_dialog()
opt_dlg.owner = self
opt_dlg:UpdateControls()
self:GetHolder():start_stop_menu(opt_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
amk_mod.hud_update = true
end
function main_menu:OnButton_load_clicked()
local load_dlg = ui_load_dialog.load_dialog()
load_dlg.owner = self
self:GetHolder():start_stop_menu(load_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
---Показометр адпатация PLK ---
function main_menu:OnKeyboard(dik, keyboard_action) --virtual function
CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
-- local bind = dik_to_bind(dik)
if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
if dik == DIK_keys.DIK_ESCAPE then
if game_is_running() then
ui_mm_opt_add.check_options()
console:execute("main_menu off")
archievements.mm_opt()
end
elseif
key_handlers.handler_press(dik,dik_to_bind(dik)) then
elseif dik == DIK_keys.DIK_L then
self:OnButton_last_save()
-- лютый котик, ебашит все в онлайне --
elseif dik == DIK_keys.DIK_P then
pokazometr.show_actor_position()
-- показывает барбитуру и коды от дверей --
elseif dik == DIK_keys.DIK_O then
pokazometr.obkolishi_i_barbiturshiki()
-- котик выкашивающих все в радиусе 70м--
elseif dik == DIK_keys.DIK_V then
pokazometr.final_victory()
--- чистильщик трупов, выкашивание трулей, давление жабы, тушение аномалий партиклями --
elseif dik == DIK_keys.DIK_H then
pokazometr.cleaner()
--- лечение, вывод радиации, показ координтатов --
elseif dik == DIK_keys.DIK_NUMPAD4 then
pokazometr.zdoroviy()
--- выдача 100к ---
elseif dik == DIK_keys.DIK_K then
pokazometr.bablo()
--- показ меток на херобору --
elseif dik == DIK_keys.DIK_NUMPAD1 then
pokazometr.set_spots()
--- удаление меток вручную ---
elseif dik == DIK_keys.DIK_NUMPAD2 then
pokazometr.del_spots()
-- показ аномалий на мини-карте --
elseif dik == DIK_keys.DIK_NUMPAD3 then
pokazometr.show_anomalies()
-- набор багфиксов, необходимы тесты --
elseif dik == DIK_keys.DIK_U then
pokazometr.armistice()
-- показ рестрикторов --
elseif dik == DIK_keys.DIK_NUMPAD5 then
pokazometr.show_restrictors()
-- Полёт на болте --
elseif dik == DIK_keys.DIK_NUMPAD6 then
pokazometr.pokaz_stalkerov()
-- показ мобов и сталкеров --
elseif dik == DIK_keys.DIK_M then
pokazometr.show_mobs()
--- нюх на все, отлов обьектов в радиусе 5м с записью лога---
elseif dik == DIK_keys.DIK_NUMPAD8 then
pokazometr.nuh_na_vse()
elseif dik == DIK_keys.DIK_Q then
self:OnMessageQuitWin()
--===спавнер===--
elseif dik == DIK_keys.DIK_S then
self:OnButton_load_spawn()
--===спавнер===--
end
end
if keyboard_action == ui_events.WINDOW_KEY_RELEASED then
key_handlers.handler_release(dik,dik_to_bind(dik))
end
return true
end
if ui_mm_opt_creator.get_bool_user_param("pause_on_load") then
autopause.main()
end
==============================================
==============================================
==============================================
Если хочется несколько спавнеров, делаем так:
--===спавнеры===--
function main_menu:OnButton_load_spawnnaxac()
if self.spawnnaxac_dlg == nil then
self.spawnnaxac_dlg = ui_cheat_naxac.cheat_menu()
self.spawnnaxac_dlg.owner = self
end
self:GetHolder():start_stop_menu(self.spawnnaxac_dlg, true)
self:GetHolder():start_stop_menu(self, true) --new
self:Show(false)
end
-----------------
function main_menu:OnButton_load_spawnkot()
if self.spawnkot_dlg == nil then
self.spawnkot_dlg = spawner.spawn_items_dialog()
self.spawnkot_dlg.owner = self
end
self:GetHolder():start_stop_menu(self.spawnkot_dlg, true)
self:GetHolder():start_stop_menu(self, true)
self:Show(false)
end
--=============--
--******************************--
--===спавнеры===--
elseif dik == DIK_keys.DIK_S then
self:OnButton_load_spawnnaxac()
--==============--
elseif dik == DIK_keys.DIK_D then
self:OnButton_load_spawnkot()
--===спавнеры===--