本文整理汇总了C#中FrameWork.PacketOut.WritePascalString方法的典型用法代码示例。如果您正苦于以下问题:C# PacketOut.WritePascalString方法的具体用法?C# PacketOut.WritePascalString怎么用?C# PacketOut.WritePascalString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FrameWork.PacketOut
的用法示例。
在下文中一共展示了PacketOut.WritePascalString方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: F_CONNECT
static public void F_CONNECT(BaseClient client, PacketIn packet)
{
GameClient cclient = client as GameClient;
packet.Skip(8);
UInt32 Tag = packet.GetUint32();
string Token = packet.GetString(80);
packet.Skip(21);
string Username = packet.GetString(23);
// TODO
AuthResult Result = Program.AcctMgr.CheckToken(Username, Token);
if (Result != AuthResult.AUTH_SUCCESS)
{
Log.Error("F_CONNECT", "Invalid Token =" + Username);
cclient.Disconnect();
}
else
{
cclient._Account = Program.AcctMgr.GetAccount(Username);
if (cclient._Account == null)
{
Log.Error("F_CONNECT", "Invalid Account =" + Username);
cclient.Disconnect();
}
else
{
//Log.Success("F_CONNECT", "MeId=" + cclient.Id);
GameClient Other = (cclient.Server as TCPServer).GetClientByAccount(cclient, cclient._Account.AccountId);
if (Other != null)
Other.Disconnect();
{
PacketOut Out = new PacketOut((byte)Opcodes.S_CONNECTED);
Out.WriteUInt32(0);
Out.WriteUInt32(Tag);
Out.WriteByte(Program.Rm.RealmId);
Out.WriteUInt32(1);
Out.WritePascalString(Username);
Out.WritePascalString(Program.Rm.Name);
Out.WriteByte(0);
Out.WriteUInt16(0);
cclient.SendPacket(Out);
}
}
}
}
示例2: BuildObjectives
public static void BuildObjectives(PacketOut Out, List<Quest_Objectives> Objs)
{
Out.WriteByte((byte)Objs.Count);
foreach (Quest_Objectives Objective in Objs)
{
Out.WriteByte((byte)Objective.ObjCount);
Out.WritePascalString(Objective.Description);
}
}
示例3: BuildQuestComplete
public static void BuildQuestComplete(PacketOut Out, Quest Q, bool Particular)
{
Out.WritePascalString(Q.Name);
Out.WriteUInt16((UInt16)Q.OnCompletionQuest.Length);
Out.WriteStringBytes(Q.OnCompletionQuest);
if (Particular)
{
Out.WriteUInt16((UInt16)Q.Particular.Length);
Out.WriteStringBytes(Q.Particular);
}
Out.WriteByte(1);
Out.WriteUInt32(Q.Gold);
Out.WriteUInt32(Q.Xp);
}
示例4: SendReinitTime
public void SendReinitTime(Player Plr, ushort Time)
{
PacketOut Out = new PacketOut((byte)Opcodes.F_OBJECTIVE_INFO);
Out.WriteUInt32(Info.Entry);
Out.WriteByte(1);
Out.WriteByte(2);
Out.WriteByte(1);
Out.WriteUInt16(0);
Out.WritePascalString(Info.Name);
Out.WriteUInt16(0);
Out.WriteUInt16(Time); // Time in seconds
Out.WriteUInt16(0);
Out.WriteUInt16(0);
Plr.SendPacket(Out);
}
示例5: BuildPlayerInfo
public static void BuildPlayerInfo(ref PacketOut Out,uint CharId, string Name, bool Online, byte Level, UInt16 Career, UInt16 Zone)
{
Out.WriteUInt32(CharId);
Out.WriteByte(0);
Out.WritePascalString(Name);
Out.WriteByte(0);
Out.WriteByte((byte)(Online ? 1 : 0));
Out.WriteByte((byte)(Online ? 1 : 0));
if (!Online)
return;
Out.WriteByte(Level);
Out.WriteUInt16(0);
Out.WriteUInt16(Career);
Out.WriteUInt16(Zone);
Out.WriteUInt16(1); // Guild Size
Out.WriteByte(0);
}
示例6: SendQuests
public void SendQuests()
{
List<Character_quest> Quests = _Quests.Values.ToList<Character_quest>().FindAll(q => q.Done == false);
PacketOut Out = new PacketOut((byte)Opcodes.F_QUEST_LIST);
Out.WriteByte((byte)Quests.Count);
foreach (Character_quest Quest in Quests)
{
Out.WriteUInt16(Quest.QuestID);
Out.WriteByte(0);
Out.WritePascalString(Quest.Quest.Name);
Out.WriteByte(0);
}
GetPlayer().SendPacket(Out);
}
示例7: SendMessage
public void SendMessage(UInt16 Oid, string NameSender, string Text, SystemData.ChatLogFilters Filter)
{
if (Text.IndexOf("<LINK") >= 0 && Text.IndexOf("ITEM:") > 0)
{
int Pos = Text.IndexOf("ITEM:")+5;
int LastPos = Text.IndexOf(" ",Pos)-1;
string Value = Text.Substring(Pos, LastPos-Pos);
uint ItemId = uint.Parse(Value);
Item_Info Info = WorldMgr.GetItem_Info(ItemId);
if (Info != null)
{
}
}
PacketOut Out = new PacketOut((byte)Opcodes.F_CHAT);
Out.WriteUInt16(Oid);
Out.WriteByte((byte)Filter);
Out.Fill(0, 4);
Out.WritePascalString(NameSender);
Out.WriteByte(0);
Out.WritePascalString(Text);
Out.WriteByte(0);
SendPacket(Out);
}
示例8: SendMeTo
public override void SendMeTo(Player Plr)
{
Log.Success("SendMeTo", "[" + Plr.Name + "] voit : " + Name);
PacketOut Out = new PacketOut((byte)Opcodes.F_CREATE_PLAYER);
Out.WriteUInt16((UInt16)_Client.Id);
Out.WriteUInt16(Oid);
Out.WriteUInt16(_Info.ModelId);
Out.WriteUInt16(_Info.CareerLine);
Out.WriteUInt16((UInt16)Z);
Out.WriteUInt16(Zone.ZoneId);
Out.WriteUInt16((UInt16)X);
Out.WriteUInt16((UInt16)Y);
Out.WriteUInt16(Heading);
Out.WriteByte(_Value.Level); // Level
Out.WriteByte(0); // Level
Out.WriteByte(0);
Out.WriteByte(Faction);
Out.WriteByte(0);
Out.WriteByte(Faction);
Out.Write(_Info.bTraits, 0, _Info.bTraits.Length);
Out.Fill(0, 12);
Out.WriteByte(_Info.Race);
Out.Fill(0, 11);
Out.WritePascalString(_Info.Name);
Out.WritePascalString("");
Out.WriteByte(0);
Out.Fill(0, 4);
Plr.SendPacket(Out);
base.SendMeTo(Plr);
}
示例9: F_CREATE_CHARACTER
public static void F_CREATE_CHARACTER(BaseClient client, PacketIn packet)
{
GameClient cclient = client as GameClient;
CreateInfo Info;
Info.slot = packet.GetUint8();
Info.race = packet.GetUint8();
Info.career = packet.GetUint8();
Info.sex = packet.GetUint8();
Info.model = packet.GetUint8();
Info.NameSize = packet.GetUint16();
packet.Skip(2);
byte[] Traits = new byte[8];
packet.Read(Traits, 0, Traits.Length);
packet.Skip(7);
string Name = packet.GetString(Info.NameSize);
if (!CharMgr.NameIsUsed(Name))
{
CharacterInfo CharInfo = CharMgr.GetCharacterInfo(Info.career);
if (CharInfo == null)
{
Log.Error("ON_CREATE", "Can not find career :" + Info.career);
return;
}
Log.Success("OnCreate", "Creating new Character : " + Name);
Character Char = new Character();
Char.AccountId = cclient._Account.AccountId;
Char.bTraits = Traits;
Char.Career = Info.career;
Char.CareerLine = CharInfo.CareerLine;
Char.ModelId = Info.model;
Char.Name = Name;
Char.Race = Info.race;
Char.Realm = CharInfo.Realm;
Char.RealmId = Program.Rm.RealmId;
Char.Sex = Info.sex;
if (!CharMgr.CreateChar(Char))
{
Log.Error("CreateCharacter", "Hack : can not create more than 10 characters!");
return;
}
Character_items Citm = null;
CharacterInfo_item[] Items = CharMgr.GetCharacterInfoItem(Char.CareerLine);
for (int i = 0; i < Items.Length; ++i)
{
if (Items[i] == null)
continue;
Citm = new Character_items();
Citm.Counts = Items[i].Count;
Citm.CharacterId = Char.CharacterId;
Citm.Entry = Items[i].Entry;
Citm.ModelId = Items[i].ModelId;
Citm.SlotId = Items[i].SlotId;
CharMgr.CreateItem(Citm);
}
Character_value CInfo = new Character_value();
CInfo.CharacterId = Char.CharacterId;
CInfo.Level = 1;
CInfo.Money = 0;
CInfo.Online = false;
CInfo.RallyPoint = CharInfo.RallyPt;
CInfo.RegionId = CharInfo.Region;
CInfo.Renown = 0;
CInfo.RenownRank = 1;
CInfo.RestXp = 0;
CInfo.Skills = CharInfo.Skills;
CInfo.Speed = 100;
CInfo.WorldO = CharInfo.WorldO;
CInfo.WorldX = CharInfo.WorldX;
CInfo.WorldY = CharInfo.WorldY;
CInfo.WorldZ = CharInfo.WorldZ;
CInfo.Xp = 0;
CInfo.ZoneId = CharInfo.ZoneId;
CharMgr.Database.AddObject(CInfo);
Char.Value = new Character_value[1] { CInfo };
}
PacketOut Out = new PacketOut((byte)Opcodes.F_SEND_CHARACTER_RESPONSE);
Out.WritePascalString(cclient._Account.Username);
cclient.SendTCP(Out);
}
示例10: SendLocalizeString
public void SendLocalizeString(string Msg, GameData.Localized_text Type)
{
PacketOut Out = new PacketOut((byte)Opcodes.F_LOCALIZED_STRING);
Out.WriteByte(0);
Out.WriteByte(0);
Out.WriteUInt16(0);
Out.WriteUInt16((ushort)Type);
Out.WriteUInt16(0);
Out.WriteByte(0);
Out.WriteByte(1);
Out.WriteByte(1);
Out.WriteByte(0);
Out.WritePascalString(Msg);
SendPacket(Out);
}
示例11: HandleInteract
public void HandleInteract(Player Plr, InteractMenu Menu)
{
if(Entry == 0)
return;
List<Quest> Starter = WorldMgr.GetStartQuests(Entry);
List<Quest> Finisher = WorldMgr.GetFinishersQuests(Entry);
List<Quest> InProgress = Starter != null ? Starter.FindAll(info => Plr.QtsInterface.HasQuest(info.Entry) && !Plr.QtsInterface.HasDoneQuest(info.Entry)) : null;
string Text = WorldMgr.GetCreatureText(Entry);
if (Starter == null && Finisher == null && Text.Length <= 0 && InProgress == null)
return;
PacketOut Out = new PacketOut((byte)Opcodes.F_INTERACT_RESPONSE);
Out.WriteByte(0);
Out.WriteUInt16(Obj.Oid);
Out.Fill(0, 3);
Out.WriteByte(0x60);
Out.WriteUInt32(0);
Out.WriteUInt16(Plr.Oid);
if (Starter != null)
{
List<Quest> Starts = Starter.FindAll(q => Plr.QtsInterface.CanStartQuest(q) );
Log.Success("QuestInterface", "Handle Interact : Starts=" + Starts.Count);
Out.WriteByte((byte)Starts.Count);
foreach (Quest Q in Starts)
{
Out.WriteByte(0);
Out.WriteUInt16(Q.Entry);
Out.WriteUInt16(0);
Out.WritePascalString(Q.Name);
}
}
else
Out.WriteByte(0);
if (Finisher != null)
{
List<Quest> Finishs = Finisher.FindAll(q => Plr.QtsInterface.CanEndQuest(q));
Log.Success("QuestInterface", "Handle Interact : Finishs=" + Finishs.Count);
Out.WriteByte((byte)Finishs.Count);
foreach (Quest Q in Finishs)
{
Out.WriteByte(0);
Out.WriteUInt16(Q.Entry);
Out.WritePascalString(Q.Name);
}
}
else if (InProgress != null)
{
Log.Success("QuestInterface", "Handle Interact : InProgress=" + InProgress.Count);
Out.WriteByte((byte)InProgress.Count);
foreach (Quest Q in InProgress)
{
Out.WriteByte(0);
Out.WriteUInt16(Q.Entry);
Out.WritePascalString(Q.Name);
}
}
else
Out.WriteByte(0);
Log.Info("QTS", "Text=" + Text);
Out.WriteUInt16((ushort)Text.Length);
Out.WriteStringBytes(Text);
Out.WriteByte(0);
Plr.SendPacket(Out);
}
示例12: F_CREATE_CHARACTER
static public void F_CREATE_CHARACTER(BaseClient client, PacketIn packet)
{
GameClient cclient = client as GameClient;
CreateInfo Info;
Info.slot = packet.GetUint8();
Info.race = packet.GetUint8();
Info.career = packet.GetUint8();
Info.sex = packet.GetUint8();
Info.model = packet.GetUint8();
Info.NameSize = packet.GetUint16();
packet.Skip(2);
byte[] Traits = new byte[8];
packet.Read(Traits, 0, Traits.Length);
packet.Skip(7);
string Name = packet.GetString(Info.NameSize);
if (Name.Length > 2 && !CharMgr.NameIsUsed(Name))
{
CharacterInfo CharInfo = CharMgr.GetCharacterInfo(Info.career);
if (CharInfo == null)
{
Log.Error("ON_CREATE", "Can not find career :" + Info.career);
}
else
{
Log.Success("OnCreate", "New Character : " + Name);
Character Char = new Character();
Char.AccountId = cclient._Account.AccountId;
Char.bTraits = Traits;
Char.Career = Info.career;
Char.CareerLine = CharInfo.CareerLine;
Char.ModelId = Info.model;
Char.Name = Name;
Char.Race = Info.race;
Char.Realm = CharInfo.Realm;
Char.RealmId = Program.Rm.RealmId;
Char.Sex = Info.sex;
Char.FirstConnect = true;
if (!CharMgr.CreateChar(Char))
{
Log.Error("CreateCharacter", "Hack : can not create more than 10 characters!");
}
else
{
Character_item Citm = null;
List < CharacterInfo_item > Items = CharMgr.GetCharacterInfoItem(Char.CareerLine);
foreach (CharacterInfo_item Itm in Items)
{
if (Itm == null)
continue;
Citm = new Character_item();
Citm.Counts = Itm.Count;
Citm.CharacterId = Char.CharacterId;
Citm.Entry = Itm.Entry;
Citm.ModelId = Itm.ModelId;
Citm.SlotId = Itm.SlotId;
CharMgr.CreateItem(Citm);
}
Character_value CInfo = new Character_value();
CInfo.CharacterId = Char.CharacterId;
CInfo.Level = 1;
CInfo.Money = 0;
CInfo.Online = false;
CInfo.RallyPoint = CharInfo.RallyPt;
CInfo.RegionId = CharInfo.Region;
CInfo.Renown = 0;
CInfo.RenownRank = 1;
CInfo.RestXp = 0;
CInfo.Skills = CharInfo.Skills;
CInfo.Speed = 100;
CInfo.WorldO = CharInfo.WorldO;
CInfo.WorldX = CharInfo.WorldX;
CInfo.WorldY = CharInfo.WorldY;
CInfo.WorldZ = CharInfo.WorldZ;
CInfo.Xp = 0;
CInfo.ZoneId = CharInfo.ZoneId;
CharMgr.Database.AddObject(CInfo);
Program.AcctMgr.UpdateRealmCharacters(Program.Rm.RealmId, (uint)CharMgr.Database.GetObjectCount<Character>(" Realm=1"), (uint)CharMgr.Database.GetObjectCount<Character>(" Realm=2"));
Char.Value = CInfo;
PacketOut Out = new PacketOut((byte)Opcodes.F_SEND_CHARACTER_RESPONSE);
Out.WritePascalString(cclient._Account.Username);
cclient.SendPacket(Out);
}
}
}
else
{
//.........这里部分代码省略.........
示例13: BuildItem
public static void BuildItem(ref PacketOut Out,Item Itm,Item_Info Info,ushort SlotId,ushort Count)
{
SlotId = SlotId == 0 ? (Itm == null ? SlotId : Itm.SlotId ) : SlotId;
Count = Count == 0 ? (Itm == null ? Count : Itm.Count) : Count;
Info = Info == null ? (Itm == null ? null : Itm.Info) : Info;
if(SlotId != 0)
Out.WriteUInt16(SlotId);
Out.WriteByte(0);
Out.WriteUInt32((uint)(Info != null ? Info.Entry : 0));
if (Info == null)
return;
Out.WriteUInt16((ushort)Info.ModelId);
Out.Fill(0, 7);
Out.WriteUInt16(Info.SlotId);
Out.WriteByte(Info.Type);
Out.WriteByte(Info.MinRank);
Out.WriteByte((byte)(Info.MinRank + 1)); // 1.3.5
Out.WriteByte(Info.MinRenown); // 1.3.5
Out.WriteByte(Info.MinRenown);
Out.WriteByte(Info.MinRenown);
Out.WriteByte(Info.Rarity);
Out.WriteByte(Info.Bind);
Out.WriteByte(Info.Race);
Out.WriteUInt32(Info.Career);
Out.WriteUInt32(0);
Out.WriteUInt32(Info.SellPrice);
Out.WriteUInt16((UInt16)(Count > 0 ? Count : 1));
Out.WriteUInt16((UInt16)(Count > 0 ? Count : 1));
Out.WriteUInt32(0);
Out.WriteUInt32(Info.Skills);
Out.WriteUInt16(Info.Dps > 0 ? Info.Dps : Info.Armor);
Out.WriteUInt16(Info.Speed);
Out.WritePascalString(Info.Name);
Out.WriteByte((byte)Info._Stats.Count);
foreach (KeyValuePair<byte, UInt16> Key in Info._Stats)
{
Out.WriteByte(Key.Key);
Out.WriteUInt16(Key.Value);
Out.Fill(0, 5);
}
Out.WriteByte(0);
Out.WriteByte(0); // SpellCounts
// (uint32)Entry, uint16 X, uint16 Y
Out.WriteByte(0); // Artisana Info , 3 bytes pour chaque artisana
Out.WriteByte(0);
Out.WriteByte(Info.TalismanSlots);
for (int i = 0; i < Info.TalismanSlots; ++i)
Out.WriteUInt32(0); // Entry;
Out.WritePascalString(Info.Description);
Out.WriteByte(0);
Out.WriteByte(0);
Out.WriteByte(0);
Out.WriteByte(0);
Out.WriteUInt16(0x0302);
Out.Fill(0, 8);
Out.WriteByte(0); // Type , Culture, etc etc
Out.WriteByte(0); // Type, Recipian , Soil , etc etc
Out.Fill(0, 11);
}
示例14: SendMeTo
public override void SendMeTo(Player Plr)
{
PacketOut Out = new PacketOut((byte)Opcodes.F_CREATE_STATIC);
Out.WriteUInt16(Oid);
Out.WriteUInt16(0);
Out.WriteUInt16((UInt16)Spawn.WorldO);
Out.WriteUInt16((UInt16)Spawn.WorldZ);
Out.WriteUInt32((UInt32)Spawn.WorldX);
Out.WriteUInt32((UInt32)Spawn.WorldY);
Out.WriteUInt16((ushort)Spawn.DisplayID);
Out.WriteUInt16(Spawn.Proto.GetUnk(0));
Out.WriteUInt16(Spawn.Proto.GetUnk(1));
Out.WriteUInt16(Spawn.Proto.GetUnk(2));
Out.WriteByte(0);
Out.WriteUInt16(Spawn.Proto.GetUnk(3));
Out.Fill(0, 5);
Out.WriteUInt16(Spawn.Proto.GetUnk(4));
Out.WriteUInt16(Spawn.Proto.GetUnk(5));
Out.WriteUInt32(0);
Out.WritePascalString(Name);
Out.WriteByte(0);
Plr.SendPacket(Out);
base.SendMeTo(Plr);
}
示例15: SendCurrentStage
public void SendCurrentStage(Player Plr)
{
PacketOut Out = new PacketOut((byte)Opcodes.F_OBJECTIVE_INFO);
Out.WriteUInt32(Info.Entry);
Out.WriteByte(0); // Type
Out.WriteByte(Info.Type);
Out.WriteByte(Info.Type); // Forteresse, rien du tout ,etc
Out.WriteUInt16(0);
Out.WritePascalString(Info.Name);
Out.WriteByte(1);
Out.WriteUInt16(0); // Time in second
Out.WriteUInt32(0x034B0201);
Out.WriteByte(1);
Out.WriteByte(0);
Out.WriteByte(1);
Out.WriteUInt16(0);
Out.WriteByte(0);
Out.WritePascalString("Un Nom");
Out.WriteByte(0);
Out.WriteByte(0);
Out.WriteStringToZero("Stage III");
Out.WritePascalString("Test d'un message quelque soit");
Out.WriteUInt16(0);
Out.WriteUInt16(0x012C);
Out.WriteUInt32(0x9E);
Out.WriteUInt32(0);
Out.WriteByte(0x48);
Out.WriteUInt32(0);
//Out.WriteHexStringBytes(Str.Replace(" ", string.Empty));
Plr.SendPacket(Out);
}