public static void SendDissmissResultResponse(Asda2Battleground client, DismissPlayerResult status, short targetSessId, int targetAccId) { using (var packet = new RealmPacketOut(RealmServerOpCode.DissmissResult)) //6190 { packet.WriteByte((byte)status); //{status}default value : 0 Len : 1 packet.WriteInt16(targetSessId); //{targetSessId}default value : 15 Len : 2 packet.WriteInt32(targetAccId); //{accId}default value : 361343 Len : 4 client.Send(packet, addEnd: true); } }
public static void SendWarChatResponseResponse(Asda2Battleground btlgrnd, string senderName, string message, int factionId, Locale locale) { using (var packet = new RealmPacketOut(RealmServerOpCode.WarChatResponse)) //6719 { packet.WriteByte(3); //value name : unk5 default value : 3Len : 1 packet.WriteFixedAsciiString(senderName, 20); //{senderName}default value : Len : 20 packet.WriteFixedAsciiString(message, 200, locale); //{message}default value : Len : 200 btlgrnd.Send(packet, true, (short?)factionId, locale); } }
public static void SendWarChatResponseResponse(Asda2Battleground btlgrnd, string senderName, string message, int factionId, Locale locale) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.WarChatResponse)) { packet.WriteByte(3); packet.WriteFixedAsciiString(senderName, 20, Locale.Start); packet.WriteFixedAsciiString(message, 200, locale); btlgrnd.Send(packet, true, new short?((short)factionId), locale); } }
public static void SendQuestionDismissPlayerOrNotResponse(Asda2Battleground client, Character initer, Character target) { using (var packet = new RealmPacketOut(RealmServerOpCode.QuestionDismissPlayerOrNot)) //6188 { packet.WriteInt16(initer.SessionId); //{initerSessId}default value : 0 Len : 2 packet.WriteInt16(initer.Asda2FactionId); //{factionId}default value : 1 Len : 2 packet.WriteInt16(target.SessionId); //{targetSessId}default value : 15 Len : 2 packet.WriteInt32(target.AccId); //{dismissTargetAccId}default value : 361343 Len : 4 client.Send(packet, true, initer.Asda2FactionId); } }
public static void SendDissmissResultResponse(Asda2Battleground client, DismissPlayerResult status, short targetSessId, int targetAccId) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.DissmissResult)) { packet.WriteByte((byte)status); packet.WriteInt16(targetSessId); packet.WriteInt32(targetAccId); client.Send(packet, true, new short?(), Locale.Any); } }
public static void SendQuestionDismissPlayerOrNotResponse(Asda2Battleground client, Character initer, Character target) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.QuestionDismissPlayerOrNot)) { packet.WriteInt16(initer.SessionId); packet.WriteInt16(initer.Asda2FactionId); packet.WriteInt16(target.SessionId); packet.WriteInt32(target.AccId); client.Send(packet, true, new short?(initer.Asda2FactionId), Locale.Any); } }
public static void SendCharacterHasLeftWarResponse(Asda2Battleground btlgrnd, int leaverAccId, byte leaverWarId, string leaverName, int factionId) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.CharacterHasLeftWar)) { packet.WriteByte(0); packet.WriteInt32(leaverAccId); packet.WriteByte(leaverWarId); packet.WriteFixedAsciiString(leaverName, 20, Locale.Start); btlgrnd.Send(packet, true, new short?((short)factionId), Locale.Any); } }
public static void SendCharacterHasLeftWarResponse(Asda2Battleground btlgrnd, int leaverAccId, byte leaverWarId, string leaverName, int factionId) { using (var packet = new RealmPacketOut(RealmServerOpCode.CharacterHasLeftWar)) //6721 { packet.WriteByte(0); //value name : unk5 default value : 0Len : 1 packet.WriteInt32(leaverAccId); //{accId}default value : -1 Len : 4 packet.WriteByte(leaverWarId); //{warId}default value : 10 Len : 1 packet.WriteFixedAsciiString(leaverName, 20); //{lefterName}default value : Len : 20 btlgrnd.Send(packet, true, (short?)factionId); } }
public static void SendSomeOneKilledSomeOneResponse(Asda2Battleground btlgrnd, int killerAccId, int killerWarId, string killerName, string victimName) { using (var packet = new RealmPacketOut(RealmServerOpCode.SomeOneKilledSomeOne)) //6730 { packet.WriteInt32(killerAccId); //{killerAccId}default value : 315044 Len : 4 packet.WriteInt32(killerWarId); //{killerWarId}default value : 8 Len : 4 packet.WriteInt32(1); //value name : unk7 default value : 1Len : 4 packet.WriteFixedAsciiString(killerName, 20); //{killerName}default value : Len : 20 packet.WriteFixedAsciiString(victimName, 20); //{vicimName}default value : Len : 20 btlgrnd.Send(packet, addEnd: true); } }
public static void SendHowManyPeopleInWarTeamsResponse(Asda2Battleground btlgrnd, Character chr = null) { using (var packet = new RealmPacketOut(RealmServerOpCode.HowManyPeopleInWarTeams)) //6742 { packet.WriteInt16(btlgrnd.LightTeam.Count); //{light}default value : 20 Len : 2 packet.WriteInt16(btlgrnd.DarkTeam.Count); //{dark}default value : 24 Len : 2 if (chr != null) { chr.Send(packet, addEnd: true); } else { btlgrnd.Send(packet, addEnd: true); } } }
public static void SendTeamPointsResponse(Asda2Battleground btlgrnd, Character chr = null) { using (var packet = new RealmPacketOut(RealmServerOpCode.TeamPoints)) //6729 { packet.WriteInt32(btlgrnd.LightScores); //{light}default value : 106 Len : 4 packet.WriteInt32(btlgrnd.DarkScores); //{dark}default value : 462 Len : 4 if (chr != null) { chr.Send(packet, addEnd: true); } else { btlgrnd.Send(packet, addEnd: true); } } }
public static void SendTeamPointsResponse(Asda2Battleground btlgrnd, Character chr = null) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.TeamPoints)) { packet.WriteInt32(btlgrnd.LightScores); packet.WriteInt32(btlgrnd.DarkScores); if (chr != null) { chr.Send(packet, true); } else { btlgrnd.Send(packet, true, new short?(), Locale.Any); } } }
public static void SendHowManyPeopleInWarTeamsResponse(Asda2Battleground btlgrnd, Character chr = null) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.HowManyPeopleInWarTeams)) { packet.WriteInt16(btlgrnd.LightTeam.Count); packet.WriteInt16(btlgrnd.DarkTeam.Count); if (chr != null) { chr.Send(packet, true); } else { btlgrnd.Send(packet, true, new short?(), Locale.Any); } } }
//todo players on war info //todo dismiss player from war //todo change Capitan //todo ocupation triggers public static void SendWarCurrentActionInfoResponse(Asda2Battleground btlgrnd, BattleGroundInfoMessageType status, Int16 value, Character chr = null, short?factionId = null) { using (var packet = new RealmPacketOut(RealmServerOpCode.WarCurrentActionInfo)) //6728 { packet.WriteByte((byte)status); //{status}default value : 8 Len : 1 packet.WriteInt16(value); //{mins}default value : 0 Len : 2 if (chr == null) { btlgrnd.Send(packet, addEnd: false, asda2FactionId: factionId); } else { chr.Send(packet); } } }
public static void SendWarCurrentActionInfoResponse(Asda2Battleground btlgrnd, BattleGroundInfoMessageType status, short value, Character chr = null, short?factionId = null) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.WarCurrentActionInfo)) { packet.WriteByte((byte)status); packet.WriteInt16(value); if (chr == null) { btlgrnd.Send(packet, false, factionId, Locale.Any); } else { chr.Send(packet, false); } } }
public static void SendSomeOneKilledSomeOneResponse(Asda2Battleground btlgrnd, int killerAccId, int killerWarId, string killerName, string victimName) { Character characterByAccId = WCell.RealmServer.Global.World.GetCharacterByAccId((uint)killerAccId); AchievementProgressRecord progressRecord = characterByAccId.Achievements.GetOrCreateProgressRecord(21U); switch (++progressRecord.Counter) { case 13: characterByAccId.DiscoverTitle(Asda2TitleId.Soldier129); break; case 25: characterByAccId.GetTitle(Asda2TitleId.Soldier129); break; case 75: characterByAccId.DiscoverTitle(Asda2TitleId.Killer130); break; case 100: characterByAccId.GetTitle(Asda2TitleId.Killer130); break; case 500: characterByAccId.DiscoverTitle(Asda2TitleId.Assassin131); break; case 1000: characterByAccId.GetTitle(Asda2TitleId.Assassin131); break; } progressRecord.SaveAndFlush(); using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.SomeOneKilledSomeOne)) { packet.WriteInt32(killerAccId); packet.WriteInt32(killerWarId); packet.WriteInt32(1); packet.WriteFixedAsciiString(killerName, 20, Locale.Start); packet.WriteFixedAsciiString(victimName, 20, Locale.Start); btlgrnd.Send(packet, true, new short?(), Locale.Any); } }
public static void RegisterToWarRequest(IRealmClient client, RealmPacketIn packet) { Asda2Battleground asda2Battleground = Asda2BattlegroundMgr.AllBattleGrounds[ client.ActiveCharacter.MapId == MapId.Alpia ? Asda2BattlegroundTown.Alpia : (client.ActiveCharacter.MapId == MapId.Silaris ? Asda2BattlegroundTown.Silaris : (client.ActiveCharacter.MapId == MapId.Aquaton ? Asda2BattlegroundTown.Aquaton : Asda2BattlegroundTown.Flamio))][0]; if (client.ActiveCharacter.Level < (int)asda2Battleground.MinEntryLevel || client.ActiveCharacter.Level > (int)asda2Battleground.MaxEntryLevel) { Asda2BattlegroundHandler.SendRegisteredToWarResponse(client, RegisterToBattlegroundStatus.WrongLevel); } else if (client.ActiveCharacter.CurrentBattleGround != null) { Asda2BattlegroundHandler.SendRegisteredToWarResponse(client, RegisterToBattlegroundStatus.YouHaveAlreadyRegistered); } else if (asda2Battleground.DissmisedCharacterNames.Contains(client.ActiveCharacter.Name)) { Asda2BattlegroundHandler.SendRegisteredToWarResponse(client, RegisterToBattlegroundStatus.YouCantEnterCauseYouHaveBeenDissmised); } else if (client.ActiveCharacter.Asda2FactionId < (short)0 || client.ActiveCharacter.Asda2FactionId > (short)1) { Asda2BattlegroundHandler.SendRegisteredToWarResponse(client, RegisterToBattlegroundStatus.BattleGroupInfoIsInvalid); } else if (asda2Battleground.Join(client.ActiveCharacter)) { Asda2BattlegroundHandler.SendRegisteredToWarResponse(client, RegisterToBattlegroundStatus.Ok); } else { Asda2BattlegroundHandler.SendRegisteredToWarResponse(client, RegisterToBattlegroundStatus.Fail); client.ActiveCharacter.SendInfoMsg("Sry no more free war places. Try again later."); } }
public static void StartOcupyPointRequest(IRealmClient client, RealmPacketIn packet) { packet.Position += 2; byte num = packet.ReadByte(); if (!client.ActiveCharacter.IsAsda2BattlegroundInProgress || client.ActiveCharacter.MapId != MapId.BatleField) { client.ActiveCharacter.YouAreFuckingCheater("Trying to occupy point while not in war.", 20); } else { Asda2Battleground currentBattleGround = client.ActiveCharacter.CurrentBattleGround; if ((int)num >= currentBattleGround.Points.Count) { client.ActiveCharacter.YouAreFuckingCheater("Trying to occupy unknown war point.", 20); } else { currentBattleGround.Points[(int)num].TryCapture(client.ActiveCharacter); } } }
public static void SendUpdateWarManagerScreenDataResponse(IRealmClient client, Asda2Battleground btlgrnd) { using (var packet = new RealmPacketOut(RealmServerOpCode.UpdateWarManagerScreenData)) //6701 { packet.WriteByte(1); //{status}default value : 1 Len : 1 packet.WriteByte(0); //value name : unk6 default value : 0Len : 1 packet.WriteInt16(btlgrnd.StartTime.Hour); //{startTimeHours}default value : 8 Len : 2 packet.WriteInt16(btlgrnd.StartTime.Minute); //{startTimeMins}default value : 0 Len : 2 packet.WriteInt16(btlgrnd.EndTime.Hour); //{endTimeHours}default value : 8 Len : 2 packet.WriteInt16(btlgrnd.EndTime.Minute); //{endTimeMins}default value : 25 Len : 2 packet.WriteInt16(btlgrnd.AmountOfBattleGroundsInList); //{battlesInListCount}default value : 1 Len : 2 packet.WriteInt16(btlgrnd.LightTeam.Count); //{forLitePeople}default value : 1 Len : 2 packet.WriteInt16(btlgrnd.DarkTeam.Count); //{forDarkPeople}default value : 0 Len : 2 packet.WriteByte(0); //{mustBe0}default value : 0 Len : 1 packet.WriteInt32(0); //{canBe0}default value : 586427422 Len : 4 packet.WriteInt16(btlgrnd.LightWins); //{winWarsLight}default value : 639 Len : 2 packet.WriteInt16(btlgrnd.DarkWins); //{winWarsDark}default value : 548 Len : 2 packet.WriteInt16(btlgrnd.LightLooses); //{lightLoses}default value : 548 Len : 2 packet.WriteInt16(btlgrnd.DarkLooses); //{darkLoses}default value : 639 Len : 2 packet.WriteInt16(btlgrnd.LightWins + btlgrnd.LightLooses); //{totalWars}default value : 1187 Len : 2 packet.WriteByte(0); //{dailyWarsMinusOne}default value : 0 Len : 1 packet.WriteInt16(btlgrnd.MinEntryLevel); //{minEnterLevel}default value : 10 Len : 2 packet.WriteInt16(btlgrnd.MaxEntryLevel); //{maxEnterLevel}default value : 29 Len : 2 packet.WriteByte((byte)btlgrnd.WarType); client.Send(packet, addEnd: true); } }
public static void AddBattleGround(Asda2BattlegroundTown town) { var newBtgrnd = new Asda2Battleground { Town = town }; switch (town) { case Asda2BattlegroundTown.Alpia: newBtgrnd.MinEntryLevel = 10; newBtgrnd.MaxEntryLevel = 29; break; case Asda2BattlegroundTown.Silaris: newBtgrnd.MinEntryLevel = 30; newBtgrnd.MaxEntryLevel = 49; break; case Asda2BattlegroundTown.Flamio: newBtgrnd.MinEntryLevel = 10; newBtgrnd.MaxEntryLevel = 250; break; case Asda2BattlegroundTown.Aquaton: newBtgrnd.MinEntryLevel = 10; newBtgrnd.MaxEntryLevel = 250; break; } var nextStartTimeEntry = GetNextStartTime(town); if (nextStartTimeEntry == null) { World.BroadcastMsg("WarManager", "War system broken, restart server!", Color.Red); return; } newBtgrnd.StartTime = nextStartTimeEntry.Time; newBtgrnd.WarType = nextStartTimeEntry.Type; newBtgrnd.EndTime = newBtgrnd.StartTime.AddMinutes(WarLengthMinutes); newBtgrnd.Points.Add(new Asda2WarPoint() { Id = 0, X = 258, Y = 165, BattleGround = newBtgrnd }); newBtgrnd.Points.Add(new Asda2WarPoint() { Id = 1, X = 211, Y = 218, BattleGround = newBtgrnd }); newBtgrnd.Points.Add(new Asda2WarPoint() { Id = 2, X = 308, Y = 221, BattleGround = newBtgrnd }); newBtgrnd.Points.Add(new Asda2WarPoint() { Id = 3, X = 260, Y = 250, BattleGround = newBtgrnd }); newBtgrnd.Points.Add(new Asda2WarPoint() { Id = 4, X = 209, Y = 284, BattleGround = newBtgrnd }); newBtgrnd.Points.Add(new Asda2WarPoint() { Id = 5, X = 307, Y = 285, BattleGround = newBtgrnd }); newBtgrnd.Points.Add(new Asda2WarPoint() { Id = 6, X = 258, Y = 340, BattleGround = newBtgrnd }); foreach (var asda2WarPoint in newBtgrnd.Points) { asda2WarPoint.OwnedFaction = -1; World.TaskQueue.RegisterUpdatableLater(asda2WarPoint); } AllBattleGrounds[town].Add(newBtgrnd); World.TaskQueue.RegisterUpdatableLater(newBtgrnd); }
public static void SendWarTeamListResponse(Character chr) { Asda2Battleground currentBattleGround = chr.CurrentBattleGround; List <List <Character> > characterListList = new List <List <Character> >(); lock (currentBattleGround.JoinLock) { if (chr.Asda2FactionId == (short)0) { int num = currentBattleGround.LightTeam.Count / 6; if (num == 0) { num = 1; } for (int index = 0; index < num; ++index) { characterListList.Add(currentBattleGround.LightTeam.Values.Skip <Character>(index * 6) .Take <Character>(6).ToList <Character>()); } } else { int num = currentBattleGround.DarkTeam.Count / 6; if (num == 0) { num = 1; } for (int index = 0; index < num; ++index) { characterListList.Add(currentBattleGround.DarkTeam.Values.Skip <Character>(index * 6) .Take <Character>(6).ToList <Character>()); } } foreach (List <Character> characterList in characterListList) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.WarTeamList)) { foreach (Character character in characterList) { packet.WriteByte(character.CurrentBattleGroundId); packet.WriteByte(character.Asda2FactionId); packet.WriteInt16(character.SessionId); packet.WriteInt32(character.AccId); packet.WriteByte(character.CharNum); packet.WriteByte(3); packet.WriteByte(character.Asda2FactionRank); packet.WriteInt16(character.Level); packet.WriteByte(character.ProfessionLevel); packet.WriteByte((byte)character.Archetype.ClassId); packet.WriteByte(character.Guild == null ? 0 : (character.Guild.ClanCrest == null ? 0 : 1)); packet.WriteSkip(character.Guild == null ? Asda2BattlegroundHandler.guildCrest : character.Guild.ClanCrest ?? Asda2BattlegroundHandler.guildCrest); packet.WriteInt16(character.IsInGroup ? 1 : -1); packet.WriteInt16(character.BattlegroundDeathes); packet.WriteInt16(character.BattlegroundKills); packet.WriteInt16(character.BattlegroundActPoints); packet.WriteFixedAsciiString(character.Name, 20, Locale.Start); packet.WriteFixedAsciiString(character.Guild == null ? "" : character.Guild.Name, 17, Locale.Start); packet.WriteInt16((short)character.Asda2Position.X); packet.WriteInt16((short)character.Asda2Position.Y); } chr.Send(packet, false); } } Asda2BattlegroundHandler.SendWarTeamListEndedResponse(chr.Client); } }
public static void AddBattleGround(Asda2BattlegroundTown town) { Asda2Battleground asda2Battleground = new Asda2Battleground() { Town = town }; switch (town) { case Asda2BattlegroundTown.Alpia: asda2Battleground.MinEntryLevel = (byte)10; asda2Battleground.MaxEntryLevel = (byte)29; break; case Asda2BattlegroundTown.Silaris: asda2Battleground.MinEntryLevel = (byte)30; asda2Battleground.MaxEntryLevel = (byte)49; break; case Asda2BattlegroundTown.Flamio: asda2Battleground.MinEntryLevel = (byte)50; asda2Battleground.MaxEntryLevel = (byte)69; break; case Asda2BattlegroundTown.Aquaton: asda2Battleground.MinEntryLevel = (byte)70; asda2Battleground.MaxEntryLevel = (byte)90; break; } Asda2BattlegroundType type; asda2Battleground.StartTime = Asda2BattlegroundMgr.GetNextWarTime(town, out type, DateTime.Now); asda2Battleground.WarType = type; asda2Battleground.EndTime = asda2Battleground.StartTime.AddMinutes(type == Asda2BattlegroundType.Occupation ? (double)Asda2BattlegroundMgr.OccupationDurationMins : (double)Asda2BattlegroundMgr.DeathMatchDurationMins); asda2Battleground.Points.Add(new Asda2WarPoint() { Id = (short)0, X = (short)258, Y = (short)165, BattleGround = asda2Battleground }); asda2Battleground.Points.Add(new Asda2WarPoint() { Id = (short)1, X = (short)211, Y = (short)218, BattleGround = asda2Battleground }); asda2Battleground.Points.Add(new Asda2WarPoint() { Id = (short)2, X = (short)308, Y = (short)221, BattleGround = asda2Battleground }); asda2Battleground.Points.Add(new Asda2WarPoint() { Id = (short)3, X = (short)260, Y = (short)250, BattleGround = asda2Battleground }); asda2Battleground.Points.Add(new Asda2WarPoint() { Id = (short)4, X = (short)209, Y = (short)284, BattleGround = asda2Battleground }); asda2Battleground.Points.Add(new Asda2WarPoint() { Id = (short)5, X = (short)307, Y = (short)285, BattleGround = asda2Battleground }); asda2Battleground.Points.Add(new Asda2WarPoint() { Id = (short)6, X = (short)258, Y = (short)340, BattleGround = asda2Battleground }); foreach (Asda2WarPoint point in asda2Battleground.Points) { point.OwnedFaction = (short)-1; World.TaskQueue.RegisterUpdatableLater((IUpdatable)point); } Asda2BattlegroundMgr.AllBattleGrounds[town].Add(asda2Battleground); World.TaskQueue.RegisterUpdatableLater((IUpdatable)asda2Battleground); }
public static void SendUpdateWarManagerScreenDataResponse(IRealmClient client, Asda2Battleground btlgrnd) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.UpdateWarManagerScreenData)) { packet.WriteByte(1); packet.WriteByte(0); packet.WriteInt16(btlgrnd.StartTime.Hour); packet.WriteInt16(btlgrnd.StartTime.Minute); packet.WriteInt16(btlgrnd.EndTime.Hour); packet.WriteInt16(btlgrnd.EndTime.Minute); packet.WriteInt16(btlgrnd.AmountOfBattleGroundsInList); packet.WriteInt16(btlgrnd.LightTeam.Count); packet.WriteInt16(btlgrnd.DarkTeam.Count); packet.WriteByte(0); packet.WriteInt32(0); packet.WriteInt16(btlgrnd.LightWins); packet.WriteInt16(btlgrnd.DarkWins); packet.WriteInt16(btlgrnd.LightLooses); packet.WriteInt16(btlgrnd.DarkLooses); packet.WriteInt16((int)btlgrnd.LightWins + (int)btlgrnd.LightLooses); packet.WriteByte(0); packet.WriteInt16(btlgrnd.MinEntryLevel); packet.WriteInt16(btlgrnd.MaxEntryLevel); packet.WriteByte((byte)btlgrnd.WarType); client.Send(packet, true); } }