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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


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

Никто не знает как сделать физический объект юзабельным? Например, чтобы можно было использовать костёр на локации, и после использования открывалось GUI окно.

Ссылка на комментарий
  Sla-Sla писал(а):
Например, чтобы можно было использовать костёр на локации

Возможно, тебе пригодится вот это:https://yadi.sk/d/vut19xuZrgzNB

Чье, откуда и как- не помню. Случайно наткнулся у себя на винте и вспомнил твой пост. 

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

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

Ссылка на комментарий
  Dennis_Chikin писал(а):
P.S. А вот под сами таблицы отдельный файл выделить, чтобы перестать уже адову акробатику с script1.var1 = script2.var1 script2.var1 = script1.var1 и вариантами оной о 100500 перекрестных ссылок.

Между прочим отличная идея. Сам давно собирался вынести основные таблицы (не все) отдельно, лень мешала реализовать.

 

 

  Romann писал(а):
как использовать этот способ? Как я понял

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

 

 

  dsh писал(а):
см. пост 7341.

не обязательно. Вообще "хорошая скриптовая база" для подобных вещей - это очень громко сказано. Просто накатать на коленке ряд функций для работы с конфигами - уже выхлоп будет.

  Про глобальные таблицы хранящие в себе все на свете (Показать)
Изменено пользователем Zander_driver

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Много хорошо - тоже плохо.

 

Скорее стоит завести как таблицы, так и функции разной степени подробности.

Избыток - это все-таки замедление работы и возможность самому запутаться.

 

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

 

В итоге у меня получилось вот такое:

  Показать

В скриптике, где учитывается "кто есть кто",

 

и

function get_t_aprm() return t_aprm end

function get_t_mprm() return t_mprm end

function get_t_oprm() return t_oprm end

function get_t_wprm() return t_wprm end

function get_t_arts() return t_arts end

- в скриптике для чтения/хранения конфигов. ammo/misc/outfits/weapons/arts.

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

Даже просто для работы скриптового инвентаря, который у меня в моде находится, того что ты предложил будет мало :)

На самом деле конечно, конечная реализация зависит еще от целей, для какого проекта это делается.

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

Запутаться как раз можно в разных функциях-таблицах, чем в одной суперглобальной. Тут все определяется просто порядком ключей, что тут путать, не тот ключ ввести разве что?) ну так можно их называть так чтоб содержание было интуитивно понятным.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

В среднем на один скрипт получаем ссылки на 2-3 таблички при первичной инициализации. Дальше работаем с ними. Случай мегамонстра, где идет почти полный набор - это чистильщик, совмещенный с респавном, несколькими внешними финтифлюшками на тему "разлагающихся трупов", переодеванием неписей и неписевой фэйк-торговлей.

 

Но даже там в разных кусках - разные таблицы. Путаться особо не в чем.

 

А вот с некоей "универсальной функцией" - будет куча бессмысленной копипасты и банальных опечаток. Но в общем и целом - да, вопрос удобства. Некоторые вон, привыкли иметь дело с амк-скриптами, вытащенными из под амк-шифрования же. По этому доходит до того, что берется нормальный развернутый отформатированный скрипт, и приводится к виду, при котором обфускаторы нервно курят по углам.

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

Денис, не путай мух с котлетами) сделать одну универсальную функцию вместо кучи специализированных, это удобно при условии что она в каждом узкоспециальном случае работает не хуже этих специализированных. А на случай опечаток можно просто в ней аборт поставить, в случае когда возвращаемый (найденный по указанному списку ключей) аргумент окажется nil.

обфускаторы тут не при чем.

зы. у меня полно таких таблиц, которые используются и нужны в 3-5-8 разных скриптах. куда же их деть если не в эту мегатаблицу.

 

Если говорить о таблицах которые востребованы в одном-единственном файле - то черт бы с ними, пусть лежат там где лежат.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

@CRAZY_STALKER666,

способ раз

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

 

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

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

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

  • Спасибо 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.

Ссылка на комментарий
  CRAZY_STALKER666 писал(а):
список всех артефактов на уровне в данный момент времени, и удалить их?

 

  Zander_driver писал(а):
способ раз...

А тут не будет нюансов с алайф-расстоянием ? Ведь на достаточно протяженной локации, может оказаться, что часть артов будет в он-лайне и соответственно в таблице, а часть в офф-лайне и уже не в таблице. А удалить надо все. Я с этим не разбирался, не знаю - арты переходят он\офф -лайн ?

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

Хм, вообще-то да, вы правы. артефакты в он/офф-лайн переходят.

Можно вспомнить про то что и серверный объект можно забиндить.

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

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

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

Значит придется ручками спавн чистить..

  • Не нравится 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.

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

Только что выше обсуждали: se_item и иже с ними - при регистрации заносят в таблицу в соответствии с классом. Желательно - СРАЗУ раскладывать и по локациям.

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

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

 

Работает она в main_menu:InitControls().

Я задаю флаг

 

local flag = 0 -- оптимизация кода

 

Потом проверяю его равенство 0, выполняю свой код и выставляю его равным 1 для того, чтобы каждый раз при открытии меню не происходила проверка.

Но она происходит. Значит флаг не сохраняеться. Как его сохранить? Через нет-пакет?

 

P.S Изыскания про методы вызова прошу опустить... Потом всё будет переписываться, переноситься...

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

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

В общем напоролся я на чудо-чудное, иначе не скажешь.

 

  _g.script (Показать)
Изменено пользователем Zander_driver

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

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

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

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

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

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

Войти

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

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

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