Challenge Point

  • Автор темы Автор темы Gigi
  • Дата начала Дата начала

Gigi

Прославленный
Проверенный
Легенда Истоков
Старожил I степени
Сообщения
479
Розыгрыши
0
Решения
3
Репутация
219
Реакции
137
Баллы
1 438
Хроники
  1. Master Class
Исходники
Присутствуют
Сборка
Samurau 542 (Main)
При неудачной заточке кольца падшего ангела от +3, должны начислятся очки Challenge Point

Untitled.webp ​
Так вот, сделал расчёт на каком уровне заточки и сколько очков должно начислятся по этой схеме

Enchant ValueChallenge Points Gained
+31
+41
+51
+62
+73
+83
+93

и сделал переменную персонажа, например CHALLENGE_POINTS_FALLEN_ANGEL_RING где это всё сохраняется в базе (это всё четко работает и при одиночной заточке и при массовой)

на этом этапе нкжно сделать только передачу инфы в UI окна заточки, нашёл в ExResultMultiEnchantItemList.java это

/* EnchantFailChallengePointInfo */
buffer.writeInt(1); - как я понимаю это группа заточки
buffer.writeInt(0);
buffer.writeInt(0);

А что передают остальные 2 инта? (это только отображает инфу в левом окне заточки после фейла)

*да, там есть ещё серверные и клиентские пакеты забиты нулями, но они скорее всего для нижней части инфы, это дело на потом
 
Код:
struct _S_EX_RES_MULTI_ENCHANT_ITEM_LIST
{
    var byte bResult;
    var array<_EnchantSuccessItem> vSuccessItemList;
    var array<_EnchantFailItem> vFailedItemList;
    var array<_EnchantFailRewardItem> vFailRewardItemList;
    var array<_EnchantFailChallengePointInfo> vFailChallengePointInfoList;
};

то о чем ты спрашиваешь - var array<_EnchantFailChallengePointInfo> vFailChallengePointInfoList;

Код:
static function bool Decode_EnchantFailChallengePointInfo(out _EnchantFailChallengePointInfo packet)
{
    if(!DecodeInt(packet.nGroupID))
    {
        return false;
    }
    if(!DecodeInt(packet.nChallengePoint))
    {
        return false;
    }
    return true;
}
buffer.writeInt(1); - как я понимаю это группа заточки
Нет, это размер:

Код:
   if(!DecodeInt(nSize))
   {
       return false;
   }
   packet.vFailChallengePointInfoList.Length = nSize;
   for(i = 0; i < packet.vFailChallengePointInfoList.Length; i++)
   {
       if(!Decode_EnchantFailChallengePointInfo(packet.vFailChallengePointInfoList[i]))
       {
           return false;
       }
   }
 
Последнее редактирование:
WindOfChange спасибо вам за ответ, но у мобиуса нет таких методов как на пример "DecodeInt"

Я иду таким путём

1. При неудачной заточке после +3, получаю правильное значение количества очков, как и при одиночной заточке так и при мульти
моментально записываю в таблицу character_variables под переменной CHALLENGE_POINTS_FALLEN_ANGEL_RING и отсылаю пакет на сервер EX_SET_ENCHANT_CHALLENGE_POINT(0xFE, 0x2E8),
player.sendPacket(new ExSetEnchantChallengePoint(newPoints, pointsToAdd));

для теста к примеру сделал так

Скрытое содержимое доступно для зарегистрированных пользователей!

Пока вот мучаюсь тут :) не показывет значение очков в левом окне UI при неудачной заточке

затем хочу просто эти значения считать уже в окне заточки через скорее всего клиентского пакета EX_SET_ENCHANT_CHALLENGE_POINT(0x22B) это уже в самом незу, там очки с

CHALLENGE_POINTS_FALLEN_ANGEL_RING / 200
 
Последнее редактирование:
Он тебе привел код из клиента, как в интерфейсе разбирается этот пакет :)
Да это конечно плачевно что не дружу с клиентским интерфейсом

но вроде первую часть на стороне сервера сделал, из трёх колец на +5 сломались 2 и очки правильно начислил +2

Untitled.webp ​
Сообщение объединено:
Теперь стопорнулся тут, не могу найти (нигде, ИИ тоже молчит :) ) правильный серверный пакет чтоб в UI окна заточки, внизу вывести количество очков из базы. вот что смог написать

Скрытое содержимое доступно для зарегистрированных пользователей!


Скорее всего он не правильный, может кто ткнуть в правильном направлении
 
Последнее редактирование:
Назад
Сверху Снизу