ins33 16 Опубликовано 16 Июля 2012 Поделиться Опубликовано 16 Июля 2012 Shredder, Да, я только учусь. Это прописывал. Но вылет мешает, опять бинд. И если убрать : if note and type(note) == "number" then if not level.object_by_id(note) then Тот-же вылет. Ссылка на комментарий
Zander_driver 10 333 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 ins33, может перестать уже биться о стену и принять то что дают? Выше Shredder тебе дал абсолютно рабочую функцию, используй ее и все заработает как ты хотел без всяких вылетов. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
ins33 16 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 (изменено) Zander_driver, Согласен, но вылет стабилен! \s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:240: attempt to index global 'repair' (a nil value) В строчке 240: repair.use_repkit(). Если к коду добавить: if note and type(note) == "number" then if not level.object_by_id(note) then Девайс пропадает из инвентаря, а диалоговое окно ремонта не появляется. Изменено 17 Июля 2012 пользователем ins33 Ссылка на комментарий
Desertir 202 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 ins33, смешно уже смотреть на твои попытки что то сделать. У нас нету твоего кода и мы не экстрасенсы. Этот вылет связан с тем. что в скрипте есть ошибка синтаксиса, так что либо выкладывай весь код, который там написан, либо иди учи луа, хотя это как раз и надо было сделать с самого начала. ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Scarabay 98 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 ins33, ты создал файл repair.script, содержащий твою функцию use_repkit()? Проверь все внимательно, где-то ошибка Мой YouTube-канал Ссылка на комментарий
ins33 16 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Desertir, http://rghost.ru/39256261 чистый файл из тт2. Scarabay, Ошибок нет, без ключа всё работает. Ссылка на комментарий
Shredder 49 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 ins33, открываешь спойлер, выделяешь всё что там есть, делаешь Ctrl+C, потом в у себя в файле repair.script нажимаешь Ctrl+A, затем Ctrl+V. И вообще там код нужно переделывать, т.к. можно напрямую заюзать колбэк на использование предмета, а не проверять после дропа, исчез ли предмет. Но тебе до этого, как до Луны пешком... local note = nil function use_repkit() if note and type(note) == "number" then if not level.object_by_id(note) then if db.actor:object("key") then level.start_stop_menu(interfase.ui_repair(), true) --запускаем меню end alife():create("repair_kit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end note = nil end if note and type(note) == "userdata" then note = note:id() else note = nil end end function DeleteItem(iId) --добавляем функцию удаления предмета из инвентаря if iId then local seObj=alife():object(iId) if seObj then alife():release(seObj,true) end end end function repair_wpn_1() local item_in_slot = db.actor:item_in_slot(1) local medusa = db.actor:object("af_medusa") --и везде добавим проверку на медузу if item_in_slot ~= nil and 1 > item_in_slot:condition() and medusa then item_in_slot:set_condition(1) DeleteItem(medusa:id()) --удаляем артефакт после ремонта end end function repair_wpn_2() local item_in_slot = db.actor:item_in_slot(2) local medusa = db.actor:object("af_medusa") if item_in_slot ~= nil and 1 > item_in_slot:condition() and medusa then item_in_slot:set_condition(1) DeleteItem(medusa:id()) end end function repair_armora() local item_in_slot = db.actor:item_in_slot(6) if item_in_slot ~= nil and 1 > item_in_slot:condition() then item_in_slot:set_condition(1) end end --/ спавн предметов в инвентори function spawn_item_in_inv(section,npc) if npc == nil then npc = db.actor end return alife():create(section, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) end --функция вызываемая из дропа function use_repair(obj) if obj:section() == "repair_kit" then note = obj --если наша вещь, то запомнить его userdata end end Ссылка на комментарий
ins33 16 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Shredder, Спасибо, до этого не допёр: if db.actor:object("key") then. Проверка нужна для квеста. СПАСИБО!!! Ссылка на комментарий
Z3oM 0 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 (изменено) Доброго всем времени суток! Есть таймер который выводит на монитор сообщение. Собственно вопрос можно ли как то реализовать в реал-тайме (в самой игре находясь) обновление инфы выводимой на экран? К примеру я сворачиваю игру в файле пишу другую инфу получаемую а он её подгружает? Думал сделать INCLUDE но ничего так и не нашел по этому поводу. Или я путаю? в LUA вообще есть функция INCLUDE? И будет ли правильно если таймер будет каждый 10 секунд подгружать другой файл? и будет ли вообще подгружать? Заранее благодарен! Изменено 17 Июля 2012 пользователем Z3oM Ссылка на комментарий
Shredder 49 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Что именно ты хочешь выводить на экран? Ссылка на комментарий
Z3oM 0 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Я хочу чтобы у меня была запущена игра и крутился так сказать цикл непосредственной в игре. (ОН уже крутит месагу в игре каждые 10 секунд) Что я хочу. Я хочу чтобы у меня При включенной игре обновлялась эта месага к прмеру у меня local sactor = alife():actor() local cactor = level.object_by_id(sactor.id) cactor:give_game_news( "Тест Сообщение\\nЯ вывожу его!!!1", "", Frect():set(0,0,0,0), 1000, 8000 ) А получить пытаюсь не "Тест Сообщение\\nЯ вывожу его!!!1", а "Тест Сообщение я обновил сейчас!\\nЯ обновил его!!!1", НЕ выходя из игры. Такое возможно? Ссылка на комментарий
Кактус_523 1 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Что то непонятно ты описываешь. Что за файлик? Как грузить? loadfile или file:read()? МЯСО! Ссылка на комментарий
Shredder 49 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Z3oM, а в чём смысл? Нельзя сразу все необходимые тексты в отдельный файл записать? Ссылка на комментарий
Z3oM 0 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 (изменено) Смотрите! Есть ТАЙМер =) зашел в игру, начало появляться сообщение с рисуночком и выводит текст как будто я получил задание, ну или тайник нашел, что та вроде этого. Оно вылазиет каждые 10 секунд со словами "Тест Сообщение\\nЯ вывожу его!!!1". Теперь, чтобы его поменять (текст) мне нужно изменить файл скрипта с этой строкой, сохранить и перезагрузить игру либо загрузиться. Вопрос собственно =) Возможно ли изменить сообщение не ПЕРЕЗАГРУЖАЯ ИГРУ? тоесть в РЕАЛ-ТАЙМЕ =) Какая функция отвечает за ПОДГРУЗКУ скрипта? Тоесть как в C++ мать его =) Есть inckude она подгружает в твой исходник функции. Есть такая же в LUA? Я хочу подгрузить в тело Таймера мессагу. И чтобы она подгружала её каждый раз? ) Или есть функция на подобе как у MEMO в obj pascal LoadFromFile +))) Я очень надеюсь что поможете =) Добавлено через 1 мин.: Shredder, В том та и прикол всего =) Нужно его подгружать динамически =) Изменено 17 Июля 2012 пользователем Z3oM Ссылка на комментарий
Кактус_523 1 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Делаешь файлик с сообщениями. Парсишь его. Набиваешь строки в таблицу. Дальше крутишь в апдейте таблицу меняя индекс время от времени. problem? МЯСО! Ссылка на комментарий
Shredder 49 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 Ага, я тоже самое имел ввиду. Ссылка на комментарий
Z3oM 0 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 (изменено) Кактус_523, loadfile или file:read()? Это не функции которые просто читают строки? Опа =) Сообразил =) Что если в переменную загнуть строки которые находятся в отдельном файле? И обновлять переменную в таймере.? Все сообразил. Можно пример небольшой по использованию file:read()? Или ссылку на пост. Заранее спасибо! C file:read() обращаться как с массивом строк или сплошной текст и Парс? Изменено 17 Июля 2012 пользователем Z3oM Ссылка на комментарий
Кактус_523 1 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 (изменено) Тебе не нужна никакая переменная. Тебе не нужны всякие функции чтения файлов. Это не те дроиды, которых вы ищите. function Parser() local hndl = io.open("bla_bla.file",'r') local tab = {} local rline local i = 1 while true do rline = hndl:read() if rline== nil then break end tab[i] = rline i=i+1 end return tab end Изменено 17 Июля 2012 пользователем Кактус_523 МЯСО! Ссылка на комментарий
Z3oM 0 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 (изменено) Новичок я в этом деле всмысле в LUA =) Описание функции данной есть? function _parser() Спасибо +) Изменено 17 Июля 2012 пользователем Z3oM Ссылка на комментарий
Кактус_523 1 Опубликовано 17 Июля 2012 Поделиться Опубликовано 17 Июля 2012 (изменено) ЭТО тебе поможет. Ну просто не может не помочь. Изменено 17 Июля 2012 пользователем Кактус_523 МЯСО! Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти