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

Ковыряем ОП-2


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

(изменено)

Правка по контролеру на Барьере Складов. Посмотрел, какая нечисть окружает контролера и сделал их взаимоотношения максимально враждебными. По идее, он просто не должен успевать зомбировать свободовцев, погибая в междоусобной схватке. Кроме того, насколько я помню, по сюжету вроде нет мест, где изменение отношений контрОллера накернило бы какой-то квест..
http://rghost.ru/58816904
Да, исправлял на версии 2.04, фикс 4. Дополнительных пояснений не привожу - в файле все предельно разжевано.
==================

relic, К твоему сведению, в ОП - 2 контролеры не зомбируют НПС.

Нет, не зомбируют. Но пытаются. Чем стабильно обеспечивают вылет, хорошо всем известный. Во всяком случае, на патче и фиксе, указанными мною, так.
Сомнителен факт подобного вылета в ОП-2, по причине, пусть не вырезанного, но отключённого зомбирования НПС(см. bind_monster.script:
--[[
if self.object:clsid()==clsid.controller_s and self.object:alive() then и далее)...
amk.write_stalker_params(orgtbl,sobj)
...
end
]]

============
Но таки вылетает же )) Причем всегда. Кстати, у меня эта секция выглядит так:

 

if self.object:clsid()==clsid.controller_s and self.object:alive() then

local npc=self.object:get_enemy()

if npc then

if npc:id()~=db.actor:id() and npc:clsid()==clsid.script_stalker and self.object:see(npc) and

npc:character_community()~="zombied" and self.object:position():distance_to(npc:position())<30 then


local sobj=alife():object( npc:id() )

if sobj and sobj.online then

local zomb=amk.load_table("zombies")

zomb[sobj.id]={master=self.object:id(),comm=npc:character_community(),gw=npc:goodwill(db.actor)}

amk.save_table("zombies",zomb)


npc:set_character_community("zombied",0,0)

local orgtbl=amk.read_stalker_params(sobj)

if (not string.find(orgtbl.profile,"_zombi")) then

orgtbl.profile=orgtbl.profile.."_zombi"

end

amk.write_stalker_params(orgtbl,sobj)

end

end

end

end

 

С синтаксисом в конфигах Сталкера у меня проблемы, но по-моему, попытка поменять фракцию присутствует.
Да, код выглядит именно так, но стр. выше(262) " --[[ " и после последнего end, (стр.285) " ]] " . Что означает не читаемость содержимого...
Сдается мне, мой вариант по-любому изящнее
Об изящном: 

npc:character_community()~="zombied" and self.object:position():distance_to(npc:position())<30 then

Вместо 30 поставьте 0.1 ...

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

я здесь лишний

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Помню, где-то была такая правка, но я ее что-то не нашел.. Да и в любом случае, с конвейерным выпуском патчей, лучше править самому. В общем, bind_fot.script:

-- монстры
		if IAmAMonster[clsid] and obj:alive() and db.actor:see(obj) and not protected_items.is_monster_friend(section) then
			-- сначала смотрим тихую охоту
			if  (has_alife_info("silent_hunt_start") and not has_alife_info("silent_hunt_done")) and
				(silent_hunt_monsters[clsid] and not has_alife_info("monster_stealth_"..silent_hunt_monsters[clsid])) and
				self:obj_in_shot(obj:bone_position("bip01_head"), 0, 2, 3.5, true, nil, true)
			then
				-- удачный снимок и такого еще не было

Правильно ли я понимаю, что в  группе чисел <0, 2, 3.5> 2 - пресловутая дистанция до головы моба? Достаточно ли будет изменить ТОЛЬКО ее, чтобы тихая охота работала, скажем, с 10 метров? Ибо дальше 

local act_pos = device().cam_pos
	local dist = act_pos:distance_to(trg_pos)
	if (dist >= min_dist) and (dist <= max_dist) then
		-- дистанция подходящая
		local trg_dir = vector():sub(trg_pos,act_pos):normalize()
		local angle_cos = device().cam_dir:dotproduct(trg_dir)

		-- эффективный угол в пересчете на дистанцию в радианах
		local disp = math.sin(math.rad(max_angle))*max_dist -- дисперсия
		if disp > dist/2 then -- но не больше 30 градусов
			disp = dist/2
		end

Но max_dist в тексте файла нигде не объявлена..

Изменено пользователем relic
  • Спасибо 1

я здесь лишний

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

откуда уверенность,что это из-за правки происходит?

Потому что я лопух ) Сам использовал эту правку, встретил затык в квесте. Случай аналогичный был, тоже из-за правки по торговле Акима. Посмотрел на правки, у себя установленные, выделил файл, который ЯВНО имеет отношение к описанию квестов - task_manager.ltx. Убрал все свои правки, кроме этого файла, запустил ветку квеста сначала. Затык повторился. Убрал этот файл, квест благополучно завершил. Добавил все правки, кроме task_manager.ltx, запустил ветку сначала еще раз - успешно. Распаковал gamedata.db9 (http://www.amk-team.ru/forum/index.php?showtopic=12839#entry846866 , спасибо romale), извлек task_manager.ltx в свою геймдату, закомментировал все time. Начал ветку квеста сначала, со всеми своими правками и этой новой, тоже успешно.

Алгоритм, возможно, несколько избыточный, но для человека, не слишком уверенно понимающего LUA, вполне себе действенный.

...

Интересно: что же там такого было?..

Евген.

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

я здесь лишний

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

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

Рекомендации из http://www.amk-team.ru/forum/index.php?showtopic=12839#entry846897 , разумеется, выполнил - шмон прекратился, а вот тяга к наживе вопреки разумному, увы.

 

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

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

я здесь лишний

Поделиться этим сообщением


Ссылка на сообщение

 

 

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

Я сам чертовски не хотел, думал, обойдется.. Нет, пришлось. Понаделать  в этой теме закладок для себя, распаковать все необходимые файлы (предварительно, узнав, где они и как вообще это делать). Понаставить правок (да не копированием файлов, а вскрытием, анализом и переписыванием своих файлов под себя).

Короче, поправьте меня, если я не прав, но чтобы нормально играть с шансом пройти игру до конца, нужно:

1. Заранее, до НИ, определиться с версией, и оставаться на ней железно - прыжки до добра не доведут (если не фанат НИ, конечно)

2. Иметь распакованные gamedata.db9 и gamedata.dba, а так же actor.ltx из gamedata.db7 от своей версии в полной боевой готовности (http://www.amk-team.ru/forum/index.php?showtopic=12839&page=1#entry846866 , не устаю цитировать, а для Вас с этого поста все должно начинаться)

3. Стараться не ставить правки, а смотреть, что в них поправлено, а потом вносить правки в свои файлы. Для себя (поскольку не упомню всех правок, а сообразить, что и где поправить самому знания LUA и архитектуры игры не хватает) собрался вести реестр правок, чтобы, буде необходимо все-таки внедрить новый патч, оперативно переписать нужные файлы.

Должен заметить, что без новых патчей пока можно обойтись - активность нескольких компетентных товарищей позволяет решить почти любую серьезную проблему, исправляемую патчами.

  • Согласен 3
  • Полезно 1

я здесь лишний

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

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