Сообщений: 538
Тем: 76
Зарегистрирован: Aug 2012
Репутация:
7
Пишет что room не присвоено значение и из-за этого ошибка.
Хотя при создании комнаты все в порядке.
PROTOCOL_ROOM_CREATE_REQ
[SRC="csharp"]
public class PROTOCOL_ROOM_CREATE_REQ : ClientPacket
{
public static readonly Logger Log = Logger.Instance;
private Room room;
public override void ReadImpl()
{
room = new Room();
room.RoomId = ReadInt(); ; //unk
room.Room_Name = ReadStringUni(46); //room name
room.MapId = ReadByte(); //map
ReadByte(); //unk
room.Stage4v4 = ReadByte(); // Stage4v4
room.Type = ReadByte(); // Type
ReadByte(); //unk
ReadByte(); //unk
room.slots = ReadByte(); //slot
ReadByte(); //unk
room.AllWeapons = ReadByte(); //103
room.RandomMap = ReadByte();
room.Special = ReadByte();
ReadBytes(5); //unk
ReadStringUni(66);
//room.Leader.Name = ReadStringUni(66); //Leader Name
room.KillMask = ReadByte();
ReadByte(); // unk
ReadByte(); // unk
ReadByte(); // unk
room.Limit = ReadByte();
room.SeeConf = ReadByte();
room.AutoBalans = ReadByte();
ReadBytes(24);
Log.Info($"Room_Name {room.Room_Name} MapId {room.MapId}");
}
public override void RunImpl()
{
Client.SendPacket(new PROTOCOL_ROOM_CREATE_ACK(room));
}
[/SRC]
Вот тут ругается.
PROTOCOL_BATTLE_READYBATTLE_REQ
[SRC="csharp"]
public class PROTOCOL_BATTLE_READYBATTLE_REQ : ClientPacket
{
Room room;
public override void ReadImpl()
{
}
public override void RunImpl()
{
Client.SendPacket(new PROTOCOL_ROOM_GET_SLOTINFO_ACK(SlotState.Load, Client.Player, room));
}
}
}
[/SRC]
И из-за этого выходит ошибка в этом пакете.
Сообщений: 322
Тем: 6
Зарегистрирован: Nov 2015
Репутация:
505
Boris2105,
Ты класс рум определил, но не вызвал его, по этому у тебя и null
var room = new gnew room ();
room ....
Разработка Emu: PiercingBlow 90%, APB Reloaded 100%.
Самый действенный инструмент для самообучения - грабли.
Сообщений: 538
Тем: 76
Зарегистрирован: Aug 2012
Репутация:
7
02-26-2017, 05:12 PM
(Сообщение последний раз редактировалось: 02-26-2017, 06:45 PM Boris2105.)
Awiion Написал:Boris2105,
Ты класс рум определил, но не вызвал его, по этому у тебя и null
var room = new gnew room ();
room ....
что значит gnew?
Боты не ресаются и при нажатие на Tab нет списка игроков.
PROTOCOL_ROOM_GET_SLOTINFO_ACK
[SRC="csharp"]
public PROTOCOL_ROOM_GET_SLOTINFO_ACK(SlotState state, Player player, Room room)
{
this.state = state;
this.player = player;
this.room = room;
}
public override void WriteImpl()
{
WriteH(0); //UNK
WriteC(room.slots); //количество слотов
for (int i = 0; i < room.slots; i++)
{
WriteC((byte)state);
WriteC(player.Rank);
WriteD(0); // Клан Ид
WriteD(0); // Клан Роль
WriteC(clan.Rank); // Клан Ранг
WriteC(clan.Logo1); // Клан лого 1
WriteC(clan.Logo2); // Клан лого 2
WriteC(clan.Logo3); // Клан лого 3
WriteC(clan.Logo4); // Клан лого 4
WriteC(0); // Премиум
WriteD(0); // Купоны
WriteB(new byte[5]); // Инк
WriteS(clan.ClanName, 17); // Имя клана
WriteC(0); // Инк
WriteC(225); // Инк
}
WriteC(0); //Главный слот игрока
}
[/SRC]
Сообщений: 36
Тем: 11
Зарегистрирован: Oct 2016
Репутация:
-2
"THIS IS NO FREE VERSION" hahahahahaha LOL XDXD
Сообщений: 538
Тем: 76
Зарегистрирован: Aug 2012
Репутация:
7
XRoro Написал:"THIS IS NO FREE VERSION" hahahahahaha LOL XDXD
yeah good you can read this, awesome man
Сообщений: 322
Тем: 6
Зарегистрирован: Nov 2015
Репутация:
505
Boris2105,
Клац
[SRC="csharp"]
var room = new room ();
room ....
[/SRC]
[SRC="csharp"]
public override void WriteImpl()
{
WriteH(0); //UNK
WriteC(room.slots); //количество слотов
for (int i = 0; i < 16; i++)
{
WriteC((byte)state);
WriteC(player.Rank);
WriteD(0); // Клан Ид
WriteD(0); // Клан Роль
WriteC(clan.Rank); // Клан Ранг
WriteC(clan.Logo1); // Клан лого 1
WriteC(clan.Logo2); // Клан лого 2
WriteC(clan.Logo3); // Клан лого 3
WriteC(clan.Logo4); // Клан лого 4
WriteC(0); // Премиум
WriteD(0); // Купоны
WriteB(new byte[5]); // Инк
WriteS(clan.ClanName, 17*2); // Имя клана
WriteC(0); // Инк
WriteC(225); // Инк
}
WriteC(0); //Главный слот игрока
}
[/SRC]
У тебя не может быть, что даже если 1 слот = 1 игроку, их 16.
Ты можешь слот откл. 4 слота остальные state = 0;
Клан у тебя не стринг, а в Юникоде, значит 34, откуда взял 17.
[SRC="csharp"]public class Slot
{
public byte State;
public byte Id.
// .....
}
Slot[] RoomSlot = new Slot[16];
foreach (var slot in RoomSlot)
{
// ......
}[/SRC]
Разработка Emu: PiercingBlow 90%, APB Reloaded 100%.
Самый действенный инструмент для самообучения - грабли.
Сообщений: 538
Тем: 76
Зарегистрирован: Aug 2012
Репутация:
7
Awiion Написал:Boris2105,
Клац
[SRC="csharp"]
var room = new room ();
room ....
[/SRC]
[SRC="csharp"]
public override void WriteImpl()
{
WriteH(0); //UNK
WriteC(room.slots); //количество слотов
for (int i = 0; i < 16; i++)
{
WriteC((byte)state);
WriteC(player.Rank);
WriteD(0); // Клан Ид
WriteD(0); // Клан Роль
WriteC(clan.Rank); // Клан Ранг
WriteC(clan.Logo1); // Клан лого 1
WriteC(clan.Logo2); // Клан лого 2
WriteC(clan.Logo3); // Клан лого 3
WriteC(clan.Logo4); // Клан лого 4
WriteC(0); // Премиум
WriteD(0); // Купоны
WriteB(new byte[5]); // Инк
WriteS(clan.ClanName, 17*2); // Имя клана
WriteC(0); // Инк
WriteC(225); // Инк
}
WriteC(0); //Главный слот игрока
}
[/SRC]
У тебя не может быть, что даже если 1 слот = 1 игроку, их 16.
Ты можешь слот откл. 4 слота остальные state = 0;
Клан у тебя не стринг, а в Юникоде, значит 34, откуда взял 17.
[SRC="csharp"]public class Slot
{
public byte State;
public byte Id.
// .....
}
Slot[] RoomSlot = new Slot[16];
foreach (var slot in RoomSlot)
{
// ......
}[/SRC]
А вот где нужно слать инфу о статусах слотах?
У меня пока только такая фигня выходит
Сообщений: 322
Тем: 6
Зарегистрирован: Nov 2015
Репутация:
505
Boris2105,
CM_BATTLE_READYBATTLE,
CM_BATTLE_PRESTARTBATTLE,
CM_BATTLE_STARTBATTLE,
CM_ROOM_LOADING_START,
CM_BATTLE_GIVEUPBATTLE,
CM_BATTLE_MISSION_TUTORIAL_ROUND_END
Разработка Emu: PiercingBlow 90%, APB Reloaded 100%.
Самый действенный инструмент для самообучения - грабли.
Сообщений: 538
Тем: 76
Зарегистрирован: Aug 2012
Репутация:
7
Awiion Написал:Boris2105,
CM_BATTLE_READYBATTLE,
CM_BATTLE_PRESTARTBATTLE,
CM_BATTLE_STARTBATTLE,
CM_ROOM_LOADING_START,
CM_BATTLE_GIVEUPBATTLE,
CM_BATTLE_MISSION_TUTORIAL_ROUND_END
с этим значит все нормально, но почему инфы нету и боты не ресаются?
Сообщений: 322
Тем: 6
Зарегистрирован: Nov 2015
Репутация:
505
Boris2105,
Возможно статус комнаты не тот, в бою статус должен быть 15.
Вообще, ты должен все статусы пройти,
Ready -> x x x x x
[SRC="csharp"]
public enum SlotState : byte
{
Empty,
Close,
Shop,
Info,
Clan,
Inventory,
Gacha,
GiftShop,
Normal,
Ready,
Load,
Rendezvous,
Prestart,
BattleLoadOk,
BattleReady,
Battle
}
[/SRC]
Разработка Emu: PiercingBlow 90%, APB Reloaded 100%.
Самый действенный инструмент для самообучения - грабли.
|