Graff46 598 Опубликовано 4 Октября 2018 Поделиться Опубликовано 4 Октября 2018 (изменено) @_Sk8_AsTeR_, function name(actor, npc) local objMedkt = actor:object("medkit") if objMedkt then actor:transfer_item(objMedkt, npc) end end Для передачи нескольких предметов - тело ф-ции оберните в цикл. И когда пишите код, советую, соблюдать табуляцию. Изменено 4 Октября 2018 пользователем Graff46 1 1 1 Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 4 Октября 2018 Поделиться Опубликовано 4 Октября 2018 (изменено) @Graff46, сейчас попробуем-с, благодарю! PS. ИДЕАЛЬНО! От души благодарю! Изменено 4 Октября 2018 пользователем _Sk8_AsTeR_ Ссылка на комментарий
buffy 4 Опубликовано 6 Октября 2018 Поделиться Опубликовано 6 Октября 2018 Как можно просканировать конфиги, т.е. получить все секции? Вроде был модуль в Сборочной, но я не нашёл(там отписался). Ссылка на комментарий
Graff46 598 Опубликовано 6 Октября 2018 Поделиться Опубликовано 6 Октября 2018 (изменено) @buffy, Посмотри методы класса ini_file(), получи system.ltx (system_ini() ) у ини класса есть методы возвращающие кол-во секций и секцию по номеру, делаете конструкцию с циклом и в цикле проходите все секции из system.ltx (и его инклудов). Только в system.ltx очень много секций (погода, спавн и тд), Вам нужно будет отфильтровать не нужные секции. Изменено 6 Октября 2018 пользователем Graff46 Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 6 Октября 2018 Поделиться Опубликовано 6 Октября 2018 Господа, еще вопросик. Выручайте пожалуйста Суть в том, что задания не засчитываются после убийства групп противников. Таким образом не зачитывается задание как от Бармена например (зачистить Дикую Территорию от бандосов и наймов), а также например не срабатывает тригер после убийств наймов в Рыжем Лесу (помочь сталкерам отбить мост). Куда копать, подскажите пожалуйста? Ссылка на комментарий
Graff46 598 Опубликовано 6 Октября 2018 Поделиться Опубликовано 6 Октября 2018 @_Sk8_AsTeR_, В условии выполнения квеста смотри, там инфопоршень или ф-ция будет Ссылка на комментарий
buffy 4 Опубликовано 6 Октября 2018 Поделиться Опубликовано 6 Октября 2018 2 часа назад, Graff46 сказал: @buffy, Посмотри методы класса ini_file(), получи system.ltx (system_ini() ) у ини класса есть методы возвращающие кол-во секций и секцию по номеру, делаете конструкцию с циклом и в цикле проходите все секции из system.ltx (и его инклудов). Только в system.ltx очень много секций (погода, спавн и тд), Вам нужно будет отфильтровать не нужные секции. Это какие? Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 6 Октября 2018 Поделиться Опубликовано 6 Октября 2018 @Graff46, есть впечатление что поломано что-то общее, не срабатывает общий тригер на выполнение, именно когда задание - убить группу. То есть когда задание засчитывается когда убить абсолютно всех. Ссылка на комментарий
Graff46 598 Опубликовано 6 Октября 2018 Поделиться Опубликовано 6 Октября 2018 @buffy, Перепутал, такой метод был в длл для луа парсера ини файлов, в Сталкере такого нет. Ссылка на комментарий
naxac 2 447 Опубликовано 8 Октября 2018 Поделиться Опубликовано 8 Октября 2018 В 06.10.2018 в 19:24, buffy сказал: Вроде был модуль в Сборочной, но я не нашёл Вот есть: https://yadi.sk/d/gWefF91-bwDevA Я его, правда, немного правил в телефоне, так что если что-то не будет работать - пиши. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 8 Октября 2018 Поделиться Опубликовано 8 Октября 2018 Здрасьте. Солянка 2010, биорадар, хочу отделить точки нейтралов/друзей от врагов. Пробовал добавлять проверку через фразы obj:relation(db.actor)==game_object.enemy или amk.get_npc_relation(obj,db.actor)=="enemy" – в любом варианте видны только нейтралы и трупы. Где я нарушил логику? Примечание: в начальный список добавлен цвет ["enemy"] = GetARGB(0, 255, 0, 0) вместо цвета "unknown", который нигде не задействован. Spoiler Оригинал: "живой или зомби/труп" if IAmAStalker[obj:clsid()] then if obj:alive() then return colors["stalker"] else return colors["corpse"] end else … (дальше перебор мутантов) Мой вариант: "враг или нет, если живой", иначе "зомби/труп" if IAmAStalker[obj:clsid()] then if obj:alive() then if obj:relation(db.actor)==game_object.enemy then return colors["enemy"] else return colors["stalker"] end else return colors["corpse"] end else … Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
buffy 4 Опубликовано 8 Октября 2018 Поделиться Опубликовано 8 Октября 2018 (изменено) @naxac, спасибо посмотрю, но я за это время уже свой примитивный парсер написал позаимствую часть кода у тебя) Изменено 8 Октября 2018 пользователем buffy Ссылка на комментарий
buffy 4 Опубликовано 8 Октября 2018 Поделиться Опубликовано 8 Октября 2018 (изменено) И ещё такой вопрос для чего нужны эти константы - лень проверять const FS_ClampExt = 4; const FS_RootOnly = 8; UPD: с первым разобрался Изменено 8 Октября 2018 пользователем buffy Ссылка на комментарий
Mr.Srears 0 Опубликовано 8 Октября 2018 Поделиться Опубликовано 8 Октября 2018 Ребят, может, кто скинуть мне ровный скрип на ремонтный комлект для ЗП? Пробовал создать по этому. Всё заработало, прям идеально, но эффекта починки нет. Он его просто лопает. Ссылка на комментарий
Charsi 440 Опубликовано 9 Октября 2018 Поделиться Опубликовано 9 Октября 2018 @Mr.Srears, статья написана для ТЧ и при адаптации под ЗП нужно знать, что в ЗП слоты нумеруются иначе и метод give_game_news имеет другой набор аргуметов. Кроме того, в ЗП в биндере актора для события use_object уже установлен колбек self.use_inventory_item, поэтому тело функции actor_binder:repair_outfit_start из статьи нужно добавить в actor_binder:use_inventory_item(obj). 1 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Mr.Srears 0 Опубликовано 9 Октября 2018 Поделиться Опубликовано 9 Октября 2018 @Charsi, Не мог бы ты подробней расписать про нумерацию слотов? Какие слоты использует оружие, и костюм? И что мне делать с методом "give_game_news" удалять его, или заменять другим значением? Ссылка на комментарий
Charsi 440 Опубликовано 10 Октября 2018 Поделиться Опубликовано 10 Октября 2018 В ТЧ оружие в слотах 1,2, костюм - 6. В ЗП на единицу больше, соответственно 2,3 и 7. Поэтому нужно писать repair_item_in_slot(2) repair_item_in_slot(3) repair_item_in_slot(7) repair_item_in_slot(12) -- добавим починку шлема Вместо db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) следует написать db.actor:give_game_news("st_tip",news_text, "ui_iconsTotal_grouping", 1000, 5000) Тут "st_tip" это заголовок сообщения, а "ui_iconsTotal_grouping" идентификатор текстуры. Их можно на свои заменить. 1000 и 5000 время до показа сообщения и длительность показа в миллисекундах. 1 1 1 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Mr.Srears 0 Опубликовано 11 Октября 2018 Поделиться Опубликовано 11 Октября 2018 @Charsi, Пробовал сделать все, как ты сказал, все равно не работает. Дело в скрипте, скорее всего, я пропустил какие-то переменные или методы, ссылающие на актора имеют совсем другие значения на ЗП. Хотя я уверен, что там еще чего-то не хватает, уж больно скрипт простой. Вот посмотри код скрипта: function action_repair() -- эмулируем возврат ремкомплекта в инвентарь alife():create("repair_kit_outfit", vector(),0,0,0) -- нет ли рядом врагов и монстров local apos = db.actor:position() for obj_id,_ in pairs (db.storage)do local obj = level.object_by_id(obj_id) if obj and (IsStalker(obj) or IsMonster(obj)) and obj:alive() and obj:relation(db.actor) == game_object.enemy and obj:position():distance_to(apos)<30 then send_tip("Нельзя чинить костюм, когда враги слишком близко.") return end end -- пробуем чинить предмет в repair_item_in_slot(7) -- седьмом слоте end function repair_outfit() local item_s7 = db.actor:item_in_slot(7) --объявляем переменную (item_s7) if item_s7 ~= nil and item_s7:condition() >=0.60 and item_s7:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 60%) item_s7:set_condition(1) local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен." db.actor:give_game_news("st_tip",news_text, "ui_iconsTotal_grouping", 1000, 5000) elseif item_s7 == nil then --когда костюма нет local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: нужно одеть коcтюм." db.actor:give_game_news("st_tip",news_text, "ui_iconsTotal_grouping", 1000, 5000) alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) elseif item_s7:condition() <0.60 then --когда костюм нельзя чинить (состояние меньше 60%) local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: костюм слишком сильно повреждён." db.actor:give_game_news("st_tip",news_text, "ui_iconsTotal_grouping", 1000, 5000) alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) elseif item_s7:condition() ==1 then --когда костюм в отличном состояние local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]костюм в отличном состоянии." db.actor:give_game_news("st_tip",news_text, "ui_iconsTotal_grouping", 1000, 5000) alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) end end function send_tip(news_text) db.actor:give_game_news("st_tip",news_text, "ui_iconsTotal_grouping", 1000, 5000) end Ссылка на комментарий
Fenrir02 199 Опубликовано 11 Октября 2018 Поделиться Опубликовано 11 Октября 2018 Подскажите, есть такая функция: Скрытый текст local item_in_slot_9 = db.actor:item_in_slot(9) if item_in_slot_9 then local t = item_in_slot_9:condition() item_in_slot_9:set_condition(t - 0.0001) if item_in_slot_9:condition() <0.01 then alife():release(alife():object(item_in_slot_9:id())) end end Если повесить её на апдейт, то предмет в соответствующем слоте со временем будет изменять состояние. Проверил, всё работает, только после загрузки сейва состояние сбрасывается. Как сохранить состояние этого предмета после загрузки? Заранее благодарю! Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
AndreySol 215 Опубликовано 11 Октября 2018 Поделиться Опубликовано 11 Октября 2018 4 часа назад, Fenrir02 сказал: Как сохранить состояние этого предмета после загрузки? А что за предмет у тебя ? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти