Dennis_Chikin 3 658 Опубликовано 22 Мая 2014 Поделиться Опубликовано 22 Мая 2014 Вешать на циклическую проверку в апдейте, и ждать, когда этот самый local repair_kit = db.actor:object("repair_kit_weapon") появится. Ну, чтоб не тормозило, я себе сварганил табличку функций, куда нужные добавляются, а после срабатывания - убираются. local tasks_list = {} -- имя, группа( 50, 200, 1000, 5000 ), функция -- local t50, t200, t1000, t5000 = {}, {}, {}, {} -- группы { строка для wathdog, функция } local t50n, t200n, t1000n, t5000n = 0, 0, 0, 0 -- функций в группе local t50i, t200i, t1000i, t5000i = 1, 1, 1, 1 -- текущая функция в группе local t50t, t200t, t1000t, t5000t = 0, 0, 0, 0 -- время следующего обновления local t50q, t200q, t1000q, t5000q = 50, 200, 1000, 5000 -- через сколько обновлять function task_add( tname, tgroup, f ) if ( tgroup or 200 ) == 200 then t200n = t200n + 1; table_insert( t200, { f, tname } ) elseif tgroup == 1000 then t1000n = t1000n + 1; table_insert( t1000, { f, tname } ) elseif tgroup == 5000 then t5000n = t5000n + 1; table_insert( t5000, { f, tname } ) elseif tgroup == 50 then t50n = t50n + 1; table_insert( t50, { f, tname } ) end end function task_del( tname, tgroup ) -- log( "info", "task_delete, task: [%s], gp: %s", tname, ( tgroup or "any" ) ) if tgroup or 200 == 200 then for i = 1, t200n do if t200[i][2] == tname then t200n = t200n - 1; table_remove( t200, i ); return end end end if tgroup or 1000 == 1000 then for i = 1, t1000n do if t1000[i][2] == tname then t1000n = t1000n - 1; table_remove( t1000, i ); return end end end if tgroup or 5000 == 5000 then for i = 1, t5000n do if t5000[i][2] == tname then t5000n = t5000n - 1; table_remove( t5000, i ); return end end end for i = 1, t50n do if t50[i][2] == tname then t50n = t50n - 1; table_remove( t50, i ) end end end и function actor_binder:update( delta ) ... if t200i == 0 then -- ни чем не заняты ? if global_time_ms >= t200t then t200t, t200i = global_time_ms + t200q, 1 -- kostri_update() -- используем этот цикл под что-нибудь полезное end else gp_fn = t200[t200i] -- выполняем последовательно что там еще есть if gp_fn then t200i, amk.oau_watchdog = t200i + 1, gp_fn[2]; gp_fn[1]() else t200i = 0 -- и используем остаток end end Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Full Noob 1 Опубликовано 22 Мая 2014 Поделиться Опубликовано 22 Мая 2014 Блин ничего не понял , я в скриптах просто не очень шарю пока. Завтра попробую разобраться если смогу. Ссылка на комментарий
Full Noob 1 Опубликовано 23 Мая 2014 Поделиться Опубликовано 23 Мая 2014 (изменено) А чё за global_time_ms? Expression : fatal error Function : CScriptEngine::lua_errorFile : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cppLine : 73Description :Arguments : LUA error: ...e.r. - hardcore\gamedata\scripts\bind_stalker.script:204: attempt to perform arithmetic on global 'global_time_ms' (a nil value) Таймер вроде как работает т.к. при изменении global_time_ms на time_global() не вылетает, но тайм глобал в минутах или как? Я написал 20 и в итоге ждать пришлось, так и не дождался. А что такое global_time_ms игра получается не знает. Изменено 23 Мая 2014 пользователем Full Noob 1 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Мая 2014 Поделиться Опубликовано 23 Мая 2014 А это чтобы 2 раза не вставать. local global_time_ms = time_global(), ну или типа того... Проверок-то 4 штуки, на 50, 200, 1000 и 5000ms, да и внутри не по разу используется. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Full Noob 1 Опубликовано 23 Мая 2014 Поделиться Опубликовано 23 Мая 2014 (изменено) У меня почемуто через тайм_глобал не работает) Я сделал так: local need_to_repair_weapon = nil local repairconditionfornew = 0local repairprocess = 0 function actor_binder:use_obj(obj)if obj:section()=="repair_kit_weapon" thenrepairconditionfornew = obj:condition()alife():create("repair_kit_weapon",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())need_to_repair_weapon = 20repairprocess = 1endend if repairprocess==1 thenneed_to_repair_weapon = need_to_repair_weapon-1if need_to_repair_weapon<1 thenhm_repair.action_repair(repairconditionfornew)need_to_repair_weapon = 0repairprocess = 0endend Вот блин а после загрузки сохранения ремкомплект опять целый, видимо потому что не предусмотрено ему изменение состояния...как быть? Изменено 23 Мая 2014 пользователем Full Noob Ссылка на комментарий
Full Noob 1 Опубликовано 24 Мая 2014 Поделиться Опубликовано 24 Мая 2014 Блин решил попробовать сделать ремкомплект оружием которое нельзя поместить в слот и который используется на K, но как его использовать на К? Видел в солянке ДМХ были как в зп так называемые ГОРЯЧИЕ КЛАВИШИ на юз аптеки консервы антирада и бинта вроде на F1-F4, вот мне также надо только с ремкомплектом. Почитал про назначение скриптам горячих кнопок там походу только через меню работать будет, да и не понятно даже что надо писать что не надо. Написал в актор_биндер.апдейт: if DIK_keys.DIK_K==1 then if db.actor:object("repair_kit_weapon") then hm_repair.action_repair() end end в итоге когда я достаю оружие у меня треск потому что сразу автоматом срабатывает ремкомплект как будто я нажимаю постоянно К. Может объясните что как писать прально ) 1 Ссылка на комментарий
naxac 2 447 Опубликовано 24 Мая 2014 Поделиться Опубликовано 24 Мая 2014 (изменено) Почитал про назначение скриптам горячих кнопок там походу только через меню работать будет, да и не понятно даже что надо писать что не надо.Не то, видать, читал. Почитай это: Назначение скриптам горячих кнопок. Часть 3.А по поводу состояния предмета - если он у тебя на классе антирада, то помимо скриптового "obj:set_condition...", нужно писать кондишен в объект через нет_пэкет, Изменено 24 Мая 2014 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Full Noob 1 Опубликовано 25 Мая 2014 Поделиться Опубликовано 25 Мая 2014 Я не умею нет-пакеты юзать, но спасибо по статье сделал работает, но вот только не мог бы ты обьяснить что из этого надо а что нет? Тут просто не очень хорошие пояснения, мне бы лишнее убрать если оно тут есть. Ссылка на комментарий
naxac 2 447 Опубликовано 25 Мая 2014 Поделиться Опубликовано 25 Мая 2014 @Full Noob, лишнего в статье нет ничего. Если тебе нужно только нажатия отлавливать, делай по первому варианту - и всё. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Капрал Хикс 534 Опубликовано 25 Мая 2014 Поделиться Опубликовано 25 Мая 2014 Заранее извиняюсь, если было - ткните куда копать. Как скриптово узнать, что открыта вкладка КПК "Карта"? Дано: прикручиваю к своей сборке установку своих меток на карте в КПК из адддона Shadows'а 0.6 к РМА... Так вот, всё работает, но эти кнопки установки-удаления меток рисуются поверх всех окон и вкладок КПК... Ранее уже сталкивался с подобным, решения не нашёл. Заранее спасибо всем. Ссылка на комментарий
Scarabay 98 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 @Капрал Хикс, вроде при открытии каждой вкладки выдается свой поршень, но вот где именно и с правками ли движка - не знаю. 1 Мой YouTube-канал Ссылка на комментарий
Капрал Хикс 534 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 Как оказалось, всё проще, без движковых правок. http://www.amk-team.ru/forum/index.php?showtopic=7450&page=4#entry463992. Ссылка на комментарий
J.A.A. 2 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 Ребята, подскажите, если знаете: Как скриптово реализовать отключения звука (чтоб вообще тишина была)? Пишу мод с неповторимым сюжетом. Нужны "модельеры" Заинтересованным писать в ЛС Ссылка на комментарий
Сталкер Лом 356 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 (изменено) J.A.A., погляди в bind_stalker.script функции use_inventory_item(obj) и anabiotic_callback2() - в этих функциях при сне\приёме анабиотика включается\выключается звук. Примерно это будет выглядеть так: --Выключение звука _G.mus_vol = get_console():get_float("snd_volume_music") _G.amb_vol = get_console():get_float("snd_volume_eff") get_console():execute("snd_volume_music 0") get_console():execute("snd_volume_eff 0") --Ворачиваем всё обратно get_console():execute("snd_volume_music "..tostring(_G.mus_vol)) get_console():execute("snd_volume_eff "..tostring(_G.amb_vol)) _G.amb_vol = 0 _G.mus_vol = 0 Изменено 26 Мая 2014 пользователем Сталкер Лом Работы на Artstation - https://www.artstation.com/artist/stalker_lom Ссылка на комментарий
Full Noob 1 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 Вот у меня тут вопросик опять по ремкомплекту возник: как отрисовать на худе что-либо? Мне нужно отрисовать на худе иконку ремкомплекта и его состояние(если он имеется в наличии). Возомжно ли это? Просто он у меня будет спрятан в слоте 4 и посмотреть состояние можно будет только в ящике т.к по непонятной причине если самому запихнуть предмет из инвентаря в слот 4 то игра вылетает без лога, что не даёт просто возвращать его в рюкзак на юзе. Из за этого и пришлось ему юз на K прикручивать. Ссылка на комментарий
Капрал Хикс 534 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 Рано я возрадовался... Все инфопоршни вкладок в КПК, кроме ui_pda, не работают. Похоже, без движковых правок тут всё же не обойтись. А жаль... Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 Поставить лог на actor_binder:info_callback(), и посмотреть, что реально когда выдается. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Капрал Хикс 534 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 Проверил через мобилу модмейкера от Singapur22 выдачу нужного мне поршня ui_pda_map_global - не выдаётся он. ui_pda - выдаётся исправно, тот нет. P.S. В Shadows Addon кнопки меток кстати тоже поверх всех вкладок и окон висят. Ссылка на комментарий
k01jan 816 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 (изменено) ! Cannot find saved game ~ z_mod: Инициализация z_uprising... ! Cannot find saved game ~ z_uprising: передали предустановки.! Cannot find saved game ~ z_mod:on_item_take: поимели detector_simple! Cannot find saved game ~ z_mod:on_item_take: поимели device_torch! Cannot find saved game ~ z_mod:on_item_take: поимели novice_outfit! Cannot find saved game ~ z_mod:on_item_take: поимели wpn_binoc! Cannot find saved game ~ z_mod:on_item_take: поимели device_pda! Cannot find saved game ~ z_uprising: ЛОГирование ВКЛючено.! Cannot find saved game ~ z_uprising: ОК!! Cannot find saved game ~ z_mod:on_info: инфопорш esc_kill_gunslinger! Cannot find saved game ~ z_mod:on_info: инфопорш storyline_actor_start! Cannot find saved game ~ z_mod:on_info: инфопорш global_dialogs! Cannot find saved game ~ z_mod:on_info: инфопорш level_changer_icons! Cannot find saved game ~ z_mod:on_item_take: поимели boltIntro start 8633* MEMORY USAGE: 311336 K! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_hello_played! Cannot find saved game ~ z_mod:on_info: инфопорш ui_talk! Cannot find saved game ~ z_mod:on_info: инфопорш ui_trade_hide! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_experienced! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_tutorial_chosen! Cannot find saved game ~ z_mod:on_info: инфопорш esc_trader_can_leave! Cannot find saved game ~ z_mod:on_info: инфопорш tutorial_wounded_start! Cannot find saved game ~ z_mod:on_info: инфопорш ui_talk_hide! Cannot find saved game ~ z_mod:on_info: инфопорш ui_trade! Cannot find saved game ~ z_mod:on_info: инфопорш ui_talk! Cannot find saved game ~ z_mod:on_info: инфопорш ui_trade_hide! Cannot find saved game ~ z_mod:on_info: инфопорш ui_car_body! Cannot find saved game ~ z_mod:on_info: инфопорш ui_car_body_hide- Disconnect! Cannot find saved game ~ z_mod:on_item_drop: дропнули bolt! Cannot find saved game ~ z_mod:on_item_drop: дропнули device_pda! Cannot find saved game ~ z_mod:on_item_drop: дропнули wpn_binoc! Cannot find saved game ~ z_mod:on_item_drop: дропнули novice_outfit! Cannot find saved game ~ z_mod:on_item_drop: дропнули device_torch! Cannot find saved game ~ z_mod:on_item_drop: дропнули detector_simple- Destroying level + ! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda ! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_events ! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_contacts ! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_ranking ! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_actor_info ! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_encyclopedia ! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_hide @Капрал Хикс, кстати, да. Через раз появляются. ! Cannot find saved game ~ z_mod:on_info: инфопорш ui_pda_map_local ещё.Похоже, или только первый раз срабатывают. Или - по времени. Но явно - не получится нормально отслеживать и использовать. Изменено 26 Мая 2014 пользователем k01jan Ссылка на комментарий
abramcumner 1 159 Опубликовано 26 Мая 2014 Поделиться Опубликовано 26 Мая 2014 Похоже, или только первый раз срабатывают. Или - по времени. Но явно - не получится нормально отслеживать и использовать.Выдается только в первый раз потому, что в последующие разы она уже есть у ГГ. Можно при получении инфопорции дизейблить ее, тогда она будет выдаваться и во второй раз, и в третий. Или в декларацию инфопорций прописать дизейбл остальных. 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти