Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий
MJRamon 0 Опубликовано 22 Февраля 2017 Поделиться Опубликовано 22 Февраля 2017 Каким образом можно извне передать в игру команду на выполнение скрипта? Как пример - команда в чате на стриме. Существующая программа Rutony умеет передавать нажатия клавиш практически в любую игру, но только не в Сталкер. Ссылка на комментарий
_"ШНУР"_ 0 Опубликовано 22 Февраля 2017 Поделиться Опубликовано 22 Февраля 2017 Добрый день. Прошу помощи. Мне нужна функция для ЗП, чтобы удалить объект через ID скриптом. Только этот объект не находится в рюкзаке актора. Он просто заспавнен через скрипт на локации. Спасибо заранее. Жду вашего ответа) Ссылка на комментарий
UnLoaded 313 Опубликовано 22 Февраля 2017 Поделиться Опубликовано 22 Февраля 2017 @_"ШНУР"_ Для ТЧ\ЧН\ЗП, без разницы как объект был заспавнен в игре, существует единственная ф-ция удаления - release... Ссылка на комментарий
naxac 2 447 Опубликовано 22 Февраля 2017 Поделиться Опубликовано 22 Февраля 2017 @_"ШНУР"_, alife():release( alife():object( ID ), true ) Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Dennis_Chikin 3 660 Опубликовано 22 Февраля 2017 Поделиться Опубликовано 22 Февраля 2017 При этом еще убедиться, что alife():object( ID ) что-то вернуло. В противном случае - "нехватка памяти" или еще что-нибудь в этом роде через неопределенное время после "удаления". 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
nego 35 Опубликовано 23 Февраля 2017 Поделиться Опубликовано 23 Февраля 2017 здравствуйте ВАМ. Подскажите, как файл скрипа АМК правильно сочленить с файлом скрипта бинд_сталкер чистой ТЧ? Заранее спасибо. 1 Одна голова хорошо, а две лучше. А вот три, это уже змей Горыныч. Ссылка на комментарий
losiara 13 Опубликовано 26 Февраля 2017 Поделиться Опубликовано 26 Февраля 2017 (изменено) Добрый вечер! есть такой мини-мод называемый "лечение раненых врагов", он несложен, но суть в том, что после получения аптечки враждебный непись становится всегда "одиночкой", как возможно изменить скрипт так, что бы раненый оставался в своей группировке и соот. дружественным к ГГ. Вот сам скрипт: вырезано Скопировал весь скрипт, если правильно понял ответственным за то что мне нужно является последняя функция: "function help_wounded" Изменено 27 Февраля 2017 пользователем HellRatz Добавлено HellRatz, 27 Февраля 2017 Опять двадцать пять. Ну что за мания пихать в пост целиком скрипты и логи на сотни строк? Ведь проще же залить документ на тот же яндекс диск, где его можно не качая посмотреть. И тема не нагружается, и для просмотра удобно, нежели крутить страницу. На будущее. А пока все удалил под спойлером. Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
dsh 3 824 Опубликовано 26 Февраля 2017 Поделиться Опубликовано 26 Февраля 2017 @losiara, так закомментируй set_character_community() и будет он у тебя оставаться в своей группировке 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
_"ШНУР"_ 0 Опубликовано 1 Марта 2017 Поделиться Опубликовано 1 Марта 2017 Cпасибо за ответы. В прошлый раз всё помогло! Новый вопрос: какая логика должна быть у тайника, чтобы его нельзя было открыть без ключа? Обычный рюкзак, с вещами внутри, но без ключа он закрыт. Спасибо. Платформа ЗП Ссылка на комментарий
Dennis_Chikin 3 660 Опубликовано 1 Марта 2017 Поделиться Опубликовано 1 Марта 2017 Хм... А у нас вообще есть операция обратная add_precondition() и add_effect() ? Ибо, очень интересно получается, когда данные непися удаляют по случаю deactivate(), а эвалюатор продолжает пытается с ними что-то делать... или это из npc:motivation_action_manager():add_evaluator() уши торчат ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Serge! 127 Опубликовано 1 Марта 2017 Поделиться Опубликовано 1 Марта 2017 (изменено) Вроде как и не «noob», а вопросы?... на вопросы наталкивают...Благодарю Вас за чрезвычайно содержательное сообщение. Несомненно, оно принесет огромную пользу всем, кто его прочитает. dc Изменено 1 Марта 2017 пользователем Dennis_Chikin 2 1 1 Ссылка на комментарий
Kondr48 314 Опубликовано 5 Марта 2017 Поделиться Опубликовано 5 Марта 2017 (изменено) Интересует способ по-человечески переписать эту функцию (и несколько подобных): function gui_mechanic_wnd:play_repair_sound() local rnd = math.random(1, 7) if rnd == 1 then gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_01]]) elseif rnd == 2 then gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_02]]) elseif rnd == 3 then gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_03]]) elseif rnd == 4 then gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_04]]) elseif rnd == 5 then gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_05]]) elseif rnd == 6 then gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_06]]) elseif rnd == 7 then gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_07]]) end end Интересует, собственно как приписать номер на конец строки, ну что-то вроде: local snd = string.format("scripts\remkit\ui_repairweapon_%02d", rnd) только, чтобы при этом воспроизводился звук Изменено 5 Марта 2017 пользователем Kondr48 Ссылка на комментарий
Kirgudu 1 249 Опубликовано 5 Марта 2017 Поделиться Опубликовано 5 Марта 2017 (изменено) @Kondr48, function gui_mechanic_wnd:play_repair_sound() math.randomseed(device():time_global()) local snd_obj = sound_object("scripts\\remkit\\ui_repairweapon_0"..math.random(1, 7)) gz_utils.s_play_no_feedback(snd_obj) end Изменено 5 Марта 2017 пользователем Kirgudu 1 Инструмент Ссылка на комментарий
Kondr48 314 Опубликовано 5 Марта 2017 Поделиться Опубликовано 5 Марта 2017 (изменено) Kirgudu, а для чего используется: math.randomseed(device():time_global()) ? --- Кстати, таким образом звук воспроизводится не хочет. Изменено 5 Марта 2017 пользователем Kondr48 Ссылка на комментарий
Kirgudu 1 249 Опубликовано 5 Марта 2017 Поделиться Опубликовано 5 Марта 2017 @Kondr48, для более-менее случайной инициализации генератора псевдо-случайных чисел. Использовать по желанию. звук воспроизводится не хочет Причины навскидку: плохой (тихий) звук, по указанному (сгенерированному) пути звука нет вообще (путь должен быть указан относительно папки gamedata\sounds), ошибочное содержимое функции gz_utils.s_play_no_feedback - выбирай на вкус. Получать звуковой объект указанием пути к нему строкой вполне валидно. 1 Инструмент Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 5 Марта 2017 Поделиться Опубликовано 5 Марта 2017 для более-менее случайной инициализации генератора псевдо-случайных чисел @Kirgudu, у меня вообще без этого не работает, всегда одно число получается. Добавлено Kirgudu, 5 Марта 2017 Бывает и так. А всё потому, что он "псевдо". Ссылка на комментарий
losiara 13 Опубликовано 5 Марта 2017 Поделиться Опубликовано 5 Марта 2017 Добрый вечер!!! Интересует возможность задавать исполнение функций например спавна по таймеру игрового времени! Получил задание днем, а выполнение его будет происходить ночью допустим в 22.00 (игровое время). Возможно подобное уже реализовано в каком нибудь моде, если да, то киньте ссылку по возможности!!! Спасибо!!! Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 5 Марта 2017 Поделиться Опубликовано 5 Марта 2017 @losiara, что приходит на ум: • На апдейте проверять время и вызывать метод, если проверка выполнена успешно. (бред) • С помощью таймера. То есть получать нынешнее время и вычитать его из положенного времени, а полученное число ставим на таймер, по истечению которого выполняется метод. Ссылка на комментарий
Dennis_Chikin 3 660 Опубликовано 5 Марта 2017 Поделиться Опубликовано 5 Марта 2017 Где-то выдают "таймеры", работающие не на апдейте, а на Святом Духе ? Мне, пожалуйста, парочку отложите - пригодятся в хозяйстве. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
UnLoaded 313 Опубликовано 5 Марта 2017 Поделиться Опубликовано 5 Марта 2017 Получил задание днем, а выполнение его будет происходить ночью Если я правильно понял, это что-то вроде: берем у Сидора в 14:00 задание - "Меченый, тут по ночам слепыши повадились выть близ деревни, спать мешают. Разберись". И этих слепышей возле деревни быть не должно до 22-23:00 и после 6-7:00. Ну так у тебя само задание - таймер: используй тег <function_complete>, в котором укажи ф-цию. Эта ф-ция будет выполняться на апдейте - вот тебе и таймер. В ф-ции проверяй игровое время и соответственно выполняй что-то по достижении нужного(к примеру спавни этих самых собачек в 22 и удаляй\уводи в офф-лайн в 6). Дешево и сердито... 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти