Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Point Blank (Piercing Blow) (https://forum.zone-game.info/forumdisplay.php?f=204)
-   -   [Piercing Blow] PROTOCOL_ROOM_GET_SLOTINFO_ACK (https://forum.zone-game.info/showthread.php?t=42448)

Boris2105 08.08.2017 10:43

PROTOCOL_ROOM_GET_SLOTINFO_ACK
 
Боты появляются и бегают но вот меня в таблице нету.
Где мб ошибка?
https://pp.userapi.com/c638423/v6384...0ZgNCZOmYQ.jpg

Awiion 08.08.2017 13:27

Re: PROTOCOL_ROOM_GET_SLOTINFO_ACK
 
Слот игрока, статус игрока проверь.

Boris2105 08.08.2017 13:33

Re: PROTOCOL_ROOM_GET_SLOTINFO_ACK
 
Цитата:

Сообщение от Awiion (Сообщение 427322)
Слот игрока, статус игрока проверь.

А проверить надо в пакете PreStart или StartBattle?

PROGRAMMATOR 08.08.2017 14:00

Re: PROTOCOL_ROOM_GET_SLOTINFO_ACK
 
Ты же статус в PROTOCOL_ROOM_GET_SLOTINFO_ACK отправляешь.

Boris2105 08.08.2017 14:19

Re: PROTOCOL_ROOM_GET_SLOTINFO_ACK
 
Да и вроде все правильно

Код:

        writeH(0);
        writeC(16);
        for (RoomSlot slot : room.getRoomSlots())
        {
            if (slot.getPlayer() != null)
            {
                writeC(slot.getState().ordinal());
                writeC(slot.getPlayer().getRank());
                writeD(0);
                writeD(0);
                writeC(0);
                writeC(255);
                writeC(255);
                writeC(255);
                writeC(255);
                writeC(0);
                writeD(0);
                writeB(new byte[5]);
                writeB(new byte[34]);
                writeC(0);
                writeC(255);
            } else
            {
                writeC(slot.getState().ordinal());
                writeC(0);
                writeD(0);
                writeD(0);
                writeC(0);
                writeC(255);
                writeC(255);
                writeC(255);
                writeC(255);
                writeC(0);
                writeD(0);
                writeB(new byte[5]);
                writeB(new byte[34]);
                writeC(0);
                writeC(255);
            }


Awiion 08.08.2017 14:24

Re: PROTOCOL_ROOM_GET_SLOTINFO_ACK
 
Уже представил :)

 
 
for (RoomSlot slot : room.getRoomSlots())
        {
            if (slot.getPlayer() != null)
            {
            writeC(slot.getState().ordinal()); //тут ты пропустил статус (ибо проверка) 100% твой статус игрока, тебя не будет на карте 
            } else
            {
             writeC(slot.getState().ordinal()); // а тут как ни в чем не бывало
            }
 
 
Code: C#
Вообще, не понимаю, для чего это все было сделано.
Дальше так же с рангом игрока,
И тд.

Boris2105 08.08.2017 14:31

Re: PROTOCOL_ROOM_GET_SLOTINFO_ACK
 
Цитата:

Сообщение от Awiion (Сообщение 427326)
Уже представил :)

 
 
for (RoomSlot slot : room.getRoomSlots())
        {
            if (slot.getPlayer() != null)
            {
            writeC(slot.getState().ordinal()); //тут ты пропустил статус (ибо проверка) 100% твой статус игрока, тебя не будет на карте 
            } else
            {
             writeC(slot.getState().ordinal()); // а тут как ни в чем не бывало
            }
 
 
Code: C#
Вообще, не понимаю, для чего это все было сделано.
Дальше так же с рангом игрока,
И тд.

а как исправить?

Awiion 08.08.2017 14:40

Re: PROTOCOL_ROOM_GET_SLOTINFO_ACK
 
Убрать проверку,
и все что там есть, у тебя примерно так:
Slot[] Room_Slot new = [16];
Code: C#
Вот у тебя 16 игроков,
Дальше есть статусы,

SlotState:
Свернуть ↑Развернуть ↓

Статично всегда 16 игроков,
У тебя их в данный момент не 16, ты пропустил.

Когда ты создаешь комнату,
Ты присваиваешь себе статус, остальные Empty (можно указать 4v4 8v8)
Но их так же 16. Не меньше не больше.
Так же с комнатой статусом

RoomState:
Свернуть ↑Развернуть ↓


Статусы меняются:
Создание комнаты режимы,
Управления слотами,
Выход из боя, инвентарь, магазин, клан и тд,
Смена команд, как хостом так и игроками.

Дальше когда зашел игрок (или хост), ты сменил статус, и когда вышел.

Boris2105 08.08.2017 18:18

Re: PROTOCOL_ROOM_GET_SLOTINFO_ACK
 
Цитата:

Сообщение от Awiion (Сообщение 427328)
Убрать проверку,
и все что там есть, у тебя примерно так:
Slot[] Room_Slot new = [16];
Code: C#
Вот у тебя 16 игроков,
Дальше есть статусы,

SlotState:
Свернуть ↑Развернуть ↓

Статично всегда 16 игроков,
У тебя их в данный момент не 16, ты пропустил.

Когда ты создаешь комнату,
Ты присваиваешь себе статус, остальные Empty (можно указать 4v4 8v8)
Но их так же 16. Не меньше не больше.
Так же с комнатой статусом

RoomState:
Свернуть ↑Развернуть ↓


Статусы меняются:
Создание комнаты режимы,
Управления слотами,
Выход из боя, инвентарь, магазин, клан и тд,
Смена команд, как хостом так и игроками.

Дальше когда зашел игрок (или хост), ты сменил статус, и когда вышел.




Смотри я создал в классе Room
Room:
Свернуть ↑Развернуть ↓


PROTOCOL_ROOM_GET_SLOTINFO_ACK:
Свернуть ↑Развернуть ↓


Все вот так у меня должно все работать , верно?

PROGRAMMATOR 08.08.2017 20:24

Re: PROTOCOL_ROOM_GET_SLOTINFO_ACK
 
Нет, нужно циклом отправить данные всех 16 слотов.

Проще вернуть всё как было (если ты уверен, что у тебя всегда 16 слотов) и в консоль выведи, что у тебя в slot.getState().ordinal().


Текущее время: 20:43. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot