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

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

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

Граждане, да вы издеваетесь...

 

bind_stalker.actor_binder:net_spawn() вызывается таки один раз при старте/загрузке.

При НИ в bind_stalker.actor_binder:update() используется с оригинала еще проверка

        if not has_alife_info("storyline_actor_start") and
           (level.name() == "l01_escape")
        then
            self.object:give_info_portion("storyline_actor_start")
            _G.g_start_avi = true
            printf("*AVI* RUN START AVI")            
        end

- стартовый ролик, ага ?

 

P.S. Давайте добавим на каждую локацию ТЫЩУ рестрикторов. И будем их все перебирать каждые 20ms для проверки - какой надо удалить.

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

@Dennis_Chikin а чего их перебирать-то. Отработал свое и давай, как говорится, до свидания, типа вот такого:

on_info = {+night_watch_done} nil %=dsh.release_alive_npc%

А вот этим, которые эту проверку засунули в апдейт, я бы руки сразу на место переставил. А то они там еще и не такое в апдейт засунут.

 

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

Так это с версии 0.0000 какой-нибудь. Когда еще половина движка вообще не работала. И с тех пор ни кто и не убирал.

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

[logic]
active = remark@1

[remark@1]
no_move = true
target = actor
on_info = {+start_pas} remark@p

 

[remark@p]
anim = guard_rac
snd = esc_pash
;target = nil
on_signal = sound_end| remark@vodka

 

[remark@vodka]
anim = eat_vodka
no_move = true
target = nil

Вылетает при переходе на remark@p с логом:

Цитата

! Unknown command:  dbg:!-!-!-_Принудительный_Вылет_-!-!-!
[07/16/17 13:09:31]    ! Unknown command:  ERROR:_ERROR:_ILLEGAL_PLAY_SOUND!!!_esc_pash_for_esc_pashal_stalker
[07/16/17 13:09:31]    * Log file has been saved successfully!
[07/16/17 13:09:31]     
[07/16/17 13:09:31]    FATAL ERROR
[07/16/17 13:09:31]     
[07/16/17 13:09:31]    [error]Expression    : fatal error
[07/16/17 13:09:31]    [error]Function      : CScriptEngine::lua_error
[07/16/17 13:09:31]    [error]File          : script_engine.cpp
[07/16/17 13:09:31]    [error]Line          : 73
[07/16/17 13:09:31]    [error]Description   : <no expression>
[07/16/17 13:09:31]    [error]Arguments     : LUA error: e:\monolith_core\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (no value)

Вижу, что ругается на трек проигруемый. Но я без понятий, что с ним не так. Звуковую тему  esc_pash прописал в sound_theme как положено. Так в чем трабл?

Не соответствует правилам.

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

active = remark@1

Совсем плохо... remark не предназначен для активной схемы. 

 

Звук в моно, 44100 ?

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

@Fagot. знаю, что не предназначен. Но это абсолютно не критично в моём случае.

Проблему пофиксил - не так работал с sound_theme(забыл что, да как).

Не соответствует правилам.

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

Использую модули Artos'a из этого поста, не могу понять почему ловлю вылет когда подключаю новый уровень.

В логе ничего ценного, вроде. Если закоментить аварийное прерывание exit(), то работает, но это не выход.

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

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...l.k.e.r - call of pripyat\gamedata\scripts\_g.script:857: attempt to call global 'exit' (a nil value)

 

Ссылка на комментарий
В 15.07.2017 в 23:30, vampirnik77 сказал:

думал может какие еще варианты есть

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

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

Как в ТЧ форсировать начало диалога от лица НПЦ? Тоесть НПЦ подходит, и диалоговое окно открывается по его воле. 

В ЗП такую фишку помню, а вот для SoC не припоминаю. Но вдруг есть "костыли"? 

Не соответствует правилам.

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

Но вдруг есть "костыли"?

Костыли не костыли, но если в логике NPC в секции его meet в полях use и (или) use_wpn указать ключ self, то NPC самостоятельно "заведёт" разговор с ГГ, как только позволит расстояние. Например:

[meet@balalayka]
meet_state = 10|guard@wait
meet_state_wpn = 10|guard@wait
victim = 10|actor
victim_wpn = 10|actor
use = {=dist_to_actor_le(2)} self, false
use_wpn = {=dist_to_actor_le(2)} self, false
meet_dialog = dialog_balalayka

Здесь: если расстояние между NPC и ГГ становится менее 2 метров (независимо от того, есть ли в руках ГГ оружие или нет), то автоматически запустится диалог dialog_balalayka.

Но, возможно, понадобится дополнительно внести небольшое изменение в файл xr_meet.script (разработчики случайно или намеренно не добавили/удалили одну строчку, из-за чего ключ self не срабатывал), после этих строк:

  elseif t == "self" then
    if not is_talking then
--      printf("MM3 %s start talk", self.npc:name())

добавить строчку:

self.npc:enable_talk()

И всё должно заработать, как и было задумано.

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

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

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

stack trace:

0023:054BAC1E luabind.beta7-devel.rc4.dll, luabind::detail::do_call_member_selection()
0023:0801EDBA xrGame.dll, CDialogHolder::OnFrame()

 

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

Привет, народ. Напомните, пожалуйста, как удалить все вещи из инвертаря ГГ, не трогая ПДА, Нож, Бинокль(в общем не трогая определенные item-ы).

Не соответствует правилам.

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

@CRAZY_STALKER666 ,





  local can_leave = {

    wpn_knife = true,

    wpn_binoc = true,

    device_pda = true

  }

  local sim, obj = alife(), nil

  db.actor:iterate_inventory(

    function (dummy, item)

      obj = sim:object(item:id())

      if obj and can_leave[item:section()] == nil then

        sim:release(obj, true)

      end

    end,

  nil )

  • Спасибо 2

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

naxac.gif

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

Приветствую всех.
Хочу сразу перейти к делу. Изучаю моддинг по сталкеру тч. Уже научился некоторым плюхам и пока чего-то изучаю и добавляю, постепенно выстраивается свой собственный мод. :)
Вот хочу добавить проигрывание звуков при использовании аптечки, колбасы, хлеба, консервы, бинта и антирада. Плохо понимая, я старался делать всё как указано на сталкер-вики. Естественно у меня ничего не получилось.
Кто может мне помочь советом, или же киньте готовый скрипт, буду благодарен.

P.S: Изучил эту ветку по поисковику. Решение своей проблемы не обнаружил.

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

@CRAZY_STALKER666 ,

 

  Показать

 

 

 

 

 

 

 

 


  local can_leave = {

    wpn_knife = true,

    wpn_binoc = true,

    device_pda = true

  }

  local sim, obj = alife(), nil

  db.actor:iterate_inventory(

    function (dummy, item)

      obj = sim:object(item:id())

      if obj and can_leave[item:section()] == nil then

        sim:release(obj, true)

      end

    end,

  nil )
 

 

куда это нужно приписывать что бы активировать?

Pir%40t%40s.gif

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

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

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

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

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

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

Войти

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

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

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