Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Разбор полетов - Миссии
#1
Хей!

Поскольку последнее время в разделе часто публикуется информация по Point Blank/Project Blackout/Piercing Blow, хотелось бы внести свою лепту

Публикую информацию по миссиям(карточкам, как угодно).
Информация актуальна для Tahadi клиента(есть небольшие различия с другими клиентами)

MY_INFO
В my_info информация о прохождении миссий идет сразу после медалей:
1 байт - активная миссия(миссия новичка, к примеру)
4 байта - активная карта(номер активной карты, от 0 до 9)
Затем 20 байт, по 2 байта на карту(галочки напротив задачи в карте, 1 байт за первые две задачи, второй байт - за 3 и 4 задачи, ох уж эти корейцы):
0xEF - выполнена первая, 0xFE - выполнена вторая, 0xFF - выполнены обе, 0x00 - не выполнена не одна
Затем идут 64 байта, разбирать которые руки не дошли, но есть предположение, что это список миссий:
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00

После идут 40 байт, по 4 байта на карту - количество выполнений каждой задачи в миссии(как вы уже понимаете, для того, чтобы миссию отобразило пройденной, необходимо подсчитывать на стороне сервера, выполнена ли задача миссии и устанавливать галочку напротив каждой задачи в картах, те самые 20 байт выше)
Оставшаяся информация вплоть до перок - информация о прохождении других миссий, у меня - пустая

MISSION_SUCESS(0xA28)
Этот небольшой пакет нужно отправлять клиенту в случае, если он совершил определенное действие(убил в голову,подорвал на гранате или же попросту умер) в зависимости от активной миссии(что отправляем в my_info)
Собственно, состоит он из:
1 байт - id задачи
1 байт - количество выполнено(скольких, допустим, подорвали на гранате)

Так-же хотел бы добавить, что при каждом входе(и если мне память не изменяет - выходе) в список миссий клиент отправляет номер активной карты - для чего сделано так и не понял
Бложик - https://foxovsky.ru
Ответ
#2
Сразу после 20 байт идёт вроде количество выполнений
Ответ
#3
Dom2 Написал:Сразу после 20 байт идёт вроде количество выполнений
Как я и написал в предисловии - имеются отличия с другими клиентами игры
Вполне возможно, что на другой версии игры в этом месте количество выполнений миссии, на Tahadi же при замене этих байт начинает фокусничать список миссий, потому и был сделан подобный вывод
Бложик - https://foxovsky.ru
Ответ
#4
the__all;405188 Написал:по 2 байта на карту
Там все просто. Smile

[SRC="csharp"]// Результат прохождения
ushort result = 0;

// Задания карты
for (int t = 0; t < 4; t++)
{
var task = card.Tasks[t];

if (task.IsComplete)
{
result |= (ushort)(0x0f << 4 * t);
}
}

WriteH(result);
[/SRC]
Ответ
#5
Hi All developers. Who can help me PlayerEquip structure...
Russian client version 1.37


PHP код:
<?php 
private void LoadEquip()

{

WriteD(equip.getCharRed()); // Скин Мужчина стандартный красные
WriteD(equip.getCharBlue()); // Скин Мужчина стандартный синие
WriteD(equip.getCharHelmet()); // Шлем поидеи... надо тестить
WriteD(equip.getCharBeret()); // Берет
WriteD(0); // Хз что это. Влазиет пистолеты, ножи, снайпы, пулеметы
WriteD(equip.getWeaponPrimary()); // Основное оружие
WriteD(equip.getWeaponSecondary()); // Второстепенное оружие
WriteD(equip.getWeaponMelee()); // Ближнего боя
WriteD(equip.getWeaponThrownNormal()); // Гранаты (Гранаты для взрыва)
WriteD(equip.getWeaponThrownSpecial()); // Гранаты (Шранаты специальные, смок, слеповуха)
}
private
void LoadItems()

{

WriteD(player.getInvetoryOnly(2).Count); // количество предметов в слоте "Солдат"
WriteD(player.getInvetoryOnly(1).Count); // количество предметов в слоте "Оружие"
WriteD(player.getInvetoryOnly(3).Count); // количество предметов в слоте "Купоны"
WriteD(0); // количество предметов в новом слоте

// Солдат

for (int i = 0; i < player.getInvetoryOnly(2).Count; i++)
{
WriteQ(player.getInvetoryOnly(2)[i].ItemType == 3 ? 0 : player.getInvetoryOnly(2)[i].Id);
WriteD(player.getInvetoryOnly(2)[i].ItemId);
WriteC((byte)player.getInvetoryOnly(2)[i].Type);
WriteD(player.getInvetoryOnly(2)[i].Count);
}
// Оружие

for (int i = 0; i < player.getInvetoryOnly(1).Count; i++)
{
WriteQ(player.getInvetoryOnly(1)[i].ItemType == 3 ? 0 : player.getInvetoryOnly(1)[i].Id);
WriteD(player.getInvetoryOnly(1)[i].ItemId);
WriteC((byte)player.getInvetoryOnly(1)[i].Type);
WriteD(player.getInvetoryOnly(1)[i].Count);
}

// Купоны
for (int i = 0; i < player.getInvetoryOnly(3).Count; i++)
{
WriteQ(player.getInvetoryOnly(3)[i].ItemType == 3 ? 0 :player.getInvetoryOnly(3)[i].Id);
WriteD(player.getInvetoryOnly(3)[i].ItemId);
WriteC((byte)player.getInvetoryOnly(3)[i].Type);
WriteD(player.getInvetoryOnly(3)[i].Count);
}
}

Code: C#
[Изображение: 0LeNmza.jpg]
[Изображение: VGqlfTz.jpg]
Ответ
#6
zOne62,

Код:
WriteD(0); // Хз что это. Влазиет пистолеты, ножи, снайпы, пулеметы
CharDino
Разработка Emu: PiercingBlow 90%, APB Reloaded 100%.
Самый действенный инструмент для самообучения - грабли.
Ответ
#7
[Изображение: NGCXVSu.jpg]
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  ID миссии при выполнении foxovsky 5 1,932 08-25-2016, 11:27 PM
Последний пост: foxovsky
  Разбор пакета PROTOCOL_BATTLE_MISSION_ROUND_PRE_START_ACK Boris2105 18 2,837 05-07-2016, 04:36 PM
Последний пост: Awiion

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)