PledgeMission.dat. Как работают параметры даты?

Projack

Легендарный
VIP
Участник Новогоднего Фонда 2023
Победитель в номинации 2023
Победитель в номинации 2022
Стальной Визионер
Куратор Данных
Сообщения
562
Розыгрыши
0
Решения
2
Репутация
1 064
Реакции
1 120
Баллы
1 783
Ковыряю датники Salvation. Есть датник относящийся к миссиям.
Формат вроде понятный, за исключением некоторых полей и полей со временем.
Bash:
pledge_mission_begin
    id=4015
    category=event
    is_repeat=0
    name=[Почет : Прекрасный шанс]
    pledge_level=0
    c_pledge_mastery=0
    rc_level={100;0}
    jobs={1;1;0}
    pre_mission_id=0
    start_date=170419
    start_time=170628
    end_date=630
    end_time=630
    activate_time=0
    deactivate_time=0
    available_day={0;0;0;0;0;0;0}
    goal_desc=[Уничтожьте любого из следующих боссов временной зоны 10 раз. \nВечное Пристанище: Кимара\nШтаб Легиона Эмбрио: Бернштайн\nАлтарь Шилен: Меллиса, Исадора\nЛагерь Серой Тени: Легат на последнем уровне]
    goal_count=10
    reward_pledge_name_value=1000
    reward_pvp_point=10000
    reward_items={{48488;1}}
pledge_mission_end

Единственный пример со временем, что есть в датинке. Отсюда вопрос, как именно работают:
- start_date=170419 end_date=630
- start_time=170628 end_time=630
- activate_time=0 deactivate_time=0

Внешне кажется, как будто это дата 17.04.19 6:30 до 17.06.28 6:30.
Или, что более логично по времени сальвы: 19.04.17 6:30 до 28.06.17. И это даже совпадает со средами когда на руофе рестарты(патч русский).
1671129170931.png 1671129209879.png
Но не понятно так ли это, может это какой-то формат, а я додумал?

И как могут работать поля activate_time=0 deactivate_time=0? Если я хочу указать 18:00 до 1:00 следующего дня?
 
Решение
Ответ нашелся в uc.

Да предположение о таком представлении даты и времени было верным.

Код:
// Mid - это substring, makeZeroString дополняет префиксными нулями до нужного размера
yearStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nStartDate), 0, 2);
monthStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nStartDate), 2, 2);
dayStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nStartDate), 4, 2);

yearStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nEndDate), 0, 2);
monthStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nEndDate), 2, 2);
dayStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nEndDate), 4, 2);

Activate time и deactivate time определяются как и ожидалось:
Код:
...
Ответ нашелся в uc.

Да предположение о таком представлении даты и времени было верным.

Код:
// Mid - это substring, makeZeroString дополняет префиксными нулями до нужного размера
yearStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nStartDate), 0, 2);
monthStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nStartDate), 2, 2);
dayStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nStartDate), 4, 2);

yearStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nEndDate), 0, 2);
monthStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nEndDate), 2, 2);
dayStr = Mid(getInstanceL2Util().makeZeroString(6, eventData.nEndDate), 4, 2);

Activate time и deactivate time определяются как и ожидалось:
Код:
    hourStr = "0";
    minuteStr = "0";
    if (eventData.nActivateTime > 0)
    {
        // Mid - это substring, makeZeroString дополняет префиксными нулями до нужного размера
        hourStr = Mid(getInstanceL2Util().makeZeroString(4, eventData.nActivateTime), 0, 2);
        minuteStr = Mid(getInstanceL2Util().makeZeroString(4, eventData.nActivateTime), 2, 2);
    }

    hourEndStr = "0";
    minuteEndStr = "0";
    if (eventData.nDeactivateTime > 0)
    {
        hourEndStr = Mid(getInstanceL2Util().makeZeroString(4, eventData.nDeactivateTime), 0, 2);
        minuteEndStr = Mid(getInstanceL2Util().makeZeroString(4, eventData.nDeactivateTime), 2, 2);
    }
 
Решение
Назад
Сверху Снизу