ARTLantist 14 Опубликовано 20 Мая 2022 @AndreySol в конфигах или в движке? Поделиться этим сообщением Ссылка на сообщение
ARTLantist 14 Опубликовано 21 Мая 2022 @AndreySol не знаю, покопался в движке, parent класса костра - класс CSpaceRestrictor, у которого parent в свою очередь CGameObject, а у него среди парентов есть и CUsableScriptObject (вроде так), который и даёт возможность вызова коллбека use и выставлять надписи методом set_tip_text. Однако для ВСЕХ рестрикторов эти методы ничего не дают. Почему - пока не разобрался... Мб костыли какие-то придётся делать, заменять все объекты (именно объекты) костров в СДК на спавн элементы с их моделями и им логику прописывать... Но это все локации перекомпилировать🤔 Не очень большое желание что-то делать так. Поделиться этим сообщением Ссылка на сообщение
ARTLantist 14 Опубликовано 23 Мая 2022 (изменено) @AndreySol не знаю, я на 10-ке на диск Х устанавливал СДК по "инструкции" и он бесперебойно работает🤔 @WinCap та костёр вообще никакую логику не воспринимает, он же рестриктор, пишу ему логику рестриктора (для теста вывод сообщения по событию actor_inside (не помню щас дословно название в логике)), но ему всё равно @AndreySol короче, создал невидимый объект на основе моделей в equipment_cache (которые для inventory_box), так будет проще, как по мне. Подогнал размер под костры. Буду расставлять в каждом костре и логику прописывать соответствующую. Изменено 23 Мая 2022 пользователем ARTLantist Поделиться этим сообщением Ссылка на сообщение
ARTLantist 14 Опубликовано 16 Июня 2022 Обнаружил такую недоработку в оригинале ЗП. Если скриптом воспроизводить звуки, то второй (и последующие) не воспроизведутся, пока не пройдёт предыдущий, и какая-то задержка в пару секунд... Это можно как-то пофиксить? Поделиться этим сообщением Ссылка на сообщение
ARTLantist 14 Опубликовано 4 Сентября Знатоки ТЧ, прошу помощи. Захотелось мне добавить в циклические квесты помимо стандартного описания, прописываемого в xml (по типу "мне поступил заказ на медузу, нужно срочно достать, берёшься?"), ещё и список наград, чтобы выглядело так: Скрытый текст Слышал поверье, что зуб кровососа притягивает удачу? Будто бы того, кто на шее носит такой зуб, аномалии отпускают, и артефакты сами в руки идут? В общем, это всё фигня, но есть болваны, которые верят и готовы платить хорошие деньги. Принесешь челюсть кровососа, я тебе хорошо заплачу. За это в награду ты получишь: "иконка" Деньги: 3000 "иконка" Предметы: Дробь 20, бинт, аптечка Как всё это добавить я разобрался, и иконки и текст нормально подставляются, но я никак не могу получить id квеста (напр. tm_monster_part_1) Вот так сейчас выглядит код: Скрытый текст function CRandomTask:action_task_show_reward(npc, actor) local task_desc = self.task_info["tm_monster_part_1"] local task_texture, task_rect local message task_texture, task_rect = get_texture_info("ui_iconsTotal_found_money", "ui_iconsTotal_found_money") db.actor:give_talk_message(tostring(self.task_info[self.task_id_by_init_phrase_id[p3]]), task_texture, task_rect, "iconed_answer_item") if task_desc.reward_money ~= nil then task_texture, task_rect = get_texture_info("ui_iconsTotal_found_money", "ui_iconsTotal_found_money") message = game.translate_string("reward_list_money").." "..tostring(task_desc.reward_money) db.actor:give_talk_message(message, task_texture, task_rect, "iconed_answer_item") end if task_desc.reward_item ~= nil then task_texture, task_rect = get_texture_info("ui_iconsTotal_found_thing", "ui_iconsTotal_found_thing") message = game.translate_string("reward_list_items") for kk,vv in pairs(task_desc.reward_item) do message = message..", "..game.translate_string(news_manager.get_inv_name(vv)) end db.actor:give_talk_message(message, task_texture, task_rect, "iconed_answer_item") end end И мне нужно вместо указанного мною id "tm_monster_part_1" как-то получить id выбранного в диалоге квеста. Как это сделать? Скрипт task_manager.script стандартный. Смотрел, как получают в других функциях, пробовал разные варианты, но что-то ни один не подошёл. Вот функции добавления диалога и вызова функции выше: Скрытый текст function CRandomTask:init_task_dialog(dlg, parent) local phr = dlg:AddPhrase("tm_seek_new_job","0","",-10000) local phrase_script = phr:GetPhraseScript() phr = dlg:AddPhrase("tm_"..parent.."_list_job","1","0",-10000) phrase_script = phr:GetPhraseScript() phrase_script:AddAction("task_manager.action_task_show") phrase_script:AddPrecondition("task_manager.precondition_vendor_can_task") phr = dlg:AddPhrase("tm_"..parent.."_has_no_job","2","0",-10000) phrase_script = phr:GetPhraseScript() phrase_script:AddPrecondition("task_manager.precondition_vendor_cannot_task") for k,v in pairs(self.task_id_by_parent[parent]) do phr = dlg:AddPhrase(self.task_info[v].name, tostring(self.task_info[v].init_phrase_id), "1", -10000) phrase_script = phr:GetPhraseScript() phrase_script:AddPrecondition("task_manager.precondition_task_avail") phr = dlg:AddPhrase(self.task_info[v].text, tostring(self.task_info[v].desc_phrase_id), tostring(self.task_info[v].init_phrase_id), -10000) phrase_script = phr:GetPhraseScript() phrase_script:AddAction("task_manager.action_task_show_reward") phr = dlg:AddPhrase("tm_seek_job_yes", tostring(self.task_info[v].yes_phrase_id), tostring(self.task_info[v].desc_phrase_id), -10000) phrase_script = phr:GetPhraseScript() phrase_script:AddAction("task_manager.action_give_task") --добавил данное действие для вызова функции выше phr = dlg:AddPhrase("tm_seek_job_no", tostring(self.task_info[v].no_phrase_id), tostring(self.task_info[v].desc_phrase_id), -10000) end dlg:AddPhrase("tm_seek_job_abandon","3","1",-10000) end -- -- -- function action_task_show_reward(npc, actor) get_random_task():action_task_show_reward(npc, actor) end 1 Поделиться этим сообщением Ссылка на сообщение
ARTLantist 14 Опубликовано 4 Сентября @Norman Eisenherz ну мне конкретно нужен этот id. Именно получить его, чтобы я мог прописать local id = что-то, и чтобы это "что-то" выдало мне мой id квеста (в частном случае "tm_monster_part_1"), чтобы я потом прописал local task_desc = self.task_info[id] И уже от этого плясал и везде были свои данные конкретно этого квеста 1 Поделиться этим сообщением Ссылка на сообщение
ARTLantist 14 Опубликовано 5 Сентября (изменено) 21 час назад, Norman Eisenherz сказал: Есть готовая таблица self.task_id_by_yes_phrase_id – из нее и получить id. Ну таблица и эта, и task_id_by_init_phrase_id возвращали мне nil, хотя я вроде правильно всё подставлял, пришлось добавить цикл на прогон всех тасков персонажа и проверять совпадение по self.task_info[v].yes_phrase_id, но всё работает. Благодарю, что направил в нужное русло Изменено 5 Сентября пользователем ARTLantist Поделиться этим сообщением Ссылка на сообщение