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

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


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

то есть запись strn.gulag должна возвращать именно строку из таблицы

как ты уже наверное понял, это все таки не строка а объект :)

ЗЫ. айдишник смарта ты могешь читать из нетпакета непися, если непись не ходит под смартом, его айдишник смарта = 65535

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Gonarh

Зер гуд. Все отлично работает - ты был прав :ok5:

кстати как ты понял как надо правильно обращаться к этой переменной?

была одна странная заминка - я перед проверкой решил поменять тип метки - со здоровой "alife_presentation_smart_ready" на мелкую stalker_debag вроде называется

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

Так что спасибо за помощь. :rolleyes:

Изменено пользователем Garry_Galler
Ссылка на комментарий
кстати как ты понял как надо правильно обращаться к этой переменной?

так же как и все остальное - углубленным ковырянием оригинальных и чужих скриптов

в данном случае заинтересовал метод gulag:print в xr_gulag.script

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Так как? Неужто никто не отключал звук контакта ПДА и не в курсе как это сделать?

 

Gonarh, : понятно, будем пробовать.

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

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

 

db.storage[k].inventory = {}
            obj:iterate_inventory(function (tmp, item)
            local invName = game.translate_string(this.get_inv_name(item:section()))
--цикл который должен пoложить в таблицу один итемс, а потом перестать выполняться
            while table.getn(db.storage[k].inventory) == 0 do    -- пробовал делать проверку таблицы и так if next(db.storage[k].inventory)== nil then 
-- в общем всяко разно делал итог один.
          table.insert(db.storage[k].inventory, {sec =item:section(), inv=invName, count = 1})
            end
--сам счетчик делающий проверку имеющихся в таблице итемсов на совпадение по  секции  если совпадение есть то увеличиваем каунт пока совпадения не закончатся
             for t, vv in pairs(db.storage[k].inventory) do
            if db.storage[k].inventory[t].sec == item:section() then
            db.storage[k].inventory[t].count = vv.count + 1
            else
--совпадений нет - добавляем итемс
            table.insert(db.storage[k].inventory, {sec =item:section(), inv=invName, count = 1})    
            end
            end 
            end,obj)

 

 

в общем при любом способе проверки что таблица пуста - игр зависает на стадии синхронизации (надолго) а потом вылетает с логом out of memory - то есть как я понимаю компу просто не хватает оперативы, чтобы обработать то что начинает делать скрипт (у меня он сразу выполняется при загрузке уровня). Но что именно его так грузит?

Сразу добавлю - вывод в метку всех итемсов без счетчика - даже если итемсов у непися немеряно (я например волку добавил 50 пачек патронов) - к зависанию и вылетам не приводит - конечно границы списка уходят за экран, но все работает.

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

Garry_Galler,

1. А зачем ты это делаешь через while разве if не подойдет?

2. А код у тебя где стоит в bindstalker.script ? - он же вызывается раз в несколько секунд может из за этого?

 

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

Vetrogon

function monstr_kil()

if level.name() ~= "l07_military" then

return

else

for k, v in pairs (db.storage) do

local monstr = level.object_by_id(k)

if (monstr and IsMonster(monstr) and monstr:alive()) then

monstr:kill(monstr)

end

end

end

end

 

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

У меня кстати есть скрипт - который делает эктора магом убийцей на расстоянии всех живых объектов :ny_ph34r_1: как то сделал для забавы...

вообще проверка по 65 тысячам объектов грузит систему лучше использовать проверку тольк оналйн объектов через storage.

 

 

Maks_K

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

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

Vetrogon

я вообще в бинд сталкер не пишу тело функций - я туда ставлю только их вызов

то есть имя_файла.имя_функции()

и ставлю обычно не в начало самой функции а куду нить после апдейта звуковой схемы актера

насчет загрузки не знаю - по идее должно сработать сразу если начнешь грузить эту локу.

 

а ты первую строчку и последний end вообще убирал когда туда вставлял? надо ж если тело функции пишешь в другой функции оператор function тогда убирать и end который его закрывает тож.

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

if level.name() ~= "l07_military" then
         return
else

Судя по этому удаление будет происходить везде кроме l07_military

Так и задумывалось?

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

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

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

Maks_K

if level.name() ~= "l07_military" then

return

else

если уровень не равен уровню военные склады то возврат - то есть функцию дальше не читаем.

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

if level.name() == "l07_military" then

действие

 

а везде кроме l07_military будет так

if level.name() == "l07_military" then

return

читай коды внимательней.

Ссылка на комментарий
чтобы он заработал со смартами и гулагами?

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

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий
Gonarh, я создал смарт, прописал его название, объём и прочее ему в кастомдату. В конфигс - миск создал файл логики. в скриптах тоже. всеравно вылеты. я же говорю сделал такой же смарт на кордоне - работает
Ссылка на комментарий

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

[error]Expression : xml_result

[error]Function : CXML_IdToIndex<class CPhraseDialog>::InitInternal

[error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h

[error]Line : 162

[error]Description : error while parsing XML file

[error]Arguments : .xml

 

Объявление. Модератор с утончённым вкусом ищет девушку с параметрами 90,56 Х 62, 44 Х92, 799 , не зануда...

Ссылка на комментарий
СвароГ, на то что не может прочитать какойто *.хмл файл. Пересмотри все файлы, мож там чтото не то с названиями. Если нет попробуй поиском поискать инклуды и посмотреть там какието бока

Vita sine libertate, nihil

Vita sine litteris - mors est

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

У меня вопрос: зачем в конфигах оружия эти строки:

ammo_limit

ammo_elapsed

 

Сообщение от модератора n6260
Для мультиплеера вроде.

Я ВЕРНУСЬ И НАДЕРУ ВСЕМ ЗАДНИЦЫ (С) УИЛЛИС

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

Stalker Hartman,

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

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

 

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

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

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

 

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

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

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

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

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

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

Войти

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

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

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