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

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

Тема для обсуждения скриптов всего и всех в серии игр 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/

@power-cat , ну и что, что не используются. Файл-то весь грузится. Если эти переменные у тебя используются один раз одной функцией, то и пихай их в эту функцию, зачем выносить за ее пределы?

И выходит function at line N has more up 60 значений.

p.s. в другое место сунул, всё стало ок, канеш помогло, но тем не менее этот чёртов лимит не устраивает.

Изменено пользователем power-cat
В 07.09.2017 в 11:46, _Sk8_AsTeR_ сказал:

как заставить НПС съесть водку

Думаю, тут надо ковырять логику НПС, где через условия заставлять его проигрывать нужные анимации по порядку. В итоге, когда НПС очнётся, маленько хитовать его, как бы похмелье.

Expression    : xml_doc.NavigateToNode(path,index)
Function      : CUIXmlInit::InitStatic
File          : E:\stalker\sources\trunk\xr_3da\xrGame\ui\UIXmlInit.cpp
Line          : 172
Description   : XML node not found
Arguments     : tab_client:check_with_battleye

 

ai_add_shoc_2.0f4 ставил эту логику для нпс

Как исправить вылет, или посоветуйте аналоги, или может пойти на уступки и что-то вылезать из скриптов чтобы вылет пропал, пусть лучше нпс что-то не делают, чем вылет игры!

Есть таблица key = value:

local params = {
    ["Name"] = obj:name(),
    ["Character name"] = obj:character_name(),
    ["Profile name"] = obj:profile_name()
    -- и т. д.
}

 

При печати этой таблицы элементы идут не том порядке, в котором расположены изначально.

Читал про функцию table.sort, всячески применял, но ни вылета, ни результата.

Добавлено Overfirst,

PS: в таблице более десятка элементов, всегда они печатаются не в том порядке, но всегда одинаково.

Добавлено Overfirst,

Ещё хотелось бы узнать, как можно отловить наведение прицела на физический объект, сталкера, моба и, собственно, получить этот объект.

@BoBaH_671 , 

Цитата

как можно отловить наведение прицела на .. объект

В X-Ray Extensions для ТЧ есть функция level.get_target_obj(), которая возвращает объект, на который наведён прицел, либо nil, если ни на что не наведён.

Функция table.sort работает только для индексированных массивов, используй их, если хочешь упорядочивать значения.

  • Спасибо 1

Без функции сортировки, но с индексацией:

for i = 1, #params do
    for k,v in pairs(params[i]) do 
        if v ~= nil then
    		-- // --
        end
    end
end

Пашет. :drinks:

Добавлено Overfirst,

@SkyLoader, thanks. ;)

16 часов назад, BoBaH_671 сказал:

как можно отловить наведение прицела на физический объект,

Можно векторами, если не хотите с правками возится, у класса рендер_девайс есть метод или св-во которые возвращают вектор направленный перпедикулярно плоскости экрана, он как раз на уровне прицела.

  • Спасибо 1

У меня вопрос: way- look- и остальные поинты "имют" нэт-пакеты и какой у них класс если есть?

@Graff46 , доступ к путям есть только через класс 'patrol'. Нет-пакета у путей нет, т.к. у класса нет серверной части.

Добрый день.

Подскажите пожалуйста как прописать рецепт на варку артефакта в качестве награды за квест?

То есть, как к стандартной выдаче награды в виде предмета добавляется выдача какого либо рецепта.

 

p.s.

Это нужно для модов типа "Народная солянка", "NLC7".

p.p.s.

Поиск информации выдал только уроки по прописыванию предметов в качестве награды.

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

@shahvkit в этих модах, рецепт - это просто инфопоршень, т.ч. в качестве награды просто выдавай соотв. инфопоршень.

  • Спасибо 1

@dsh Слишком упрощаешь. Не просто поршень, а внутри поршня ещё артикль с описанием рецепта в ПДА + ещё проверка на наличие поршня при варке вручную или трансмутатором в амк_мод.скрипт + ещё парочка каких нибудь проверок, о которых я и понятия не имею.

Скорее всего он хочет делать новый рецепт, а не юзать старые. А это уже не так просто.

  • Спасибо 1

@BFG теперь ты слишком усложняешь. Все, что ты описал, нужно только для создания нового рецепта. А для выдачи уже существующего, достаточно выдать соотв. инфопоршень.

Всем спасибо за ответы и подсказки.

Буду разбираться.

Главное, я узнал к чему привязываются рецепты - к схемам диалогов.

Дальше проще :wink:

16 минут назад, shahvkit сказал:

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

Неверно. Рецепт. как было сказано выше. привязан к поршню.

А поршень может быть выдан где угодно : в диалоге, по поднятию итема, открыванию двери, обыске трупа, смерти вертолёта, заходы\выходу из рестриктора, да вообще на любое событие.

Вопрос собсно реализации ТВОЕГО сюжета, а там уже конкретней смотреть надо.

  • Согласен 1
4 минуты назад, BFG сказал:

по поднятию итема

Пишут такое:

Цитата

при загрузке уровня создаются клиентские объекты предметов , лежащих в инвентаре и они в нем регистрируются
в сам факт регистрации в скриптах и отдается колбеком item_take
то значит что этот код будет постоянно вызываться при загрузке уровня или просто сейв\лоад

 

Изменено пользователем aka_sektor
  • Согласен 1
1 минуту назад, aka_sektor сказал:

то значит что этот код будет постоянно вызываться при загрузке уровня.

Я уж не знаю как оно сделано, но что-то по логам я не припомню, чтоб в Соли на каждый заход на локу вызывался код на поршень. А итем мог быть поднят на локе неделю назад. Значит есть методы обхода.

Шах ведь не пишет что конкретно он задумал и что собственно хочет от всей этой рецептуры. Толку то переливать из пустого... Напишет, тогда сразу будут конкретные примеры.

  • Согласен 1
6 минут назад, BFG сказал:

есть методы обхода

Заглушка:

if obj:section() == "имя_предмета" and not has_alife_info("фэйковый_инфопоршень") then 
give_info("фэйковый_инфопоршень")
end

И ещё:

Цитата

При взятии любого предмета (и после загрузки, да) выполняется весь код метода этого коллбека. 

 

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

Вопрос такой - как монстрячую логику Сидоровича отвязать от скрипта mob_trader.script?

Есть нормальная модель с сидячими анимациями из ЗП, хочу её посадить в каморку, так скрипт ругается на анимки. Если нужно, предоставлю логи вылетов и переписанную логику Сидора без анимок оригинального.

По-хорошему, можно конечно удалить оригинального и заспавнить нового НПС с его диалогами, но не хочется дополнительной возни.

  • Не нравится 1

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

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

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

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

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

Войти

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

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

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