本文整理汇总了C#中Packet.AddChar方法的典型用法代码示例。如果您正苦于以下问题:C# Packet.AddChar方法的具体用法?C# Packet.AddChar怎么用?C# Packet.AddChar使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Packet
的用法示例。
在下文中一共展示了Packet.AddChar方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HandleMessage
public static void HandleMessage(Packet packet, IClient client, bool fromQueue)
{
Packet reply = new Packet(PacketFamily.Welcome, PacketAction.Reply);
client.EnterGame();
client.Character.Map.Enter(client.Character, WarpAnimation.Admin);
reply.AddShort((short)WelcomeReply.WorldInfo);
reply.AddBreak();
for (int i = 0; i < 9; ++i)
{
reply.AddBreakString("A");
}
reply.AddChar(client.Character.Weight); // Weight
reply.AddChar(client.Character.MaxWeight); // Max Weight
// Inventory
foreach (ItemStack item in client.Character.Items)
{
reply.AddShort(item.Id);
reply.AddInt(item.Amount);
}
reply.AddBreak();
// Spells
reply.AddBreak();
IEnumerable<Character> characters = client.Character.GetInRange<Character>();
IEnumerable<NPC> npcs = client.Character.GetInRange<NPC>();
IEnumerable<MapItem> items = client.Character.GetInRange<MapItem>();
reply.AddChar((byte)characters.Count());
reply.AddBreak();
// Characters
// {
foreach (Character character in characters)
{
character.InfoBuilder(ref reply);
reply.AddBreak();
}
// }
// NPCs
foreach (NPC npc in npcs)
{
npc.InfoBuilder(ref reply);
}
reply.AddBreak();
// Items
foreach (MapItem item in items)
{
item.InfoBuilder(ref reply);
}
client.Send(reply);
}
示例2: DoorOpen
public bool DoorOpen(byte x, byte y)
{
if (!m_client.ConnectedAndInitialized || !Initialized) return false;
Packet builder = new Packet(PacketFamily.Door, PacketAction.Open);
builder.AddChar(x);
builder.AddChar(y);
return m_client.SendPacket(builder);
}
示例3: OpenLocker
/// <summary>
/// Opens a locker at X/Y coordinates
/// </summary>
public bool OpenLocker(byte x, byte y)
{
if (!m_client.ConnectedAndInitialized || !Initialized)
return false;
Packet pkt = new Packet(PacketFamily.Locker, PacketAction.Open);
pkt.AddChar(x);
pkt.AddChar(y);
return m_client.SendPacket(pkt);
}
示例4: ChestOpen
public bool ChestOpen(byte x, byte y)
{
if (!m_client.ConnectedAndInitialized || !Initialized)
return false;
Packet toSend = new Packet(PacketFamily.Chest, PacketAction.Open);
toSend.AddChar(x);
toSend.AddChar(y);
return m_client.SendPacket(toSend);
}
示例5: LockerTakeItem
/// <summary>
/// Withdraw an item from your private locker
/// </summary>
public bool LockerTakeItem(byte x, byte y, short id)
{
if (!m_client.ConnectedAndInitialized || !Initialized)
return false;
Packet pkt = new Packet(PacketFamily.Locker, PacketAction.Take);
pkt.AddChar(x);
pkt.AddChar(y);
pkt.AddShort(id);
return m_client.SendPacket(pkt);
}
示例6: ChestAddItem
public bool ChestAddItem(byte x, byte y, short itemID, int amount)
{
if (!m_client.ConnectedAndInitialized || !Initialized)
return false;
Packet pkt = new Packet(PacketFamily.Chest, PacketAction.Add);
pkt.AddChar(x);
pkt.AddChar(y);
pkt.AddShort(itemID);
pkt.AddThree(amount);
return m_client.SendPacket(pkt);
}
示例7: PlayerWalk
public bool PlayerWalk(EODirection dir, byte destX, byte destY, bool admin = false)
{
if (!m_client.ConnectedAndInitialized || !Initialized)
return false;
Packet builder = new Packet(PacketFamily.Walk, admin ? PacketAction.Admin : PacketAction.Player);
//change family/action
builder.AddChar((byte) dir);
builder.AddThree(DateTime.Now.ToEOTimeStamp());
builder.AddChar(destX);
builder.AddChar(destY);
return m_client.SendPacket(builder);
}
示例8: HandleAgree
public static void HandleAgree(Packet packet, IClient client, bool fromQueue)
{
FileType fileType = (FileType)packet.GetChar();
string fileName;
InitReply replyCode;
switch (fileType)
{
case FileType.Map:
fileName = client.Character.Map.Data.GetPubFile("./tmp/");
replyCode = InitReply.FileMap;
break;
case FileType.Item:
fileName = "./data/dat001.eif";
replyCode = InitReply.FileEIF;
break;
case FileType.NPC:
fileName = "./data/dtn001.enf";
replyCode = InitReply.FileENF;
break;
case FileType.Spell:
fileName = "./data/dsl001.esf";
replyCode = InitReply.FileESF;
break;
case FileType.Class:
fileName = "./data/dat001.ecf";
replyCode = InitReply.FileECF;
break;
default:
throw new ArgumentOutOfRangeException("Invalid file type request");
}
Packet reply = new Packet(PacketFamily.Init, PacketAction.Init);
reply.AddChar((byte)replyCode);
if (fileType != FileType.Map)
reply.AddChar(1); // File ID
reply.AddBytes(File.ReadAllBytes(fileName));
client.Send(reply);
}
示例9: AttackUse
public bool AttackUse(EODirection direction)
{
if (!m_client.ConnectedAndInitialized || !Initialized) return false;
Packet pkt = new Packet(PacketFamily.Attack, PacketAction.Use);
pkt.AddChar((byte)direction);
pkt.AddThree(DateTime.Now.ToEOTimeStamp());
return m_client.SendPacket(pkt);
}
示例10: FacePlayer
/// <summary>
/// Change the direction of the currently logged in player
/// </summary>
/// <param name="dir">Direction to face the currently logged in player</param>
/// <returns>True on successful send, false otherwise</returns>
public bool FacePlayer(EODirection dir)
{
if (!m_client.ConnectedAndInitialized || !Initialized)
return false;
Packet pkt = new Packet(PacketFamily.Face, PacketAction.Player);
pkt.AddChar((byte)dir);
return m_client.SendPacket(pkt);
}
示例11: TradeAgree
/// <summary>
/// Set the agree flag for a pending trade offer
/// </summary>
/// <param name="agree">True to agree, false to un-agree</param>
public bool TradeAgree(bool agree)
{
if (!m_client.ConnectedAndInitialized || !Initialized)
return false;
Packet pkt = new Packet(PacketFamily.Trade, PacketAction.Agree);
pkt.AddChar((byte)(agree ? 1 : 0));
return m_client.SendPacket(pkt);
}
示例12: TradeAcceptRequest
/// <summary>
/// Accept another players request for trade
/// </summary>
/// <param name="characterID">ID of the other player's character</param>
public bool TradeAcceptRequest(short characterID)
{
if (!m_client.ConnectedAndInitialized || !Initialized)
return false;
Packet pkt = new Packet(PacketFamily.Trade, PacketAction.Accept);
pkt.AddChar(123); //?
pkt.AddShort(characterID);
return m_client.SendPacket(pkt);
}
示例13: HandleRequest
public static void HandleRequest(Packet packet, IClient client, bool fromQueue)
{
short count = (short)client.Server.Characters.Count;
// TODO: Don't list hidden admins
Packet reply = new Packet(PacketFamily.Init, PacketAction.Init);
reply.AddChar((byte)EO.InitReply.Players);
reply.AddShort(count);
reply.AddBreak();
foreach (Character character in client.Server.Characters)
{
reply.AddBreakString(character.Name);
reply.AddBreakString(character.Title ?? "");
reply.AddChar(0); // What's this?
reply.AddChar((byte)EO.PaperdollIcon.HGM);
reply.AddChar((byte)character.ClassId);
reply.AddString("TAG");
reply.AddBreak();
}
client.Send(reply);
}
示例14: ReportEmote
public bool ReportEmote(Emote emote)
{
//trade/level up happen differently
if (emote == Emote.Trade || emote == Emote.LevelUp)
return false; //signal error client-side
if (!m_client.ConnectedAndInitialized || !Initialized)
return false;
Packet pkt = new Packet(PacketFamily.Emote, PacketAction.Report);
pkt.AddChar((byte)emote);
return m_client.SendPacket(pkt);
}
示例15: DropItem
//255 means use character's current location
public bool DropItem(short id, int amount, byte x = 255, byte y = 255)
{
if (!m_client.ConnectedAndInitialized || !Initialized)
return false;
Packet pkt = new Packet(PacketFamily.Item, PacketAction.Drop);
pkt.AddShort(id);
pkt.AddInt(amount);
if (x == 255 && y == 255)
{
pkt.AddByte(x);
pkt.AddByte(y);
}
else
{
pkt.AddChar(x);
pkt.AddChar(y);
}
return m_client.SendPacket(pkt);
}