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

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

@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

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

Друзья, всем привет. На днях увидел мод, который заменяет карту на компас. Идея очень понравилось, но мне хотелось бы реализовать компас как в игре 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) На базе модифицированного движка 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.

Ссылка на комментарий
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 объекта

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

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

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

Вот же любит народ сложно. Это игра, здесь не нужно соблюдать физ. законы, достаточно сделать иллюзию их наличия. Что ты привязался к этому трансферу. Удали, что тебе нужно из инвентаря актора, и создай в инвентаре непися то, что тебе там нужно. Никто не узнает, что эта злосчастная пачка была там создана заново, а не перемещена существующая.

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

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

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

 

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

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

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

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

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

 

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

dialogs.relocate_item_section

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

  • Спасибо 1
  • Согласен 1
  • Полезно 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.

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

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

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

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

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

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

  • Полезно 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.

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

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

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

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

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

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

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

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

  • Согласен 1

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

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

Наоборот же

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

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

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

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

 

  • Жуть! 1
Ссылка на комментарий
2 часа назад, _Sk8_AsTeR_ сказал:

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

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

soryy за offтоп

 

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

Я в чужие дела не лезу, хочет узнать - значит есть, зачем.

@_Sk8_AsTeR_ если опираться на функционал оригинального движка. То придется перебрать в цикле 65к id, по каждому взять серверный объект, а у серверного объекта проверить его parent_id. Те у кого совпадет с id нужного непися - принадлежат ему.

function get_offline_inv(id)
  local item_id = 1
  while item_id < 65534 do
    local sobj = alife():object(item_id)
    if sobj and sobj.parent_id == id then 
      table.insert(offline_inv, sobj)
    end
    item_id++; -- :)
  end
end

Как-то так. На более доведенном до ума движке, можно лучше конечно.

P.S. Да, "готовый код" "заминирован" простыми ошибками намеренно. Я остаюсь верен своему принципу - помощи заслуживает тот, кто сам что-то делает. Эти простые ошибки легко исправить, если понимать, что делаешь. Однако если просто бездумно скопировать-вставить код, он работать не будет

  • Спасибо 1
  • Полезно 1
  • Сомнительно 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.

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

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

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

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

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

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

Войти

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

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

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