Случайная подборка модов
Туман войны: Закалённые Зоной
3.2
Ночь перед Рождеством
3.3
Oblivion Lost Remake 2.5
4.4
STCS Weapon Pack 2.6
4.3
STCoP Weapon Pack 3.3
4.4
SFZ Project: Episode Zero
4.8
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
Модострой:Вопросница
Российская Федерация  Аdmin
Воскресенье, 03.11.2013, 19:36 | Сообщение # 1
Статус:
Опытный:
Сообщений: 1538
Награды: 11
Регистрация: 28.03.2011

В данной теме вы можете задавать любые вопросы касательно S.T.A.L.K.E.R. моддинга.

  • Не флудить
  • Предварительно просматривайте раздел. Ответ на ваш вопрос может быть там.
  • В своем вопросе указывайте платформу моддинга - Тень Чернобыля, Чистое небо или Зов Припяти.





    У кого есть желание, создать FAQ по основным вопросам моддинга - обращаемся в ЛС.


    Архив

    Архив#2
  •   Злобная реклама
    Воскресенье, 03.11.2013, 19:36
    Статус:
    Сообщений: 666
    Регистрация: 28.03.2011
    Украина  BozKurt
    Четверг, 22.05.2014, 11:53 | Сообщение # 3151
    Статус:
    Опытный:
    Сообщений: 1753
    Награды: 3
    Регистрация: 25.05.2012

    Цитата ins33
    Помогите разобраться, что делать с Кодlocal key_sprint = game.translate_string("key_sprint") из этого >>поста<< Что то ни, как не соображу, как использовать key_sprint. Так не фурычит: Кодif num == 1 then if key_sprint == num then

    Тебе конкретно с key_sprint? Это пример был... при чём не совсем корректный.
    Метод translate_string получает из id текста сам текст из папки config\text\rus. Например есть вот такие строки в файле string_table_outfit.xml:
    Код
    <string id="bandit_outfit_name">
       <text>Бандитская куртка</text>
    </string>
    таким образом вот такая запись:
    Код
    local banditOutfitNameRus = game.translate_string("bandit_outfit_name")
    запишет строку "Бандитская куртка" в переменную banditOutfitNameRus.
    Если же речь идёт о предложенном способе определения состояния тела, то там просто возвращается строка, которая описывает это самое положение, т.е. значения в таблице не принципиальны, а определены с целью обозначить положение тела:
    Код
    local body_states = { -- флажки состояния тела актора   
    [1]  = "fwd",   --# вперёд
    [2]  = "back",   --# назад
    [4]  = "l_strafe",    --# левым боком
    [8]  = "r_strafe",    --# правым боком
    [16]    = "crouch",  --# шаг?
    [32]    = "accel",  --# начало движения?
    [64]    = "turn",  --# поворот
    [128]    = "jump",  --# прыжок
    [256]    = "fall",  --# приземление
    [512]    = "landing",    --# в присяде
    [1024]    = "landing2",    --# в полном присяде
    [2048]    = "climb",  --# вставание
    [4096]    = "sprint",  --# бег
    [8192]    = "l_lookout",    --# наклон влево
    [16384]    = "r_lookout"    --# наклон вправо
    Только учти, что возможны и комбинации этих элементов, т.е. метод get_actor_int может вернуть например число 18 (2+16), т.е. движение назад шагом.
    Сообщение отредактировал BozKurt - Четверг, 22.05.2014, 11:54
      Злобная реклама
    Четверг, 22.05.2014, 11:53
    Статус:
    Сообщений: 666
    Регистрация: 25.05.2012
    Российская Федерация  Graff46
    Четверг, 22.05.2014, 15:32 | Сообщение # 3152
    Новое Время
    Статус:
    Бывалый:
    Сообщений: 867
    Награды: 7
    Регистрация: 02.05.2013

    Всем привет! Такой вопрос: Когда я меняю логику НПС, потом загружаюсь что бы проверить - не чего не выходит, игра "помнит" старый вариант логики и загружает её в НПС. Что бы изменения вступили в силу приходиться загружаться с начала уровня (с автосейва когда заходишь на локу), но бывает и это не помогает. Есть ли скриптовая процедура для сброса и перезагрузки логики НПС?
    P.S. Такой приём встречается в некоторых скриптах (xr_logic xr_gulag), как самому правильно сделать это?

    Добавлено (22.05.2014, 15:32)
    ---------------------------------------------
    И еще, я логику меняю не в аллСпавне, а в *.ltx которые в gamedata/config/scripts/...

      Злобная реклама
    Четверг, 22.05.2014, 15:32
    Статус:
    Сообщений: 666
    Регистрация: 02.05.2013
    Украина  BozKurt
    Четверг, 22.05.2014, 15:56 | Сообщение # 3153
    Статус:
    Опытный:
    Сообщений: 1753
    Награды: 3
    Регистрация: 25.05.2012

    Цитата Graff46 ()
    я логику меняю не в аллСпавне, а в *.ltx которые в gamedata/config/scripts/...
    В таком случае ошибка твоя (забыл сохранить, не тот НПС, не та логика, забыл вписать ссылку на файл в custom_data в all.spawn и т.д.).
    Логика НПС инициализируется каждый раз при выходе этого НПС в онлайн, поэтому, если ты меняешь логику из конфигов (чтение которых происходит во время запуска игры), то изменения обязаны быть видны.
    Сообщение отредактировал BozKurt - Четверг, 22.05.2014, 15:57
      Злобная реклама
    Четверг, 22.05.2014, 15:56
    Статус:
    Сообщений: 666
    Регистрация: 25.05.2012
    Российская Федерация  Graff46
    Четверг, 22.05.2014, 16:08 | Сообщение # 3154
    Новое Время
    Статус:
    Бывалый:
    Сообщений: 867
    Награды: 7
    Регистрация: 02.05.2013

    BozKurt, Всё, я понел вроде. Писал я правильно тому и сохранял(работало когда с другого сохранения загружался). Может потому не было эффекта, потому что загружался я не далеко от НПС, его логика наверно подгружалась старая, а новая не действовала потому что он был в онлайне, рядом с ГГ. Может всё еще проще, у меня совмещены несколько минимодов добавляющих новые схемы поведения
      Злобная реклама
    Четверг, 22.05.2014, 16:08
    Статус:
    Сообщений: 666
    Регистрация: 02.05.2013
    Украина  BozKurt
    Четверг, 22.05.2014, 16:16 | Сообщение # 3155
    Статус:
    Опытный:
    Сообщений: 1753
    Награды: 3
    Регистрация: 25.05.2012

    Graff46, выход НПС в онлайн происходит не только тогда, когда ГГ от него на расстоянии радиуса alife. Начало/загрузка игры также инициирует выход объектов в онлайн. Если говорить простыми словами, то выход в онлайн - это создание объекта в радиусе alife всеми возможными вариантами.
    Баг явно ручной природы.
      Злобная реклама
    Четверг, 22.05.2014, 16:16
    Статус:
    Сообщений: 666
    Регистрация: 25.05.2012
    Российская Федерация  Graff46
    Четверг, 22.05.2014, 17:43 | Сообщение # 3156
    Новое Время
    Статус:
    Бывалый:
    Сообщений: 867
    Награды: 7
    Регистрация: 02.05.2013

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

    Добавлено (22.05.2014, 17:42)
    ---------------------------------------------
    Доброго времени суток! Я написал скрипт на спавн нескольких НПС военных сразу подружив (или "онейтралив", главное что бы не враги были) со свободой т.к. для проверки действует ли скрипт нужно проиграть минимум 2 часа, прошу проверить синтаксис.


    Добавлено (22.05.2014, 17:43)
    ---------------------------------------------
    Извиняюсь, но табуляция слетела когда копипастил.
    Сообщение отредактировал Graff46 - Четверг, 22.05.2014, 17:49
      Злобная реклама
    Четверг, 22.05.2014, 17:43
    Статус:
    Сообщений: 666
    Регистрация: 02.05.2013
    Украина  BozKurt
    Четверг, 22.05.2014, 18:03 | Сообщение # 3157
    Статус:
    Опытный:
    Сообщений: 1753
    Награды: 3
    Регистрация: 25.05.2012

    Graff46, во-первых, ты не поставил скобки при вызове твоей функции set_community_goodwill; во-вторых, не следует задавать разным функциям одно и тоже имя. Лучше "обозви" свою функцию ChangeRelation.
      Злобная реклама
    Четверг, 22.05.2014, 18:03
    Статус:
    Сообщений: 666
    Регистрация: 25.05.2012
    Российская Федерация  ins33
    Четверг, 22.05.2014, 18:46 | Сообщение # 3158
    Dream Reader Mod
    Статус:
    Опытный:
    Сообщений: 2269
    Награды: 1
    Регистрация: 17.01.2012

    BozKurt, Так тоже всегда возвращает true:
    Код
    function actor_body_state(task, objective)
    local on_key_sprint = game.translate_string("sprint")
    if on_key_sprint ~= nil then    
    SendMessage("Нажата кнопка "..on_key_sprint)
           return true
               end
    return false
    end

    В сообщении выдаёт нажата кнопка ускорение.
    Как отследить нажатие любой кнопки?
    П.С. состояние тала я получаю local num = db.actor:actor_body_state()

    Graff46,
    Так же логика может игнорировать изменения, если она перешла на выполнение какой либо схемы, а изменения в ней произошли до неё.
    Код
    [logic]
    active = 1

    [1]    
    ; next =2

    [2]
    и т.д

    Код
    [logic]
    active = new

    [new]
    ;next = 1

    [1]    
    ; next =2

    [2]
    и т.д
    При таком условии, если сохранение было сделано в момент работы [1], то изменений вы не увидите.

    Цитата Graff46 ()
    прошу проверить синтаксис.
    Скачай script Syntax Checker.exe и будет тебе счастье.
    А за одно используй редакторы с подсветкой синтаксиса.
    Сообщение отредактировал ins33 - Четверг, 22.05.2014, 18:47
      Злобная реклама
    Четверг, 22.05.2014, 18:46
    Статус:
    Сообщений: 666
    Регистрация: 17.01.2012
    Украина  BozKurt
    Четверг, 22.05.2014, 19:12 | Сообщение # 3159
    Статус:
    Опытный:
    Сообщений: 1753
    Награды: 3
    Регистрация: 25.05.2012

    Цитата ins33 ()
    local on_key_sprint = game.translate_string("sprint")
    В данном случае переменная on_key_sprint никогда не будет равно nil, т.к. даже, если игра не найдёт идентификатор sprint, то переменной будет присвоен этот самый идентификатор в качестве строки. Поэтому проверка на не nil всегда будет возвращать true.

    Цитата ins33 ()
    Как отследить нажатие любой кнопки?
    Любой - это совсем любой, даже цифровой? Тогда тебе нужен колбек нажатия клавиш.
      Злобная реклама
    Четверг, 22.05.2014, 19:12
    Статус:
    Сообщений: 666
    Регистрация: 25.05.2012
    Российская Федерация  huil12
    Четверг, 22.05.2014, 19:26 | Сообщение # 3160
    Статус:
    Отмычка:
    Сообщений: 162
    Награды: 1
    Регистрация: 27.03.2014

    Народ вот как реализовать что одни нпс атаковали других.То есть я имею ввиду то что например одна группа нпс стоит рядом с базой где в этой базе нпс. И скаже так что " нпс " которые " снаружи " атаковали других , но при всем этом они как бы нас сопровождают. То есть они атакуют базу с сопровождением.
      Злобная реклама
    Четверг, 22.05.2014, 19:26
    Статус:
    Сообщений: 666
    Регистрация: 27.03.2014
    Российская Федерация  ins33
    Четверг, 22.05.2014, 19:26 | Сообщение # 3161
    Dream Reader Mod
    Статус:
    Опытный:
    Сообщений: 2269
    Награды: 1
    Регистрация: 17.01.2012

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

    Цитата BozKurt ()
    Как отследить нажатие любой кнопки?
    Любой - это совсем любой, даже цифровой? Тогда тебе нужен колбек нажатия клавиш.

    Всё тот же спринт.

    Цитата
    local res = db.actor:get_actor_int(nil, pos)
    SendMessage("Получили: "..res)

    Если не сложно, покажи пример,как это использовать.
      Злобная реклама
    Четверг, 22.05.2014, 19:26
    Статус:
    Сообщений: 666
    Регистрация: 17.01.2012
    Украина  BozKurt
    Пятница, 23.05.2014, 11:21 | Сообщение # 3162
    Статус:
    Опытный:
    Сообщений: 1753
    Награды: 3
    Регистрация: 25.05.2012

    Цитата ins33 ()
    как эту проверку привести в правильный вариант, для этой задачи?
    Для какой задачи? Ты же не сказал, что хочешь сделать...
    Цитата ins33 ()
    Если не сложно, покажи пример,как это использовать.
    Почитай о принципах работы с таблицами.
      Злобная реклама
    Пятница, 23.05.2014, 11:21
    Статус:
    Сообщений: 666
    Регистрация: 25.05.2012
    Российская Федерация  ALEX13
    Пятница, 23.05.2014, 11:37 | Сообщение # 3163
    Статус:
    Опытный:
    Сообщений: 1625
    Награды: 12
    Регистрация: 26.12.2012

    Что это такое?
    Expression : 0
    Function : CUICellContainer::FindFreeCell
    File : D:\prog_repository\sources\trunk\xrGame\ui\UIDragDropListEx.cpp
    Line : 674
    Description : there are no free room to place item
      Злобная реклама
    Пятница, 23.05.2014, 11:37
    Статус:
    Сообщений: 666
    Регистрация: 26.12.2012
    Украина  BozKurt
    Пятница, 23.05.2014, 12:11 | Сообщение # 3164
    Статус:
    Опытный:
    Сообщений: 1753
    Награды: 3
    Регистрация: 25.05.2012

    Это вылет. ©КО
      Злобная реклама
    Пятница, 23.05.2014, 12:11
    Статус:
    Сообщений: 666
    Регистрация: 25.05.2012
    Российская Федерация  wind
    Пятница, 23.05.2014, 15:36 | Сообщение # 3165
    Reach mod + Slenderman
    Статус:
    Отмычка:
    Сообщений: 164
    Награды: 1
    Регистрация: 12.02.2011

    Expression : !m_error_code
    Function : raii_guard::~raii_guard
    File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
    Line : 748
    Description : ...r. call of pripyat\gamedata\scripts\sim_board.script:226: attempt to index local 'spawn_smart' (a nil value)

    делал новую локу решил протестить и вот как исправить?
      Злобная реклама
    Пятница, 23.05.2014, 15:36
    Статус:
    Сообщений: 666
    Регистрация: 12.02.2011
    Поиск: