alen_fantom 653 Опубликовано 9 Августа 2014 (изменено) остался как и в прошлых версиях телепорт на выходе из х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 (тот что на скрине). Лучше переиграть... Изменено 9 Августа 2014 пользователем alen_fantom 1 2 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 15 Августа 2014 (изменено) 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() С Вашего сейва, при правильном прохождении: Изменено 29 Декабря 2014 пользователем BFG 1 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 18 Августа 2014 (изменено) ...где лежит функция.. автоубирания оружия при поедании пищи\обматывании бинтом\вкалывании препаратов..?Поиск по теме: http://www.amk-team.ru/forum/index.php?showtopic=12839&p=849580 http://www.amk-team.ru/forum/index.php?showtopic=12839&p=856348 Изменено 25 Апреля 2015 пользователем alen_fantom 1 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 1 Сентября 2014 (изменено) Возможно не в тему.Ссори...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, определяет степень размытия эффекта. Изменено 1 Сентября 2014 пользователем alen_fantom 1 1 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 3 Сентября 2014 (изменено) Хочу сделать чтобы после первого карканья тайник появлялся. Самый легкий тайник, а мучаюсь с ним уже долго.Сам не играю, по этому могу ошибаться - сдаётся что это тайник на Генераторах(три рестриктора с "карканьем" - от чего и "плясал") в 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... Изменено 25 Апреля 2015 пользователем alen_fantom 1 2 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 5 Сентября 2014 (изменено) Включение "распознавания НПС" и "расстояние(дистанция) до цели" для "ралистов": ui_mm_opt_main.script -- отключение на мастере распознавания НПС и дистанции function options_dialog:OnDifficultyChanged() if self.list_difficulty:CurrentID() == 3 then -- знак "==" изменить на ">" self.check_tips:SetCheck(false) self.check_tips:Enable(false) self.check_dist:SetCheck(false) self.check_dist:Enable(false) else self.check_tips:Enable(true) self.check_dist:Enable(true) end inventory.need_update = true -- для пересчета иммунитетов при смене уровня сложности end difficulty_manager.script -- автопереключение опций в зависимости от сложности function switch_options(difficulty) if difficulty == 3 then -- тоже самое, меняем знаки: "==" на ">" get_console():execute("hud_info off") get_console():execute("hud_crosshair_dist off") end inventory.need_update = true -- для пересчета иммунитетов end Изменено 5 Сентября 2014 пользователем alen_fantom 4 2 1 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 10 Сентября 2014 (изменено) Как эту функцию прикрепить к другому прицелу?Нужно научиться пользоваться "поиском" и многое окажется не таким сложным...В 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 Изменено 10 Сентября 2014 пользователем alen_fantom 3 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 10 Сентября 2014 (изменено) 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 И отключается нормально, у себя глюков не увидел. Да и разбирали ранее... Изменено 10 Сентября 2014 пользователем alen_fantom Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 11 Сентября 2014 (изменено) после повторной установки игры, а раньше этой тряски не было. Если кто знает в чем проблема , то обьясните пожалуйстаПатч какой? Если 2.02 и выше, то может стоит посмотреть в расширенных настройках видео, на сколько выставлен флаг на раскачивание камеры, снизить и проверить... ---------------------- Ссори, немного офтопа... Касаемо "гениальности". Когда читаю такое или подобное, хочется задать вопрос: ,,РебятЫ, где были вы ТОГДА, с вашем НЫНЕШНИМ багажом знаний?,, А пока имеем то, что имеем...(тоже где-то уже было). И надеемся дождаться всё ту же "обезжиренную" и оптимизированную "соль"... Изменено 11 Сентября 2014 пользователем alen_fantom Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 12 Сентября 2014 (изменено) Так, по мелочам, но всё решаемо...Для 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 ) thenreturn falseenddb.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") thenif 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())endreturn trueend........function restrictor_binder:actor_update(delta)if not self.initialized and db.actor thenself.initialized = truexr_logic.initialize_obj(self.object, self.st, self.loaded, db.actor, modules.stype_restrictor)endif self.st.active_section ~= nil thenxr_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()))endend Правки на какой патч? НИ начинала? В каком месте вылет? Если в х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 Разве эта функция лишняя??? Здесь не нужно что либо трогать! Изменено 25 Апреля 2015 пользователем alen_fantom подправил, убрал лишнее 1 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 20 Сентября 2014 .После установки 4-го патча и 4-го фикса не достётся оружие-после взятия частей монстров.Причина-правка на отлеживание actorА вот и нет...В правках, что у Вас, amk.script даже не из 3-го фикса под 2.04, в котором не прописан возврат: func_by_string["monster_parts"] = function (params_string) monster_parts.restore_weapon() end Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 24 Сентября 2014 (изменено) Andrey77, Vic333, что за офтопная "страшилка"? Ни чего ужасного не произойдёт, разве что подвис клавы при попытке диалога с >2м, проявляющийся на худе в виде курсора...При повторном нажатии на ту же кн., при возможности диалога, всё возвращается в норм. состоянии. При исправлении take_dist = 2 в большую сторону, нужно думать о том, что в каких то квестах, что-то может пойти не так при подборе итема, по причине не задействованного рестриктора, который в свою очередь должен что-то сделать и т.д. Ссори... На этом, пожалуй, и закончим дискуссию. Имеет место быть подвис управления при попытке разговора с неписем с дистанции более 2-х метров. Ну так не разговаривайте. Имеется также несрабатывание рестрикторов, если актор в них не зашел. Ну так зайдите. Каких-либо иных "функций" там нет. Ну а смотреть можно вообще на что угодно откуда угодно, хоть с километра. dc Изменено 24 Сентября 2014 пользователем alen_fantom Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 24 Сентября 2014 (изменено) Есть ли возможность узнать координаты ЛЭП над безднойСмотреть скрипты, правда сложновато без опред. координат на локе. Для этого можно встроить сторонний код по опред. координат, типа 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 Изменено 25 Апреля 2015 пользователем alen_fantom Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 3 Октября 2014 (изменено) Для 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 Изменено 3 Октября 2014 пользователем alen_fantom Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 4 Октября 2014 (изменено) Забыл еще надо в секции [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 не может виснуть на поясе, по причине отсутствия определения... Правок стоит туева хуча. Но ультрадетектор действительно ставится и в пистолетный слот и на пояс вешается.... Только, по-мойму, он не работает. Похоже, что логика таки сломалась. Вот дверь у Сидора больше не работает.С этим разбираться вам самому. К скрину выше про "Ультрадетектор артефактов": В конфиге каждого детектора артефактов: ;slot = 1 -- либо за комментировать(, либо вовсе удалитьanimation_slot = 1belt = true Изменено 12 Октября 2014 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 9 Октября 2014 (изменено) невстречал ни какой информации содержащей квест Жилы раритетное оружие. Может я не там квесты ищу? 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" Изменено 9 Октября 2014 пользователем alen_fantom 1 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 10 Октября 2014 (изменено) Надо помнить, что для ТЧ, по дефолту стандартом являются именно мониторы с соотношением 5:4. Базовая 1024х768, а это 4:3... а вот на 16:10 не хочет. 16:10 работает с файлов без "_16", т.е ваш inventory_new не правился, или не заменён вами. В выложенном мной архиве подобного вылета не может быть(к слову)... Да ты прав абсолютно, но там разница небольшая. Просто мониторов 5:4 ещё много юзают, а 4:3 уже практически и нет. Поэтому так указал. Изменено 10 Октября 2014 пользователем BFG 1 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 27 Октября 2014 (изменено) !!!АХТУНГ!!! У обьекта marsh_heli_dok повисла логика, типа надо переиграть с предыдущего сэйва.На каком этапе прохождение(не помню какой квест)с участием Боцмана..? Либо переигрывать с Генераторов до взятия задания доставить Боцмана, либо попробовать переспавнить через all_spawn_fix.script(читать внимательно!) marsh_heli_dok:(spawn_id(allspawn_section) = 13231 ; name = marsh_heli_dok)... Изменено 6 Мая 2015 пользователем alen_fantom 1 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 28 Октября 2014 в Х-10 забрала тайник Кости (рюкзак за сеткой)-телепорта не отключила и вот теперь расплатаОт чего "плясать": http://www.amk-team.ru/forum/index.php?showtopic=12839&p=869308 Поделиться этим сообщением Ссылка на сообщение
alen_fantom 653 Опубликовано 11 Ноября 2014 (изменено) дефолтной атаке сосыча... Придется ручками, ручками, а синтаксис почти не знаю, поэтому самому найти сложно. Просто вырезаешь всё это: --/#+# 'засос кровососа боксёра' -------------------------------------------------- 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 --/<----------------------------------------------------------------------- можно и с цифрами "поиграть" в некоторых условиях... Кровосос Сосыч Изменено 6 Мая 2015 пользователем alen_fantom 1 1 Поделиться этим сообщением Ссылка на сообщение