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

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

Тема для обсуждения скриптов всего и всех в серии игр 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
Ссылка на комментарий
https://www.amk-team.ru/forum/topic/6185-skriptovanie/

Можно ли скриптово узнать gvid и lvid по позиции? 

OGSR Engine.

 

@Капрал Хикс Что это? Не понимаю. Какой-то скрипт, или метод движка?

Жить стало лучше, жить стало веселей. А когда веселей живётся, то работа скорится.

img.php?nick=Balavnik&sert=2&text=t6

Ку, кто-нибудь разбирается в COC? Anomaly, барахольщики убегают хрен знает куда после перестрелки. Бессмертные. На ближайших смартах нет. Как бы им внедрить gps, что-бы понять куда они ходят?

Возможно ли скриптово отследить подсвечивание названия предмета по клавише F, когда он рядом лежит?

 

Подскажите, как заставить один гулаг (с НПС) игнорировать другой? (С одной собакой в нём...).

Изменено пользователем Капрал Хикс

Почему не verify_if_thread_is_running = nil? Ведь эта ф-я экспортирована в LUA.

Жить стало лучше, жить стало веселей. А когда веселей живётся, то работа скорится.

img.php?nick=Balavnik&sert=2&text=t6

Создал скрипт для включения в ПДА меток на рестрикторы по названию их секции. Вылет с логом: 

 

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

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...:\games\s.t.a.l.k.e.r\gamedata\scripts\sander.script:382: attempt to index local 'sobj' (a nil value)

 

Сам код:

 

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

function yan_storyline_spot_add()
        for i = 1, 65534 do
            local sim = alife()
                if sim then
                    local sobj = sim:object(i)
                    if sobj and sobj:section_name() == "yan_storyline_ecolog_spot1"  or sobj:section_name() == "yan_storyline_ecolog_spot2" or sobj:section_name() == "yan_storyline_ecolog_spot3" or sobj:section_name() == "yan_storyline_ecolog_spot4" then
                        --    printf("level has sobj", sobj)
                        level.map_add_object_spot(sobj.id, "crlc_big", "storyline_yan_spot")
                    end
                end
        end
end

 

1. Нужны скобки вокруг проверок имени: объект И (имя ИЛИ имя …)

 

2. При таком количестве проверок можно переделать код на сверку по списку:

local names = { name_1 = true, name_2 = true, … }

…

if sobj and names[ sobj:section_name() ] then …

  • Спасибо 1
  • Нравится 3

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Вопрос к знатокам ogsr:  как работает метод level.advance_game_time(dt_ms)?

Как я понял это скриптовая перемотка времени, но как оно работает?

Пытался протестировать метод через колбэк на юз предмета:

-- Тестируем метод перемотки времени
local uSect = obj:section() 
local dt_ms = 6*3600

function main( obj )
	if uSect == "conserva" then
		level.advance_game_time( dt_ms )
	end
end

но функция вызывает вылет.

 Моя нычка, Нычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

@UriZzz А у тебя obj вне функции существует? Если нет, то при вызове obj:section() произойдёт вылет, т.к. obj не инициализирован(равен nil).

 

Занеси uSect в тело main , если вылет прекратился, то причина вылета выше.

Изменено пользователем Balavnik
  • Нравится 1

Жить стало лучше, жить стало веселей. А когда веселей живётся, то работа скорится.

img.php?nick=Balavnik&sert=2&text=t6

1 час назад, Norman Eisenherz сказал:

1. Нужны скобки вокруг проверок имени: объект И (имя ИЛИ имя …)

 

2. При таком количестве проверок можно переделать код на сверку по списку:

local names = { name_1 = true, name_2 = true, … }

…

if sobj and names[ sobj:section_name() ] then …

Вылет пропал, но метка так и не появилась. Предполагаю, что нужно id не серверного, а клиентского объекта получить?

Простой id не отличается для серверного и клиентского объекта – проблема в чем-то еще. Может, в названиях смартов очепятки? В крайнем случае, можно буквально встать в смарт и проверить if объект_смарта_по_имени:inside( db.actor:position() ).

  • Полезно 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

@Norman Eisenherz Тут вероятно нужно Росту записать иначе.

function yan_storyline_spot_add()
        for i = 1, 65534 do
            local sim = alife()
                if sim then
                    local sobj = sim:object(i)
                    if sobj and sobj:section_name() == "yan_storyline_ecolog_spot1" and sobj:section_name() == "yan_storyline_ecolog_spot2" and sobj:section_name() == "yan_storyline_ecolog_spot3" and sobj:section_name() == "yan_storyline_ecolog_spot4" then
                        --    printf("level has sobj", sobj)
                        level.map_add_object_spot(sobj.id, "crlc_big", "storyline_yan_spot")
                    end
                end
        end
end

Имхо конечно. :)

  • Нравится 1

Это несколько смартов со сходными именами – зачем ставить все условия через AND?

 

@WinCapМопед не мой.

  • Согласен 1
  • Смешно 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

@Norman Eisenherz, попробуй вместо "sobj:section_name()" использовать "sobj:name()".

  • Спасибо 1

S.T.A.L.K.E.R. CoP Objects  >200 шт  (upd 21.05.26) - Скачать  (Яндекс-диск)

xr_motivator.use_callback

Юзнуть НПС, там же и проверка, а не труп ли он.

  • Спасибо 1

Здесь могла быть ваша реклама.

А интересное кино получается, отметки на карте исчезают после загрузки сохранения. Их нужно обновлять после каждого load'а? 

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

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

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

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

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

Войти

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

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

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...