Metro_Rus 75 Опубликовано 8 Января 2018 Решил попробовать восстановить в ЗП конструкцию тайников как в ТЧ/ЧН, в общем такая проблема: н своей локации поставил рестриктор: [logic] active = sr_idle@start [sr_idle@start] on_actor_inside = sr_idle@nil %=give_treasure(esc_treasure_1)% [sr_idle@nil] Условие: при входе в рестриктор получаем информацию о тайнике, при входе в рестриктор - вылет stack trace: 001B:049CB7D0 lua.JIT.1.1.4.dll, lua_yield() Как я понимаю - ошибка скриптов, вот функция выдачи тайника function give_treasure(treasure_id) if treasures[treasure_id] ~= nil then if treasures[treasure_id].active ~= true then treasures[treasure_id]:give_treasure() else local active_treasure = get_active_treasure_by_target(treasures[treasure_id].target) abort("Unable to give treasure [%s] because inventory box is already in use by treasure [%s]", treasure_id, active_treasure) end else abort("There is no treasure with id [%s]", treasure_id) end end function get_active_treasure_by_target(target) for k,v in pairs(treasure_by_target[target]) do if v.active == true then return v.section end end return "nil" end PS: inventory box с названием "esc_treasure_1" на локацию добавил, также прописал ему story_id PS 2: Без story_id ничего не происходит, ни вылета - ни выдачи "Люди — животные, не имеющие ни страха, ни уважения, ни сочувствия. Лишь только блеск выгоды в глазах" © Алексей Шевцов Скрытый текст OC: Windows 10 Home, Видеокарта: NVIDIA GeForce GTX 1050 TI 4ГБ, Процессор: Intel Core i3 7100 3900 МГц 2 ядра, RAM(ОЗУ): 8ГБ DDR4, ROM(ПЗУ): 1ТБ Поделиться этим сообщением Ссылка на сообщение
Metro_Rus 75 Опубликовано 8 Января 2018 1 час назад, AndreySol сказал: esc_treasure_1 - это имя тайника, ID, StoryID ? И имя тайника/бокса и Story_ID тайника/бокса(одновременно), как я понимаю проблема в этом? По-моему получение айди объекта по его name было вырезано из ЗП - нужно прописывать StoryID PS я пока что в скриптовании нуб Могу понять что в них написано, но не могу написать собственный "Люди — животные, не имеющие ни страха, ни уважения, ни сочувствия. Лишь только блеск выгоды в глазах" © Алексей Шевцов Скрытый текст OC: Windows 10 Home, Видеокарта: NVIDIA GeForce GTX 1050 TI 4ГБ, Процессор: Intel Core i3 7100 3900 МГц 2 ядра, RAM(ОЗУ): 8ГБ DDR4, ROM(ПЗУ): 1ТБ Поделиться этим сообщением Ссылка на сообщение
Metro_Rus 75 Опубликовано 9 Января 2018 8 часов назад, Dennis_Chikin сказал: ОТКУДА должно что-то вызываться в on_actor_inside = sr_idle@nil %=give_treasure(esc_treasure_1)% и есть ли оно ТАМ. При входе в один из space restrictor поставленных на локации, должно выскакивать смс "получена информация о тайнике" и в invertory box под названием "esc_treasure_1" должны заспавниться вещи прописанные в misc\treasure_manager.ltx(или из подключенного к нему файла) [list_treasure_escape] esc_treasure_1 [esc_treasure_1] target = esc_treasure_1 name = st_esc_cross_2 description = st_esc_cross_2_descr items = medkit, 1, antirad, 1 condlist = {=actor_on_level(escape)} true, false Но при входе в это space restrictor происходит вылет stack trace, также он ИНОГДА происходит при обыске трупов - свидетельство того что возможно работает эта функция: function use(npc) printf("treasure_manager: npc[%s] is used by actor", npc:name()) local available_treasures = {} local selected_treasure = nil for k,v in pairs(treasures) do --[[ printf("found treasure %s", tostring(v.section)) -- Проверить доступность по кондлисту. printf(" condlist %s", tostring(xr_logic.pick_section_from_condlist(db.actor, npc, v.condlist))) -- Проверить доступность по рангу. printf(" rank %s", tostring(v:check_rank_and_community(npc))) -- Проверить не выдан ли он уже. printf(" active %s", tostring(v.active)) -- Проверить не выдан ли другой тайник на этот же таргет. printf(" used %s", tostring(v:check_for_used_target())) printf(" cost=%d", v.treasure_cost) ]] if xr_logic.pick_section_from_condlist(db.actor, npc, v.condlist) == "true" and v:check_rank_and_community(npc) == true and v.active ~= true and v:check_for_used_target() == true and (v.treasure_cost==0) then -- 24.04.08 table.insert(available_treasures, v) end end if #available_treasures == 0 or math.random(100) > 20 then return end selected_treasure = available_treasures[math.random(1, #available_treasures)] selected_treasure:give_treasure() end "Люди — животные, не имеющие ни страха, ни уважения, ни сочувствия. Лишь только блеск выгоды в глазах" © Алексей Шевцов Скрытый текст OC: Windows 10 Home, Видеокарта: NVIDIA GeForce GTX 1050 TI 4ГБ, Процессор: Intel Core i3 7100 3900 МГц 2 ядра, RAM(ОЗУ): 8ГБ DDR4, ROM(ПЗУ): 1ТБ Поделиться этим сообщением Ссылка на сообщение
Metro_Rus 75 Опубликовано 9 Января 2018 PS: как известно все команды в логике space restrictor юзаются из функций в xr_effects.script Команда give_treasure в xr_effects.script function give_treasure (actor, npc, p) if p == nil then abort("Required parameter is [NIL]") end for k,v in pairs(p) do treasure_manager.give_treasure(v) end end 1 "Люди — животные, не имеющие ни страха, ни уважения, ни сочувствия. Лишь только блеск выгоды в глазах" © Алексей Шевцов Скрытый текст OC: Windows 10 Home, Видеокарта: NVIDIA GeForce GTX 1050 TI 4ГБ, Процессор: Intel Core i3 7100 3900 МГц 2 ядра, RAM(ОЗУ): 8ГБ DDR4, ROM(ПЗУ): 1ТБ Поделиться этим сообщением Ссылка на сообщение
Metro_Rus 75 Опубликовано 24 Января 2018 Всем привет. Как в логике НПС прописать его исчезновение(Стоит НПС, отходим на пару метров, получаем инфопоршень, НПС исчезает) "Люди — животные, не имеющие ни страха, ни уважения, ни сочувствия. Лишь только блеск выгоды в глазах" © Алексей Шевцов Скрытый текст OC: Windows 10 Home, Видеокарта: NVIDIA GeForce GTX 1050 TI 4ГБ, Процессор: Intel Core i3 7100 3900 МГц 2 ядра, RAM(ОЗУ): 8ГБ DDR4, ROM(ПЗУ): 1ТБ Поделиться этим сообщением Ссылка на сообщение
Metro_Rus 75 Опубликовано 1 Апреля 2018 Привет народ! Кто-нибудь знает какая функция в скриптах проигрывает звук смерти НПС(как в ТЧ или в ЧН... Типа: "Ай мля...", "Ты что?!", "Мамаа...") или это в движке? "Люди — животные, не имеющие ни страха, ни уважения, ни сочувствия. Лишь только блеск выгоды в глазах" © Алексей Шевцов Скрытый текст OC: Windows 10 Home, Видеокарта: NVIDIA GeForce GTX 1050 TI 4ГБ, Процессор: Intel Core i3 7100 3900 МГц 2 ядра, RAM(ОЗУ): 8ГБ DDR4, ROM(ПЗУ): 1ТБ Поделиться этим сообщением Ссылка на сообщение
Metro_Rus 75 Опубликовано 8 Июня 2018 local esc_b2_give_random_table = {} esc_b2_give_random_table[1] = { [1] = {item = {"af_medusa"}}, [2] = {item = {"af_blood"}}, [3] = {item = {"af_vyvert"}} } function esc_b2_give_random(first_speaker, second_speaker) for i = 1,1 do if has_alife_info("test_function") then for j = 1,#esc_b2_give_random_table[i] do if has_alife_info("test_function") then for k,v in pairs(esc_b2_give_random_table[i][j].item) do dialogs.relocate_item_section_to_actor(first_speaker, second_speaker,v) end give_info("esc_b2_done_item_"..tostring(i).."_"..tostring(j)) break end end end end end Пытаюсь создать функцию на выдачу рандомных предметов НПС, которому в экшене диалога прописана эта функция(esc_b2_give_random), всегда выдает только первый предмет из esc_b2_give_random_table, т.е. af_medusa А нужно, чтобы он выдавал случайно 1 из 3, прописанных в esc_b2_give_random_table, предметов "Люди — животные, не имеющие ни страха, ни уважения, ни сочувствия. Лишь только блеск выгоды в глазах" © Алексей Шевцов Скрытый текст OC: Windows 10 Home, Видеокарта: NVIDIA GeForce GTX 1050 TI 4ГБ, Процессор: Intel Core i3 7100 3900 МГц 2 ядра, RAM(ОЗУ): 8ГБ DDR4, ROM(ПЗУ): 1ТБ Поделиться этим сообщением Ссылка на сообщение
Metro_Rus 75 Опубликовано 8 Июня 2018 @WinCap, Спасибо function esc_b2_give_random(first_speaker, second_speaker) local random = math.random(1,3) if random == 1 then dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "af_medusa") end if random == 2 then dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "af_blood") end if random == 3 then dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "af_vyvert") end end можно вроде и так задаем рандомное число от "a" до "z" Если "функция" равна "b", то делаем это.. Если "функция" равна "q", то делаем другое.. "Люди — животные, не имеющие ни страха, ни уважения, ни сочувствия. Лишь только блеск выгоды в глазах" © Алексей Шевцов Скрытый текст OC: Windows 10 Home, Видеокарта: NVIDIA GeForce GTX 1050 TI 4ГБ, Процессор: Intel Core i3 7100 3900 МГц 2 ядра, RAM(ОЗУ): 8ГБ DDR4, ROM(ПЗУ): 1ТБ Поделиться этим сообщением Ссылка на сообщение