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

Рекомендуемые сообщения

Поскажите, пожалуйста, что тут изменить, чтобы уменьшить дальность видимости ГГ. Уже утомило, что НПСы видят сквозь стены и деревья.

Попробуй как здесь, наверняка настройки те же (ссылка)

P.S. Не помню можно ли по правилам форума давать URL-ссылки. Если нет, прошу модераторов не считать за пренебрежение правилами.

 

Вообще-то нельзя, но если очень хочется, то можно. ;)

А нельзя - именно по тому, что вот как здесь получилось: вроде ссылки, а на что ссылки, и зачем - непонятно. Поэтому лучше скопировать сам материал, а под ним указать, кто автор, и откуда взято.

 

И по этому же, повторюсь, я призываю кидать сюда не только ссылки на файлы, но и прилагать описание: что как сделали. Если правка не совсем уж глобальная. Ссылка завтра сдохнет, или proper70 очередной "патч" выпустит, а текст - останется.

 

Сами ссылки оставляю в качестве иллюстрации "хотели как лучше, а получилось - как всегда". dc

Изменено пользователем Eugen81
  • Нравится 1

Ну читаем внимательно тему же. Есть же ответы. По "прыжковому", который в основном и срабатывает - 3-й пост в теме.

По рентгеновскому зрению - http://www.amk-team.ru/forum/index.php?showtopic=12839&p=848276

 

Теперь еще раз про убиение неписей, а то я внезапно обнаружил, что их тоже норовят удалять.

 

Ну вот у нас традиционный код в bind_stalker.script:

--[[local bad_object_names = {"wpn_lr30053522", "wpn_lr30058409" }
local i, se_name, se_obj

for i, se_name in ipairs(bad_object_names) do
  se_obj = alife():object(se_name)
  if se_obj then
    news_manager.send_tip(db.actor,"Удалили глючный ствол:"..se_name,nil,nil,1000)
    alife():release(se_obj, true)
  end
end]]
Поскольку удалять неписей не есть хорошо, то будем просто убивать:

 

local obj = alife():object( "невинноубиваемый" )

local t = amk.read_stalker_params(obj)

t.health = 0

t.updhealth = 0

amk.write_stalker_params(t, obj)

smart_terrain.on_death( obj.id )

 

Имена невинноубиваемых брать поиском по профилям (config\gameplay), а по найденному профилю искать в allspawn. распакованный выложен в теме.

 

prjnik, ага, годно.

С той поправкой, что костюм нудиста в соли и оп1 всем принудительно зрение ставит 60 метров (в оп2 руки так и не дошли посмотреть), и примерно на это же расстояние расставлены всяческие сценки (типа вояки под мостом vs. свиноферма/дом Лиса, снайпер на насыпи vs. костер Петрухи, наемнике в сцене с Халявой vs. Кузнецвов, костер Беса-Крота-Лиса vs. бандиты в ТД и т.д.

 

Ну а "прозрачность" рельефа - это из сочетания скоростей нарастания/падения шкалы видимости (time_quant/decrease_value), прозрачности материалов и transparency_threshold vs. visibility_threshold.

  • Нравится 1

Потому как всё равно спросят, про убирание стволов при использовании медицины/еды, решил написать:

gamedata\scripts\zvuki.script:

 

-- третья рука, прятание оружия при съедании. на новичке не убирается, далее по нарастающей

  local difficulty = level.get_game_difficulty()

  if difficulty > 0 then

   bind_stalker.hide_weapon()

 

 - if difficulty > 0 then - если сложность больше 0(новичок) то hide_weapon(убираем оружие).

Если вместо "0" поставить"3", то и на мастере(реализм) стволы не убираются.

 

Сам скрипт: http://yadi.sk/d/A8R9nQ-cR2zdN  - оставил возможность для реалистов...

 

 

(pickup_info_radius) снижен до 2, хотя вродь был 5, вернул обратно и без особых проблем взял

Разве "pickup_info_radius" влияет на ПОДНЯТЬ/ОТКРЫТЬ? Изменено пользователем alen_fantom
  • Нравится 2
  • Полезно 1

 

 


Разве "pickup_info_radius" влияет на ПОДНЯТЬ/ОТКРЫТЬ?

Не влияет, только на вывод названия предмета при зажатой клавише F.

Разве "pickup_info_radius" влияет на ПОДНЯТЬ/ОТКРЫТЬ?

На расстояние для "поднять/открыть" и даже вроде "поговорить" влияет изменение параметра в строке: \gamedata\config\inventory_sect.ltx >> take_dist = 2

Достаточно будет изменить на = 4 или = 5

  • Нравится 2

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

Иначе при попытке разговора более чем с 2-х метров клавиатура отрубается.

Высота прыжка и физические размеры актора (ГГ)

 

В файле gamedata\config\creatures\actor.ltx, найди параметр jump_speed и задай ему нужную тебе величину, чем больше тем выше ГГ будет прыгать.

; Физические размеры героя. Позволяет залезать в тесные пространства, например, в трубы.
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.35, 0.65,  0.35   ; 2-е значение - высота ГГ в присяде
ph_box2_center            = 0.0,  0.5,   0.0    ; 2-е значение - высота ГГ в полном присяде
ph_box2_size              = 0.35, 0.5,   0.35   ; 2-е значение - высота ГГ в полном присяде
stalker_restrictor_radius = .05;0.55;0.75;0.9 ; ограничение расстояния между сталкерами. Низкое значение полезно, когда кто-то загородил дорогу в тесных помещениях.

 

@fregat44,

 

"Это из amk_offline_alife.script" - это - ставить в 0, и там еще похожая строка есть - тоже в 0, чтобы неписи всю Зону не раздолбали, и не повисли. http://www.amk-team....=12839&p=846897

Изменено пользователем Dennis_Chikin
Озаглавил, выделил.
  • Нравится 2

По поводу зрячести НПС и видимости ГГ в продолжение поста.

ОП-2 своей сложностью прохождения вызывает внутреннюю напряженность как только о ней начинаешь думать. Если раньше все опасные места зоны были известны и наперечет, то теперь локации как бы сжались в своих размерах из-за больших простреливаемых расстояний. По зоне теперь чаще нужно ходить осторожно, а не как раньше безоглядно галопом, и каждая перестрелка требует напряжения. Для создания атмосферы напряженности это конечно хорошо, но все же кое-где хотелось бы немного подкрутить зону под себя.

По тактическим настройкам игры мне хотелось бы в идеале достичь следующее:

- бандиты прячутся и устраивают засады, ведут бой на коротких дистанциях;

- военные пусть стреляют с максимальных дистанций (как сейчас);

- при попадании в НПС больше неподвижных раненых;

- от ранения НПС теряют подвижность и меткость;

- не простреливаются стены;

- кусты и пр. предметы скрывают ГГ и дают возможность передвигаться в режиме стелс на близких дистанциях.

 

 

Конечно можно попробовать поэкспериментировать в файле m_stalker.ltx (и других подобных) с параметрами: eye_range (дальность зрения в Метрах), luminocity_factor (параметр отвечающий за зрение NPC в темноте), transparency_threshold (фактор прозрачности, при высоком значении можно будет прятаться даже за жиденькими кустами, при низком наоборот даже густые заросли вас не скроют), но посмотрев немного форум:

...даю СВД всем - смотрю.. ниче хорошего - в ангаре всегда все сталкеры дохнут даже не стреляя (просто не видят) а вот к примеру долговцы на янтаре (после отключения генератора) те да - охотно стреляют с ОГРОМНОЙ дистанции!!
Nekt имеет в виду что дальность зашита в all.spawn (в точках направления взгляда - для конкретного гулага).

(ссылка на оригинал сообщения)

 

 

Я тут внимательно пересмотрел расчет повреждений для ТЧ и вот что получилось.
Берется большее из:
урон% = (hit_power*k_hit - bip01_бронезащиты)*bip01_части_тела*fire_wound_immunity*health_hit_part*100%
или
урон% = hit_power*k_hit*hit_fraction*bip01_части_тела*fire_wound_immunity*health_hit_par
t*100%

bip01_бронезащиты - второй параметр из damages.ltx
hit_fraction - из damages.ltx
fire_wound_immunity из immunities.ltx или m_stalker.ltx
bip01_части_тела - первый параметр из m_stalker.ltx (секция [stalker_damage])
health_hit_part - из m_stalker.ltx (секция [stalker_condition])
Также влияет параметр air_resistance_k из weapons.ltx - ослабевание урона от расстояния вследствии уменьшения скорости пули в полете.
Для НПС параметры защиты (bones_protection_sect и immunities_sect) определены через #include ссылку на models\capture\*.ltx в ogf файле.

И еще в НЛС6 обнаружил странную особенность - любой выстрел из любого ствола ослабевается на 20%, т.е. hit_power*k_hit*0.8
Откуда это 0.8 берется я така и не нашел. В чистом ЧН, АМК или НЛС5 этого нет.

(ссылка на оригинал сообщения)

 

Я провел детальное исследование влияние параметров пули и броников при стрельбе по неписям.
Участвуют след. параметры:
1. hit_power - мощность ствола из файлов параметров стволов
2. k_hit - мощность пули из weapons.ltx для каждого типа патронов
3. k_ap - способность пули пробивать защиту (куртки, броники и т.п)
4. Секции [body_damage_*] и [head_damage_*] из damages.ltx с набором
параметров bip01_* - определяет прочность защиты на каждой части тела (второй параметр).
Далее эти параметры я обозначу как Bd и Hd.
5. hit_fraction из damages.ltx для каждого типа защиты определяет прочность защиты.
Надо упомянуть что параметры броников неписей определяются из файла damages.ltx,
а не из outfit.ltx (этот файл чисто для ГГ).
6. Секция [stalker_damage] из m_stalker.ltx с набором параметров bip01_* - определяет фактор
уменьшения здоровья при попадании в соответсвующую часть тела (первый параметр).
Далее этот параметр я обозначу как Sd.

Далее я опишу алгоритм по которому происходит вычисление повреждений.
Алгоритм был получен опытным путем при стрельбе по неписи в упор и не претендует на истину в последней инстанции.
Контроль количества повреждений производился через hit_callback функцию скрипта.

1. Здоровье неписи лежит в диапазоне от 0 до 100%.
2. Если пуля не бронебойная (k_ap = 0) то урон здоровью вычисляется как:
hit_power * k_hit * hit_fraction * Sd * 100
Полученное число вычитается из здоровья неписи и при достижении <=0 - непись убита.
Т.е. учитывается только фактор защиты в целом без учета степени защиты на разных частях тела.
3. Если пуля бронебойная (k_ap > 0), то ее фактор повреждения зависит от того пробила пуля защиту или нет.
Если пуля не пробила защиту ( k_ap <= Bd(Hd) ) то повреждения считаются как в п.2.
Если пуля пробила защиту ( k_ap > Bd(Hd) ) то повреждения считаются как:
Вычисляется 2 числа и берется большее:
hit_fraction * Sd * 100
и hit_power * k_hit * F * Sd * 100 где F = (k_ap-Bd)/k_ap или F = (k_ap-Hd)/k_ap
Интересно что урон здоровью в случае пробития брони бронебойной пулей никак не меньше чем фактор ослабления пули броней (hit_fraction * Sd * 100).

И еще о k_ap. Было замечено странное поведение алгоритма расчета урона при значении этого коэффициента выше 0.75.
Пуля наносит как бы двойное повреждение. Одно как бронибойная пробивая защиту, и другое - как не бронибойная пуля.
В результате совокупный урон неписю может составляеть больше чем 2 * hit_power * k_hit * 100.
Скорее всего глюк в игре. Получается, например, при k_ap = 0.75 непись получает 70% урона, а при k_ap = 0.76 - безуслованя смерть.
К тому же этот эффект пропадает, например, при определенных сочетаниях hit_power * k_hit >= 1 и k_ap > 2.2
Так что лучше k_ap ограничить максимум 0.75

Теперь что касаемо пробивания препятствий:
Похоже что параметр k_pierce не используется вообще (наверное пришел из ТЧ). За пробиваемость препятствий отвечает также k_ap.
Вот некоторые его значения:
>0.34 - пробивает тонкие фанерки (двери и т.п.)
>1.0 - пробивает листовой металл
>1.5 - пробивает деревянные брусья и стены деревянных домов
Ну а гаусска с ее k_ap=15 шьет все.

Ты-ы-ыкс, вот мы добрались и до стрельбы неписей по ГГ. Алгоритм тот же самый.
В качестве hit_fraction выступает hit_fraction_actor из outfit.ltx для каждого костюмчика. Повреждения по частям тела расписаны опять же в
damages.ltx в секциях [actor_damage_N]. Ссылки на секции повреждений в параметрах bones_koeff_protection из outfit.ltx для каждого костюма.
Параметр fire_wound_protection не используется.
В инвентаре пулестойкость костюма отображается на основе второго значения из bip01_spine параметра из соответсвующей секции в damages.ltx.

(ссылка на оригинал сообщения)

 

 

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

Изменено пользователем prjnik

Здесь - видимо, нет. И, похоже, вряд-ли где-либо еще.
Но как бы навскидку - параметры не настраивались, а были взяты соляночные (не самые удачные), и накручены "чтоб игроку жизнь медом не казалась". Что при этом происходит с собственно неписями - ни кого не волновало ни в соли, ни, тем более, дальше.

Что можно сделать из тюнинга: начинать все-таки с отключения рентгеновского зрения. То есть, подбирать уже неоднократно здесь упомянутые параметры до момента, пока в это еще интересно играть.

Расставить всех неписей по другим местам - это, конечно, нереально. Ограничения на момент начала стрельбы - сделать проще, но, во-первых, нужно поправить несколько ошибок оригинала, достаточно много работы, и - это все-таки паллиатив. Толку, если по пресловутому чиху тушкана непись решит сорваться в бой, а потом уже не успокоится, пока не сдохнет ?

 

Так что начинать все-таки со зрения. Кстати, кто-нибудь уже пробовал ?

 

Да, по раненым - здесь должен работать тот же фикс, что и для оригинальной соли (цитирую самого себя):

 

"Системы нет, поскольку код проверки сам по себе несколько... э-эээ, рэндомный.
До того, как это дело поправят (читай, выхода новых сборок) - все сводится к повезет/неповезет.

Чтобы получить больше раненых - уберите в xr_wounded.Cwound_manager:hit_callback()
if self.npc:critically_wounded() == true then return end

и увеличьте def.hp* с 10 до сколько надо. Впрочем, и это сработает не для всех."

Dennis_Chikin

В  m_stalker.ltx поменял значения как были в ОП1

eye_fov             = 110

fog_density_factor        = 0.05

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

Сделайте кто нибудь пожалуйста шаблон папки музыка...

Сделал для базы Свободы, бара и Сидоровича download_2.jpg.

Названия файлов сохранены. У Свободы ничего не менял. В баре заменил первые 4 файла на 3 Соляночных и один из ТЧ (вместо "моя ты Люсечка...").

Вместо остальных поставил "заглушки", хотя более грамотно было бы удалить их и удалить их из конфига, но где лежит их конфиг я не знаю.

Сидоровичу добавил дополнительно третий файл из ТЧ. Всем файлам Сидоровича и в баре уменьшил громкость через SDK, чтобы из приемника лилась приглушенная музыка..

- уменьшил громкость вертолета Седого, т.к. он часто зависает на АТП

- поставил заглушки на стрельбу в Припяти

- поставил заглушки на всю динамическую музыку, т.к. я ее не слушаю (чтобы уменьшить объем папки)

- поставил заглушки на радио (сталкеров и пр.)

- оставил в главном меню только одну композицию (из ТЧ) и уменьшил ее громкость через SDK (удалил лишние файлы и подправил конфиг, чтобы игра их не искала)

- охраннику Долга в ангаре, Жорику, охраннику бармена и Петренко добавил по 30 сек тишины в файлы, чтобы за время общения с ними не слышать от них повторения фраз

- всем посетителям в баре, мегафону бармена и Долга вернул звуки из ТЧ, т.к. в НС и в ОП-2 звуки урезаны по расстоянию срабатывания от ГГ.

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

- рык Сидоровича заменил на его же фразу - "как дела сталкер"

- на Кордоне мегафону блокпоста вернул русские звуки из ТЧ, уж больно мне нравится фраза на русском - "...буль-буль-буль ах, хорошо пошла"

- Сяку уменьшил расстояние слышимости и громкость приемника (приглушил немного)

- уменьшил громкость громкоговорителя Саркофага ("..иди ко мне")

- убрал Розенбаума из гитарных песен, убрали его и в ОП-2, но в ОП-2 сейчас есть гитарные песни очень похожие на электрогитарную акустику

- уменьшил громкость выстрелов БТР и вертолетов (второе особенно актуально для прохождения ЧАЭС)

 

 

Изменено пользователем prjnik
  • Нравится 2

Поправил расстояние для взятия тайника (спасибо romale), увеличил с 2 до 5, теперь точно работает, можно достать труднодоступные.

http://rghost.ru/55794382, также ремонт ремкомплектами снижен до 55% изношенности. Для версии 2.0

Изменено пользователем Eugen81
  • Нравится 2

Я, конечно, заранее извиняюсь за кривокод (потому что Lua изучаю буквально на ходу), и программирование только хобби.

Пытаюсь поправить функцию buy_quest_item, чтобы она помимо предметов и денег могла еще и произвольные инфопоршни выдавать.

Вот кусок кода:

if not ini:section_exist(buy_item) then
		local money = tonumber( buy_item )
		if money then aem_manager.manage_money(money, "in")
		else news_manager.send_tip(db.actor, "Предмет \""..buy_item.."\" не найден.", nil, "nano", 30000)
		end
elseif string.sub(buy_item,1,3)="ip_" then db.actor:give_info_portion(string.sub(buy_item,4,string.len(buy_item)))
Суть в том, что если аргумент начинается с "ip_", то выдать инфопоршень равный аргументу за вычетом трех первых символов - "ip_".

Проблема простая - что-то накосячил в этом участке и не могу понять, что. :russian_ru:

Что же я мог упустить?

Опять флудим-с ? Снес посты, которые подозрительно похожи на оффтопик, и скажите спасибо, что Мурариус оказался либералом. Пол года назад все бы в баню отправились.
 

Tuxuu, все так изучали, на ходу. Поправим.

if not ini:section_exist(buy_item) then -- это проверка на наличие в конфигах секции, которую ввели. Кстати, проверочка неаккуратная, и если ввести что-нибудь не то - будет плохо. Ну да ладно: при должной внимательности она работает.
not  - это как раз означает "не найдено".

 

local money = tonumber( buy_item )  -- И тогда проверяем, не похоже ли введенное на деньги

if money then ... -- если похоже - добавляем деньги, если не похоже - ругаемся

return  -- и заканчиваем здесь что-либо делать.

end

 

А дальше идет спавн предмета.

Если здесь добавить проверку elseif string.sub(buy_item,1,3)=="ip_"

-- она сработает, только если в конфигах есть предмет, начинающийся с ip_,  а если такого нет - до нее просто не дойдет.

 

Что делать ? Переносим в самое начало:

if string.sub(buy_item,1,3)="ip_" then  -- да, здесь не elseif, а просто if

db.actor:give_info_portion(string.sub(buy_item,4,string.len(buy_item)))  -- добавляем info

return  -- уходим отсюда

end

 

if not ini:section_exist(buy_item) then ... -- ну а если не info, то пошли уже проверки из оригинала

 

upd: синтаксическую ошибку сразу не заметил. Кстати, если после правки случился вылет - скорее всего именно ошибка в синтаксисе. Так и пишите "вылетело", а не "не получается".

Народ, где лежат настройки урона при падении? Нужно увеличить высоту, начиная с которой ГГ получет урон.

Все там же: gamedata\config\creatures

m_stalker.ltx - для всех, actor.ltx - переопределение для актора. Тольконе высота, а скорость при столкновении.

ph_crash_speed_min = 14
ph_crash_speed_max = 30
ph_collision_damage_factor = 0.1


Вообще же хочу сказать: ну читайте первые посты тем из "Школы моддинга" - там ссылки на кучу статей, где все разобрано подробно. Здесь это как бы полуоффтопик получается, поскольку темка именно про оп2, а вопросы ваши - про сталкера вообще. Как в него с 2008го года играли - непонятно, что вот только сейчас вопросы задавать начали. dc

@Dennis_Chikin,

function buy_quest_item()
    local f = getFS()
    local flist = f:file_list_open_ex("$game_saves$", bit_or(FS.FS_ListFiles, FS.FS_RootOnly), "*.buy")
    if flist:Size() == 0 then return end

    fname = flist:GetAt(0):NameFull()
    local buy_item = string.sub(fname, 0, string.len(fname)-4)
    local ini = system_ini()
    if string.sub(buy_item, 0, 2) = "ip_"
    then db.actor:give_info_portion(string.sub(buy_item,3,string.len(buy_item))) 
    end
    return
    if not ini:section_exist(buy_item) then
        local money = tonumber( buy_item )
        if money then aem_manager.manage_money(money, "in")
        else news_manager.send_tip(db.actor, "Предмет \""..buy_item.."\" не найден.", nil, "nano", 30000)
        end
        return
    --    
    elseif db.actor:money() < 5 then
        news_manager.send_tip(db.actor, "Для покупки недостаточно денег.", nil, "nano", 30000)
    --elseif is_excluded_item(buy_item) then
        --news_manager.send_tip(db.actor, "Через меню игры можно покупать только квестовые предметы.", nil, "nano", 30000)
    
    else
        db.actor:disable_info_portion("mm_opt")
        aem_manager.manage_money(5, "out")
        sak.create_items_actor(buy_item, 1)
        
        local info
        for i =1,3 do
            info = "acv_halavshic"..tostring(i)
            if not has_alife_info(info) then
                db.actor:give_info_portion(info)
                break
            end
        end
    end

    local f1 = f:update_path("$game_saves$", fname)
    f:file_delete(f1)
end

 

Хммм... Вот текст всей функции. Переделал, но, похоже, опять что-то не то сделал. Мой участок - строки 9-12. Может, у меня синтаксис неправильный? Вроде if закрыл, return сделал.

Изменено пользователем BFG

if string.sub(buy_item, 0, 2) = "ip_"

Ошибка в синтаксисе.

if string.sub(buy_item, 1, 3 ) == "ip_" then

db.actor:give_info_portion(string.sub(buy_item, 4 ))

return  -- и в логике

end

 

Рекомендую скачать чистый Lua-компилятор (http://www.lua.org), и после изменения скриптов проверять им.

Гость
Эта тема закрыта для публикации сообщений.
  • Недавно просматривали   1 пользователь

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