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

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

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

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

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" влияет на ПОДНЯТЬ/ОТКРЫТЬ?

На расстояние для "поднять/открыть" и даже вроде "поговорить" влияет изменение параметра в строке: \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

«Ну и жесть!» Сказал асфальтовый каток, оглянувшись назад на бывшую "копейку".

Nevada47.gif

Ссылка на комментарий

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

ОП-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 пользователь

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