Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Подсчитываем ид купонов
#1
Решил выложить небольшую информацию по купонам,а именно как получить ид активированного купона.Формула следующая ид купона - количество дней(в конце ида последние две цифры) + 1000000000 достаточно просто добавить итем с получившемся идом в инвентарь и у вас будет эффект от купона.Да кстати если кому интересно для активации купона нужно отправлять два пакета.Сначала нужно послать пакет удаления старого купона(со старым статусом не активен),а далее добавить новый купон с новым идом(со статусом активен).
Тестировалось на клиенте Project Blackout и по Point Blank(tahadi)
Ответ
#2
Dom2;405142 Написал:Сначала нужно послать пакет удаления старого купона
Это нужно делать, если всего 1 купон.

Для примера в Piercing Blow активация купона C4 Speed Kit (Id предметов отличаются от старых клиентов в остальном всё тоже самое):

Код:
// PROTOCOL_BASE_GET_INVEN_INFO_ACK

FC 74 0C 00 00 00 00 00
AA F4 19 00 // 1701034
01
05 00 00 00 // изначально имеем 5 купонов

// PROTOCOL_AUTH_SHOP_ITEM_AUTH_ACK

FC 74 0C 00 00 00 00 00
AA F4 19 00 // 1701034
01
04 00 00 00 // 1 купон из 5 использован

// PROTOCOL_INVENTORY_GET_INFO_ACK

E5 62 16 00 00 00 00 00
22 6A 18 00 // 1600034 (1701034 - 101000) новый предмет
02 // тип использования
04 4F 6F 5F // действует до yyMMddHHmm

[Изображение: SPfK8.png]
Ответ
#3
PROGRAMMATOR
for work effect coupon Player need fix ROOM_INFO?
for work Effect player Coupon?
i try insert two writeD(0);
ROOM_INFO but i not actived coupon he send info for my player i'm using coupon but i not using.
how i can fix this effect player coupon
Ответ
#4
PROTOCOL_ROOM_GET_SLOTINFO_ACK
Ответ
#5
yes this locate i add two writeD(0);
effect work but i not use coupon
when i respawn map he seeding info i use coupon but i' am not using coupon

Код:
public class SM_ROOM_INFO extends ServerPacket {

    private final Room room;

    public SM_ROOM_INFO(Room room) {
        super(0xf15);
        this.room = room;
    }

    @Override
    public void writeImpl() {

        if(room.getRoomSlotByPlayer(room.getLeader()) == null)
            room.setNewLeader();

        writeD(room.getRoomSlotByPlayer(room.getLeader()).getId());
[COLOR="Blue"]                    writeD(0); // Effect Coupon but i'm not equiped Coupon he seend info i'm using coupon but i' am not equiped coupon
                    writeD(0);// Effect Coupon but i'm not equiped Coupon he seend info i'm using coupon but i' am not equiped coupon[/COLOR]
        for(int i = 0; i < 16; i++) {
            RoomSlot slot = room.getRoomSlot(i);
            if(slot.getPlayer() != null) {
            writeC(slot.getState().ordinal());
            writeC((byte) (slot.getPlayer() == null ? 0 : slot.getPlayer().getRank()));
                    writeB(new byte[9]);
                    writeC(slot.getPlayer() == null || slot.getPlayer().getClan() == null ? 0xff : slot.getPlayer().getClan().getLogo1());
            writeC(slot.getPlayer() == null || slot.getPlayer().getClan() == null ? 0xff : slot.getPlayer().getClan().getLogo2());
            writeC(slot.getPlayer() == null || slot.getPlayer().getClan() == null ? 0xff : slot.getPlayer().getClan().getLogo3());
            writeC(slot.getPlayer() == null || slot.getPlayer().getClan() == null ? 0xff : slot.getPlayer().getClan().getLogo4());
            writeC(slot.getPlayer() == null || slot.getPlayer().getClan() == null ? 0 : slot.getPlayer().getClan().getColor());
                    writeB(new byte[6]);
                    writeS(slot.getPlayer() == null || slot.getPlayer().getClan() == null ? "" : slot.getPlayer().getClan().getName(), Clan.CLAN_NAME_SIZE);
                    writeH(0);
                    writeC(0);
                    writeC(0);
                }
}
}


how i can fix he right man for work right effect
Ответ
#6
Код:
WriteC(8); // Slot.State
                    WriteC(0); // Player.Rank
                    WriteD(0); // ClanId
                    WriteD(0); // ClanRole
                    WriteC(0); // Clan.Rank
                    WriteD(-1); // Clan.Mark
                    WriteC(0); // Player.Premium
                    WriteC(0); // Player.TournamentRank
                    WriteD(0); // Coupons
                    WriteS("", Clan.NAME_LENGTH);
                    WriteD(0); // ?
                    WriteC(0); // ClanNameColor
Ответ
#7
Thakyou so much man
Ответ


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


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