mole venomous 3 395 Опубликовано 27 Декабря 2018 Поделиться Опубликовано 27 Декабря 2018 Использую лечение из DMX. Всё вроде бы хорошо, но вот заковыка. Если сразу не закрыть инвентарь после использования аптечки/еды, то оружие в руках уже не появится (придёться делать сейв/лоад). Может где то накосячил с адаптацией или в сборке Солянка + DMX такое бывает? Что бы не ломать голову, подумал, может кто подскажет код на закрытие инвентаря после использования конкретного предмета? Здесь могла быть ваша реклама. Ссылка на комментарий
Змея 240 Опубликовано 27 Декабря 2018 Поделиться Опубликовано 27 Декабря 2018 10 часов назад, dPlayer сказал: Ковырял-ковырял диалог_менеджер.скрипт В самом диалоге внимательно посмотри проверку условий и что выдается в конце. Ссылка на комментарий
dPlayer 470 Опубликовано 27 Декабря 2018 Поделиться Опубликовано 27 Декабря 2018 @lordmuzer, @Змея, нет, не это. Диалог аля "расскажи что интересного" со случайными нпс. Ссылка на комментарий
Змея 240 Опубликовано 27 Декабря 2018 Поделиться Опубликовано 27 Декабря 2018 Ааа...Так это и не диалог как-бы. Глубоковато ковырять вроде нужно. По непроверенным слухам - скриптер нашей команды это дело еще не порешал. Так что пока всё это дело решается за счет увеличения количества текстов, чтобы не часто повторялись. Ссылка на комментарий
Cagorich 0 Опубликовано 28 Декабря 2018 Поделиться Опубликовано 28 Декабря 2018 (изменено) Скрытый текст -- Проверка на наличие нескольких и разных предметов в рюкзаке ГГ. -- 1. local items_count=0 local itemin=nil function item_much(itm,need_namber) local actor=db.actor items_count=0 itemin=itm actor:iterate_inventory(cheking_item,actor) if items_count>=need_namber then return true else return false end end function cheking_item(actor,item) local items=item:section() if items==itemin then items_count=items_count+1 end end function create_items(npc,section,number) for i=1,number do alife():create(section, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) end end -- Отдача в нужном количестве нужные предметы. -- 2. local reloc_params={} local stalk function out_item_much(itm_section,need_number) reloc_params.itm_section=itm_section reloc_params.itm_cnt=need_number reloc_params.itm_cnt_found=0 db.actor:iterate_inventory(checkout_items_count,db.actor) reloc_params.itm_cnt_found=0 if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then db.actor:iterate_inventory(out_items_count,db.actor) end news_manager.relocate_item(db.actor, "out", itm_section) reloc_params={} end function checkout_items_count(actor,item) if item.section and item:section()==reloc_params.itm_section then reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1 end end function out_items_count(actor,item) if item.section and item:section()==reloc_params.itm_section and reloc_params.itm_cnt_found<reloc_params.itm_cnt then soc_script_help.remove_item_from_inventory(item, actor) reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1 end end -- Удаляем предмет из инвентаря по имени. function remove_item_from_inventory_by_name(remove_item_name,npc) return remove_item_from_inventory(npc:object(remove_item_name),npc) end -- Удаляем предмет из инвентаря. function remove_item_from_inventory(remove_item,npc) if npc==nil then npc=db.actor end if remove_item~=nil then -- npc:mark_item_dropped(remove_item) alife():release(alife():object(remove_item:id()), true) return true end return false end Вызов: -- Отдача. function out_desyat_hvostov_to_wolf(second_speaker, first_speaker) soc_script_help.out_item_much("mutant_dog_tail",10) end Не работают функции на передачу нескольких предметов, вместо 10 передает лишь 1 предмет. Платформа: ТЧ. В чем может быть ошибка? Изменено 28 Декабря 2018 пользователем Cagorich Ссылка на комментарий
Cagorich 0 Опубликовано 28 Декабря 2018 Поделиться Опубликовано 28 Декабря 2018 (изменено) Дополнение к посту выше. Ради теста взял скрипты из Тайных Троп 2. amk.script, flamethrower.script, new_dialog.script предметы передаются, НО! До бесконечности, даже если закрыть диалог и начать снова то передача несмотря неначто продолжается. Вызвал так: function out_desyat_hvostov_to_wolf() new_dialog.out_item_much("mutant_dog_tail",10) end Много способов испытал, либо вылет, либо не работает, либо работает но передает лишь 1 предмет, либо передает вовсе до бесконечности. Тоже самое в обратном порядке. Изменено 28 Декабря 2018 пользователем Cagorich Ссылка на комментарий
losiara 13 Опубликовано 28 Декабря 2018 Поделиться Опубликовано 28 Декабря 2018 25 минут назад, Cagorich сказал: function out_desyat_hvostov_to_wolf() new_dialog.out_item_much("mutant_dog_tail",10) end Много способов испытал, либо вылет, либо не работает, либо работает но передает лишь 1 предмет, либо передает вовсе до бесконечности. Тоже самое в обратном порядке. В оригинале возможна передача только одного предмета. В АМК можно передавать несколько, "new_dialog" это как раз АМК функция, там это организовано. Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
losiara 13 Опубликовано 28 Декабря 2018 Поделиться Опубликовано 28 Декабря 2018 День добрый!!! Прошу помощи если кто сталкивался, добавил нового торговца через all.spawn, повесил ему квест, все работает, без проблем и багов, вроде бы и нормально. Решил разнообразить процесс, и добавил торговцу однотипные квесты - результат вылет безлоговый при переходе на другую локацию. Сами квесты выполняются, награда выплачивается, вроде бы все ничего, пока находишься на этой же локации. Скрытый текст --task_manager.script local random_task = nil local parent_by_story = { [003] = "trader", [500] = "barman", [902] = "ecolog", [507] = "dolg", [707] = "freedom", [006] = "wolf", [004] = "shustriy", [510] = "drunk_dolg", [504] = "hunter", [518] = "zastava_commander", [506] = "petrenko", [607] = "lisiy", [515] = "mercenary", [7008] = "pri_bandit", [7049] = "gar_stalker_trader" -- новый непись } local story_by_parent = { trader = 003, barman = 500, ecolog = 902, dolg = 507, freedom = 707, wolf = 006, shustriy = 004, drunk_dolg = 510, hunter = 504, zastava_commander = 518, petrenko = 506, lisiy = 607, mercenary = 515, pri_bandit = 7008, gar_stalker_trader = 7049 } function init_gar_stalker_trader_task_dialog(dlg) get_random_task():init_task_dialog(dlg, "gar_stalker_trader") end function init_gar_stalker_trader_reward_dialog(dlg) get_random_task():init_reward_dialog(dlg, "gar_stalker_trader") end кстати до этого добавлял уже торговца, также с однотипными квестами, работает без проблем, вылетов не было. Что с этим не так??? SID - прописал, логика обычная валкер с одной точкой. Скрытый текст ;----------gar_stalker_trader-------------------------------------------------- ;-----------Artefact------------ gar_stalker_trader_find_artefact_1 gar_stalker_trader_find_artefact_2 gar_stalker_trader_find_artefact_3 ;---------Monster Part----------- gar_stalker_trader_monster_part_1 gar_stalker_trader_monster_part_2 gar_stalker_trader_monster_part_3 ;----------Eliminate Camp---- gar_stalker_trader_eliminate_lager_1 gar_stalker_trader_eliminate_lager_2 [gar_stalker_trader_find_artefact_1] type = artefact community = actor text = gar_stalker_trader_find_artefact_1_text description = gar_stalker_trader_find_artefact_1_descr parent = gar_stalker_trader target = af_blood reward_money = 2000 reward_reputation = +5 reward_rank = 3 ;reward_item = mutant_flesh_eye time = 86400 ;idle_time = 84000 prior = 3 [gar_stalker_trader_find_artefact_2] type = artefact community = actor text = gar_stalker_trader_find_artefact_2_text description = gar_stalker_trader_find_artefact_2_descr parent = gar_stalker_trader target = af_gravi reward_money = 1500 reward_reputation = +5 reward_rank = 2 ;reward_item = mutant_boar_leg time = 86400 ;idle_time = 84000 prior = 2 [gar_stalker_trader_find_artefact_3] type = artefact community = actor text = gar_stalker_trader_find_artefact_3_text description = gar_stalker_trader_find_artefact_3_descr parent = gar_stalker_trader target = af_cristall_flower reward_money = 2000 reward_reputation = +10 reward_rank = 2 ;reward_item = mutant_dog_tail time = 86400 ;idle_time = 84000 prior = 1 [gar_stalker_trader_monster_part_1] type = monster_part community = actor text = gar_stalker_trader_monster_part_1_text description = gar_stalker_trader_monster_part_1_descr parent = gar_stalker_trader target = mutant_boar_leg reward_money = 2000 reward_reputation = +10 reward_rank = 5 time = 86400 reward_item = ammo_9x19_fmj, ammo_9x19_fmj, ammo_9x19_fmj, grenade_rgd5 prior = 2 [gar_stalker_trader_monster_part_2] type = monster_part community = actor text = gar_stalker_trader_monster_part_2_text description = gar_stalker_trader_monster_part_2_descr parent = gar_stalker_trader target = mutant_psevdodog_tail reward_money = 3500 reward_reputation = +20 reward_rank = 5 time = 86400 reward_item = medkit, medkit, medkit, wpn_addon_silencer prior = 3 [gar_stalker_trader_monster_part_3] type = monster_part community = actor text = gar_stalker_trader_monster_part_3_text description = gar_stalker_trader_monster_part_3_descr parent = gar_stalker_trader target = mutant_zombie_hand reward_money = 500 reward_reputation = +10 reward_rank = 5 time = 86400 reward_item = vodka, medkit, bandage, bandage, bandage prior = 1 [gar_stalker_trader_eliminate_lager_1] type = eliminate_lager community = actor text = gar_stalker_trader_eliminate_lager_1_text description = gar_stalker_trader_eliminate_lager_1_descr parent = gar_stalker_trader target = gar_killer_lager reward_money = 5500 reward_reputation = +30 reward_relation = 15 reward_rank = 5 reward_item = ammo_5.45x39_ap, ammo_5.45x39_ap, ammo_5.45x39_ap, ammo_5.45x39_ap, ammo_5.45x39_ap, grenade_f1 time = 604800 [gar_stalker_trader_eliminate_lager_2] type = eliminate_lager community = actor text = gar_stalker_trader_eliminate_lager_2_text description = gar_stalker_trader_eliminate_lager_2_descr parent = gar_stalker_trader target = gar_zomb reward_money = 3500 reward_reputation = +20 reward_relation = 10 reward_rank = 10 reward_item = wpn_addon_scope_susat time = 604800 Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
Cagorich 0 Опубликовано 28 Декабря 2018 Поделиться Опубликовано 28 Декабря 2018 1 час назад, losiara сказал: В оригинале возможна передача только одного предмета. В АМК можно передавать несколько, "new_dialog" это как раз АМК функция, там это организовано. Пробовал но все сводиться к: Скрытый текст FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...r. Тень Чернобыля\gamedata\scripts\new_dialog.script:323: attempt to call method 'id' (a nil value) stack trace: Бесполезно. Ссылка на комментарий
Змея 240 Опубликовано 28 Декабря 2018 Поделиться Опубликовано 28 Декабря 2018 @Cagorich, по идее, чтобы пользоваться функциями АМК-мода, нужно ставить, либо адаптировать АМК-мод... Ссылка на комментарий
Cagorich 0 Опубликовано 28 Декабря 2018 Поделиться Опубликовано 28 Декабря 2018 2 часа назад, Змея сказал: @Cagorich, по идее, чтобы пользоваться функциями АМК-мода, нужно ставить, либо адаптировать АМК-мод... Попробовал чистый AMK. function out_desyat_hvostov_to_wolf(first_speaker, second_speaker) local actor, trader if db.actor and db.actor:id() == first_speaker:id() then actor = first_speaker trader = second_speaker else actor = second_speaker trader = first_speaker end flamethrower.relocate_n_items_section(trader, "mutant_dog_tail", "out", 10) end В итоге вылет: Скрытый текст FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ... Тень Чернобыля\gamedata\scripts\flamethrower.script:7: attempt to call method 'id' (a nil value) stack trace: Ссылка на комментарий
mole venomous 3 395 Опубликовано 29 Декабря 2018 Поделиться Опубликовано 29 Декабря 2018 14 часов назад, losiara сказал: вылет безлоговый Посмотреть последнее, что будет в логе, если принудительно его писать. Надо в файле _g.script поправить так: Скрытый текст rlog = 1 function printf(fmt,...) -- принудительная запись в лог, для выявления причин безлоговых вылетов -- v.0.77 : добавлено условие rlog if rlog == 1 then local con=get_console()con:execute(string_gsub(string_format(fmt,...)," ","_"))con:execute("flush") end local arg = {...} if (arg and arg[1] ~= nil) then log(string_format(fmt,...)) end end Потом вернуть как было или выставить rlog = 0 Здесь могла быть ваша реклама. Ссылка на комментарий
PseudoWolf 1 Опубликовано 29 Декабря 2018 Поделиться Опубликовано 29 Декабря 2018 Всем предновогоднего настроя! Ребят, подскажите функцию выдачи инфопоршня при взятии предмета? В гугле вроде всё перешарил, так и не нашёл ни чего толкового.. 3 Ссылка на комментарий
Змея 240 Опубликовано 29 Декабря 2018 Поделиться Опубликовано 29 Декабря 2018 @PseudoWolf, а тут не искал? 1 Ссылка на комментарий
Дмитрий Зверев 0 Опубликовано 29 Декабря 2018 Поделиться Опубликовано 29 Декабря 2018 Всем привет. Может ли кто-то подсказать теорию работы схемы mob_jump? На практике я вообще не могу разобраться с принципами её работы, а гайд по настройке логики содержит 3,5 слова касательно mob_jump. Ниже кидаю пример логики своего снорка. Скрытый текст [spawner] cond = {+actor_in_rest_exit} [logic] active = mob_walker@first [mob_walker@first] path_walk = lv_snork_walk_00 path_look = lv_snork_look_01 braindead = true on_signal = jump| mob_jump [mob_jump] path_jump = lv_snork_walk_01 ph_jump_factor = 4 offset = 0,0,0 on_signal = jumped| mob_walker@sec [mob_walker@sec] path_walk = lv_snork_walk_01 path_look = lv_snork_look_01 braindead = true END Т.е., по сути, он должен двигаться walker'ом, по сигналу в последней точке переходить в jump'ера, прыгать, а затем продолжать двигаться следующим walker'ом. Но он вообще не прыгает, то есть, тупо прётся на точку обычным walker'ом. Пробовал и с разных позиций заставлять его прыгать (изначальная идея - прыжок с крыши дома прямо перед мордой эктора; сейчас он даже на ровной земле не прыгает), и jump_factor разный ставить - ничего вообще не происходит. Разве что, при экспериментах со спавном он может появляться в рандомных местах возле эктора. Буду благодарен за советы. Ссылка на комментарий
Adrian Klimenko 1 Опубликовано 29 Декабря 2018 Поделиться Опубликовано 29 Декабря 2018 Всем привет, как убрать античит из оп 2.1? Хочу изменить урон нпс по мне. Слишком они сильно бьют даже в экзоскелете с артами... Ссылка на комментарий
Змея 240 Опубликовано 30 Декабря 2018 Поделиться Опубликовано 30 Декабря 2018 @Дмитрий Зверев (Книги, Вселенная и вообще), всё отлично работает. Только для схемы бери снорка-попрыгунчика. Ну иногда приходится помучаться с выбором ph_jump_factor = 4 - как оно работает, я лично так и не поняла)) Ага. И offset настрой. У тебя высота прыжка - НОЛЬ. Ссылка на комментарий
losiara 13 Опубликовано 30 Декабря 2018 Поделиться Опубликовано 30 Декабря 2018 (изменено) Добрый день!!! С наступающим! Необходимо через рестриктор сделать ГГ другом для указанного гулага, вот запарился какой скрипт будет верным? Скрытый текст function set_gulag_friend_actor( actor, npc, p ) if p[1] then xr_gulag.setGulagGoodwill(p[1], actor) end end function gulag_friend_actor( actor, npc, p ) if p[1] then xr_gulag.setGulagfriend(p[1], actor) end end В оригинале есть функция делающая актора врагом гулагу, а мне надобно обратное, вылетов нет, но и не работает, а вроде как должна... xr_gulag.script Скрытый текст -- установить расположенине всех членов смарта к указанному объекту function setGulagGoodwill( name_or_sid, goodwill, target_obj ) local gulag = get_gulag( name_or_sid ) if gulag then gulag:set_goodwill( goodwill, target_obj ) end end -- сделать указанного персонажа другом всех персонажей смарта function setGulagfriend( name_or_sid, target_obj ) setGulagRelation( name_or_sid, game_object.friend, target_obj ) end Попробовал и сам наваять: Скрытый текст function friend_gar_parazit (actor, npc) local gulag = xr_gulag.get_gulag_by_name ("bar_zastava_2") -- название гулага if (gulag) then gulag:set_relation (game_object.friend, actor) end end Гулаг взят из оригинальной игры. Изменено 30 Декабря 2018 пользователем losiara Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
Дмитрий Зверев 0 Опубликовано 31 Декабря 2018 Поделиться Опубликовано 31 Декабря 2018 (изменено) @Змея, спасибо. Попытался по твоему совету взять snork_normal (именно они, судя по логике, скакали на ЧАЭС-2) и покрутить offset Y. Началось вообще невообразимое - снорк стал аки воздушный шар летать по всей карте, проваливаться под текстуры, спавниться где угодно и прочее. Причём, если делать jump_factor и offset в пределах нормы для прыжка с дома (3 и 4 соответственно, имхо), то схема опять не работает. Даже не знаю, что и делать. Не знаешь, часом, какой offset Y можно поставить для прыжка с Y 14 на Y 9? Спасибо. Изменено 31 Декабря 2018 пользователем Дмитрий Зверев (Книги, Вселенная и вообще) Ссылка на комментарий
DoberBull 290 Опубликовано 31 Декабря 2018 Поделиться Опубликовано 31 Декабря 2018 Всем привет. Помогите пж с распаковкой ресурсов ОП-2.1. Самому никак просто 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти