• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Форум » TrinityCore » [TrinityCore] Help » Holidays.dbc ( время событий ) [HELP PLEASE ]
Holidays.dbc ( время событий ) [HELP PLEASE ]
DeathStroke
Скаут
Привет. Отталкиваясь отсюда: https://trinitycore.atlassian.net/wiki/spaces/tc/pages/2130082/Holidays

11 столб - время.

Мой 11 столб: 



Вопрос к знатокам, почему 11 колонка идёт не временем аббревиатурой?
Может я ошибаюсь, мб в клиенте есть уже выставленное время событий?
Как изменить время? Подскажите пожалста с меня плюзики (5шт)
(При изменении этого параметра, например как в гайде на время, то события просто нет в календаре.)
Сообщение # 1 отредактировано DeathStroke - Суббота, 26.05.2018, 14:55
p620
Маршал
Воспользуйтесь другим .dbc редактором. Этот интерпретирует данные колонки как число с плавающей точкой и пытается отобразить его в десятичной экспоненциальной форме. О реальном формате этого поля можно прочитать здесь.
Сообщение # 2 написано 26.05.2018 в 16:12
DeathStroke
Скаут
Посоветовать можете какие нибудь?

Добавлено (26.05.2018, 17:33)
---------------------------------------------
Качал несколько других dbc editor'ов, некоторые выдавали опять те же цифры а некоторые начали выдавать вот это: 536855424
Далее решил скачать новый dbcutil и он тоже выдал эти цифры

Сообщение # 3 написано 26.05.2018 в 17:33
p620
Маршал
Они и должны в целочисленной беззнаковой форме представляться. Я выше прилагал ссылку на описание формата. По поводу нового редактора .dbc - посмотрите здесь.
Сообщение # 4 написано 26.05.2018 в 18:28
DeathStroke
Скаут
Цитата p620 ()
Они и должны в целочисленной беззнаковой форме представляться. Я выше прилагал ссылку на описание формата. По поводу нового редактора .dbc - посмотрите здесь.Сп
Спасибо за редактор, однако очень помог. Плюсы закидываю.
Скажите ещё пожалуйста такой момент. Как именно расшифровать эти цифры по дате: 536855424
В игре отображается как 14:00
Мне нужно поменять время нового ивента например на 19:00.

Скриншот:


Сайт который Вы выше кидали - спасибо, в некоторых моментах я разобрался и нашел ответ на нужные вопросы, но вот дата до сих пор меня мучает sad
Сообщение # 5 написано 27.05.2018 в 12:15
p620
Маршал
А что Вас, собственно, смутило? Там прямым текстом написано, как интерпретируются данные.
Цитата
Packed blizzdate (integers with bits (LSB->MSB) 6: minutes, 5: hours, 3: day of week, 6: day of month, 4: month, 5: year, 2: time zone, last bit unused) - Epochdate=01.01.2000-00:00

"Упакованные" даты, представлены целыми x32 числами. Далее, от младшего бита к старшему, перечисление:
Первые 6 битов - минуты, следующие 5 битов - часы, следующие 3 - день недели, следующие 6 - день месяца, следующие 4 - месяц, следующие 5 - год, следующие 2 - часовая зона, последний не используется (6 + 5 + 3 + 6 + 4 + 5 + 2 + 1 = 32).
Таким образом, для получения значения конкретного параметра вычисляем '(val >> x) & y', где 'val' - значение колонки, 'x' - количество битов, предшествующих битам параметра, а 'y' - маска с количеством установленных в единицу битов равным количеству битов, занимаемых параметром. '>>' - побитовый сдвиг вправо (Bitwise Right Shift), '&' - побитовое И (Bitwise AND).
Для сборки итогового значения из набора параметров требуется совершить обратный набор действий. 'val | (x << y)'. Здесь 'x' - "неупакованное" значение параметра, 'y' - количество битов, предшествующих битам целевого параметра, 'val' - как и в предыдущем примере, итоговое значение. '|' - побитовое ИЛИ (Bitwise OR), '<<' - побитовый сдвиг влево (Bitwise Left Shift).
В целях облегчения понимания, пример. Ваше последнее сообщение (15 м., 12 ч., Вс. (7), 27, 5, 18 (учитывая, что отсчет начинается с 2000 года, согласно спецификации формата) ) записывается в "упакованном" формате следующим образом:
Код
(15 & 63 << 0) | (12 & 31 << 0 + 6) | (7 & 3 << 0 + 6 + 5) | (27 & 63 << 0 + 6 + 5 + 3) | (5 & 15 << 0 + 6 + 5 + 3 + 6) | (18 & 31 << 0 + 6 + 5 + 3 + 6 + 4) | (0 & 3 << 0 + 6 + 5 + 3 + 6 + 4 + 5)
= 15 | 768 | 14336 | 442368 | 5242880 | 301989888 | 0 = 307690255 (0x12567B0F)

Многие из представленных действий записывать нужды не было (все Bitwise AND, а также сложения констант), они приведены исключительно для облегчения понимания демонстрируемых манипуляций. Временная зона была записана как 0, поскольку формат ее записи (какие часовые пояса с каким значением (всего их 4) соотносятся) необходимо устанавливать опытным путем.
Сообщение # 6 написано 27.05.2018 в 20:18
DeathStroke
Скаут
тяжко)))
но спасибо за ответ, мб сёрфить буду

Добавлено (28.05.2018, 17:20)
---------------------------------------------

Цитата p620 ()
p620

дабы не создавать 2.000.000 тем, спрошу тут. Так как Вы гуру этого форума smile
Подскажите пожалуйста. Хочу впихнуть звание в ачивку. Ачивку создал, в бд так же закинул, сделал для клиента и сервера - ачивка работает и засчитывается от нужного моба.
Не могу найти проводник который будет за это достижение давать звание.
Сделал звание, залил на сервер и клиент, работает и отображается, все отлично.
Подскажите пожалуйста, куда тыкать?

P.s (В награды за достижение вписал: "Наградное звание: Мастер")

Добавлено (28.05.2018, 17:32)
---------------------------------------------
Отбой, ракушкин мозг забыл добавить в бд действие за ачивку.
Разобрался

Добавлено (28.05.2018, 19:42)
---------------------------------------------
Другой вопрос, не могу уже битый день найти dbc или какой то файл который отвечает за отдаление камеры, не подскажите где можно найти?

Сообщение # 7 написано 28.05.2018 в 19:42
p620
Маршал
Цитата DeathStroke ()
который отвечает за отдаление камеры

Это Вы о чем сейчас пишете? На своей/измененной карте, надо полагать, происходит?
Сообщение # 8 написано 28.05.2018 в 23:53
DeathStroke
Скаут
Нет, просто камеру отдалить чуть дальше, ибо боссы немного большие а камера прям в ногах..

Добавлено (29.05.2018, 00:40)
---------------------------------------------
То есть она отдаляется но до предела, и этого мало.
Как в клиенте изменить отдаление камеры чуть чуть подальше?

Сообщение # 9 написано 29.05.2018 в 00:40
Tehnokrat011
Капрал
Это не файл, а нужно модифицировать клиент


Код
char __cdecl ValidateCameraDistance(int a1, int a2, int strVar)
{
  double distance; // st7@1
  char result; // al@3

  distance = SStrToFloat(strVar);
  if ( distance < 0.0 || distance > 50.0 )
  {
    ConsoleWriteA("Value out of range (%f - %f)\n", 0, 0.0, 50.0);
    result = 0;
  }
  else
  {
    result = 1;
  }
  return result;
}


константа 50.0f лежит по адресу (not rebased)


Цитата
.rdata:00A1E2FC 00 00 48 42                 flt_A1E2FC      dd 50.0                 ; DATA XREF: ValidateCameraDistance+17r

Сами глобальные переменные:
Регистрация, как видно, дефолтное значение дистанции 15.0f, множитель 1

 
Цитата
s_cameraDistanceMax = CVar::Register("cameraDistanceMax", 0, 16, "15.0", (int)ValidateCameraDistance, 5, 0, 0, 0);
s_cameraDistanceMaxFactor = CVar::Register("cameraDistanceMaxFactor", 0, 16, "1.0", 0, 5, 0, 0, 0);


Адреса

Цитата
.data:00C24988 ?? ?? ?? ??                 s_cameraDistanceMaxFactor dd ?
.data:00C2498C ?? ?? ?? ??                 s_cameraDistanceMax dd ?
Disassembling, Intercepting/Hooking, Sniffing, Cryptography, Cracking - D.I.S.C.C )
IDA - is the best disassembler, SoftICE - is good debugger :) ©
Programming, Hacking, Reverse Engineering - is everything!
Да иди ты в ...регистр eax )
The world is not enough....
Сообщение # 10 отредактировано Tehnokrat011 - Вторник, 29.05.2018, 10:09
Форум » TrinityCore » [TrinityCore] Help » Holidays.dbc ( время событий ) [HELP PLEASE ]
  • Страница 1 из 1
  • 1
Поиск: