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

Рекомендуемые сообщения

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

 

Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу.

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

Каким образом можно извне передать в игру команду на выполнение скрипта?

Как пример - команда в чате на стриме.

Существующая программа Rutony умеет передавать нажатия клавиш практически в любую игру, но только не в Сталкер.

Ссылка на комментарий

Добрый день. Прошу помощи. Мне нужна функция для ЗП, чтобы удалить объект через ID скриптом. Только этот объект не находится в рюкзаке актора. Он просто заспавнен через скрипт на локации. Спасибо заранее. Жду вашего ответа)

Ссылка на комментарий

При этом еще убедиться, что alife():object( ID ) что-то вернуло.

В противном случае - "нехватка памяти" или еще что-нибудь в этом роде через неопределенное время после "удаления".

  • Полезно 1
Ссылка на комментарий

здравствуйте ВАМ. Подскажите, как файл скрипа АМК правильно сочленить с файлом скрипта бинд_сталкер чистой ТЧ? Заранее спасибо.

  • Сомнительно 1

Одна голова хорошо, а две лучше. А вот три, это уже змей Горыныч.

Ссылка на комментарий

Добрый вечер!

есть такой мини-мод называемый "лечение раненых врагов", он несложен, но суть в том, что после получения аптечки враждебный непись становится всегда "одиночкой", как возможно изменить скрипт так, что бы раненый оставался в своей группировке и соот. дружественным к ГГ.

Вот сам скрипт:

 

вырезано

 

Скопировал весь скрипт, если правильно понял ответственным за то что мне нужно является последняя функция: "function help_wounded"

Изменено пользователем HellRatz
Добавлено  HellRatz,

Опять двадцать пять. Ну что за мания пихать в пост целиком скрипты и логи на сотни строк? :)
Ведь проще же залить документ на тот же яндекс диск, где его можно не качая посмотреть. И тема не нагружается, и для просмотра удобно, нежели крутить страницу. На будущее. А пока все удалил под спойлером.

Жизнь следует измерять поступками, а не временем...

Ссылка на комментарий

Cпасибо за ответы. В прошлый раз всё помогло! Новый вопрос: какая логика должна быть у тайника, чтобы его нельзя было открыть без ключа? Обычный рюкзак, с вещами внутри, но без ключа он закрыт. Спасибо. Платформа ЗП

Ссылка на комментарий

Хм... А у нас вообще есть операция обратная add_precondition() и add_effect() ?

 

Ибо, очень интересно получается, когда данные непися удаляют по случаю deactivate(), а эвалюатор продолжает пытается с ними что-то делать...

 

или это из npc:motivation_action_manager():add_evaluator() уши торчат ?

Ссылка на комментарий

Вроде как и не «noob», а вопросы?... на вопросы наталкивают...

Благодарю Вас за чрезвычайно содержательное сообщение. Несомненно, оно принесет огромную пользу всем, кто его прочитает. dc

Изменено пользователем Dennis_Chikin
  • Не нравится 2
  • Согласен 1
  • Сомнительно 1
Ссылка на комментарий

Интересует способ по-человечески переписать эту функцию (и несколько подобных):

 

 

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)

только, чтобы при этом воспроизводился звук  :)

Изменено пользователем Kondr48
Ссылка на комментарий

@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
Изменено пользователем Kirgudu
  • Спасибо 1
Ссылка на комментарий

Kirgudu, а для чего используется:

math.randomseed(device():time_global())

?

---

Кстати, таким образом звук воспроизводится не хочет.

Изменено пользователем Kondr48
Ссылка на комментарий

@Kondr48, для более-менее случайной инициализации генератора псевдо-случайных чисел. :) Использовать по желанию.

 

звук воспроизводится не хочет

Причины навскидку: плохой (тихий) звук, по указанному (сгенерированному) пути звука нет вообще (путь должен быть указан относительно папки gamedata\sounds), ошибочное содержимое функции gz_utils.s_play_no_feedback - выбирай на вкус. Получать звуковой объект указанием пути к нему строкой вполне валидно.

  • Полезно 1
Ссылка на комментарий

 

 

для более-менее случайной инициализации генератора псевдо-случайных чисел

@Kirgudu, у меня вообще без этого не работает, всегда одно число получается.  :crazy:

Добавлено Kirgudu,

Бывает и так. А всё потому, что он "псевдо".

Ссылка на комментарий

Добрый вечер!!!

Интересует возможность задавать исполнение функций например спавна по таймеру игрового времени!

Получил задание днем, а выполнение его будет происходить ночью допустим в 22.00 (игровое время). Возможно подобное уже реализовано в каком нибудь моде, если да, то киньте ссылку по возможности!!!

Спасибо!!!

Жизнь следует измерять поступками, а не временем...

Ссылка на комментарий

@losiara, что приходит на ум:

• На апдейте проверять время и вызывать метод, если проверка выполнена успешно. (бред)

• С помощью таймера. То есть получать нынешнее время и вычитать его из положенного времени, а полученное число ставим на таймер, по истечению которого выполняется метод.

Ссылка на комментарий

Где-то выдают "таймеры", работающие не на апдейте, а на Святом Духе ?

Мне, пожалуйста, парочку отложите - пригодятся в хозяйстве.

Ссылка на комментарий

 

 

Получил задание днем, а выполнение его будет происходить ночью

Если я правильно понял, это что-то вроде: берем у Сидора в 14:00 задание - "Меченый, тут по ночам слепыши повадились выть близ деревни, спать мешают. Разберись". И этих слепышей возле деревни быть не должно до 22-23:00 и после 6-7:00.

Ну так у тебя само задание - таймер: используй тег <function_complete>, в котором укажи ф-цию. Эта ф-ция будет выполняться на апдейте - вот тебе и таймер. В ф-ции проверяй игровое время и соответственно выполняй что-то по достижении нужного(к примеру спавни этих самых собачек в 22 и удаляй\уводи в офф-лайн в 6). Дешево и сердито...

  • Согласен 1
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   2 пользователя

×
×
  • Создать...