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

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

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


У меня такие дилетантские вопросы. Как сохраняются объекты в ОП-2.1 при перемещении в самопальный тайник? Сохраняются ли они вообще как объекты (т.к. по описанию эти тайники почти не "нагружают" систему)? Насколько сложно воссоздать подобную схему (или что-то вроде пересоздания объекта с переносом нет-пакета) или проще обратиться в другую тему с поиском нужных исходных файлов? 

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

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

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

@mole venomous, думаю, там сохраняются только основные данные о объектах. Например, секция, состояние, количество патронов и наличие навесов для оружия, и т.д... 

14 минут назад, mole venomous сказал:

проще обратиться в другую тему с поиском нужных исходных файлов?

Проще самому посмотреть, что и как, в файлах мода.

  • Согласен 1

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

naxac.gif

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

Здрасьте.

 

Задача: вывести шкалу с последовательным заполнением делений: https://drive.google.com/open?id=1EBywWOQW3TvpG3rpP9Ula394q4LA4yzy

Вроде бы простое решение: SEQ-файл с набором кадров.

Проблема: анимация проигрывается со 2-го кадра, потом с 3-го, потом с 5-го, потом правильно, потом еще с какого-нибудь левого кадра – такое впечатление, что каждый второй-третий раз начальный кадр выбирается случайным образом, потом один-два раза сдвигается на +1, потом опять выбирается случайно.

Как с таким поведением бороться?

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

Шпаргалка

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

последовательным заполнением делений

А если привязать обновление текстуры на таймеры, и при каждой отсечке обновлять шкалу?

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

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

@mole venomous Это уже сложное решение – вдвое больше кода (хотя все равно не больше 60 строк). У меня вопрос в другом: как заставить SEQ-анимацию проигрываться всегда с 1-го кадра?

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

Шпаргалка

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

@Norman Eisenherz, а CUIProgressBar для твоих целей не подойдёт? Там при задании значения (SetProgressPos) длина шкалы изменяется плавно.

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

naxac.gif

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

@naxac

1. Нет, мне как раз нужна шкала с дискретным заполнением, по одной ячейке в секунду.

2. Можно картинку с примером применения CUIProgressBar? В имеющихся у меня файлах (ТЧ, OGSE, солянка 2010) только описание в lua_help.

3. Первым кадром анимации, описанной в SEQ-файле, все-таки можно управлять, или он всегда выбирается случайно?

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

Шпаргалка

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

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

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

Ссылка на комментарий
5 минут назад, mole venomous сказал:

существует ли скриптовый метод

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

И если задавать вопрос "существует ли" - то уточнять, о каком движке речь.

  • Согласен 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@mole venomous, если в чистом ТЧ, то нет, есть в x-ray ext последней ревизии, но там задаются в оружейных конфигах - запретить или нет авто-перезарядку. Есть в OGSR, но там, по моему, в самом движке железно отключена авто-перезарядка, если с того времени когда я тыкал тот двиг, не чего не изменилось.

  • Спасибо 1

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

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

UriZzz.gif

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

@Norman Eisenherz

2. https://github.com/naxac/CP2_AddOn/commit/f34310407a98f13d24c5b36d3c1008b058b96f65

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

3. Всегда думал, что *.seq проигрывается с самой первой (верхней) текстуры. Интересно... Управлять первым кадром точно нельзя.

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

naxac.gif

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

gam,

Вроде как с частотой кадров, т.е. точной частоты нет.

  • Полезно 1
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

Здрасьте.

 

Начал ковырять нетпакеты… По файлу [weap_data.script] из старого мода "Ночные прицелы" восстановил порядок и тип переменных, потом прочитал по одной с начала и с конца со сдвигом (lvid и condition) – результат сходится с тем, что выдают обычные функции.

https://drive.google.com/open?id=1LvustUkaKFNZWCMUUsZ0V-7Rms8RwfoF

 

Насколько я могу судить по записям на форуме, полученная таблица подходит только для типа предметов "огнестрельное оружие без гранатомета". Где можно найти аналогичную информацию (порядок и тип переменных) для нетпакетов NPC, брони, оружия с гранатометом и других типов игровых объектов? Можно ли эту информацию как-то получить из самого нетпакета, или в нем хранятся только значения, которые невозможно прочитать без знания их типов?

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

Шпаргалка

Ссылка на комментарий
1 час назад, Norman Eisenherz сказал:

Где можно найти аналогичную информацию

В модулях Артоса, вроде как, параметры с названиями а не просто набором байт. Уж 10 лет как.

Или нужно нечто другое? Тогда я не понял, что именно.

  • Согласен 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
6 hours ago, Norman Eisenherz said:

хранятся только значения, которые невозможно прочитать без знания их типов?

Именно так.

 

Уже все изобретено до вас. Найди m_netpk  и не изобретай велосипедов.

 

Вообще совет и не только тебе. Прочитайте эту и соседнии темы с самого начала.

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

Прочитайте эту и соседнии темы с самого начала.

Ох и добрый ты :)

 

Я бы другой совет дал бы. Не засиживаться на ванильном ТЧ, каким бы новичком и вообще не-программистом вы ни были. Устарел он, для 2020 года. И соотв-но, не тратить слишком уж время на прочтение того, что только для него актуально.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@Zander_driver 

1. В OGSE есть обработчик [m_net_utils.script] – это те самые "модули Артоса"?

2. Я ни в коем случае не пытаюсь освоить современное программирование ковырянием игры 2007 года – я пытаюсь уменьшить количество "кочек" в игре, в которой приятно убивать время, для чего перебираю существующие моды и пытаюсь их повторить в той мере, в которой это подходит для моих целей. Готовые решения уровня "электросамокат с гироскопом, GPS и подсветкой дороги" не годятся, если мне нужна просто табуретка. Опять же, даже чужие функции надо изучить, чтобы понять причину ошибок и вылетов.

@dsh

1. Ссылка на [m_netpk.script] на GitHub у меня есть, но так как из этих черных ящиков под названием "нетпакеты" я пока докопался до начинки только одного, 3,5к строк кода я буду изучать долго.

2. Как вскрывали нет-пакеты на момент выхода игры? Вслепую перебирали тип данных для каждого параметра, потом так же вслепую сравнивали полученные значения с данными в игре, чтобы определить переменную? Должен же быть какой-то более продуктивный метод.

 

Теперь практика: проверка состояния фонарика и ПНВ

Spoiler

function net_cse_alife_item_torch:__init(obj,mode)

self.st_props = {}
self.up_props = {
        { name = 'torch_flags',   type = 'u8',  default = -1 },


    _G.torch_flags = { --/ torch
        Active            = 1,
        NightVisionActive = 2,
        Attached          = 4

 

Вывод: переменная состояния фонарика имеет тип u8 и находится в начале раздела UPDATE.

 

Spoiler

    local item = db.actor:item_in_slot(9)
    if item then
        local sobj = alife():object(item:id())
        local pk = net_packet()
        sobj:UPDATE_Write(pk)
        pk:r_seek(0)
        local v = pk:r_u8()
        news_manager.send_tip(db.actor, v)
    end

 

Результат: 0 в любом состоянии.

 

Эксперимент: читаю аналогичное значение от конца раздела UPDATE через сдвиг pk:r_seek(pk:w_tell() -1). Результат: все выключено – 4, фонарик – 5, ПНВ – 6, все вместе – 7. Я не знаю, что именно я прочитал, но это точно переменная размером 1 байт, которая меняется при переключении режима фонарика и остается на указанном значении до следующего переключения. Ну и как сие понимать?

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

Шпаргалка

Ссылка на комментарий
8 минут назад, Norman Eisenherz сказал:

Ну и как сие понимать?

Прекратить заниматься ерундой и использовать таки m_netpk.script :)

 

Вывод: переменная состояния фонарика имеет тип

u8 и находится в начале раздела UPDATE.

Вывод неверный. Перед блоком переменных фонарика идут блоки переменных классов родителей.

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

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

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

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

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

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

Войти

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

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

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