Мастерская ОП 2.2

Мастерская ОП 2.2

 

Выкладываем различные уроки свои идеи.

Тех поддержки и ссылки на Объединённый Пак 2.2

Тех поддержка для тех кто играет с правками

Флуд в это теме не допустим, на  это есть БАР

Тема Форум Написано Дата

                                           

                                          Выкладываем различные уроки свои идеи.

                                          Тех поддержки и ссылки на Объединённый Пак 2.2

                                          Тех поддержка для тех кто играет с правками

                                          Флуд в это теме не допустим, на  это есть БАР

                                          Хочу предложить очень удобную и полезную программку "JSGME", для установки и удаления любых модов и правок в иге STALKER. Сам пользуюсь уже несколько лет. Всего за пару кликов мышки устанавливает или если надо удаляет любую правку. В случае каких то проблем с игрой Не нужно копаться в папках в поисках того что вы устанавливали.

                                          @srsuh

                                          1.Ссылка на скачку. Скачайте очень полезную утилиту, для смены "хоткеев" и быстрого сравнивания текста в файлах и быстрого поиска.

                                          2.Ссылка Проги используемые: @lexa.3012  

                                          Ссылка на скачку торрента от 02.02.2021

                                           system-software-for-windows-v351-2021-pc.rar20.62К   скачиваний 163

                                          Советую из-за простоты установки и не нужно делать лишних телодвижений с поиском чего-либо. 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]]             endend

                                          Дополнение: отключение раздражающих звуков приема пищи и др. подобных звуков в этом же файле:

                                          строки 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() --===спавнеры===--