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); }
static public void F_CONNECT(Connection conn, PacketIn packet) { Log.Debug("F_CONNECT"); packet.Skip(8); UInt32 Tag = packet.GetUint32(); string Token = packet.GetString(80); packet.Skip(21); string Username = packet.GetString(23); Log.Debug("New Connection : " + Token + ",User="******"Emulator"); Out.WriteByte(0); Out.WriteUInt16(0); conn.SendTCP(Out); }
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); }
public void SendFlagInfo(Player plr) { PacketOut Out = new PacketOut((byte)Opcodes.F_OBJECTIVE_INFO); Out.WriteUInt32((uint)ObjectiveID); Out.WriteByte(0); Out.WriteByte((byte)OwningRealm); Out.WriteByte(1); Out.WriteUInt16(0); Out.WritePascalString(ObjectiveName); Out.WriteByte(2); Out.WriteUInt32(0x0000348F); Out.WriteUInt32(0x0000FF00); if (OwningRealm == 0) { Out.WritePascalString("Capturing"); } else if ((int)plr.Realm == OwningRealm) { Out.WritePascalString("Defend"); } else { Out.WritePascalString("Attack"); } Out.WriteByte(0); Out.WritePascalString(""); // Tooltip text Out.Fill(0, 12); Out.WriteUInt16(0x3101); Out.Fill(0, 3); plr.SendPacket(Out); }
public void BuildInteract(Player plr, Creature crea, PacketOut Out) { List <Quest> starter = crea.Spawn.Proto.StartingQuests; List <Quest> finisher = crea.Spawn.Proto.FinishingQuests; List <Quest> inProgress = starter != null?starter.FindAll(info => plr.QtsInterface.HasQuest(info.Entry) && !plr.QtsInterface.HasDoneQuest(info.Entry)) : null; Out.WriteUInt32(0); Out.WriteUInt16(plr.Oid); if (starter != null) { List <Quest> starts = starter.FindAll(q => plr.QtsInterface.CanStartQuest(q)); 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)); 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) { 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); } }
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(0);// this was 1// setting this at 0 removes the server population box Out.WritePascalString(Username); Out.WritePascalString(Program.Rm.Name); Out.WriteByte(0); Out.WriteUInt16(0); cclient.SendPacket(Out); } } } }
private void SetTimerState(bool active) { PacketOut Out; EvtInterface.RemoveEvent(TimerUp); if (!active) { Out = new PacketOut((byte)Opcodes.F_OBJECTIVE_UPDATE); Out.WriteUInt32(0x1BA0); Out.WriteHexStringBytes("0300000016560100000000"); } else { Out = new PacketOut((byte)Opcodes.F_OBJECTIVE_INFO); Out.WriteUInt32(0x1BA0); Out.WriteHexStringBytes("000001000000020000167C00"); Out.WriteByte((byte)_capturePoints.Count); foreach (CapturePoint c in _capturePoints) { Out.WriteHexStringBytes("000001000000"); Out.WritePascalString(c.ObjectiveName); } Out.WriteHexStringBytes("FF00"); Out.WritePascalString("Pacify all of the Trolls!"); Out.WriteByte(0); Out.WritePascalString("These are the areas that Destruction controls. They can only be claimed while holding the Troll Pacifier located at the top of Stone Troll Hill."); // Timer Out.WriteUInt32(60); // Timer Out.WriteUInt32(60); Out.WriteUInt32(0); Out.WriteByte(0); Out.WriteUInt32(0); EvtInterface.AddEvent(TimerUp, 60000, 1); } for (int i = 0; i < 2; ++i) { foreach (Player plr in Players[i]) { plr.SendPacket(Out); } } }
public void SendFlagInfo(Player plr) { PacketOut Out = new PacketOut((byte)Opcodes.F_OBJECTIVE_INFO); Out.WriteUInt32((uint)ObjectiveID); Out.WriteByte(0); Out.WriteByte((byte)Owner); Out.WriteByte(1); Out.WriteUInt16(0); Out.WritePascalString(ObjectiveName); Out.WriteByte(2); Out.WriteUInt32(0x0000348F); Out.WriteUInt32(0x0000FF00); if ((int)plr.Realm == HoldOwner) { Out.WritePascalString("Maintain control of " + ObjectiveName); } else { Out.WritePascalString("Interact with the flag to capture " + ObjectiveName + "!"); } Out.WriteByte(0); if ((int)plr.Realm == HoldOwner) { Out.WritePascalString("Your realm controls " + ObjectiveName + "."); } else { Out.WritePascalString("Fight for control of " + ObjectiveName + "!"); } if (HoldStartTime > 0) { Out.WriteUInt32(60); //total var remaining = 60 - ((TCPManager.GetTimeStampMS() - HoldStartTime) / 1000); Out.WriteUInt32((byte)remaining); } else { Out.WriteUInt32(0); Out.WriteUInt32(0); } Out.Fill(0, 4); Out.WriteUInt16(0x3101); Out.Fill(0, 3); plr.SendPacket(Out); }
public override void SendMeTo(Player Plr) { if (Plr == null || Plr.IsDisposed || Plr.Client == null) { return; } if (IsDisposed || Client == null) { return; } 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(0); // Level Out.WriteByte(_Value.Level); // Level Out.WriteByte(0x2B); Out.WriteByte((byte)(Faction + (IsDead ? 1 : 0))); // Faction Out.WriteByte(0); Out.WriteByte(0); // ? Out.Write(_Info.bTraits, 0, _Info.bTraits.Length); Out.Fill(0, 12); Out.WriteByte(_Info.Race); Out.WriteByte(0); //sometimes 1 Out.WriteByte(0); // health/ap? Out.WriteByte(PctHealth); Out.Fill(0, 8); Out.WritePascalString(_Info.Name); Out.WritePascalString(""); // suffix. title? Out.WritePascalString(""); // guild name Out.Fill(0, 4); Plr.SendPacket(Out); base.SendMeTo(Plr); }
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); Log.Debug("Connect", "Connexion avec : " + Token + ",User="******"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(0); Out.WritePascalString(Username); Out.WritePascalString(Program.Rm.Name); Out.WriteByte(0); Out.WriteUInt16(0); cclient.SendTCP(Out); } } }
public void SendQuest(Character_quest cQuest) { if (cQuest == null) { Log.Error("QuestsInterface", "SendQuest CQuest == null"); return; } PacketOut packet = new PacketOut((byte)Opcodes.F_QUEST_INFO); packet.WriteUInt16(cQuest.QuestID); packet.WriteByte(cQuest.Quest.Type); // Quest Type (database is wrong) BuildQuestHeader(packet, GetPlayer(), cQuest.Quest, true); Dictionary <Item_Info, uint> rewards = GenerateRewards(cQuest.Quest, GetPlayer()); packet.WriteByte(cQuest.Quest.ChoiceCount); packet.WriteByte(0); packet.WriteByte((byte)rewards.Count); foreach (KeyValuePair <Item_Info, uint> kp in rewards) { Item.BuildItem(ref packet, null, kp.Key, null, 0, (ushort)kp.Value); } packet.WriteByte(0); BuildObjectives(packet, cQuest._Objectives); List <Quest_Map> SortedMaps = cQuest.Quest.Maps.OrderBy(x => x.Entry).ThenByDescending(x => x.Id).ToList(); foreach (Quest_Map map in SortedMaps) { packet.WriteByte(map.Id); packet.WritePascalString(map.Name); packet.WritePascalString(map.Description); packet.WriteUInt16(map.ZoneId); packet.WriteUInt16(map.Icon); packet.WriteUInt16(map.X); packet.WriteUInt16(map.Y); packet.WriteUInt16(map.Unk); packet.WriteByte(map.When); } packet.WriteByte(0); GetPlayer().SendPacket(packet); }
public void SendInited() { PacketOut Out = new PacketOut((byte)Opcodes.S_PLAYER_INITTED); Out.WriteUInt16(_ObjectId); Out.WriteUInt16(0); Out.WriteUInt32((uint)_Info.CharacterId); Out.WriteUInt16((ushort)_Value.WorldZ); Out.WriteUInt16(0); Out.WriteUInt32((uint)_Value.WorldX); Out.WriteUInt32((uint)_Value.WorldY); Out.WriteUInt16((ushort)_Value.WorldO); Out.WriteByte(0); Out.WriteByte((byte)Realm); Out.Fill(0, 5); // ?? Out.WriteByte((byte)Zone.Info.Region); Out.WriteUInt16(1); Out.WriteByte(0); Out.WriteByte(_Info.Career); Out.Fill(0, 6); Out.WritePascalString(Program.Rm.Name); Out.Fill(0, 3); SendPacket(Out); /* PacketOut Out = new PacketOut((byte)Opcodes.S_PLAYER_INITTED); * Out.WriteHexStringBytes("00CA00000028D5BF1D7F0000000CF824000CAFC7051700020000000000080001001A000000000000084261646C616E6473000000"); * SendPacket(Out); */ }
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); }
static public void BuildQuestInProgress(PacketOut Out, Quest Q, bool Particular) { Out.WritePascalString(Q.Name); Out.WriteUInt16((UInt16)Q.ProgressText.Length); Out.WriteStringBytes(Q.ProgressText); Out.WriteByte(1); }
}// PQ RESTART TIMER 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(1);// is 1 // why set as 2 ? Out.WriteByte(1); Out.WriteUInt16(0); Out.WritePascalString(Info.Name); // 19 Out.WriteUInt16(0); Out.WriteUInt16(Time); // Time in seconds Out.WriteUInt16(0); Out.WriteUInt16(0); Plr.SendPacket(Out); { if (Stage.Objectives.First().Objective.Guid == (ushort)0x052E)//0x032B)// =811 { Out = new PacketOut((byte)Opcodes.F_ANIMATION); } Out.WriteUInt16((ushort)Oid); //Oid);// 0280// ObjectID Out.WriteByte(0); // 0= on 1 = off Out.WriteByte((byte)0x44); Out.WriteUInt16((ushort)0); Plr.SendPacket(Out); } }
public void SendInited() { PacketOut Out = new PacketOut((byte)Opcodes.S_PLAYER_INITTED); Out.WriteUInt16(_ObjectId); Out.WriteUInt16(0); Out.WriteUInt32((uint)_Info.CharacterId); Out.WriteUInt16((ushort)_Value.WorldZ); Out.WriteUInt16(0); Out.WriteUInt32((uint)_Value.WorldX); Out.WriteUInt32((uint)_Value.WorldY); Out.WriteUInt16((ushort)_Value.WorldO); Out.WriteByte(0); Out.WriteByte((byte)Realm); Out.WriteUInt16(0); //(ushort)(Zone.Region.RegionId < 18 ? 0 : 1)); Out.WriteUInt16(0); //(ushort)(Zone.Region.RegionId < 18 ? 0 : 57)); // some kind of bitwise flag? Out.WriteUInt16((ushort)Zone.Info.Region); // 01 04 Out.WriteUInt16((ushort)1); // instance id // 1D 57 Out.WriteByte(0); Out.WriteByte(_Info.Career); Out.Fill(0, 6); Out.WritePascalString(Program.Rm.Name); Out.Fill(0, 3); SendPacket(Out); }
/* * SendUpdateLastNameSuccess */ private static void SendUpdateLastNameSuccess(Player plr) { PacketOut Out = new PacketOut((byte)Opcodes.F_UPDATE_LASTNAME, 32); Out.WriteUInt16(plr.Oid); Out.WritePascalString(plr.CrrInterface.ExperimentalMode ? plr.Info.Surname + "*" : plr.Info.Surname); plr.SendPacket(Out); }
public void SendQuest(Character_quest CQuest) { if (CQuest == null) { Log.Error("QuestsInterface", "SendQuest CQuest == null"); return; } PacketOut Packet = new PacketOut((byte)Opcodes.F_QUEST_INFO); Packet.WriteUInt16(CQuest.QuestID); Packet.WriteByte(0); // Quest Type (database is wrong) BuildQuestHeader(Packet, CQuest.Quest, true); Dictionary <Item_Info, uint> Rewards = GenerateRewards(CQuest.Quest, GetPlayer()); Packet.WriteByte(CQuest.Quest.ChoiceCount); Packet.WriteByte(0); Packet.WriteByte((byte)Rewards.Count); foreach (KeyValuePair <Item_Info, uint> Kp in Rewards) { Item.BuildItem(ref Packet, null, Kp.Key, 0, (ushort)Kp.Value); } Packet.WriteByte(0); BuildObjectives(Packet, CQuest._Objectives); foreach (Quest_Map Map in CQuest.Quest.Maps) { Packet.WriteByte(Map.Id); Packet.WritePascalString(Map.Name); Packet.WritePascalString(Map.Description); Packet.WriteUInt16(Map.ZoneId); Packet.WriteUInt16(Map.Icon); Packet.WriteUInt16(Map.X); Packet.WriteUInt16(Map.Y); Packet.WriteUInt16(Map.Unk); Packet.WriteByte(Map.When); } Packet.WriteByte(0); GetPlayer().SendPacket(Packet); }
/// <summary> /// Sends the flag object to given player. /// </summary> /// <param name="plr">Player that entered the objective area</param> public override void SendMeTo(Player plr) { var Out = new PacketOut((byte)Opcodes.F_CREATE_STATIC, 64); Out.WriteUInt16(Oid); Out.WriteUInt16(0); Out.WriteUInt16(_o); Out.WriteUInt16(_z); Out.WriteUInt32(_x); Out.WriteUInt32(_y); ushort displayId; switch (OwningRealm) { case Realms.REALMS_REALM_NEUTRAL: displayId = 3442; break; case Realms.REALMS_REALM_ORDER: displayId = 3443; break; case Realms.REALMS_REALM_DESTRUCTION: displayId = 3438; break; default: displayId = 3442; break; } Out.WriteUInt16(displayId); Out.WriteUInt16(0x1E); Out.WriteUInt16(0); Out.WriteUInt16(0); Out.WriteByte(0); Out.WriteUInt16(0); // Write 4 here to set interactable Out.WriteByte(0); Out.WriteUInt16(0); Out.WriteByte(0); Out.WriteByte(100); Out.WriteUInt16(0); Out.WriteUInt16(0); Out.WriteUInt32(0); Out.WritePascalString("Battlefield Objective"); Out.WriteByte(0); plr.SendPacket(Out); // does nothing : base.SendMeTo(plr); }
public void SendDialog(UInt16 Type, string Text) { PacketOut Out = new PacketOut((byte)Opcodes.F_SHOW_DIALOG); Out.WriteUInt16(Type); Out.WriteByte(0); Out.WritePascalString(Text); SendPacket(Out); }
static public 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); } }
public void SendQuest(Character_quest CQuest) { if (CQuest == null) { Log.Error("QuestsInterface", "SendQuest CQuest == null"); return; } PacketOut Packet = new PacketOut((byte)Opcodes.F_QUEST_INFO); Packet.WriteUInt16(CQuest.QuestID); Packet.WriteByte(0); BuildQuestHeader(Packet, CQuest.Quest, true); Dictionary <Item_Info, uint> Rewards = GenerateRewards(CQuest.Quest, GetPlayer()); Packet.WriteByte(CQuest.Quest.ChoiceCount); Packet.WriteByte(0); Packet.WriteByte((byte)Rewards.Count); foreach (KeyValuePair <Item_Info, uint> Kp in Rewards) { Item.BuildItem(ref Packet, null, Kp.Key, 0, (ushort)Kp.Value); } Packet.WriteByte(0); BuildObjectives(Packet, CQuest._Objectives); Packet.WriteByte(1); Packet.WritePascalString(CQuest.Quest.Name); Packet.WritePascalString("Return to your giver"); Packet.WriteUInt16(0x006A); Packet.WriteUInt16(0x046D); Packet.WriteUInt16(0x4D9E); Packet.WriteUInt16(0xCB65); Packet.Fill(0, 18); GetPlayer().SendPacket(Packet); }
public void SendObjectiveInfo(Player plr) { PacketOut Out = new PacketOut((byte)Opcodes.F_OBJECTIVE_INFO, 64); Out.WriteUInt32(ObjectiveID); Out.WriteByte(0); Out.WriteByte((byte)OwningRealm); Out.WriteByte(1); Out.WriteUInt16(0); Out.WritePascalString(ObjectiveName); Out.WriteByte(2); Out.WriteUInt32(0x0000348F); Out.WriteUInt32(0x0000FF00); if (plr.Realm == OwningRealm) { Out.WritePascalString(_holdText); } else { Out.WritePascalString(_captureText); } Out.WriteByte(0); if (plr.Realm == OwningRealm) { Out.WritePascalString(_holdDesc); } else { Out.WritePascalString(_captureDesc); } uint timerend = (uint)(CountdownTimerEnd > TCPManager.GetTimeStamp() ? CountdownTimerEnd - TCPManager.GetTimeStamp() : 0); Out.WriteUInt32(timerend); Out.WriteUInt32(timerend); Out.Fill(0, 9); plr.SendPacket(Out); }
public override void SendMeTo(Player plr) { PacketOut Out = new PacketOut((byte)Opcodes.F_CREATE_STATIC, 42 + ObjectiveName.Length); Out.WriteUInt16(Oid); Out.WriteUInt16(0); Out.WriteUInt16(Heading); Out.WriteUInt16((ushort)_z); Out.WriteUInt32((uint)_x); Out.WriteUInt32((uint)_y); int displayId = 3442; if (OwningRealm == 0) { displayId = 3442; } else if (OwningRealm == 1) { displayId = 3443; } else { displayId = 3438; } Out.WriteUInt16((ushort)displayId); Out.WriteUInt16(0x1E00); Out.WriteUInt16(0); Out.WriteUInt16(0); Out.WriteByte(0); // flags Out.WriteUInt16(0x21); Out.WriteByte(0); Out.WriteUInt16(0); Out.WriteByte(0); Out.WriteByte(100); Out.WriteUInt16(0); Out.WriteUInt16(0); Out.WriteUInt32(0); Out.WritePascalString(ObjectiveName); Out.WriteByte(0); plr.SendPacket(Out); base.SendMeTo(plr); }
public override void SendMeTo(Player Plr) { // Log.Info("GO", "go = " + Name + " Oid = " + Oid + " X= " + Spawn.WorldX + " Y= " + Spawn.WorldY + " Z= " + Spawn.WorldZ + " DoorId= " + Spawn.DoorId); PacketOut Out = new PacketOut((byte)Opcodes.F_CREATE_STATIC); Out.WriteUInt16(Oid); Out.WriteUInt16((byte)(DoorOpen ? 1 : Spawn.DoorOpen)); 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.GetUnk(0)); Out.WriteUInt16(Spawn.GetUnk(1)); Out.WriteUInt16(Spawn.GetUnk(2)); Out.WriteByte(Spawn.Unk1); int flags = Spawn.GetUnk(3); Loot Loots = LootsMgr.GenerateLoot(this, Plr); if ((Loots != null && Loots.IsLootable()) || (Plr.QtsInterface.GetPublicQuest() != null) || Plr.QtsInterface.GameObjectNeeded(Spawn.Entry) || Spawn.DoorId != 0) { flags = flags | 4; } Out.WriteUInt16((ushort)flags); Out.WriteByte(Spawn.Unk2); Out.WriteUInt32(Spawn.Unk3); Out.WriteUInt16(Spawn.GetUnk(4)); Out.WriteUInt16(Spawn.GetUnk(5)); Out.WriteUInt32(Spawn.Unk4); Out.WritePascalString(Name); if (Spawn.DoorId != 0) { Out.WriteByte(0x04); Out.WriteUInt32((uint)(Spawn.DoorId)); } else { Out.WriteByte(0x00); } Plr.SendPacket(Out); base.SendMeTo(Plr); }
public override void SendMeTo(Player plr) { if (HeldState == EHeldState.Carried || HeldState == EHeldState.Inactive) { /*if (plr != null) * Log.Info("SendMeTo", "Sending to " + plr.Name + " failed: state is "+Enum.GetName(typeof(EHeldState), HeldState)); * else * Log.Info("SendMeTo", "Sending to all failed: state is "+Enum.GetName(typeof(EHeldState), HeldState));*/ return; } /*if (plr != null) * Log.Info("SendMeTo", "Sending to " + plr.Name); * else * Log.Info("SendMeTo", "Sending to all");*/ PacketOut Out = new PacketOut((byte)Opcodes.F_CREATE_STATIC); Out.WriteUInt16(Oid); Out.WriteUInt16(VfxState); Out.WriteUInt16(Heading); Out.WriteUInt16((ushort)WorldPosition.Z); Out.WriteUInt32((uint)WorldPosition.X); Out.WriteUInt32((uint)WorldPosition.Y); Out.WriteUInt16(HeldState == EHeldState.Ground ? GroundModelId : HomeModelId); Out.WriteByte(0x1E); Out.WriteByte(0); Out.WriteUInt16(0); Out.WriteUInt16(0x1C23); Out.WriteByte(0); // flags Out.WriteUInt16(0x24); Out.WriteByte(0); Out.WriteUInt16(0); Out.WriteByte(0); Out.WriteByte(100); Out.WriteUInt32(0xAB942AEC); Out.WriteUInt32(0); Out.WritePascalString(name); Out.WriteByte(0); plr.SendPacket(Out); base.SendMeTo(plr); }
// Change "Character_Objectives" for "Character_InProgressObjectives" for show Quest Objectives in F_QUEST_LIST static public void BuildObjectives(PacketOut Out, List <Character_InProgressObjectives> Objs) { Out.WriteByte((byte)Objs.Count); foreach (Character_InProgressObjectives Objective in Objs) { Out.WriteByte((byte)Objective.Count); Out.WriteByte((byte)Objective.Objective.ObjCount); Out.WriteUInt16(0); Out.WritePascalString(Objective.Objective.Description); } }
public static void BuildObjectives(PacketOut Out, List <Quest_Objectives> objs) { Out.WriteByte((byte)objs.Count); List <Quest_Objectives> SortedObjectives = objs.OrderBy(x => x.Entry).ThenBy(x => x.Guid).ToList(); foreach (Quest_Objectives objective in SortedObjectives) { Out.WriteByte((byte)objective.ObjCount); Out.WritePascalString(objective.Description); } }
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); }
static public void BuildQuestHeader(PacketOut Out, Quest Q, bool Particular) { Out.WritePascalString(Q.Name); Out.WriteUInt16((UInt16)Q.Description.Length); Out.WriteStringBytes(Q.Description); if (Particular) { Out.WriteUInt16((UInt16)Q.Particular.Length); Out.WriteStringBytes(Q.Particular); } Out.WriteByte(1); Out.WriteUInt32(Q.Gold); Out.WriteUInt32(Q.Xp); }