Перейти к содержимому



Свернуть %s Последние сообщения тем


Фотография

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

ОП 2.2 Сталкер Тень Чернобыля Объединённый пак 2.2 STALKER Пак 2

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#416514
LENA_D

LENA_D

    Пантера

  • альтернативный текст
  • Тех. Админ
  • Клуб - reaktor
  • Завсегдатай - больше 1 год на сайте
КПК - Сталкера
  • PipPipPipPip
  • Регистрация:
    23-July 10
  • 10990 Cообщений
  • Пропуск №: 2061


Репутация: 16089
  • Страна проживания:Реактор
  • Реальное имя:Лейла
  • Пол:Женщина
  • Город:ЧЗО

sw_1643020556__2022-1-24_12-35-19.png
 

 

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

 

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

 

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

 

 

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

 

 

 

 

 



#1
RomanReigns

RomanReigns

    Сталкер

  • альтернативный текст
  • Свобода
  • Клуб - reaktor

КПК - Сталкера
  • PipPipPipPip
  • Регистрация:
    30-April 20
  • 454 Cообщений
  • Пропуск №: 36552


Репутация: 386 Постов: 454
  • Страна проживания:Россия
  • Реальное имя:Роман
  • Пол:Мужчина
  • Город:Белгород
Софт для игры и её редактирования

 

 

Удобный менеджер модификаций "JSGME

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

Ссылка

@srsuh 

 

Архиватор. (Обновлён: 07.12.2020)

 

Программы для сравнения файлов: дабы упростить Вам адаптацию.

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

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

 

 

Прога для распаковки патчей(не игры)
Ссылка   InnoExtractorPlus_5.3.0.190

 

Microsoft Visual C++ 2005-08-10-12-13-19 (Версия программы: от 17.02.2021)

 

DirectX.
Ссылка    Установка: создайте папку, распакуйте в эту папку и запустите "DXSETUP.exe"

 

 

System Software for Windows 7/10 Комплекс необходимых программ каждому "юзеру". (Обн. от 02.02.2021)

 

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

Прикрепленный файл  system-software-for-windows-v351-2021-pc.rar   20.62К   скачиваний 71

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

 

 

 

 



#2
RomanReigns

RomanReigns

    Сталкер

  • альтернативный текст
  • Свобода
  • Клуб - reaktor

КПК - Сталкера
  • PipPipPipPip
  • Регистрация:
    30-April 20
  • 454 Cообщений
  • Пропуск №: 36552


Репутация: 386 Постов: 454
  • Страна проживания:Россия
  • Реальное имя:Роман
  • Пол:Мужчина
  • Город:Белгород

Правим интерфейс
Ссылка на распакованную папку ui-текстур
https://drive.google.com/open?id=1mC7-kR4DNcvoK0SMzKnUlRoFSKMtmrRR
 

 
Изменить худ
Все распакованные худы из ОП-2.1 https://cloud.mail.ru/public/6B6h/TXn86k8g3

 
Увеличиваем стартовое количество денег

Открываем файл gamedata\config\gameplay\character_storyline
В самом начале видим строку:

<specific_character id="actor" no_random = "1">
Под ней, после строки:
<reputation>0</reputation>
вставить вот это:
<money min="1000000" max="1000000" infinitive="1"></money>

При проблемах обращаться к автору урока - @polkooovnik
 

 

Фото монстров
Раз уж зашла речь о правках как об инструкциях, а не готовых файлах. Распишу за свою правку на фотоохоту.

Нам нужен всего один файл - \scripts\binders\bind_fot.script

 

Разрешаем игроку двигаться во время фото

 

Строки 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

 

ID некоторых НПС.
3 - Сидорович, 500 - Бармен, 902 - Сахаров, 507 - Воронин, 707 - Лукаш, 6 - Волк, 4 - Шустрый, 510 - Бром, 504 - Охотник в Баре, 518 - Киценко, 506 - Петренко, 607 - Лысый, 515 - Осведомитель,
9613 - Захар, 19812 - Ааз, 9903 - Адреналин, 21005 - Акилл, 9899 - Аким, 19815 - Александрыч, 19810 - Сэр Бармалей, 19820 - Андерсен, 571 - Арни, 9630 - Архара, 519 - Барин, 107 - Бес,
14005 - Борман, 425 - Боров, 9511 - Василий, 9977 - Витамин, 19925 - Вожак, 9510 - Ворон, 9998 - Гинеколог, 21011 - Даша, 19813 - Димак, 9502 - Доктор, 9504 - Долговязый, 9505 - Доцент,
30124 - Химик, 19811 - Дьяк, 9622 - Дэн, 9507 - Жила, 19816 - Жора Аномалия, 19806 - Земляк, 505 - Иванцов, 9971 - Калинин, 14003 - Калмык, 19817 - Клёнов, 9981 - Колмогор, 9970 - Крест,
302 - Крот, 900 - Круглов, 32 - Кузнецов, 9509 - Кулинар, 724 - Кэп, 19814 - Лесник, 5 - Лис, 702 - Макс Свобода, 400 - Макс Любер, 21010 - Маша, 422 - Мессер, 21017 - Назар, 21009 - Ной,
19903 - Обитель Зла, 9974 - Отшельник, 9 - Петруха, 516 - Пличко, 728 - Повар, 19926 - Прайм, 115 - Прапор, 92 - Проводник, 19907 - Пропер Семидесятый, 406 - Пуля, 14000 - Свиблов, 734 - Скряга,
19802 - Стаханов, 9501 - Сяк, 9972 - Тень Монолита в Лабиринте, 7 - Толик, 22 - Фанат, 19803 - Фима Уголь, 9619 - Фримен, 9512 - Холод, 14090 - Шедоумен, 9999 - Шахтёр, 775 - Шуруп, 9650 - Якут,
104 - Юрик, 100 - Серый, 9973 - Старик, 401 - Айвенго, 30173 - Катана.

------------------------------------------------------------------------------------------------

Для примирения с группировкой: в ui_main_menu.script добавить

После:

-- elseif dik == DIK_keys.DIK_Q then --winsor:дурацкая затея...
-- self:OnMessageQuitWin()

Дописать

elseif dik == DIK_keys.DIK_G then relations()

И в самом низу добавить

function relations(community1, community2)
relation_registry.set_community_goodwill ("dolg", "actor", 500)
end

Вместо "dolg" пишем название нужной бригады. Названия группировок можно посмотреть в game_relations.ltx.

Если перед цифрой 500 поставить -, то группировка будут враги.

Некоторые Группировки: stalker\ecolog\dolg\freedom\bandit\zombied\trader\green\nebo\furii

Как работает: загружаешь сохранение. Выходишь в Главное меню игры и жмёшь на кнопку "G"

---------------------------------------------------------------------------------------------

Ещё информация по примирению - ссылка на пост.

 

Убираем эффект в "Саркофаге
Чтобы убрать этот поносный цвет в Саркофаге. С фонариком невозможно, а без фонарика не видно.
Путь:
gamedata\config\scripts\sar
Файл - sar_monolith_noise
Сделать так:
active = nil

[sr_psy_antenna]
eff_intensity = 0
hit_intensity = 0
play_visual = false
;mute_sound_threshold = 1

Ссылка на готовый файл: https://my-files.ru/xnxuf3Автор: karavan150

 

Что бы монстры не выбивали оружие из рук.
Путь: OP-2.1\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
}

 

Быстрое лечение, по квесту Доктора + на достижения.(стоит вылечить шесть NPC)
--Быстрое лечение, по квесту Доктора + на достижения.(стоит вылечить шесть 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


#4
_Crazy Gamer_

_Crazy Gamer_

    Сталкер

  • альтернативный текст
  • Модераторы сайта
  • Клуб - reaktor

КПК - Сталкера
  • Регистрация:
    15-October 20
  • 1330 Cообщений
  • Пропуск №: 36666


Репутация: 2168 Постов: 1330
  • Страна проживания:Украина
  • Реальное имя:Николай
  • Пол:Мужчина
  • Город:Киев - Оболонь
Как увеличить частоту выпадения тайников?
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
} 


#5
_Crazy Gamer_

_Crazy Gamer_

    Сталкер

  • альтернативный текст
  • Модераторы сайта
  • Клуб - reaktor

КПК - Сталкера
  • Регистрация:
    15-October 20
  • 1330 Cообщений
  • Пропуск №: 36666


Репутация: 2168 Постов: 1330
  • Страна проживания:Украина
  • Реальное имя:Николай
  • Пол:Мужчина
  • Город:Киев - Оболонь

Для тех кого не устраивает "Фото со спутника"
Для тех кого не устраивает фото со спутника могу предложить другой вариант:

В gamedata\scripts\binders смотрим файл bind_fot.script

В строке 468 if iAmMonster[clsid] and obj:alive() убираем and obj:alive()

Это позволит фотографировать убитых зверюшек.

в строках 474, 480, 485 смотрим self:obj_in_shot(obj:center()

Меняем первые две цифры на 0 и 30. Это позволит фотографировать от нуля до 30 метров.

Было:

self:obj_in_shot(obj:center(), 1, 3, 3.0, false, nil, nil, nil, nil, true)

Стало:

self:obj_in_shot(obj:center(), 0, 30, 3.0, false, nil, nil, nil, nil, true)

Для аномалий тоже самое.

Строка 504 if string.find(anom.name, anom_sect) and self:obj_in_shot(anom.pos, 5, 10, 3.5, false, nil, nil, nil, nil, false) then

меняем на if string.find(anom.name, anom_sect) and self:obj_in_shot(anom.pos, 0, 30, 3.5, false, nil, nil, nil, nil, false) then

Всё.

Делать снимки становится гораздо удобнее, и эта правка не вызовет проблем при сдаче задания.

 

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

 

Пример совмещения правок в ui_main_menu.script
Все волшебство тут, погляди для саморазвития, показометр синий(только кнопки надо свои назначать) спавнер - зеленый.

==============================================

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

 


#6
RomanReigns

RomanReigns

    Сталкер

  • альтернативный текст
  • Свобода
  • Клуб - reaktor

КПК - Сталкера
  • PipPipPipPip
  • Регистрация:
    30-April 20
  • 454 Cообщений
  • Пропуск №: 36552


Репутация: 386 Постов: 454
  • Страна проживания:Россия
  • Реальное имя:Роман
  • Пол:Мужчина
  • Город:Белгород

Правка свойств ГГ: Отключение дрожания оптики
gamedata\config\misc\effectors.ltx


[zoom_inertion_effector]
camera_move_epsilon = 0.03
disp_min = 0.0
speed_min = 0.001
zoom_aim_disp_k = 0.18
zoom_aim_speed_k = 0.00
delta_time = 1350
заменить на:
[zoom_inertion_effector]
camera_move_epsilon = 0.03
disp_min = 0.00
speed_min = 0.000
zoom_aim_disp_k = 0.0
zoom_aim_speed_k = 0.00
delta_time = 2000

 

Отключение(ускорение) возвращения оружия при использовании предметов"

от @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

 

 

 



#7
RomanReigns

RomanReigns

    Сталкер

  • альтернативный текст
  • Свобода
  • Клуб - reaktor

КПК - Сталкера
  • PipPipPipPip
  • Регистрация:
    30-April 20
  • 454 Cообщений
  • Пропуск №: 36552


Репутация: 386 Постов: 454
  • Страна проживания:Россия
  • Реальное имя:Роман
  • Пол:Мужчина
  • Город:Белгород
Выпадение оружия и броников в исправном состоянии

Похоже разобрался с выпадением исправных стволов и броников. Разработчики убрали из 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()

Скачать

 



#8
RomanReigns

RomanReigns

    Сталкер

  • альтернативный текст
  • Свобода
  • Клуб - reaktor

КПК - Сталкера
  • PipPipPipPip
  • Регистрация:
    30-April 20
  • 454 Cообщений
  • Пропуск №: 36552


Репутация: 386 Постов: 454
  • Страна проживания:Россия
  • Реальное имя:Роман
  • Пол:Мужчина
  • Город:Белгород
Элементарный движок для поршней

 

Использовать при крайней необходимости и обязательно сделать именное сохранение и бэкап 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

Но искать нужный сначала надо по названию задания(без ошибок) во всех конфигах


#9
RomanReigns

RomanReigns

    Сталкер

  • альтернативный текст
  • Свобода
  • Клуб - reaktor

КПК - Сталкера
  • PipPipPipPip
  • Регистрация:
    30-April 20
  • 454 Cообщений
  • Пропуск №: 36552


Репутация: 386 Постов: 454
  • Страна проживания:Россия
  • Реальное имя:Роман
  • Пол:Мужчина
  • Город:Белгород
Пример совмещения правок в ui_main_menu.script
Все волшебство тут, погляди для саморазвития, показометр синий(только кнопки надо свои назначать) спавнер - зеленый.

==============================================

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


#10
RomanReigns

RomanReigns

    Сталкер

  • альтернативный текст
  • Свобода
  • Клуб - reaktor

КПК - Сталкера
  • PipPipPipPip
  • Регистрация:
    30-April 20
  • 454 Cообщений
  • Пропуск №: 36552


Репутация: 386 Постов: 454
  • Страна проживания:Россия
  • Реальное имя:Роман
  • Пол:Мужчина
  • Город:Белгород
Эксперименты Василия. Аннигиляция
-- Путь: 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


#11
RomanReigns

RomanReigns

    Сталкер

  • альтернативный текст
  • Свобода
  • Клуб - reaktor

КПК - Сталкера
  • PipPipPipPip
  • Регистрация:
    30-April 20
  • 454 Cообщений
  • Пропуск №: 36552


Репутация: 386 Постов: 454
  • Страна проживания:Россия
  • Реальное имя:Роман
  • Пол:Мужчина
  • Город:Белгород

Подсказки:

 

Для поиска нужно полностью распаковать все файлы мода или игры в отдельную папку включая все патчи и фиксы.

Поиск будет производиться с помощью программы 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



#12
RomanReigns

RomanReigns

    Сталкер

  • альтернативный текст
  • Свобода
  • Клуб - reaktor

КПК - Сталкера
  • PipPipPipPip
  • Регистрация:
    30-April 20
  • 454 Cообщений
  • Пропуск №: 36552


Репутация: 386 Постов: 454
  • Страна проживания:Россия
  • Реальное имя:Роман
  • Пол:Мужчина
  • Город:Белгород

Как отключить "переход закрыт если рядом мясо

В скрипте bind_actor.script

Найти эту строчку:

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

 

Монстры не выбивают оружие из рук

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
}

от AMK-forum

 

Использование НПС подствольного гранатамета
scripts\ai\rx_gl.script

stor.can_fire = true ;false
stor.can_fire = true ;false

-----------------
от Prophet13

 

Как выложить из инвентаря в рюкзак квестовый и любой другой предмет, для которого это не предусмотрено? )
Пример на жетоне монолитовца. В 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

 

Пример совмещения правок в ui_main_menu.script
Все волшебство тут, погляди для саморазвития, показометр синий(только кнопки надо свои назначать) спавнер - зеленый.

==============================================

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




Темы с аналогичными тегами: ОП 2.2, Сталкер, Тень Чернобыля, Объединённый пак 2.2, STALKER, Пак 2


реклама на сайте подключена

Использование материалов сайта только с разрешения Администрации LENA_D!
Или с указанием прямой ссылки на источник. 2010 © bar-reaktor.stalker-worlds.ru
Не забывай о нас. Мы всегда рады тебе!!!

Рейтинг Ролевых Ресурсов - RPG TOP