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

[SoC] Ковыряемся в файлах


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

Или ты текст задания прямо в таске пишешь?

да, писал прям в таске. Вынес в отдельный файл (text/rus), все стало ок. Спасибо всем.

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

Народ такой вопрос, может вдруг у кого такое было. Проблема - кончаются story_id если спамить через алспавн. Такая у меня была как только начинал делать мод. Потом   благодаря Charsi удалось её обойти, но вот вчера она опять появилась.  Как это ни странно звучит, но именно свободные  id кончаются. При спавне нового обекта выдает, что id уже зарегистрирован, происходит это не зависимо от того, присвоен id объекту или нет.

Я удалил из  из алспавна не нужные дин предметы, и только тогда смог заспамить новые. Но ведь эти предметы уже были в игре с оригинала. Конечно на то чтобы доделать мод мне хватит свободных id, но все таки интересно, можно ли как-то это вылечить.

Изменено пользователем Хемуль36рус

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

@Хемуль36рус, можно. Если не изменяет память, Zander, автор Судьбы Зоны, вообще расширил количество объектов до миллиона или вроде того.

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

@UnLoaded, ну я вроде ясно написал - story_id, второе вроде как сокращение.

 

@HellRatz, Интересно, а как это дело провернуть?

Добавлено  HellRatz,

Не знаю как. С этим к Зандеру :)

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

 

 

Zander, автор Судьбы Зоны, вообще расширил количество объектов до миллиона или вроде того.

Тут речь идет о простых ID, если что. И не миллион а порядка... 10-15 миллионов. Спасибо за упоминание :)

 

 

 

ну я вроде ясно написал - story_id, второе вроде как сокращение.

А тут вроде речь таки о story_id, правда непонятно причем тут какое-то сокращение.

Мне так кажется что люди ходят в потемках не понимая о чем речь, простите если ошибаюсь.

ID - идентификаторы абсолютно всех объектов в игре. каждый бинтик, каждая крыса и каждая пачка патронов.

STORY_ID - сюжетные идентификаторы. с предыдущим не имеет абсолютно ничего общего, разве что - в движке так же ограничено числом 65535.

И вы говорите вам не хватает story_id... пардон, а что вы с ними такое адское делаете? даже при миллионах объектов в игре я не могу представить ситуацию, в которой потребуется использовать более 65 тысяч сюжетных айди.

А еще судя по тому что A: story_id у вас кончаются :wacko2: а обычные id нет, и B - из ваших постов следует что в вашем моде нет системы расширяющей число объектов до миллионов, то...

имеет место быть просто неправильное использование story_id. Вы спавните объект, присваиваете ему story_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.

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

@Zander_driver, Да нет, story_id я все проверяю, и знаю о том, что одинаковых быть не должно. Может я и глуповат в чем-то, но не до такой степени. )

 

Возможно и story_id , не при чем.

 

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

Я удалил один из многих ящиков, коих на локах полно, и игра нормально загрузилась.

 

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

 

Потом оказалось, что Сергей - автор мода,  сделал всю "Альтернативу" на скриптах(спавн) именно по этой причине, из-за того, что в какой-то момент, "кончались" номера id или stroty_id, что-то такое.

 

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

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

 

кстати игра начинала вылетать, не только если присваивал именной strory_id, но и при спавне обычной бутылки водки. Вот как-то так.

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

 

 

Сделай у себя вызов  этого кода, получишь кол-во всех спавн-объектов:

local number = 0
for a=1,65535 do
     local s_obj = alife():object(a)
     if s_obj then
          number = number + 1
     end
end
local text = "Сейчас объектов: "..tostring(number)
news_manager.send_tip(db.actor, text, nil, nil, 30000)

У меня на чистой ТЧ+чуток правок по смартам+1 новая лока - выдает 17054, до 65535 еще офигенный запас. Что у тебя в моде такого наворочено, чтоб сожрать такой запас ? Может стоит разобраться, что-же ты спавнишь в таком кол-ве ?

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

 

 

Да нет, story_id я все проверяю, и знаю о том, что одинаковых быть не должно.

Если бы это делалось, проблем описанных не могло быть в принципе.

 

 

 

в какой-то момент, "кончались" номера id или stroty_id, что-то такое.

С таким же успехом можно позвонить в автосервис и сказать:

"У меня возможно, кончился бензин, а может быть спустило колесо, что-то такое. Что мне делать?" - Что они вам могут на это ответить?

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

Примерно так вы себя сейчас и ведете - даже не показав лог вылета, объединяя две совершенно разные вещи словами "что-то такое" хотите чтоб нашелся Кашпировский который вам поможет. Извините но на данный момент я все что мог, вам сказал.

 

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

local a = 1
local objects = 0
local story_objects = 0
local sim = alife() --- говорят, если получать объект алайфа 1 раз, а не 65535 раз, то получится немножко быстрее
while a < 65535 do
    local obj = sim:object(a)
    if obj then
        objects = objects + 1
    end
    local story_obj = sim:story_object(a)
    if story_obj then
        story_objects = story_objects + 1
    end
a = a + 1
end
local text = string.format("Всего объектов в игре: %i; Занято story_id: %i", objects, story_objects)
news_manager.send_tip(db.actor, text, nil, nil, 30000)

Запустите этот код, расскажите результат + покажите логи вылетов которые у вас происходят при спавне.

  • Нравится 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
Ссылка на комментарий

И аналогично "скриптованию" - зачем спрашивать, если ничтожнейшие не достойны даже лицезрения лога, не говоря уже об сколько-то равноправном общении ?

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

:offtopic:

 

 

ab8f67.jpg

 

 

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

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

@ins33,  на ум приходит пара способов

1. получаем нетпакет актора, смотрим там visual_name. Далее так же через нетпакет вешаем такой же визуал на нпс.

2. смотрим надетый на актора комбез, у него читаем строчку actor_visual, далее см.выше.

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

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

Имеем класс оружия WP_AK74, где есть кости для ПГ и оптики. Моя задача сделать так, чтобы при установки ПГ не было возможности установить оптики, так и в ином порядке- установлена оптика, ПГ запрещен. Понятное дело мешь кости ПБС не должна быть в запрете для установки при любом варианте установки ПГ или оптики.

Возможно ли написать скрипт для запрета установки на оружие 2-ух сразу навесов (ПГ и оптики)?

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

ed_rez.gif

c1f11b67ff360413e81b4e4dcf21eb41.jpg

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

@ed_rez, пардон за рекламу... в оригинале или любом моде, использующем оригинальный движковый инвентарь, это никак нельзя сделать

можно - ковыряниями в движке, либо имея скриптовый инвентарь взамен оригинального. На базе СЗ такое можно проделать элементарно.

 

@ins33, пример использования чего именно?

local outfit = db.actor:item_in_slot(6)
local osect = outfit:section()
local target_visual = ltx:r_string(osect, "actor_visual")

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

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

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

А не подскажет кто функцию воспроизведения звука от объекта? Чтобы он играл не в голове гг, ну а от нпс, собственно.

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

@HellRatz,

-- играть звук от указанного объекта (sid)
function play_snd_from_sid()
		local objs = level_object_by_sid(number)
    if obj ~= nil then
        local snd_obj = xr_sound.get_safe_sound_object([[путь к звуку\относительно папки sounds]])
		snd_obj:play_no_feedback(objs, sound_object.s3d, 0, obj:position(), 1.0)
	end
end
-- играть звук от указанного объекта (name)
function play_snd_from_name()
for a=10,65635,1 do
    local objs=alife():object(a)
        if objs and string.find(obj:name(),"name") then
           local snd_obj = xr_sound.get_safe_sound_object([[путь к звуку\относительно папки sounds]])
        snd_obj:play_no_feedback(objs, sound_object.s3d, 0, obj:position(), 1.0)
    end
end
end

Из логики =play_snd_from_obj(sid:путь к звуку\относительно папки sounds)

Изменено пользователем ins33
  • Спасибо 2
Ссылка на комментарий
ну а от нпс, собственно

Ну а что мешает воспроизвести звук из логики НПС?

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

 %=play_snd(путь к звуку в папке саунд)%

 

Изменено пользователем _Val_
  • Спасибо 1
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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