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

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

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

подключиться к биндеру объекта и пользоваться, например, его апдейтом

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

 

1 hour ago, Graff46 said:

level.add_call(object, ...), Но эта функция странно себя ведёт

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

 

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

Цель, подключиться к биндеру объекта и пользоваться, например, его апдейтом в своих целях.

Тогда делается строго наоборот: биндер при апдейте сам дергает за то, что надо.

Можно дать ему табличку при ините, и потом по мере надобности добавлять в нее ненужное.

Ссылка на комментарий
10 часов назад, dsh сказал:

что тебе мешает прямо в его функции апдейта нужное сделать?

 

10 часов назад, Dennis_Chikin сказал:

огда делается строго наоборот

Надо было мне внешние включение, теперь придется придумывать что-то

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

Смотрим  все псевдООПшное творчество из amk. Ну или многострадальные "псиантенну"/таскменеджер от ПЫС.

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

@Graff46, подозреваю, что ты на самом деле изобретаешь менеджер событий. Возьми готовый и доработай по желанию. Вот например

  self.am:call( "on_physic_obj_update", self.object, delta )

Физ. объект генерирует событие "on_physic_obj_update" на своем апдейте. Кому надо, подписываются на это событие и что-то в нем делают.

 

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

@Graff46, ну, вот например доработанный из OGSE

https://github.com/dsh2dsh/op2ogse/blob/old_engine/gamedata/scripts/ogse_signals.script

который я использовал с x-ray extensions.

 

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

Всем привет. Интересует, как можно еще отключать CustomStatic во время прицеливания через оптику(где запускается текстура внешнего прицела или прицельной сетки). Отслеживать через "db.actor:accuracy()*1000"  - не вариант, так как в результате статик будет отключатся и после прицеливания без оптики. В DMX моде вот такая реализация:

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

 


if upd_time3 == nil then
    upd_time3 = time + 500
  elseif upd_time3 < time then
    upd_time3 = time + 500  
    local accuracy = math_ceil(db.actor:accuracy()*1000)
    if accuracy == 1 then
        if not scopeUsed then
            local item = db.actor:active_item()
            if item then
                --get_console():execute("load ~#I#: db.actor:active_item():section()="..tostring(item:section()))
                if item:section() == "wpn_binoc" then
                    scopeUsed = true
                elseif IAmAWeapon[item:clsid()] then
                    local t = amk.get_weapon_data(alife():object(item:id()))
                    scopeUsed = (bit_and(t.addon_flags, 1) == 1 or rx_utils.get_addon_status(item, "sc") == 1)
                    --amk.dump_table(t)
                end
            end
        end
    else
        scopeUsed = false
    end
  end

 

Может получше варианты есть?

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

@TIGER_VLAD, так а вопрос у тебя в чем именно? Как отключить CustomStatic или как определить, что сейчас идет прицеливание?

 

Ссылка на комментарий
4 минуты назад, dsh сказал:

или как определить, что сейчас идет прицеливание?

Да, но прицеливание именно через оптику. Вариант вот есть из DMX мода(выше). Просто интересуюсь, есть может варианты получше?

 

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

@TIGER_VLAD, вот например

 

https://github.com/dsh2dsh/op2ogse/blob/3f7514f804eaf1dc875cc3ce8513d8537dd53bc2/gamedata/scripts/ogse_dynamic_hud.script#L115

 

но используется ogse.dll. Кажется zoom_mode() именно оттуда. Грубо в двух словах, если zoom_mode() == 1, значит прицеливание, если active_item() - это оружие и у него есть оптический прицел, значит это прицеливание через оптику.

 

Изменено пользователем dsh
  • Спасибо 1
Ссылка на комментарий

научите как сделать анимацию использование еды, плиз. как в a.r.e.a юзаешь еду, игрок не двигается с мышкой и проподает худ, при этом проигрывается анимация похожая на смерть при выбросе. вот пример https://www.youtube.com/watch?v=Ac692ECmBY4 (на 5:20). зарание спасибо!

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

@Joko SS, из use callback-а проверяем, что это нужный предмет, отключаем управление level.disable_input(), отключаем худ level.hide_indicators(), запускаем соотв. анимацию камеры, по желанию запускаем какой-нибудь звук, запускаем таймер на нужное время, когда таймер сработает, включаем обратно худ и возвращаем управление. Это грубо, в двух словах.

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

@dsh, напишешь для меня?) я не селен в скриптах, ток умею добавлять новые предметы

Добавлено Dennis_Chikin,

Вот мне почему-то показалось, что к этому идет, еще с прошлого поста.

Хоть селен, хоть арсенид галлия - однако явный оффтопик.

  • Смешно 5
  • Сочувствую 1
Ссылка на комментарий

@Den “Angry Wolf” Koslov, нашёл где-то. Но это для ЗП.

function название_функции()
if surge_manager.actor_in_cover() then
--действие
end
end 

 

Самый некомпетентный на форуме.

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

Здраствуйте. Попытался подключить для себя динамические новости к последней версии OGSM на Тени Чернобыля и добавить в них некрологи из АМК. В файле bind.stalker я, как и положено, прописал функцию для запуска этих самых новостей в игре через секцию actor_binder:update. , в файле news_main эти некрологи прописал, но игра обиделась за мои действия со скриптами и вместо запуска выплюнула следующий лог:

 

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

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: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:465: attempt to call field 'show_news_main' (a nil value)

 Как я понял, она не видит функцию(хотя она есть в файле) show_news_main. В чем проблема? Огромная просьба помочь, т.к. в скриптах я абсолютно не шарю, попытался разобраться в файлах и подключить по примеру. Архив с файлами для новостей и сам файл из OGSM прилагаются, смотрите ссылку ниже. 

 

 

  • Сочувствую 2

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

Ссылка на комментарий
33 минуты назад, MegaStalker сказал:

Как я понял, она не видит функцию(хотя она есть в файле) show_news_main.

Ну так покажи движку, где ф-цию искать, попробуй прописать так:  название_файла_в_котором_ф-ция.show_news_main

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

@AndreySol, попробую, потом напишу результат.

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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

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

 

А можно по-человечески объяснить, что значит "вешаем на правую мышь" и как собственно проверять? Я же сказал, что в скриптах ничего не шарю, потому и прошу помощи.

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

100500 раз говорили:

Сначала идем сюда: https://www.amk-team.ru/forum/topic/11584-yazyk-lua-obschie-voprosy-programmirovaniya/?page=1

Потом идем на lua.org и качаем там luac5.1.exe с причиндалами. luac5.1.cmd с содержимым вида

c:\куда_положили\luac5.1.exe %1
pause

вешаем на правую мышь, и им проверяем то, что понаделали.

Добавлено Dennis_Chikin,

ПКМ, "открыть с помощью", далее выбрать созданный cmd. Дальше все будет написано фонтом по бэкграунду:

в частности, если написано, что после строки 668 в news_main.script не хватает end - идем в тему по ссылке, внимательно читаем, и разбираемся, почему не хватает.

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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

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

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

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

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

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

Войти

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

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

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