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

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


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

(изменено)

остался как и в прошлых версиях телепорт на выходе из х10, его можно как то ликведировать?

Если ещё актуально: если при поднятии ПДА (из тайника в клетке), остался только этот телепорт, то это Ваш персональный глюк в игре, подобную ситуацию не возможно спровоцировать специально(хотя возможно, но тогда не удалятся все телепорты), потому как в xr_effects.script:

function create_sr18() 
local se_obj = alife():create("space_restrictor",vector():set(-30.385196685791,-21.020092010498,55.938106536865),1962,2738)
local custom = "[logic]\n"..
"active = sr_idle\n"..
"[sr_idle]\n"..
"on_actor_inside = {+info_restriction} nil %=play_zvuk6 =delete_teleport54 =delete_teleport53 =delete_teleport52 =delete_teleport51 =delete_teleport50 =delete_teleport49 =delete_teleport48 =delete_teleport47 =delete_teleport46 =delete_teleport45 =delete_teleport44 =delete_teleport43 =delete_teleport42 =delete_teleport41 =delete_teleport40 =delete_teleport39 =delete_teleport38 =delete_teleport37 =delete_teleport35%"
spawn_restrictor.rewrite_restrictor(se_obj, custom, 2)
end 
рестриктор внутри клетки, перед рюкзаком, где в логике =delete_teleport37

 
function delete_teleport37(story_id)
local obj_id = xr_logic.pstor_retrieve(db.actor, "m_teleport_37", -1, true)
local se_obj = alife() : object(obj_id)
if se_obj then
  alife():release(se_obj, true)
end
end
(тот что на скрине). Лучше переиграть... Изменено пользователем alen_fantom
  • Спасибо 1
  • Нравится 2

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


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

Kakoss, проблему http://www.amk-team.ru/forum/index.php?showtopic=12839&p=870292 решили? Если нет, то и не пытайтесь, лучше правильно пройдите путь к тайнику, а не телепорты через спавнер...

у меня нет строки dialogs_amk.xml

Это не строка, а имя файла по вышеуказанному пути, в котором нужно найти <has_info>foto_ohota_white_wolf</has_info> и что-то сделать...

Если нет файлов, то распакуй gamedata.db9 и выдерни в паку gamedata...

Правка по фото через спутник не решает проблему(2.0) по white_wolf. Решение: фикс от 14.07.14 18-09(2.02) и выше(2.03)...

а проблему решил после недолгого мучения, просто поковыряв в скриптах. Обошёл какие-то условия, которые у меня походу не фурычили и скидал все поршни в одно место.

Напрасная трата времени. Не известно как ваш ГГ попал к тайнику, но ясно одно, что не через рестриктор с логикой:

"on_actor_inside = {-strelok_taynik_pda1_found} nil %=strelok_taynik_pda1_found%"

По этому у Вас и не срабатывало в function checking_taken_item62(obj)это:

if has_alife_info("strelok_taynik_pda1_found") then 

и xr_effects.script

function strelok_taynik_pda1_found()

С Вашего сейва, при правильном прохождении: c7aca1ea4c634d2b367f98383d02d3a32ee58d190998541.jpg

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

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


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

...где лежит функция.. автоубирания оружия при поедании пищи\обматывании бинтом\вкалывании препаратов..?

Поиск по теме:

http://www.amk-team.ru/forum/index.php?showtopic=12839&p=849580

http://www.amk-team.ru/forum/index.php?showtopic=12839&p=856348

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

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


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

Возможно не в тему.Ссори...
astronom31, сдаётся(скрины) что проблему с размытием и резкостью Вы так и не решили..?
Если ещё актуально: gamedata\shaders\r2\skygraphics_options.cfg или ShaderSettings.txt (могут оказаться оба, в зависимости чьи шейдеры) -

 

 

#define DEPTH_OF_FIELD
Включает/выключает эффект Depth Of Field. Для включения надо раскомментировать эту строку, например:
#define DEPTH_OF_FIELD
Для выключения - надо закомментировать:
//#define DEPTH_OF_FIELD

Далее там же, например:

#define DOF_QUALITY int(12)
Параметр для Depth Of Field, определяет качество эффекта. Влияет на производительность. Параметр не может принимать дробных значений.

#define MINDIST float(0.4)
#define MAXDIST float(200)
Параметры для Depth Of Field, определяют расстояние с которого включается Depth Of Field (MINDIST), и расстояние с которого начинается полное размытие (MAXDIST). Параметры условно измеряются в метрах.

#define MAXCOF float(3)
Параметр для Depth Of Field, определяет степень размытия эффекта.

 

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

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


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

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

Сам не играю, по этому могу ошибаться - сдаётся что это тайник на Генераторах(три рестриктора с "карканьем" - от чего и "плясал") в xr_effects.script (построено на счётчике поршней)

 

function strelok_taynik_pda6_found()
	if not has_alife_info("strelok_taynik_pda6_found") then
		dialogs.dialog_count("strelok_taynik_pda6_found", 3) - здесь, вместо 3 ставишь 1
		this.play_zvuk_ts6()
	end
end

function play_zvuk_ts6()
	if has_alife_info("strelok_taynik_pda6_found3") then -- тут found3 изменить на found1
		this.play_zvuk_ts6_3() - можно не трогать, "каркнет" три раза
		local obj = alife():create("s_inventory_box6",vector():set(-177.86285400391,48.186073303223,-538.17407226563),130423,3088)
		db.actor:give_info_portion("strelok_taynik_pda6_found")
	--[[elseif has_alife_info("strelok_taynik_pda6_found2") then -- отрубить за ненадобностью
		this.play_zvuk_ts6_2()
	elseif has_alife_info("strelok_taynik_pda6_found1") then 
		this.play_zvuk_ts6_1()]]
	end
end
и в spawn_restrictor.script

function strelok_taynik_pda6_sr1()
...
function strelok_taynik_pda6_sr2()
...
function strelok_taynik_pda6_sr3()
из трёх рестрикторов отрубить два, что бы не сработали, при случайном прохождении, повторно. На какой нибудь "звезде" должно сработать...

 

 

и в spawn_restrictor.script... из трёх рестрикторов отрубить два, что бы не сработали, при случайном прохождении, повторно.

Наверное лишнее...

 

 

Не большая правка по вкл\выкл "Интерактивного худа"(АМК опции).

Нумерация строк соответствует оригиналу скрипта из патча 2.04: amk_mod.script

 

 

стр.

2768  if amk.load_variable("option_hud",2)~=2 then return end    -- by Monnoroch - закомментировать(--) либо удалить...

...

2807  if amk.load_variable("option_hud",2)~=2 then  -  "~=2" изменить на "==0"

...

2939  if mycurrent_suithud ~= nil and not string_find(mycurrent_suithud,"_red3") and not string_find(mycurrent_suithud,"hud_sci_") then

изменить на

 if (mycurrent_suithud ~= nil and amk.load_variable("option_hud",2)==2 and not string_find(mycurrent_suithud,"_red3") and not string_find(mycurrent_suithud,"hud_sci_")) then

 

 

Теперь худ маски брони убирается без снятия самой брони, перед выкл. "Интерактивного худа"...

Подглядел в DMX-mod 1.3.5...

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

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


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

Как эту функцию прикрепить к другому прицелу?

Нужно научиться пользоваться "поиском" и многое окажется не таким сложным...

В bind_stalker.script

if wpn and wpn:section() == "wpn_crossbow" or wpn and wpn:section() == "wpn_svd_m3" or wpn and wpn:section() == "wpn_b94_sil" or wpn and wpn:section() == "здесь название нужного ствола" then
if not xr_conditions.is_day() then
level.add_pp_effector("bast.ppe", 1034, true)
get_console():execute ("r2_mblur 0.6")
end
Изменено пользователем alen_fantom
  • Полезно 3

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


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

Dennis_Chikin, так то лишь часть кода...На всякий случай весь:

 

local fov = device().fov
local wpn
if fov < 35 and xr_logic.pstor_retrieve(db.actor, "use_scope", 0) == 0 then
wpn = db.actor:item_in_slot(db.actor:active_slot())
if wpn and wpn:section() == "wpn_crossbow" or wpn and wpn:section() == "wpn_svd_m3" or wpn and wpn:section() == "wpn_b94_sil" then
if not xr_conditions.is_day() then
level.add_pp_effector("bast.ppe", 1034, true)
get_console():execute ("r2_mblur 0.6")
end
xr_logic.pstor_store(db.actor, "use_scope", 1)
end
elseif fov > 35 and xr_logic.pstor_retrieve(db.actor, "use_scope", 0) == 1 then
xr_logic.pstor_store(db.actor, "use_scope", 0)
level.remove_pp_effector(1034)
get_console():execute ("r2_mblur 0.")
end
  if upd_time3 == nil then
    upd_time3 = time + 500
  elseif upd_time3 < time then
    upd_time3 = time + 500  
    local accuracy = math_ceil(db.actor:accuracy()*1000)
    if accuracy == 1 then
        if not scopeUsed then
            local item = db.actor:active_item()
            if item then
                --get_console():execute("load ~#I#: db.actor:active_item():section()="..tostring(item:section()))
                if item:section() == "wpn_binoc" then
                    scopeUsed = true
                elseif IAmAWeapon[item:clsid()] then
                    local t = amk.get_weapon_data(alife():object(item:id()))
                    scopeUsed = (bit_and(t.addon_flags, 1) == 1 or rx_utils.get_addon_status(item, "sc") == 1)
                    --amk.dump_table(t)
                end
            end
        end
    else
        scopeUsed = false
    end
  end

 

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

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

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


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

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

Патч какой? Если 2.02 и выше, то может стоит посмотреть в расширенных настройках видео, на сколько выставлен флаг на раскачивание камеры, снизить и проверить...

 

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

Ссори, немного офтопа...

Касаемо "гениальности". Когда читаю такое или подобное, хочется задать вопрос: ,,РебятЫ, где были вы ТОГДА, с вашем НЫНЕШНИМ багажом знаний?,,

А пока имеем то, что имеем...(тоже где-то уже было). И надеемся дождаться всё ту же "обезжиренную" и оптимизированную "соль"...

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

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


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

Так, по мелочам, но всё решаемо...
Для 2.04 фикс 3:

- Добавлена озвучка ремонта брони и оружия ремкомплектами. И на время ремонта теперь убирается оружие, как и при поедании предметов. Время отсутствия оружия зависит от уровня сложности также как и предметы. На Разминке оружие не убирается, далее по нарастающей. Если запустить ремонт не удается, то приходит СМС как и раньше. При удачном запуске ремонта закрывается инвентарь и убирается оружие. Чтобы сделать озвучку ремонта, пришлось сильно изменить механизм запуска ремонта. Поэтому, если заметите какие глюки при поедании предметов либо при ремонте - если что-то будет работать не так, как раньше - сразу пишите, буду быстро выправлять.

Не должно напрягать, но если невмоготу, то всё правится в тех же zvuki.script, как и с поеданием...

- Запчасти с монстров теперь можно срезать только при наличии в инвентаре любого ножа или режущего оружия. Необязательно в слоте - достаточно просто в рюкзаке. Добавлена озвучка срезания, а также на время срезания убирается оружие, как при поедании предметов. Время отсутствия оружия зависит от уровня сложности также как и предметы.

Тоже не сложно: monster_parts.script

if actor_has_knife() or not actor_has_knife() then -- как вариант проверки наличия\отсутствия
		local difficulty = level.get_game_difficulty()
		if difficulty > 0 then -- "0" меняем на "3" и "реалисты" - читеры...

либо полностью отрубить в bind_stalker.script

 --monster_parts.on_part_take(obj)

Dennis_Chikin, про рестрикторы:
bind_restrictor.script

function restrictor_binder:net_spawn(data)
if not object_binder.net_spawn( self,data ) then
return false
end

db.add_zone( self.object )

-- Не регистрироваться на апдейты, если у объекта в customdata
-- нет секции logic вообще.
--[=[ ОП-2:
Функция xr_logic.get_customdata_or_ini_file(self.object, "") при отсутствии у рестриктора кастомдаты
возвращает "пустую" логику: return ini_file([[scripts\dummy.ltx]]), в которой секция logic есть.
Поэтому в updatable_binders в варианте от ПЫСов, несмотря на их коммент выше, регистрируются на апдейты АБСОЛЮТНО ВСЕ рестрикторы. Даже те, у которых нет кастомдаты вообще.
Поэтому условие проверки доработано на проверку строки active ~= nil и отсутствие строки cfg.
--]=]
local char_ini = xr_logic.get_customdata_or_ini_file(self.object, "")
--if char_ini:section_exist("logic") then
if xr_logic.logic_not_empty(self.object, char_ini) then
-- get_console():execute("load ~~~ На апдейт: "..self.object:name())
updatable_binders[self.object:id()] = self
--else
-- get_console():execute("load ~~~ Незарегистрирован на апдейт: "..self.object:name())
end

return true
end
....
....
function restrictor_binder:actor_update(delta)
if not self.initialized and db.actor then
self.initialized = true
xr_logic.initialize_obj(self.object, self.st, self.loaded, db.actor, modules.stype_restrictor)
end

if self.st.active_section ~= nil then
xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "update", delta)
elseif self.object:section() == "space_restrictor" and self.object:name() == self.object:section()..self.object:id() then
--[=[ ОП-2:
Рестрикторы, у которых логика вышла в nil, не удаляются еще от ПЫСов и болтаются в памяти всю игру. И этот апдейт для них постоянно вызывается.
Но теперь, согласно правке заполнения updatable_binders выше, в этой таблице есть только рестрикторы с логикой.
И их логика вышла в nil, поэтому их смело можно было бы удалить. Но некоторые из них используются дополнительно как рестрикторы зон для неписей. Поэтому удаляем только обычные рестрикторы, заспавненные скриптом - алспауновские и с уникальными секциями не трогаем.
У скриптового рестриктора name = секция+ид.
--]=]
-- get_console():execute("load ~~~ Удален рестриктор: "..self.object:name())
alife():release(alife():object(self.object:id()))
end
end

 



Правки на какой патч? НИ начинала? В каком месте вылет? Если в х18 - удали файл - xr_effects.script

К слову к посту

Немного размышлизма о сложившейся ситуации....

И очень печально, что грабли всё те же. Из последних правок:

 

--function run_cam_effector(actor, npc, p)
-- if p[1] then-- local loop, num = false, (1000 + math.random(100)) 
-- if p[2] and type(p[2]) == "number" and p[2] > 0 then
-- num = p[2]
-- end
-- if p[3] and p[3] == "true" then
-- loop = true
-- end 
--level.add_pp_effector(p[1] .. ".ppe", num, loop)
-- level.add_cam_effector("camera_effects\\" .. p[1] .. ".anm", num, loop, "")
 -- end
--end

Разве эта функция лишняя??? Здесь не нужно что либо трогать!

 

Изменено пользователем alen_fantom
подправил, убрал лишнее
  • Полезно 1

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


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

.После установки 4-го патча и 4-го фикса не достётся оружие-после взятия частей монстров.Причина-правка на отлеживание actor

А вот и нет...В правках, что у Вас, amk.script даже не из 3-го фикса под 2.04, в котором не прописан возврат:

func_by_string["monster_parts"] = function (params_string)
	monster_parts.restore_weapon()
end

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


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

Andrey77Vic333, что за офтопная "страшилка"? Ни чего ужасного не произойдёт, разве что подвис клавы при попытке диалога с >2м, проявляющийся на худе в виде курсора...При повторном нажатии на ту же кн., при возможности диалога, всё возвращается в норм. состоянии.

При исправлении take_dist = 2 в большую сторону, нужно думать о том, что в каких то квестах, что-то может пойти не так при подборе итема, по причине не задействованного рестриктора, который в свою очередь должен что-то сделать и т.д.

Ссори...

 

 

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

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

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


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

Есть ли возможность узнать координаты ЛЭП над бездной

Смотреть скрипты, правда сложновато без опред. координат на локе. Для этого можно встроить сторонний код по опред. координат, типа 34_Position + Sdata от SINGAPUR22 или воспользоваться встроенной в ОП-2 возможностью опред. координат, при наличии позиционера в инвентаре: Esc - F4, если я сам правильно понял это:

 

elseif dik == DIK_keys.DIK_F4 then self:show_position_informer_window() end 
... 
... 
function main_menu:show_position_informer_window() 
if not db.debug then 
return end 
if self.cheat_dlg == nil then 
self.cheat_dlg = positioninformer.pi() 
self.cheat_dlg.owner = self end 
self:GetHolder():start_stop_menu(self.cheat_dlg, true) 
self:GetHolder():start_stop_menu(self, true) 
self:Show(true) 
end 

 

при наличии позиционера в инвентаре: Esc - F4

Вот только не работает, что с позиционером, что без него...Интересно почему..?

 

Вроде аж с самого оригинала существует какой-то демо-режим. Никогда не интересовался. Я просто при нажатии паузы координаты тупо в лог пишу. dc

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

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


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

Для hypercatt: bind_det_arts.script

 

 

перед

function start_update()
добавляешь

local need_del_spot = nil
получается

local need_del_spot = nil

function start_update()
дальше находишь

function update()
   local n = db.actor:item_in_slot(1)
if n then
        local sect = n:section()
     if sect == "det_artefact_indy" then
      this.det_indy()
  elseif sect == "detektor_amorf" then
      this.det_izomorf()
  elseif sect == "det_artefact_super" then
      this.det_super()
  else
      this.iteration_del_spot()
  end
end
и исправляешь на

function update() 
if inventory.on_belt("detektor_amorf") then
		this.det_izomorf()
		need_del_spot = true
	elseif inventory.on_belt("det_artefact_indy") then
		this.det_indy()
		need_del_spot = true
        --[[elseif inventory.on_belt("det_artefact_super") then
		this.det_super()
		need_del_spot = true]] -- за комментированное можно не вписывать "Ультрадетектор артефактов" не используется хотя работает
	elseif need_del_spot then
		this.iteration_del_spot()
		need_del_spot = nil
	end
end
 

 

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

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


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

Забыл еще надо в секции [detektor_amorf] сменить иконку чтобы был размер 1х1 вот так:

inv_grid_width = 1??? -- 2 правильное

inv_grid_height = 1??? -- 2 правильное

inv_grid_x = 44??? -- 34 правильное

inv_grid_y = 47??? -- 43 правильное

Не катит...По тому как 2.0.

В общем, всё... Ну его, этот детектор. Заспавнил себе "Ультрадетектор", этот вешается на пояс без проблем.

Что-то вы мутите с версией вашей ОП-2! В 2.0 не может виснуть на поясе, по причине отсутствия определения...

 

Правок стоит туева хуча. Но ультрадетектор действительно ставится и в пистолетный слот и на пояс вешается.... Только, по-мойму, он не работает. Похоже, что логика таки сломалась. Вот дверь у Сидора больше не работает.

С этим разбираться вам самому. К скрину выше про "Ультрадетектор артефактов":

0d339d14106b7731f3d20b9b882bd05653952d191771750.jpg

В конфиге каждого детектора артефактов:

;slot 	          = 1 -- либо за комментировать(, либо вовсе удалитьanimation_slot    = 1belt		  = true

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

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


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

невстречал ни какой информации содержащей квест Жилы раритетное оружие. Может я не там квесты ищу?

 

dialogs_amk.xml

<!--  РАРИТЕТНОЕ ОРУЖИЕ --> 
 <dialog id="taynik_gila_start">
  <dont_has_info>taynik_gila_start</dont_has_info> 
  <has_info>price_voron_mosin</has_info> 
  <has_info>price_jila</has_info> 
 <phrase_list>
...
<!--  Говорим с Жилой--> 
 <dialog id="taynik_gila_done">
  <precondition>akill.taynik_gila_have_all</precondition> 
  <has_info>taynik_gila_start</has_info> 
  <dont_has_info>taynik_gila_have</dont_has_info> 
 <phrase_list>
akill.script

function taynik_gila_have_all()
return
new_dialog.item_much("af_pudd_3",1) and
new_dialog.item_much("wpn_addon_pu_scope",1) and
new_dialog.item_much("player",1) and
db.actor:has_info("info_amk_recipt_titan_kolobok"

 

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

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


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

Надо помнить, что для ТЧ, по дефолту стандартом являются именно мониторы с соотношением 5:4.

Базовая 1024х768, а это 4:3...

а вот на 16:10 не хочет.

16:10 работает с файлов без "_16", т.е ваш inventory_new не правился, или не заменён вами. В выложенном мной архиве подобного вылета не может быть(к слову)...

 

Да ты прав абсолютно, но там разница небольшая. Просто мониторов 5:4 ещё много юзают, а 4:3 уже практически и нет. Поэтому так указал.

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

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


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

!!!АХТУНГ!!! У обьекта marsh_heli_dok повисла логика, типа надо переиграть с предыдущего сэйва.

На каком этапе прохождение(не помню какой квест)с участием Боцмана..? Либо переигрывать с Генераторов до взятия задания доставить Боцмана, либо попробовать переспавнить через all_spawn_fix.script(читать внимательно!) marsh_heli_dok:(spawn_id(allspawn_section) = 13231 ; name = marsh_heli_dok)... Изменено пользователем alen_fantom
  • Нравится 1

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


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

дефолтной атаке сосыча...

Придется ручками, ручками, а синтаксис почти не знаю, поэтому самому найти сложно.

Просто вырезаешь всё это:

 

 

 --/#+# 'засос кровососа боксёра' --------------------------------------------------
    if self.object:clsid() == clsid.bloodsucker_s and self.object.health > 0.25 then
      local oTarget = self.object:get_enemy()
      if oTarget and IsStalker(oTarget) and self.object:see(oTarget) then
        --/ если у кровососа есть враг/цель и кровосос его видит то ...
        local iDist = self.object:position():distance_to(oTarget:position())
        if iDist <= 2.5 then --/ дистанция для анимации 'засоса'
          local iTime = time_global()
          --/ таймер для анимации и хита ...
          if (self.timer_anim or 0) < iTime then
            self.timer_anim = iTime + 2000 --/ таймер анимации ~ 2 сек
            if self.object:animation_count() > 0 then
              self.object:clear_animations()
            end
            self.object:add_animation("wounded_2_out") --/ варианты: "vampire_0" | "idle"
            --/ озвучка 'засоса'
            --local oSnd = sound_object("material\\dead-body\\collide\\hithard06hl")
            --oSnd:play_no_feedback(oTarget, sound_object.s2d, 0, vector(), 5.0)
          end
          --/ хит жертве (притягиваем)
          if (self.timer_hit or 0) < iTime and (self.timer_anim and self.timer_anim + 2000 >= iTime) then
            self.timer_hit = iTime + 800 --/ таймер хита ~ 0.5 сек
            local vDir = self.object:direction() --/ вектор кровососа
            local vDirHit = vector_rotate_y(vDir,math.random(-180,180))
            local h = hit()
            h.draftsman = self.object
            h.direction = vDirHit --/ направление хита
            h:bone("bip01_spine") --/ для учета 'брони'
            h.power     = 0.60
            --level.add_cam_effector("camera_effects\\fusker.anm",959,false,"")
            h.impulse   = 60/iDist --/ чем ближе - тем сильнее 'засос'
            h.type      = hit.wound --hit.strike
            oTarget:hit(h) --/ наносим хит жертве
            --/ разворот жертвы на кровососа.
             if oTarget:id() == db.actor:id() and math.random()<level.get_game_difficulty()/20 then --/ жертва == актор? (а нужно?)
              oTarget:set_actor_direction(vDirHit:getH())
            end
          end
        end
      end
    end
    --/<-----------------------------------------------------------------------

 

 

можно и с цифрами "поиграть" в некоторых условиях...

Кровосос Сосыч

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

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


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

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

AMK-Team.ru

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