Nazgool 250 Опубликовано 18 Марта 2015 Поделиться Опубликовано 18 Марта 2015 (изменено) @Simonov50, При первом обращении к нему он сам зарегистрируется. @Капитан Кузьмичёв, Насколько я понял это нужно делать в пределах локации? db.actor:set_actor_position(vector():set(X,X,X)) не подойдет? Поставить space_restrictor и при заходе в него вызывать метод выше. Изменено 18 Марта 2015 пользователем Nazgool 1 Ссылка на комментарий
Михаил Мега черьв 1 Опубликовано 18 Марта 2015 Поделиться Опубликовано 18 Марта 2015 Можете подсказать? Нужен запуск скриптов и выдача инфо при использовании итемов в ЛА. Сами колбэки на использование и всё прочее уже есть, но сама функция выглядит так function actor_binder:on_use_item(oItem) local sSection = oItem:section() if not sSection:match("fake") then event("item_use"):trigger({item=oItem,item_id=oItem:id(),section=sSection}) --/#!#> end end Как мне его модернизировать чтобы при использовании из этой функции запускался ещё и мой скрипт? Хочу сделать звуки при употреблении пищи Ссылка на комментарий
Сталкер-Стрелок 12 Опубликовано 18 Марта 2015 Поделиться Опубликовано 18 Марта 2015 (изменено) @Михаил Мега черьв, тут система ивентов-сигналов, если не хочешь использовать ее - читай тутор, если с ней, то смотри как интятся скрипты и подключай свой, на мотив:event('item_use'):register(func) и далее function func(e) -- action end где е - вышеуказанная тобою таблица. Изменено 18 Марта 2015 пользователем Сталкер-Стрелок Ссылка на комментарий
boryan67 38 Опубликовано 20 Марта 2015 Поделиться Опубликовано 20 Марта 2015 @stalker8509, возможно. Подобная схема боя для БТР уже реализована и включена в мод "Terra Incognita". Удалось довольно просто реализовать этот режим, не внося глобальных изменений в исходную схему логики БТР. Но простота реализации схемы достигнута благодаря ее взаимодействию с другими компонентами мода. Поэтому, рассматривать ее в отрыве от остальных компонентов мода нельзя. Ссылка на комментарий
Михаил Мега черьв 1 Опубликовано 20 Марта 2015 Поделиться Опубликовано 20 Марта 2015 Подскажите как повесить на поднятие предмета выдачу инфопоршня без квеста. Вроде знаю что какой то апдейт надо создавать, но что это такое и как вообще это сделать не знаю. если есть где то такая статья - скиньте Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 21 Марта 2015 Поделиться Опубликовано 21 Марта 2015 Не надо ничего создавать. bind_stalker: function actor_binder:on_item_take() - добавить свою проверку и добавить db.actor:give_info_portion(), тоже с проверкой на то, что уже выдано. И, да, целая отдельная тема есть, где все расписано. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Капитан Кузьмичёв 124 Опубликовано 25 Марта 2015 Поделиться Опубликовано 25 Марта 2015 (изменено) Подскажите, пожалуйста, как сделать так, чтобы определённый НПС не использовал фонарик даже ночью? Заранее спасибо! sr_light.script внезапно занимается включением/выключением фонариков. dc Поиском пользовался, но так и не нашёл ответа. Скрипт глядел, но мне для конкретного НПС нужен запрет на использование фонарика, а не всея Зоны. Ну и менять схему поведения НПСу из-за фонарика не очень то хочется. Изменено 25 Марта 2015 пользователем Капитан Кузьмичёв Ссылка на комментарий
Nazgool 250 Опубликовано 25 Марта 2015 Поделиться Опубликовано 25 Марта 2015 (изменено) а не всея Зоны Да там по идее достаточно просто для конкретного сделать, только нужно знать : но мне для конкретного НПС нужен запрет А насколько он конкретный? Чем отличается от других? У него своя секция? Или sid? Изменено 25 Марта 2015 пользователем Nazgool Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 25 Марта 2015 Поделиться Опубликовано 25 Марта 2015 "У него своя секция? Или sid?" Да как-бы и obj:name() в таком случае должно быть вполне достаточно. А скрит, кстати, откомментирован вполне подробно. Если уж ЭТОГО недостаточно, то вопрос называется "а вот сделайте мне сам не знаю что, но чтобы было". Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Nazgool 250 Опубликовано 25 Марта 2015 Поделиться Опубликовано 25 Марта 2015 (изменено) @Dennis_Chikin, С obj:name() не так всё просто, как с section или sid. Хорошо если НПС в all.spawn-е. Можно имя глянуть как с sid-ом. А если он скриптовый? В общем... Полагаю что человек ещё не очень в скриптах, поэтому сразу и исключил этот вариант из списка. Изменено 25 Марта 2015 пользователем Nazgool Ссылка на комментарий
UnLoaded 313 Опубликовано 26 Марта 2015 Поделиться Опубликовано 26 Марта 2015 как сделать так, чтобы определённый НПС не использовал фонарик даже ночью?Может лучше глянуть в сторону enable_attachable_item - правда будет запрет и на батоны, гитары, водку. Но я думаю что навряд-ли непись, которому запрещено пользоваться фонариком, будет сидеть у костра в кампе. Ссылка на комментарий
Nazgool 250 Опубликовано 26 Марта 2015 Поделиться Опубликовано 26 Марта 2015 (изменено) @UnLoaded, Это понятно что enable_attachable_item. Тут все проще. Батоны, гитары, водка не при чем. В sr_light.script есть функция check_light, которая стоит на апдейте из xr_motivator.script. И в самом конце : if light ~= nil and torch then torch:enable_attachable_item(light) end добавить проверку на нужного НПС : if light ~= nil and torch then if "тот_сталкер_который_нужен" then light = false end torch:enable_attachable_item(light) end Вот собственно и был вопрос, - что у этого сталкера есть такого, чтобы сказать, что это "тот_сталкер_который_нужен". Т.е. что использовать вместо "тот_сталкер_который_нужен"? stalker:section() == "секция_того_сталкера" stalker:name() == "имя_того_сталкера" stalker:story_id() == "sid_того_сталкера" stalker:profile_name() == "может_такое_имя_есть" или ещё что-то, чем его можно отличить от других Изменено 26 Марта 2015 пользователем Nazgool 1 Ссылка на комментарий
Капитан Кузьмичёв 124 Опубликовано 26 Марта 2015 Поделиться Опубликовано 26 Марта 2015 (изменено) Ещё вопрос. Если я декомпилирую аллспавн, а потом все alife и way и прочее засуну просто в папку all, предварительно удалив аллспавн, то работать будет? Просто у меня мистическим образом работает (игра). Изменено 26 Марта 2015 пользователем Капитан Кузьмичёв Ссылка на комментарий
HellRatz 2 841 Опубликовано 26 Марта 2015 Поделиться Опубликовано 26 Марта 2015 Просто у меня мистическим образом работает (игра). Ну если делаешь изменения на чистой игре, то не мудрено, all.spawn же вшит в 1 из игровых архивов, по этому его удаление из папки gamedata никак не влияет (пока там нет капитальных изменений). 1 1 GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
Simonov50 2 Опубликовано 26 Марта 2015 Поделиться Опубликовано 26 Марта 2015 (изменено) @Nazgool, При обычной загрузке лист сразу транслируется, и если присутствует текст обращения к несуществующей функции будет вылет. То есть, вариант проверки "если есть лист, тогда обратиться к функции не срабатывает". Если "спрятать" текст (mu_call="Имя_скрипта"..".".."имя_функции".."()"), то вылета не будет, но команда dostring(mu_call) не проходит. Видимо в игре недоступна? Пытаюсь найти вариант загрузки в два этапа. Обычным образом загрузить мой 1_й лист, мой второй лист (с обращением к функции) спрятать в другом каталоге, если присутствует некий третий лист,(наличие функции в котором и проверяется), то подключить мой второй лист. Но как это сделать не представляю. Изменено 26 Марта 2015 пользователем Simonov50 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 26 Марта 2015 Поделиться Опубликовано 26 Марта 2015 (изменено) Э-эээ... Может, сначала попробовать расшифровать ? Что за "лист" такой, зачем делать mu_call="Имя_скрипта"..".".."имя_функции".."()", и т.д. Ибо, во-первых, есть классическое local func local module, fname = string_match( infop.func, "(.+)[.](.+)" ) if not fname then func = xr_effects[infop.func] elseif _G[module] and _G[module][fname] then func=_G[module][fname] endиз xr_logic.script, во-вторых: t = { ["fn"] = module.fn } ... t["fn"]()Или надо что-то еще ? Изменено 26 Марта 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Nazgool 250 Опубликовано 26 Марта 2015 Поделиться Опубликовано 26 Марта 2015 (изменено) Может, сначала попробовать расшифровать ? +1 Раз 5 перечитал, но так и не смог определить для себя круг задач. @Simonov50, Ты хочешь защититься от вылета при вызове не существующей функции в файле? Правда возникает вопрос - зачем вызывать функцию, которой нет? Распиши подробнее, что ты хочешь сделать. А если вдруг я правильно понял, то можешь сделать хотя бы так. В _g.script добавить функцию : function safe_call(script, func, ...) local module = _G[script] if module then local f = module[func] if type(f) == 'function' then return f(...) end end end И вызывать где-то в защищенном режиме : -- вызов x = safe_call('my_script','my_func', arg1, ... , argN) -- проверка if safe_call('my_script','my_func', arg1, ... , argN) then ... end Изменено 26 Марта 2015 пользователем Nazgool Ссылка на комментарий
Simonov50 2 Опубликовано 28 Марта 2015 Поделиться Опубликовано 28 Марта 2015 @Dennis_Chikin, Спасибо !!! Всё в тему, но кому классика, а кому откровение. Если я верно понял, то нужно засовывать в инфопоршень, а вытаскивать с помощью xr_effects. Ни когда с инфопоршнями не работал. Пойду читать xr_effects. Ещё раз спасибо. @Nazgool, Круг задач определён уровнем моих незнаний и для понимания нормальным человеком слишком обширен. Пока есть только цель - сделать "переносной" скрипт (из мода в мод). Воткнул его, он сам быстренько посмотрел ресурсы и "сказал" что (и где) надо доделывать руками. Скрипт чисто модерский - простенький инструментарий (будет когда-нибудь?). Про _G всё понял, а вот про защищённый режим (на уровне игры) услышал впервые! Где читать? Спасибо за помощь - иду учить мат.часть. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 28 Марта 2015 Поделиться Опубликовано 28 Марта 2015 (изменено) xr_logic - это не работа с info как таковыми, а разбор условий и какие-то действия по этим условиям. Здесь нам интересно конкретно реализация действия %=miscript.myfunc% Если оно находит точку, то func=_G["miscript"]["myfunc"] если точки нет - то есть, в логике написано %=myfunc% - то пытается найти функцию "myfunc" в xr_effects.script. Ну а дальше там идет банально func() - то есть, вызов найденного. Ну а если идет речь о скрипте, который хочет определить, есть ли нужная функция в каком-то другом месте, так здесь все еще проще: if another_script.myfunc then another_script.myfunc() -- функция есть, вызываем else ... -- оппаньки ! end Изменено 28 Марта 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Хек 20 Опубликовано 28 Марта 2015 Поделиться Опубликовано 28 Марта 2015 В общем такое дело, делал по этой схеме. Всё работает как часы, но проблема в следующем.. Как только стартует таймер, мне нельзя сейв/лоад жать, использовать спальник, и локации переходить(в противном случае таймер останавливается/не срабатывает) Как это победить можно? Мы типа сталкеры, мы крутые Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти