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

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

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

Romz, проверь правильность написания погодного эффекта в конфигах.

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

"Худ" и "Умное выпадание частей монстров" для Народной солянки

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

@Comador, погоду не затрагивает ни один из применяемых модов.

К тому же, обрати внимание на аргумент в ошибке

Description   : Invalid weather effect name.
Arguments     : âd

Там не осмысленное название, а мусор. Так что, видимо, это, всё таки, битый нет-пакет.

Шаман - СисАдмин

Всяко-разно: для ЧН

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

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

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

@vampirnik77, на чистом ЗП невозможно (я не копаю ЗП, но на первый взгляд невозможно), а так можно добавить либо метод, либо как в ТЧ добавили флаги, и тогда решается с помощью пространства флагов, flags16() называется. Функция ооооочень замудренная, когда я пытался это сделать то выпотрошил все коды nlc7, в результате спустя долгое время разобрался сам, и в седьмом нлс они работают неверно, сейчас исправили. Хоть и маленькая, но черт возьми, это одна из самых сложных функций которые я писал :). У меня в торговле это успешно применяется например.

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

Чтобы не группировались - ...\gamedata\config\ui\inventory_new(_16).xml (ТЧ) или actor_menu(_16).xml (аддоны), все теги group_similar="1" в 0.

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

@h0N0r, тогда вообще ничего группироваться не будет. К тому же это пространство окна, а не итема. Хотя возможно я не так понял вопрос :).

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

@Карлан, Ну что бы допустим когда у тебя два ПДА, они и отображались в разных "клетках инвенторя", а не ПДАх2.(Мдааа, объяснил :D )

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

@vampirnik77, тогда мой вариант верный. Если в движке на ЗП ничего такого не добавили, то делай на разных секциях, так как если не ошибаюсь основания для разгруппировки это секция и состояние, по моему больше ничего не проверяется, по состоянию я думаю не подойдет здесь. Или сам добавь в движок, там правка мизерная, если на флагах делать.

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

@Карлан, В движке увы не могу, да и плодить секции тоже не вариант, эх( Буду думать

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

@vampirnik77, по другому не выйдет, сейчас глянул, в ЗП еще не группируются модифицированные предметы, но если даже с этим вариант получится, то все равно нужно будет плодить секции тех же модификаций, получится еще хуже. 

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

Подскажите, пожалуйста, можно ли в файле: game_maps_single.ltx в строке weathers = использовать несколько погодных пресетов через запятую ? То есть будет ли погода сменяться на второй пресет:

weathers  =  dynamic_zaton_good, dynamic_zaton_bad ?

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

В логике можно задать условия типа {=is_day} или {=is_rain} (день, ночь, дождь, выброс). Есть ли такая проверка на туман в Atmosfera 3?

С#Н#Т#Р# (CoP 1.6.02)

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

Кто может дать справку по уровню наносимого урона аномалиями по ГГ? Какие показатели отвечают за это? И зависит ли это от класса аномалий?


Хит это max_start_power = ?

Или же hit_impulse_scale = ?

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

К моему вопросу, который я задал здесь:http://www.amk-team.ru/forum/index.php?showtopic=8230&p=949143

продолжение здесь: http://www.amk-team.ru/forum/index.php?showtopic=8230&p=950908

и здесь: http://www.amk-team.ru/forum/index.php?showtopic=8230&p=950949

Вылет по погоде исправил кардинально: запихнул ещё и AtmosFear 3. Там своя погода, и сохраняется она в отдельном пакете.

Закономерно, при загрузке сохранения начались вылеты в другом месте

~ Invalid syntax in call to 'g_game_difficulty'
~ Valid arguments: game difficulty
 
FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ....a.l.k.e.r. - cop\gamedata\scripts\dunin_ammo.script:264: attempt to index field 'actor' (a nil value)
 

stack trace:

0023:69737365 nvapi.dll

Я так думаю, эту проблему нужно решать в плоскости обсуждения, начатого с этого сообщения в соседней теме: http://www.amk-team.ru/forum/index.php?showtopic=6185&p=953026

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

Подскажите, в какую сторону начинать копать? А лучше бы, конечно, если бы кто-то помог собрать всё это в кучу (мечты, мечты...).

  • Не нравится 1

Шаман - СисАдмин

Всяко-разно: для ЧН

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

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

 

Поскольку шансов на угадание нет, в эту игру ни кто и не играет.

 

Что именно не так - вроде бы вполне ясно написано:

1. Invalid syntax in call to 'g_game_difficulty' - эту Вашу строку ни кто ни где не ждет. Что там должно быть вместо нее - Вам виднее.

2. dunin_ammo.script:264: attempt to index field 'actor' (a nil value) - почему-то нет переменной actor. Опять же, почему ее нет - ну, опять же, смотрите, что Вы с ней сделали, или не сделали.

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

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

 

 

1. Invalid syntax in call to 'g_game_difficulty' - эту Вашу строку ни кто ни где не ждет. Что там должно быть вместо нее - Вам виднее.
Эта строка появилась только после добавления AF3. До него, она обрабатывалась нормально.

Это вызов из bind_stalker.script

 

     --' Загружаем уровень сложности
    local game_difficulty = reader:r_u8()
    printf("load game_difficulty %s", tostring(game_difficulty))
-- --
    get_console():execute("g_game_difficulty "..tostring(game_difficulty_by_num[game_difficulty]))
-- --
--    get_console():execute("g_game_difficulty "..game_difficulty_by_num[game_difficulty])

 

Почему я так сделал, описано по второй ссылке.

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

 

Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ....l.k.e.r. - cop\gamedata\scripts\bind_stalker.script:478: attempt to concatenate field '?' (a nil value)

Если убрать AF3, то происходит, то, что описано по второй ссылке.

Вообще, все моды отлично работают по-отдельности. Проблемы начинаются, когда я пытаюсь заставить их работать все вместе. По файлам они никак не пересекаются, короме случаев их вызова в bind_monster.script, bind_stalker.script, xr_motivator.script и т.п., где они должны вызываться по задумке их авторов.

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

Лирическое отступление

От безысходности забросил CoP, собрал солянку на ЧН, в которой у меня гораздо больше модов получилось, чем на ЗП, и всё прекрасно работает...

ЗП же продолжаю ковырять по инерции.

 

 

 

2. dunin_ammo.script:264: attempt to index field 'actor' (a nil value) - почему-то нет переменной actor. Опять же, почему ее нет - ну, опять же, смотрите, что Вы с ней сделали, или не сделали.
Я с ней ничего не сделал, кроме того, что с ней сделал автор перепаковщика. Вот функция, в которой вылезла ошибка

-- Проверяем количество неполных пачек заданного типа
function enum_ammo_checker(section, box_size, howmany)
local obj, size
local numcheck = 0
for i=0, db.actor:object_count()-1 do <-- Вот это строка 264 из dunin_ammo.script
obj = db.actor:object(i)
if obj and obj:section() == section then
size = get_ammo_size(obj)
-- переменная для затычки на случай бага с потерей значения в пакете
local get_packet_error = 0
-- переменная для затычки на случай бага с потерей значения в пакете

-- затычка на случай бага с потерей значения в пакете
if size then
local nmsize = tonumber(size)
if nmsize ~= size then
get_packet_error = 1
end
if nmsize <= 0 and nmsize == size then
get_packet_error = 1
end
else
get_packet_error = 1
end
-- затычка на случай бага с потерей значения в пакете

if get_packet_error == 0 then
if size < box_size then
numcheck = numcheck + 1
end
end

get_packet_error = 0
-- даже если попытка вызвать кол-во патронов в пачке провалилась устанавливаем переменную в 0
-- в текущей итерации лучше оставить такую пачку без добавления в таблицу
-- при следующей загрузке net-packet такой пачки всё равно будет заново переписан движком и тогда при вызове update
-- пересчёт пройдёт корректно
end
end
if ( numcheck >= howmany ) then
return true
else
return false
end
end

Вызывается она из другой функции в том же скрипте

--------
-- вызывается при добавлении в инвентарь ГГ любых патронов
--  obj - game_object добавляемой пачки
-- здесь будем только ставить флажки о необходимости проверки,
-- саму проверку и перепаковку сделаем в апдейте актёра,
-- если перепаковку делать прям здесь, то будет глюк при загрузки и
-- при взятии из нычки кучи патронов (взять всё)
--------
function on_take(obj)
    if not inited then
        init()
    end

    local section = obj:section()
    --dbglog("on_take('%s')", section)

    if section and ammo[section] ~= nil then
        if ammo[section].box > 1 then
            if ammo[section].repack == false then
                local boxsize = ammo[section].box
                -- проверяем, нужно ли в принципе запускать переупаковку (есть ли в инвентаре как минимум 2 неполных пачки)
                if ( enum_ammo_checker(section, boxsize, 2) == true ) then
                    ammo[section].repack = true
                    repack = true
                end
            end
            repacktask[section].updcounter = 0
            repacktask[section].needpack = false
            -- принудительно выставляем в ноль, даже если это было сделано после инициализации
            -- это необходимо для корректной работы счётчика
        end
    end
end

Которая, в свою очередь, вызывается из bind_stalker.script в функции

function actor_binder:on_item_take (obj)

вот таким образом

    --- dunin_ammo ---
    if dunin_ammo and obj:clsid() == clsid.wpn_ammo_s then
        dunin_ammo.on_take(obj)
    end
    --- dunin_ammo ---

в какой момент отваливается actor я не знаю, внутрь скриптов я не лазил.

 

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

  • Нравится 1

Шаман - СисАдмин

Всяко-разно: для ЧН

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

 

 

убил на это неделю безрезультатно.

Может тогда отказаться от какого либо мода ? Например на кой вообще dunin_ammo ? Или заменить скриптовый Атмосфир на другой погодный мод (SWTC или тот же Атмосфир, но без скриптов) ? 

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

@Romz, Запихнул....

Авторы виноваты, они должны были предусмотреть этот "запихнул"

Из серии,- " Угадайте где косяк"

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

 

 

Может тогда отказаться от какого либо мода
Я пробовал тасовать моды по-всякому. При достижении определённого критического их количества - вылет на загрузке сейва.

Щас попробую ещё без UnP-08 сделать сборку

 

 

Например на кой вообще dunin_ammo
Перепаковывать патроны.

 

 

заменить скриптовый Атмосфир на другой погодный мод (SWTC или тот же Атмосфир, но без скриптов)
AF3 был выбран именно по причине собственных погодных эффектов и сохранением погоды отдельно от игровых данных, там, вроде, через PSTOR как раз сохраняется погода.
  • Не нравится 1

Шаман - СисАдмин

Всяко-разно: для ЧН

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

 

 

без UnP-08 сделать сборку

Ставлю свой парик, что без него всё заработает, как часы !


 

 

Перепаковывать патроны.

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

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

×
×
  • Создать...