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

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

Тема для обсуждения скриптов всего и всех в серии игр 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
Ссылка на комментарий
4 hours ago, Graff46 said:

Как мне получить статус диалога (окна) (активен или нет)

Используя IsShown()? Я вон там вижу даже метод, который этот метод использует. 

 

4 hours ago, Graff46 said:

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

А что делает? Насколько я вижу - это локальная переменная в функции start. 

 

4 hours ago, Graff46 said:

перехвать в методе __finalize - ничего недал?

Это вопрос? Перехват чего и что он должен был дать? 

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

@Graff46, сделай локальную переменную, например, wnd, и потом в __init: wnd = self, а затем в Hide: wnd = nil. И проверяй по этой переменной.

  • Нравится 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

 

13 часов назад, dsh сказал:

А что делает? Насколько я вижу - это локальная переменная в функции start. 

И ф-ция старт её возвращает, после закрытия окна эта переменная не нил.

 

13 часов назад, dsh сказал:

Это вопрос? Перехват чего и что он должен был дать? 

Я надеялся что ф-ция __финализ вызовется когда окно "убирается"

Ссылка на комментарий
1 hour ago, Graff46 said:

 И ф-ция старт её возвращает, после закрытия окна эта переменная не нил

Почему она должна стать nil? Есть код, который присваивает nil той переменной, которой было присвоено возвращенное значение? 

 

1 hour ago, Graff46 said:

 Я надеялся что ф-ция __финализ вызовется когда окно "убирается"

finalize вызывается, когда уборщик мусора удаляет этот объект. А удаляет он его, когда на него больше никто не ссылается. 

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

А вот скажите, создание переходов через скрипт в ЗП, чем-то отличается от ТЧовского метода? Надо знать какие-то нюансы? Просто мне надо переход, открывающийся в N-ный момент, после диалога и выполнения скрипта. 

Оц тоц перевертоц, бабушка здорова,
Оц тоц перевертоц кушает компот.
Оц тоц перевертоц и мечтает снова
Оц тоц перевертоц пережить налет!

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

@Shennondoah, структура нетпакета у перехода в зп такая же, как и в тч, так что практически ничем не отличается.

  • Спасибо 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

Я хотел написать ф-цию что бы ГГ "толкал" автомобиль (если тот перевернётся или застрянет где нибудь), направление "толчка" должно быть от ГГ к авто, но что-то пошло не так,в игре ГГ "толкает" машину в разные стороны, только не туда куда надо. Может кто-то подскажет в чем ошибка. 

Скрытый текст

local a = level.get_target_obj() -- получаем клиентский объект на который смотрим или nil
			if a and a.is_car and a:is_car() and distance_between_safe(db.actor, a) < 3 then
				local dir = db.actor:position():sub(a:position()):getH()
				a:get_physics_shell():apply_force( 100000 * math.sin(dir), 111991, 100000 * math.cos(dir) )
			end

 

 

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

@Graff46, Братишка, а не проще сделать класс обычной машины, с коротенькой логикой и путями, толкнул и та до места прет? Зачем так извращаться? Твое конечно дело, но проще всё же... 

Изменено пользователем Shennondoah

Оц тоц перевертоц, бабушка здорова,
Оц тоц перевертоц кушает компот.
Оц тоц перевертоц и мечтает снова
Оц тоц перевертоц пережить налет!

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

Товарищи! Помогите, нужна функция проверки при снятии костюма и функция при попадании в рюкзак. Не в целом к ГГ а именно в рюкзак. 

Ссылка на комментарий
22 часа назад, karavan сказал:

при снятии костюма и функция при попадании в рюкзак.

при попадании в рюкзак - кэллбэк on_item_take в биндере актера или мотиваторе НПСов. Для снятия костюма кэллбэк не предусмотрен(в чистой ТЧ), по этому только костыли с отслеживанием на апдейте содержимого в соответствующем слоте.

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

Ребятки, помогите советом! Имеется наработка обмена с НПС. Работает так: скриптовый диалог, где НПС предлагает рандомный итем из таблицы в скрипте. То есть по факту НПС предмет не имеет. Он просто передастся нам через скрипт. Так вот, хочу спросить у вас (поиск не дал результатов), как проверить инвентарь НПС? Например в диалоге буду спрашивать - есть аптечка? Будет выполнена проверка инвентаря НПС на наличие аптечки. Если такая есть, то НПС ответит - есть, хочу за нее (рандомный итем из моего рюкзака). Вот нужно узнать как именно проверить есть ли определенный итем у НПС. Есть идеи? 

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

@_Sk8_AsTeR_, потому что советы надо применять с умом, а не тупо копируя. Если у тебя из диалога вызывается функция, например, такого вида:

function my_func(fs, ss, dn, pi)
  -- какие-то действия
end

где fs и ss - это первый и второй собеседники, а ты внутри функции пишешь, ничего не меняя, npc:object("medkit)", ежу понятно, что переменной npc неоткуда взяться, а искомый персонаж содержится в одной из переменных fs и ss.

Если самостоятельно не получается, не надейся на телепатов - покажи диалог, покажи функцию, и тогда кто-нибудь сможет дать более конкретный совет.

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

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

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

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

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

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

Войти

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

Войти
×
×
  • Создать...