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

Внимание. На форуме проводятся технические работы с боковым меню.

_Val_ _Val_

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

Тема для обсуждения скриптов всего и всех в серии игр 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
Ссылка на комментарий
https://www.amk-team.ru/forum/topic/6185-skriptovanie/

Хотел поинтересоваться, что это такое в консоли выскакивает:

ProcessGameEvents, spawn event postponed. Events rest = 1 

ProcessGameEvents, spawn event postponed. Events rest = 8

ProcessGameEvents, spawn event postponed. Events rest = ... (или другое число)

Игра Тени Чернобыля на движке 1.0007

Такая лабуда выскакивает в консоли всякий раз, когда подходишь к новому заспавненному НПС, и происходит микрофриз пока весь ProcessGameEvents не пройдёт.

Можно ли как-то эту проверку отключить, чтобы избавиться от фриза?

@EGER.OVERKILL WF Надо править конфиг: [config\ui\inventory_new.xml] или […\inventory_new_16.xml]

<dragdrop_bag>

rows_num, cols_num – сетка

unlimited=0 – ограничение вместимости // событие "свободное место закончилось" обрабатывается с вылетом в любой части оригинала, как с этим в модах – не знаю

always_show_scroll=0 – полоса прокрутки по умолчанию скрыта

 

В ЗП те же параметры в [configs\ui\actor_menu.xml] или [actor_menu_16.xml].

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

Шпаргалка

3 часа назад, Norman Eisenherz сказал:

с вылетом

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

Сегодня уже испытал функцию unlimited=0/1. 

Просто допустим инвентарь миниатюрный, а гг захочет набрать "ништяков", допустим 3 костюма, и в 35 клеток это вряд ли вместится корректно.

 

Так-то мои карланские навыки мне подсказали что ковырять, но вот как "довести до ума", я пока не знаю.

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

 

upd: Суть, в том, которую я хочу донести , это что можно и 6х6 и 3х3 сделать инвентарь, просто если гг наберет "сверх" нормы, то он просто расширяется.

Хотелось бы сделать его (Инвентарь/рюкзак) фиксированным, а не "резиновым". Разумеется если это возможно, может это вообще ограничивается движком. 

Изменено пользователем EGER.OVERKILL WF
  • Жуть! 1
8 часов назад, EGER.OVERKILL WF сказал:

Хотелось бы сделать его (Инвентарь/рюкзак) фиксированным, а не "резиновым"

 

Господа игре уже не один год, и все возможные хотелки уже давно реализованы,

нужно просто немного напречь ганглии и пользоваться поиском или по форуму,

ну или на худой конец гуглите в интернетах - Inventory Volume mod

 

Inventory Volume Mod
Для Stalker: Shadow of Chernobyl любой версии.
-------------------------
Описание:
-------------------------
- Модификация вводит в игру систему ограничения инвентаря ГГ на вместимость по физическому объёму.
- Если попытаться поднять предмет, параметры которого отсутствуют в inv_volume.ltx, то предмет будет выброшен обратно, появится сообщение, содержащее отсутствующую секцию (это можно изменить).
-------------------------

 

 

Inventory Volume mod.7z

6 часов назад, ted.80 сказал:

напречь ганглии

Спасибо, с этим модом знаком, просто думал есть, может еще что-то.

Друзья, всем привет. На днях увидел мод, который заменяет карту на компас. Идея очень понравилось, но мне хотелось бы реализовать компас как в игре Squad, PUBG. Как там это реализовано: при передвижении камеры по оси X компас "прокручивается", т.е. отображается сторона света. Также там указывается отдельно градус направления, в котором ты смотришь. 

Ссылка на картинку (как это вообще выглядит в том же Squad)
Я к сожалению совершенно не обладаю никакими навыками моддера (максимум пушки портировал из B&S), и мне хотелось бы кое-что спросить: 

Что мне нужно изучить, чтобы попробовать такое сделать? Может какие-то материалы есть? Может уже где-то были такие наработки? И сильно ли будет сложно такое реализовать? Заранее спасибо. 

Назрел вопрос. В момент сдачи квеста требуется одну пачку патронов трансферить НПСу, остальные удалить из инвентори актёра. Общее кол-во пачек нужно для прекондишена. Но при одновременном трансфере и удалении всегда остаётся лишняя пачка в рюкзаке. Верно ли я понимаю, что выход, это разделить трансфер и удаление некоторым промежутком времени с помощью постановки удаления на таймер? Или же можно обойтись иначе?

Всем добра.

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

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

@mole venomous Можно просто сначала составить список наличных пачек патронов, индексированный по ID объекта. А затем из этого списка одну трансферить, остальные удалять.
 

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

 

Как-то в таком духе:

local list = {}
local transfered = false
function iterator_inventory(item, actor)
  if item and item:section() == "target_item" then
   	table.insert(list, item:id())
  end
end
function execute_mv()
  for i, id in pairs(list)
  	if transfered then
    	local sobj = alife():object(id)
    	if sobj then alife():release(sobj, true) end
    else
    	local obj = level.object_by_id(id)
    	if obj then
      		transfer(obj)
      		transfered = true
      	end
    end
  end
end


 

 

6 часов назад, explorerbee сказал:

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

Посоветую изучить принципы построения худа в игре https://www.amk-team.ru/forum/topic/8013-hud/

Как он строится при помощи xml-конфигов и текстур, и принципы скриптового управления им, тут и тут

ЗЫ. Кстати, в постах по ссылкам, спойлеры побились... модераторы, поправил бы кто)

  • Спасибо 2
  • Полезно 1

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

07.03.2022 в 20:48, mole venomous сказал:

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

Тут неплохо-бы посмотреть код, как это все устроено. 

 

P.S. Может стоит упростить само условие квеста? В чем смысл, отдать в завершение квеста одну пачку патронов, а остальные удалить? Пытаюсь понять формулировку такого квеста, и не могу: меня просят принести пачку патронов, соглашаюсь. У меня уже есть пять пачек таких патронов - почему я должен лишится всех, отдав одну квестодателю?

Изменено пользователем AndreySol
  • Жуть! 1
24 минуты назад, AndreySol сказал:

Пытаюсь понять формулировку такого квеста

Нужно трансферить лишь одну пачку, остальные удалить, якобы НПСу переданы все пачки. При попытке трансферить более одной пачки вылет типа:

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

[error]Expression    : e_entity->ID_Parent == id_parent
[error]Function      : xrServer::Process_event_reject
[error]File          : d:\a\ogsr-engine\ogsr-engine\ogsr_engine\xrgame\xrserver_process_event_reject.cpp
[error]Line          : 38
[error]Description   : ammo_5.45x39_fmj17085
[error]Arguments     : single_player

 

34 минуты назад, AndreySol сказал:

посмотреть код

Обычный трансфер в диалоге:

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

dialogs.relocate_item_section(b, "ammo_5.45x39_fmj", "out")

Удаление, коды из НС 2016:

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

function out_GG_num(thing,num)
    local actor = db.actor
    local sim = alife()
    local id,item,sect,sobj
    local count = actor:object_count()
    local ind1,ind2 = 0,num
    for i = 0, count - 1 do
        if ind2 == 0 then
            break
        end
        item = actor:object(i)
        sect = item and item:section()
        if sect and sect == thing then
            id = item:id() or item.id
            sobj = id and sim:object(id)
            if sobj then
                ind2 = ind2 - 1
                ind1 = ind1 + 1
                sim:release(sobj)
            end
        end
    end
    if ind1 ~= num then
        return false
    end
    ex_all.news_item_out(actor,thing,ind1)
    return true
end

 

По отдельности всё работает - либо пачка трансфериться НПСу, либо удаляется нужное кол-во пачек. Одновременно же происходит трансфер пачки и недоудаление одной пачки патронов. 

Насчёт вылета при трансфере более одной пачки одинаковых патронов, судя по всему, я это делаю не так, ибо впервые столкнулся.

Но тут выше уже речь была про

07.03.2022 в 21:53, Zander_driver сказал:

список наличных пачек патронов, индексированный по ID объекта

, и видимо это есть решение.

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

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

Я просто попытался обозначить (одно из) возможных решений на то что было озвучено. Хочет человек трансфер - значит трансфер... А зачем там именно трансфер, для чего, и нужен ли он в самом деле - это другие вопросы.

 

3 часа назад, mole venomous сказал:

Одновременно же происходит трансфер пачки и недоудаление одной пачки патронов.

Просто не нужно с одним и тем же объектом, пытаться делать одновременно обе вещи. Трансфер и удаление.

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

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

 

3 часа назад, mole venomous сказал:

dialogs.relocate_item_section

Посмотрел код этой ерунды в оригинале - в обсуждаемой ситуации, вообще не надо такое юзать.

  • Спасибо 1
  • Согласен 1
  • Полезно 1

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

На мой взгляд, трасфером вообще не нужно пользоваться без реальной на то необходимости. Т.е. только тогда, когда без этого никак. Результат трансфера будет только на следующем апдейте, а для новичков это слишком сложно и запутано. Да и не для новичков тоже грабли, стоит только эту отложенность из виду упустить.

  • Спасибо 1
  • Согласен 1
  • Полезно 2

Опять же соглашусь.

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

Пачка патронов не тот случай.

  • Полезно 1

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

11 часов назад, Zander_driver сказал:

Пачка патронов не тот случай

Совершенно не тот случай. Вот интересно было разобраться, когда споткнулся об эту пачку.

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

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

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

Наоборот же ) Если пачка - как раз проще удалить у актора и заспаунить где надо. А вот если что-то  уникальное (с  еще где-то используемым id и/или story_id, например, или с неудобочитаемой кастомдатой) - тогда уж трансфер. 

  • Согласен 1

След от кругов на воде - это тоже след (с)

7 минут назад, Okichi сказал:

Наоборот же

Я это и имею ввиду, как то невнятно написал просто. 

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

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

 

  • Жуть! 1
2 часа назад, _Sk8_AsTeR_ сказал:

есть способ узнать, присутствует ли у непися, который находится в оффлайне (например на другой локации) в его инвентаре конкретный итем?

Я конечно понимаю, что наСТОящий сталкер - лёгких путей не ищет, но на кой фиг такие сложности?

soryy за offтоп

 

  • Согласен 1
  • Сомнительно 2

@ted.80 И еще очень интересно узнать - зачем  ЭТО вот надо автору исходного поста)

  • Согласен 1
  • Сомнительно 2

След от кругов на воде - это тоже след (с)

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

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

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

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

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

Войти

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

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

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