Перейти к контенту

Garry_Galler

Опытные
  • Число публикаций

    272
  • Регистрация

  • Последнее посещение

  • AMKoin

    10 [Подарить AMKoin]

Весь контент пользователя Garry_Galler

  1. Igor88.89 Решение находится поиском по цифре 15 - за пару секунд. if ((not db.actor:see(npc) and npc:position():distance_to(db.actor:position())>15)
  2. TRAMP14 Если ты имеешь ввиду обычную активацию - то, конечно, можно. Но не парой строчек. В гравипушке malandrinus'a и kirag'a при захвате арта происходит его активация. Что такое активация? Удаление арта, проигрыш определенных партиклов и звуков, спавн (скриптом - амкашным или из любого другого мода) на месте арта определенной аномалии.
  3. Выкладываю небольшой разбор содержимого полей таблицы db.storage, которое относится в NPC. Делал его некоторое время назад в тестовых целях, до конца так все и не разобрал, но думаю и этого будет достаточно для основных нужд модмейкеров. ЗЫ: Оформлено все в виде функции, которая содержит таблицу: строковой идентификатор=значения поля и возвращает значения того или иного поля db.storage по его идентификатору в таблице и айди NPC ( вызов примерно такой - GetData(level_object_by_sid(sid), "target_state") ). Там где используется много операторов and - это способ защиты от вылета при обращении к несуществующему полю таблицы. Распечатку таблицы я делал сразу по всем полям, а так как у разных NPC содержание полей было разным, то такие проверки избавляли меня от вылетов. ЗЗЫ: Данную функцию можно использовать только в тестовых целях, а не для реального применения.
  4. Whisper Она там... присутствует. Как памятник нерукотворный гению разрабов. Собственно в оригинале она(если я не ошибаюсь) никак задействована, так как скрипты в которых ее можно найти - тестовый мусор. Впрочем, попробовать применить ее можно - только скрипт нужно запустить как подпрограмму(тогда и малопонятных вылетов не будет) - по идее она должна тормозить выполнение только данного скрипта, а не весь процесс игры. Впрочем, тестил я это дело давно и сейчас даже не помню какие результаты были. ЗЫ: для запуска скрипта как подпрограммы нужно использовать lua пространство имен coroutine.
  5. Garry_Galler

    Худ

    Vergas Ссылка на мои часы лежит на 5-ой странице данной темы. Ссылка на мод 7.9 - в разделе Модификации в разработке - "Реальные географические координаты".
  6. Garry_Galler

    Худ

    Выходит у меня, а также у 7.9 с malandrinus' ом текстуры вращаются вследствие аццких заклинаний. Это ЗП нет. А в ТЧ есть. Советую глянуть скрипты наших модов.
  7. Garry_Galler

    Худ

    А зачем подставлять? Достаточно сделать одну (не считая фоновой)- рисуем стрелку и вращаем ее скриптом как в компасе у 7.9 и malandrinus'а . Или как у меня в часах и спидометре. Главное - точный расчет формулы вращения. Для знающих математику проблем особо никаких. Knyaz Поизучай возможности применения метода level.main_input_receiver(). И заодно статьи по созданию GUI в сталкере.
  8. TRAMP14 Можно. Скрипт гравипушки, в частности, основан на отслеживании выстрела (нажатии ЛКМ). Алгоритм прост - сравниваем на апдейте кол-во патронов в стволе и размер магазина. Либо считаем каждый выстрел и опять сравниваем. В скриптах гравипушки используется ствол с магазином на один патрон - так проще отслеживать выстрел. Если же писать скрипт для ствола с реальным магазином - то все несколько сложнее.
  9. Garry_Galler

    Худ

    TRAMP14 Необязательно. Я сделал вертикальную, потому что мне так было проще сделать расчеты движения стрелки по градусам. Если поменять расположение стрелки - то придется менять и формулу.
  10. function CountItems(uWho, sSection) local count=0 uWho:iterate_inventory(Iterate) local function Iterate(dummy, uItem) if uItem:section()==sSection then count=count+1 end end return count end
  11. Galil Типа так что ли? 'lin' =~ )etats.reganam_dnuow.dednuow.])(di:cpn[egarots.bd(gnirtsot nruter Долго ползал пацтулом TRAMP14 Дроп - это когда выбрасываешь из инвентаря. А перемещение предмета в слот это и есть "перемещение предмета в слот". Хотя собственно в чем соль вопроса я не понял. Если брать аспект абстрактный - то и то и другое действие представляет из себя добавление в нетпакет объекта идентификатора нахождения. При дропе идентификатор владельца объекта становится равным 65535 - то есть объект "ничей". При перемещении в слот - идентификатор владельца остается прежним, но меняется идентификатор нахождения который определяет где конкретно находится объект - рюкзак\слот\пояс. Если же ты имеешь виду каллбек на дроп - то он отслеживает только выбрасывание либо удаление предмета из инвентаря (не важно из какого места - пояса, слота или рюкзака).
  12. TRAMP14 Очень плохо что не понял. Локальная функция - это именованная функция внутри функции. Посмотри примеры в модах. for у тебя не закрыт. Ты не соблюл правила lua - так что вперед изучать теорию. И вообще зачем изобретать велосипед - возьми пример готовой функции из любого мода (поиск по iterate) которая итерирует инвентарь - сделай себе из нее то что нужно.
  13. Disord Существует. Но не в оригинале, а в не выложенном в открытый доступ патче для ТЧ. (патч делается эксклюзивно для одного мода). TRAMP14 Цикл for закрой end-ом. Чекер тебе написал все что нужно сделать. И nil можешь убрать - он не нужен. А дабы не путаться вместо анонимной функции итерации пиши локальную.
  14. ZeeK Забыл, что у тебя это на апдейте стоит - тогда стоит добавить проверку на текущую группировку,чтобы лишних действий не выполнялось. А лог твой мне ни о чем не говорит. function change_relationship() local actor = db.actor local outfit=db.actor:get_current_outfit() if outfit then if find_in_string(outfit:section(),"stalker_monolith_outfit") then if actor:character_community() ~= "monolith" then actor:set_character_community("monolith" ,0,0) end else if actor:character_community() ~= "actor" then actor:set_character_community("actor",0,0) end end end end TRAMP14 А может у него своя 'обертка' ? Поэтому я исправлять не стал.
  15. ZeeK function change_relationship() local comm, outfit ="actor", db.actor:get_current_outfit() local visual=outfit and find_in_string(outfit:section(),"stalker_monolith_outfit") and "monolith" db.actor:set_character_community(visual or comm,0,0) end Если тебе нужен обязательно возврат значений - допиши в конце return visual - вернет nil - если костюм не тот и строку(в общем не nil ), если костюм тот.
  16. HunterKey function SpawnItems(items, dist) local actor = db.actor local pos, dir, lv, gv = actor:position(),actor:direction(), actor:level_vertex_id(),actor:game_vertex_id() if dist then pos = pos:add(dir:mul(dist)) alife():create(items, pos, lv, gv) else alife():create(items, pos, lv, gv, 0) end end Для спавна рюкзак: SpawnItems("bread") Для спавна на дистанции от ГГ: SpawnItems("bread", 5)
  17. Dennis_Chikin А не проще отследить момент передачи предмета? У NPC ведь как правило предметы сами собой не появляются. В коды, где NPC тем или иным образом трансферятся предметы - поставить свой каллбек.
  18. dump Каллбек (одного типа) нельзя устанавливать на объект более одного раза. Точнее можно - но бессмысленно. Будет работать только последний - как у тебя и происходит. Делай по человечески и будет тебе счастье.
  19. Disord А не проще весь транспорт в файл vehicles.ltx вписывать ? Никогда в allspawn их не втюхивал - файлик только надо в system.ltx зарегистрировать #include "creatures\vehicles.ltx" и затем в папку creatures кинуть.
  20. shahvkit Закомментируй вызов функции HudShowMed() в апдейте (либо в файле bind_stalker, либо в другом - поиск рулит). ЗЫ:Всего две дефиса нужно поставить в нужном месте, а ты в конфиги полез - скриптом вся эта "мелочь" выводится, конфигом там и не пахнет. плакаль будучи пацтулом Не исчезают потому, что сделано на века.:ny_z_4:
  21. Пример скрипта, который парсит ltx файл и выбирает случайные строчки: --//-- парсим файл со списком хабара function parse_list() local ini = ini_file("misc\\items_link.ltx") if not ini then ini=system_ini() end if ini:section_exist("generic_list") then local n = ini:line_count("generic_list") local key = math.random(0,n-1) local result, item, num = ini:r_line("generic_list",key,"","") return item, num end end пример файла, из которого читаются данные
  22. Почитай тему про диалоги в справочнике по функциям и классам. malandrinus там все расписал.
  23. Абсолютно не нужно. Цитата из справочника: "Фразе можно сопоставить звук. Для этого в каталог sounds\characters_voice\dialogs\ нужно поместить звук с именем, как у тега "text" и расширением "*.ogg". Но говорить будут только NPC."
  24. _Призрак_, В utils есть весь нужный функционал. path_parse_waypoints(pathname) - получить таблицу данных по каждой точке пути -- узнать, находится ли stalker рядом с точкой path_point пути patrol_path true\false function stalker_at_waypoint(stalker, patrol_path, path_point)
  25. И когда же над lua перестанут издеваться... Неужели так сложно запомнить простые правила этого простого языка?(уж поверьте мне - в lua они действительно простые - могу сравнивать так как знаю четыре языка и шапочно знаком с еще 5-6). И писать код обдумав прежде и алгоритм и инструментарий, а не лишь бы что то написать.
×
×
  • Создать...