
Garry_Galler
Опытные-
Число публикаций
272 -
Регистрация
-
Последнее посещение
-
AMKoin
10 [Подарить AMKoin]
Весь контент пользователя Garry_Galler
-
Igor88.89 Решение находится поиском по цифре 15 - за пару секунд. if ((not db.actor:see(npc) and npc:position():distance_to(db.actor:position())>15)
-
TRAMP14 Если ты имеешь ввиду обычную активацию - то, конечно, можно. Но не парой строчек. В гравипушке malandrinus'a и kirag'a при захвате арта происходит его активация. Что такое активация? Удаление арта, проигрыш определенных партиклов и звуков, спавн (скриптом - амкашным или из любого другого мода) на месте арта определенной аномалии.
-
Справочник по функциям и классам
Garry_Galler ответил на тему форума автора Malandrinus в Скрипты / конфиги / движок
Выкладываю небольшой разбор содержимого полей таблицы db.storage, которое относится в NPC. Делал его некоторое время назад в тестовых целях, до конца так все и не разобрал, но думаю и этого будет достаточно для основных нужд модмейкеров. ЗЫ: Оформлено все в виде функции, которая содержит таблицу: строковой идентификатор=значения поля и возвращает значения того или иного поля db.storage по его идентификатору в таблице и айди NPC ( вызов примерно такой - GetData(level_object_by_sid(sid), "target_state") ). Там где используется много операторов and - это способ защиты от вылета при обращении к несуществующему полю таблицы. Распечатку таблицы я делал сразу по всем полям, а так как у разных NPC содержание полей было разным, то такие проверки избавляли меня от вылетов. ЗЗЫ: Данную функцию можно использовать только в тестовых целях, а не для реального применения. -
Справочник по функциям и классам
Garry_Galler ответил на тему форума автора Malandrinus в Скрипты / конфиги / движок
Whisper Она там... присутствует. Как памятник нерукотворный гению разрабов. Собственно в оригинале она(если я не ошибаюсь) никак задействована, так как скрипты в которых ее можно найти - тестовый мусор. Впрочем, попробовать применить ее можно - только скрипт нужно запустить как подпрограмму(тогда и малопонятных вылетов не будет) - по идее она должна тормозить выполнение только данного скрипта, а не весь процесс игры. Впрочем, тестил я это дело давно и сейчас даже не помню какие результаты были. ЗЫ: для запуска скрипта как подпрограммы нужно использовать lua пространство имен coroutine. -
Vergas Ссылка на мои часы лежит на 5-ой странице данной темы. Ссылка на мод 7.9 - в разделе Модификации в разработке - "Реальные географические координаты".
-
Выходит у меня, а также у 7.9 с malandrinus' ом текстуры вращаются вследствие аццких заклинаний. Это ЗП нет. А в ТЧ есть. Советую глянуть скрипты наших модов.
-
А зачем подставлять? Достаточно сделать одну (не считая фоновой)- рисуем стрелку и вращаем ее скриптом как в компасе у 7.9 и malandrinus'а . Или как у меня в часах и спидометре. Главное - точный расчет формулы вращения. Для знающих математику проблем особо никаких. Knyaz Поизучай возможности применения метода level.main_input_receiver(). И заодно статьи по созданию GUI в сталкере.
-
TRAMP14 Можно. Скрипт гравипушки, в частности, основан на отслеживании выстрела (нажатии ЛКМ). Алгоритм прост - сравниваем на апдейте кол-во патронов в стволе и размер магазина. Либо считаем каждый выстрел и опять сравниваем. В скриптах гравипушки используется ствол с магазином на один патрон - так проще отслеживать выстрел. Если же писать скрипт для ствола с реальным магазином - то все несколько сложнее.
-
TRAMP14 Необязательно. Я сделал вертикальную, потому что мне так было проще сделать расчеты движения стрелки по градусам. Если поменять расположение стрелки - то придется менять и формулу.
-
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
-
Galil Типа так что ли? 'lin' =~ )etats.reganam_dnuow.dednuow.])(di:cpn[egarots.bd(gnirtsot nruter Долго ползал пацтулом TRAMP14 Дроп - это когда выбрасываешь из инвентаря. А перемещение предмета в слот это и есть "перемещение предмета в слот". Хотя собственно в чем соль вопроса я не понял. Если брать аспект абстрактный - то и то и другое действие представляет из себя добавление в нетпакет объекта идентификатора нахождения. При дропе идентификатор владельца объекта становится равным 65535 - то есть объект "ничей". При перемещении в слот - идентификатор владельца остается прежним, но меняется идентификатор нахождения который определяет где конкретно находится объект - рюкзак\слот\пояс. Если же ты имеешь виду каллбек на дроп - то он отслеживает только выбрасывание либо удаление предмета из инвентаря (не важно из какого места - пояса, слота или рюкзака).
-
TRAMP14 Очень плохо что не понял. Локальная функция - это именованная функция внутри функции. Посмотри примеры в модах. for у тебя не закрыт. Ты не соблюл правила lua - так что вперед изучать теорию. И вообще зачем изобретать велосипед - возьми пример готовой функции из любого мода (поиск по iterate) которая итерирует инвентарь - сделай себе из нее то что нужно.
-
Disord Существует. Но не в оригинале, а в не выложенном в открытый доступ патче для ТЧ. (патч делается эксклюзивно для одного мода). TRAMP14 Цикл for закрой end-ом. Чекер тебе написал все что нужно сделать. И nil можешь убрать - он не нужен. А дабы не путаться вместо анонимной функции итерации пиши локальную.
-
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 А может у него своя 'обертка' ? Поэтому я исправлять не стал.
-
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 ), если костюм тот.
-
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)
-
[SoC] Ковыряемся в файлах
Garry_Galler ответил на тему форума автора Halford в Скрипты / конфиги / движок
Dennis_Chikin А не проще отследить момент передачи предмета? У NPC ведь как правило предметы сами собой не появляются. В коды, где NPC тем или иным образом трансферятся предметы - поставить свой каллбек. -
dump Каллбек (одного типа) нельзя устанавливать на объект более одного раза. Точнее можно - но бессмысленно. Будет работать только последний - как у тебя и происходит. Делай по человечески и будет тебе счастье.
-
Disord А не проще весь транспорт в файл vehicles.ltx вписывать ? Никогда в allspawn их не втюхивал - файлик только надо в system.ltx зарегистрировать #include "creatures\vehicles.ltx" и затем в папку creatures кинуть.
-
[SoC] Ковыряемся в файлах
Garry_Galler ответил на тему форума автора Halford в Скрипты / конфиги / движок
shahvkit Закомментируй вызов функции HudShowMed() в апдейте (либо в файле bind_stalker, либо в другом - поиск рулит). ЗЫ:Всего две дефиса нужно поставить в нужном месте, а ты в конфиги полез - скриптом вся эта "мелочь" выводится, конфигом там и не пахнет. плакаль будучи пацтулом Не исчезают потому, что сделано на века.:ny_z_4: -
Пример скрипта, который парсит 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 пример файла, из которого читаются данные
-
[SoC] Ковыряемся в файлах
Garry_Galler ответил на тему форума автора Halford в Скрипты / конфиги / движок
Почитай тему про диалоги в справочнике по функциям и классам. malandrinus там все расписал. -
[SoC] Ковыряемся в файлах
Garry_Galler ответил на тему форума автора Halford в Скрипты / конфиги / движок
Абсолютно не нужно. Цитата из справочника: "Фразе можно сопоставить звук. Для этого в каталог sounds\characters_voice\dialogs\ нужно поместить звук с именем, как у тега "text" и расширением "*.ogg". Но говорить будут только NPC." -
[SoC] Ковыряемся в файлах
Garry_Galler ответил на тему форума автора Halford в Скрипты / конфиги / движок
_Призрак_, В utils есть весь нужный функционал. path_parse_waypoints(pathname) - получить таблицу данных по каждой точке пути -- узнать, находится ли stalker рядом с точкой path_point пути patrol_path true\false function stalker_at_waypoint(stalker, patrol_path, path_point) -
И когда же над lua перестанут издеваться... Неужели так сложно запомнить простые правила этого простого языка?(уж поверьте мне - в lua они действительно простые - могу сравнивать так как знаю четыре языка и шапочно знаком с еще 5-6). И писать код обдумав прежде и алгоритм и инструментарий, а не лишь бы что то написать.
УЧИМСЯ МОДДИНГУ
ИГРАЕМ В МОДЫ НА ТЧ
ИГРАЕМ В МОДЫ НА ЧН И ЗП
- [ЧН] OGSM CS 1.8 CE Fixes
- [ЧН] HARDWARMOD 3.2
- [ЗП] The Long Road
- [ЧН] New vision of War
- [ЧН] Old Good Stalker Mod - Clear Sky
- [ЗП] Unofficial Patch
- [ЗП] Смерти вопреки
- [ЗП] Контракт на хорошую жизнь
- [ЗП] Shoker Weapon Mod 2.1
- [ЗП] Hardcore pack for SGM 2.2
- [ЗП] Контракт Синдиката
- [ЗП] Клондайк 2.0
- ...и другие моды
ПОЛЕЗНОЕ И РАЗНОЕ