本文整理汇总了C#中Framework.Network.Packets.PacketReader.ReadByte方法的典型用法代码示例。如果您正苦于以下问题:C# PacketReader.ReadByte方法的具体用法?C# PacketReader.ReadByte怎么用?C# PacketReader.ReadByte使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Framework.Network.Packets.PacketReader
的用法示例。
在下文中一共展示了PacketReader.ReadByte方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HandleCreateCharacter
public static void HandleCreateCharacter(ref PacketReader packet, WorldClass session)
{
BitUnpack BitUnpack = new BitUnpack(packet);
var hairStyle = packet.ReadByte();
var gender = packet.ReadByte();
var skin = packet.ReadByte();
var hairColor = packet.ReadByte();
var facialHair = packet.ReadByte();
var pClass = packet.ReadByte();
var race = packet.ReadByte();
var face = packet.ReadByte();
packet.ReadByte(); // Always 0
var HasUnknown = BitUnpack.GetBit();
var nameLength = BitUnpack.GetBits<uint>(6);
var name = Character.NormalizeName(packet.ReadString(nameLength));
if (HasUnknown)
packet.ReadUInt32();
var result = DB.Characters.Select("SELECT * from characters WHERE name = ?", name);
var createChar = new PacketWriter(ServerMessage.CreateChar);
if (result.Count != 0)
{
// Name already in use
createChar.WriteUInt8(0x32);
session.Send(ref createChar);
return;
}
result = DB.Characters.Select("SELECT map, zone, posX, posY, posZ, posO FROM character_creation_data WHERE race = ? AND class = ?", race, pClass);
if (result.Count == 0)
{
createChar.WriteUInt8(0x31);
session.Send(ref createChar);
return;
}
var map = result.Read<uint>(0, "map");
var zone = result.Read<uint>(0, "zone");
var posX = result.Read<float>(0, "posX");
var posY = result.Read<float>(0, "posY");
var posZ = result.Read<float>(0, "posZ");
var posO = result.Read<float>(0, "posO");
// Allow declined names for now
var characterFlags = CharacterFlag.Decline;
DB.Characters.Execute("INSERT INTO characters (name, accountid, realmId, race, class, gender, skin, zone, map, x, y, z, o, face, hairstyle, haircolor, facialhair, characterFlags) VALUES (" +
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
name, session.Account.Id, WorldConfig.RealmId, race, pClass, gender, skin, zone, map, posX, posY, posZ, posO, face, hairStyle, hairColor, facialHair, characterFlags);
// Success
createChar.WriteUInt8(0x2F);
session.Send(ref createChar);
}
示例2: HandleChatMessageYell
public static void HandleChatMessageYell(ref PacketReader packet, ref WorldClass session)
{
BitUnpack BitUnpack = new BitUnpack(packet);
var language = packet.ReadInt32();
var messageLength = packet.ReadByte();
var message = packet.ReadString(messageLength);
ChatMessageValues chatMessage = new ChatMessageValues(MessageType.ChatMessageYell, message, true, true);
chatMessage.Language = (byte)language;
SendMessage(ref session, chatMessage);
}
示例3: HandleChatMessageSay
public static void HandleChatMessageSay(ref PacketReader packet, ref WorldClass session)
{
BitUnpack BitUnpack = new BitUnpack(packet);
var language = packet.ReadInt32();
var messageLength = packet.ReadByte();
var message = packet.ReadString(messageLength);
ChatMessageValues chatMessage = new ChatMessageValues(MessageType.ChatMessageSay, message, true, true);
chatMessage.Language = (byte)language;
if (ChatCommandParser.CheckForCommand(message))
ChatCommandParser.ExecuteChatHandler(message, session);
else
SendMessage(ref session, chatMessage);
}
示例4: HandleDBQueryBulk
public static void HandleDBQueryBulk(ref PacketReader packet, ref WorldClass session)
{
List<int> IdList = new List<int>();
BitUnpack BitUnpack = new BitUnpack(packet);
var type = (DBTypes)packet.Read<uint>();
var count = BitUnpack.GetBits<uint>(21);
bool[][] Mask = new bool[count][];
byte[][] Bytes = new byte[count][];
for (int i = 0; i < count; i++)
{
Mask[i] = new bool[8];
Bytes[i] = new byte[8];
}
for (int i = 0; i < count; i++)
{
Mask[i][7] = BitUnpack.GetBit();
Mask[i][2] = BitUnpack.GetBit();
Mask[i][3] = BitUnpack.GetBit();
Mask[i][5] = BitUnpack.GetBit();
Mask[i][4] = BitUnpack.GetBit();
Mask[i][6] = BitUnpack.GetBit();
Mask[i][0] = BitUnpack.GetBit();
Mask[i][1] = BitUnpack.GetBit();
}
for (int i = 0; i < count; i++)
{
if (Mask[i][5])
Bytes[i][5] = (byte)(packet.Read<byte>() ^ 1);
IdList.Add(packet.Read<int>());
if (Mask[i][7])
Bytes[i][7] = (byte)(packet.ReadByte() ^ 1);
if (Mask[i][3])
Bytes[i][3] = (byte)(packet.ReadByte() ^ 1);
if (Mask[i][0])
Bytes[i][0] = (byte)(packet.ReadByte() ^ 1);
if (Mask[i][1])
Bytes[i][1] = (byte)(packet.ReadByte() ^ 1);
if (Mask[i][6])
Bytes[i][6] = (byte)(packet.ReadByte() ^ 1);
if (Mask[i][2])
Bytes[i][2] = (byte)(packet.ReadByte() ^ 1);
if (Mask[i][4])
Bytes[i][4] = (byte)(packet.ReadByte() ^ 1);
}
switch (type)
{
case DBTypes.BroadcastText:
{
foreach (var id in IdList)
HandleBroadcastText(ref session, id);
break;
}
default:
break;
}
}
示例5: HandleGenerateRandomCharacterName
public static void HandleGenerateRandomCharacterName(ref PacketReader packet, WorldClass session)
{
var race = packet.ReadByte();
var gender = packet.ReadByte();
List<string> names = CliDB.NameGen.Where(n => n.Race == race && n.Gender == gender).Select(n => n.Name).ToList();
Random rand = new Random(Environment.TickCount);
string NewName;
SQLResult result;
do
{
NewName = names[rand.Next(names.Count)];
result = DB.Characters.Select("SELECT * FROM characters WHERE name = ?", NewName);
}
while (result.Count != 0);
PacketWriter generateRandomCharacterNameResult = new PacketWriter(ServerMessage.GenerateRandomCharacterNameResult);
BitPack BitPack = new BitPack(generateRandomCharacterNameResult);
BitPack.Write(1);
BitPack.Write(NewName.Length, 6);
BitPack.Flush();
generateRandomCharacterNameResult.WriteString(NewName);
session.Send(ref generateRandomCharacterNameResult);
}
示例6: HandleSetActionButton
public static void HandleSetActionButton(ref PacketReader packet, ref WorldClass session)
{
var pChar = session.Character;
byte[] actionMask = { 5, 2, 6, 7, 1, 4, 0, 3 };
byte[] actionBytes = { 4, 3, 2, 0, 5, 7, 6, 1 };
var slotId = packet.ReadByte();
BitUnpack actionUnpacker = new BitUnpack(packet);
var actionId = actionUnpacker.GetPackedValue(actionMask, actionBytes);
if (actionId == 0)
{
var action = pChar.ActionButtons.Where(button => button.SlotId == slotId && button.SpecGroup == pChar.ActiveSpecGroup).Select(button => button).First();
ActionMgr.RemoveActionButton(pChar, action, true);
Log.Message(LogType.DEBUG, "Character (Guid: {0}) removed action button {1} from slot {2}.", pChar.Guid, actionId, slotId);
return;
}
var newAction = new ActionButton
{
Action = actionId,
SlotId = slotId,
SpecGroup = pChar.ActiveSpecGroup
};
ActionMgr.AddActionButton(pChar, newAction, true);
Log.Message(LogType.DEBUG, "Character (Guid: {0}) added action button {1} to slot {2}.", pChar.Guid, actionId, slotId);
}
示例7: HandleResponseCharacterCreate
public static void HandleResponseCharacterCreate(ref PacketReader packet, ref WorldClass session)
{
BitUnpack BitUnpack = new BitUnpack(packet);
byte pClass = packet.ReadByte();
byte hairStyle = packet.ReadByte();
byte facialHair = packet.ReadByte();
byte race = packet.ReadByte();
byte face = packet.ReadByte();
byte skin = packet.ReadByte();
byte gender = packet.ReadByte();
byte hairColor = packet.ReadByte();
packet.ReadByte(); // Always 0
uint nameLength = BitUnpack.GetNameLength<uint>(7);
string name = packet.ReadString(nameLength);
SQLResult result = DB.Characters.Select("SELECT * from characters WHERE name = '{0}'", name);
PacketWriter writer = new PacketWriter(LegacyMessage.ResponseCharacterCreate);
if (result.Count != 0)
{
// Name already in use
writer.WriteUInt8(0x32);
session.Send(writer);
return;
}
result = DB.Characters.Select("SELECT map, zone, posX, posY, posZ, posO FROM character_creation_data WHERE race = {0} AND class = {1}", race, pClass);
if (result.Count == 0)
{
writer.WriteUInt8(0x31);
session.Send(writer);
return;
}
uint map = result.Read<uint>(0, "map");
uint zone = result.Read<uint>(0, "zone");
float posX = result.Read<float>(0, "posX");
float posY = result.Read<float>(0, "posY");
float posZ = result.Read<float>(0, "posZ");
float posO = result.Read<float>(0, "posO");
DB.Characters.Execute("INSERT INTO characters (name, accountid, race, class, gender, skin, zone, map, x, y, z, o, face, hairstyle, haircolor, facialhair) VALUES (" +
"'{0}', {1}, {2}, {3}, {4}, {5}, {6}, {7}, '{8}', '{9}', '{10}', '{11}', {12}, {13}, {14}, {15})",
name, session.Account.Id, race, pClass, gender, skin, zone, map, posX, posY, posZ, posO, face, hairStyle, hairColor, facialHair);
// Success
writer.WriteUInt8(0x2F);
session.Send(writer);
}
示例8: HandleGenerateRandomCharacterNameResult
public static void HandleGenerateRandomCharacterNameResult(ref PacketReader packet, ref WorldClass session)
{
byte gender = packet.ReadByte();
byte race = packet.ReadByte();
List<string> names = DBCStorage.NameGenStorage.Where(n => n.Value.Race == race && n.Value.Gender == gender).Select(n => n.Value.Name).ToList();
Random rand = new Random(Environment.TickCount);
string NewName;
SQLResult result;
do
{
NewName = names[rand.Next(names.Count)];
result = DB.Characters.Select("SELECT * FROM characters WHERE name = '{0}'", NewName);
}
while (result.Count != 0);
PacketWriter writer = new PacketWriter(JAMCMessage.GenerateRandomCharacterNameResult);
BitPack BitPack = new BitPack(writer);
BitPack.Write<int>(NewName.Length, 15);
BitPack.Write(true);
BitPack.Flush();
writer.WriteString(NewName);
session.Send(writer);
}
示例9: HandleResponseCharacterCreate
public static void HandleResponseCharacterCreate(ref PacketReader packet, ref WorldClass session)
{
BitUnpack BitUnpack = new BitUnpack(packet);
byte pClass = packet.ReadByte();
byte hairStyle = packet.ReadByte();
byte facialHair = packet.ReadByte();
byte race = packet.ReadByte();
byte face = packet.ReadByte();
byte skin = packet.ReadByte();
byte gender = packet.ReadByte();
byte hairColor = packet.ReadByte();
packet.ReadByte(); // Always 0
uint nameLength = BitUnpack.GetNameLength<uint>(7);
string name = Character.NormalizeName(packet.ReadString(nameLength));
SQLResult result = DB.Characters.Select("SELECT * from characters WHERE name = ?", name);
PacketWriter writer = new PacketWriter(LegacyMessage.ResponseCharacterCreate);
if (result.Count != 0)
{
// Name already in use
writer.WriteUInt8(0x32);
session.Send(ref writer);
return;
}
result = DB.Characters.Select("SELECT map, zone, posX, posY, posZ, posO FROM character_creation_data WHERE race = ? AND class = ?", race, pClass);
if (result.Count == 0)
{
writer.WriteUInt8(0x31);
session.Send(ref writer);
return;
}
uint map = result.Read<uint>(0, "map");
uint zone = result.Read<uint>(0, "zone");
float posX = result.Read<float>(0, "posX");
float posY = result.Read<float>(0, "posY");
float posZ = result.Read<float>(0, "posZ");
float posO = result.Read<float>(0, "posO");
// Allow declined names for now
var characterFlags = CharacterFlag.Decline;
DB.Characters.Execute("INSERT INTO characters (name, accountid, race, class, gender, skin, zone, map, x, y, z, o, face, hairstyle, haircolor, facialhair, characterFlags) VALUES (" +
"?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
name, session.Account.Id, race, pClass, gender, skin, zone, map, posX, posY, posZ, posO, face, hairStyle, hairColor, facialHair, characterFlags);
// Success
writer.WriteUInt8(0x2F);
session.Send(ref writer);
}