public override void Execute(WorldClient client, CommandParameters parameters) { var mapid = parameters.getShortParamater(0); var cellid = parameters.GetIntParameter(1); var toTeleport = client.Character; if (parameters.Lenght > 2) { var playerName = parameters.GetParameter(2); toTeleport = CharacterTable.GetCharacter(playerName); } if (toTeleport != null) { var NextMap = MapTable.Get(mapid); if (NextMap == null) { client.Send(new ConsoleMessage("Mapid invalide")); return; } toTeleport.Teleport(NextMap, cellid); client.Send(new ConsoleMessage("Teleportation effectuer")); } else { client.Send(new ConsoleMessage("Impossible de trouver le joueur", ConsoleColorEnum.RED)); } }
private static void ProcessEnnemyDeleteRequest(WorldClient Client, string Packet) { int guid = -1; switch (Packet[2]) { case '%': Packet = Packet.Substring(3); Player p = CharacterTable.GetCharacter(Packet); if (p == null || !p.IsOnline()) { Client.Send(new CharacterEnnemyDeleteMessage("Ef")); return; } guid = p.GetClient().Account.ID; break; case '*': Packet = Packet.Substring(3); var cible = Client.Account.Data.EnnemyList.Where(x => x.Value.Equals(Packet)); if (cible != null && cible.Count() > 0) { guid = cible.First().Key; } else { Client.Send(new CharacterEnnemyDeleteMessage("Ef")); return; } var ClientCibled = Network.WorldServer.Clients.First(x => x.Account != null && x.Account.ID == guid); if (ClientCibled.Account == null || ClientCibled.Character == null || !ClientCibled.Character.IsOnline()) { Client.Send(new CharacterEnnemyDeleteMessage("Ef")); return; } guid = ClientCibled.Account.ID; break; default: Packet = Packet.Substring(2); Player Pr = CharacterTable.GetCharacter(Packet); if (Pr == null || !Pr.IsOnline()) { Client.Send(new CharacterEnnemyDeleteMessage("Ef")); return; } guid = Pr.GetClient().Account.ID; break; } if (guid == -1 || !Client.Account.Data.EnnemyList.ContainsKey(guid)) { Client.Send(new CharacterEnnemyDeleteMessage("Ef")); return; } Client.Account.Data.EnnemyList.Remove(guid); Client.Account.Data.Save(); Client.Send(new EnnemyDeleteOkMessage("K")); }
public override void Execute(WorldClient client, CommandParameters parameters) { if (parameters.Lenght > 0) { var spellid = parameters.GetIntParameter(0); var target = client.Character; if (parameters.Lenght > 1) { if (CharacterTable.Contains(parameters.GetParameter(1))) { target = CharacterTable.GetCharacter(parameters.GetParameter(1)); } } if (!target.IsOnline()) { client.Send(new ConsoleMessage("La Cible est deconnecté", ConsoleColorEnum.RED)); return; } if (!SpellTable.Cache.ContainsKey(spellid)) { client.Send(new ConsoleMessage("Impossible de trouver le sort n°" + spellid, ConsoleColorEnum.RED)); return; } target.GetSpellBook().AddSpell(spellid, 6, 25, client); target.Send(new SpellsListMessage(target)); client.Send(new ConsoleMessage("Le sort a été appris", ConsoleColorEnum.GREEN)); } else { client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED)); } }
public override void Execute(WorldClient client, CommandParameters parameters) { if (parameters.Lenght > 1) { try { var targeti = parameters.GetParameter(0); var packet = parameters.getShortParamater(1); var target = CharacterTable.GetCharacter(targeti); if (target == null || !target.IsOnline()) { client.Send(new ConsoleMessage("Cible invalide !", ConsoleColorEnum.RED)); return; } target.Title = packet; target.RefreshOnMap(); client.Send(new ConsoleMessage("Le titre a été modifié avec succès !", ConsoleColorEnum.GREEN)); } catch (FormatException e) { client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED)); } } else { client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED)); } }
private static void ProcessObjectUseRequest(WorldClient Client, string Packet) { int guid = -1; int targetGuid = -1; int targetCell = -1; Player Target = null; try { String[] infos = Regex.Split(Packet.Substring(2), "\\|"); guid = int.Parse(infos[0]); if (infos.Length == 3) { targetCell = int.Parse(infos[2]); } try //try { targetGuid = int.Parse(infos[1]); } catch (Exception e) { targetGuid = -1; }; } catch (Exception e) { Logger.Error(e); return; } if (CharacterTable.GetCharacter(targetGuid) != null) { Target = CharacterTable.GetCharacter(targetGuid); } if (!Client.Character.InventoryCache.hasItemGuid(guid)) { return; } InventoryItemModel obj = InventoryItemTable.getItem(guid); ItemTemplateModel T = obj.Template; if (!T.Criterions.Equals("") && !ConditionParser.validConditions(Client.Character, T.Criterions)) { Client.Send(new ImMessage("119|43")); return; } if (T.ItemType == ItemTypeEnum.ITEM_TYPE_PAIN || T.ItemType == ItemTypeEnum.ITEM_TYPE_VIANDE_COMESTIBLE) { Client.Character.myMap.SendToMap(new MapEmoticoneMessage(Client.Character.ActorId, 17)); } else if (T.ItemType == ItemTypeEnum.ITEM_TYPE_BIERE) { Client.Character.myMap.SendToMap(new MapEmoticoneMessage(Client.Character.ActorId, 18)); } T.applyAction(Client.Character, Target, guid, (short)targetCell); }
public void SendGuildSettingsInfos() { if (this.ID != -1) { var chara = CharacterTable.GetCharacter(this.ID); if (chara != null) { chara.Send(new GuildSettingInformationMessage(this.GuildCache, StringHelper.EncodeBase36(this.Restriction))); } } }
private static void ProcessFollowAll(WorldClient Client, string Packet) { if (Client.GetGameAction(GameActionTypeEnum.GROUP) != null) { var Party = (Client.GetGameAction(GameActionTypeEnum.GROUP) as GameParty).Party; long pGuid2 = -1; if (!long.TryParse(Packet.Substring(3), out pGuid2)) { Client.Send(new BasicNoOperationMessage()); return; } var P2 = CharacterTable.GetCharacter(pGuid2); if (P2 == null || !P2.IsOnline()) { Client.Send(new BasicNoOperationMessage()); return; } if (Packet[2] == '+') { foreach (var T in Party.Players) { if (T.ActorId == Client.Character.ActorId) { continue; } if (T.Follows != null) { T.Follows.Follower.Remove(Client.Character.ActorId); } T.Send(new CharacterFlagMessage(P2)); T.Send(new PartyFlagMessage("+" + P2.ActorId)); T.Follows = P2; P2.Follower.Add(T.ActorId, T); } } else if (Packet[2] == '-') { foreach (var T in Party.Players) { if (T.ActorId == Client.Character.ActorId) { continue; } T.Send(new CharacterDeleteFlagMessage()); T.Send(new PartyFlagMessage("-")); T.Follows = null; P2.Follower.Remove(T.ActorId); } } } }
private static void ProcessPartyRequest(WorldClient Client, string Packet) { Player Target = CharacterTable.GetCharacter(Packet.Substring(2)); if (Target == null || !Target.IsOnline() || Target.isAaway) { Client.Send(new PartyErrorMessage("n")); return; } if (!Target.Client.CanGameAction(World.GameActionTypeEnum.GROUP)) { Client.Send(new PartyErrorMessage("a")); return; } if (!Client.CanGameAction(GameActionTypeEnum.BASIC_REQUEST)) { Client.Send(new BasicNoOperationMessage()); return; } if (!Target.Client.CanGameAction(GameActionTypeEnum.BASIC_REQUEST)) { Client.Send(new PartyErrorMessage("a")); return; } if (Client.GetBaseRequest() != null && Client == Client.GetBaseRequest().Requester) { Client.Send(new BasicNoOperationMessage()); return; } if (Client.IsGameAction(World.GameActionTypeEnum.GROUP) && (Client.GetGameAction(World.GameActionTypeEnum.GROUP) as GameParty).Party.Players.Count == 8) { Client.Send(new PartyErrorMessage("f")); return; } var Request = new PartyRequest(Client, Target.Client); var RequestAction = new GameRequest(Client.GetCharacter(), Request); Client.SetBaseRequest(Request); Target.Client.SetBaseRequest(Request); Client.AddGameAction(RequestAction); Target.Client.AddGameAction(RequestAction); var Message = new PartyRequestMessage(Client.Character.Name, Target.Name); Client.Send(Message); Target.Send(Message); }
private static void ProcessPartyLeave(WorldClient Client, string Packet) { if (!Client.IsGameAction(GameActionTypeEnum.GROUP)) { Client.Send(new BasicNoOperationMessage()); return; } var Party = (Client.GetGameAction(GameActionTypeEnum.GROUP) as GameParty).Party; if (Party == null) { Client.Send(new BasicNoOperationMessage()); return; } if (Packet.Length == 2) { Party.Leave(Client.Character); Client.Send(new PartyLeaveMessage("")); Client.Send(new InconnuHelpMessage("")); } else { long guid = -1; if (!long.TryParse(Packet.Substring(2), out guid)) { Client.Send(new BasicNoOperationMessage()); return; } if (guid == -1) { return; } var Target = CharacterTable.GetCharacter(guid); if (Target == null) { Client.Send(new BasicNoOperationMessage()); return; } Party.Leave(Target); Target.Send(new PartyLeaveMessage(Client.Character.ActorId.ToString())); Target.Send(new InconnuHelpMessage("")); } }
public static void ProcessBasicMessageRequest(WorldClient Client, string Packet) { var Data = Packet.Substring(2).Split('|'); var Message = Data[1]; if (Enum.IsDefined(typeof(ChatChannelEnum), (int)Data[0][0])) { var Channel = (ChatChannelEnum)Data[0][0]; if (Client.Character.IsChatChannelEnable(Channel)) { Client.RaiseChatMessage(Channel, Message); } Client.Send(new BasicNoOperationMessage()); } else { var CharacterName = Data[0]; var Character = CharacterTable.GetCharacter(CharacterName); // Le personnage existe ? if (Character != null && Character.IsOnline()) { if (Character.Account != null && Character.Account.Data != null && Character.Account.Data.EnnemyList.ContainsKey(Client.Account.ID)) { Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 14, Character.Name)); return; } Client.Send(new ChatChannelMessage(ChatChannelEnum.CHANNEL_PRIVATE_SEND, Character.ID, Character.Name, Message)); Character.Send(new ChatChannelMessage(ChatChannelEnum.CHANNEL_PRIVATE_RECIEVE, Client.Character.ID, Client.Character.Name, Message)); } else { // Personnage non trouvé. Client.Send(new ChatMessageErrorMessage(ChatChannelErrorEnum.ERROR_NOT_FOUND)); } } }
public override void Execute(WorldClient client, CommandParameters parameters) { if (parameters.Lenght > 0) { int level; try { level = parameters.GetIntParameter(0); } catch (FormatException e) { client.Send(new ConsoleMessage("Le parametre 1 n'est pas un nombre décimal", ConsoleColorEnum.RED)); return; } var target = client.Character; if (parameters.Lenght > 1) { if (CharacterTable.Contains(parameters.GetParameter(1))) { target = CharacterTable.GetCharacter(parameters.GetParameter(1)); } } if (!target.IsOnline()) { client.Send(new ConsoleMessage("La Cible est deconnecté", ConsoleColorEnum.RED)); return; } while (target.Level < level) { target.LevelUP(); } target.Send(new AccountStatsMessage(target)); target.Send(new CharacterNewLevelMessage(target.Level)); target.Send(new SpellsListMessage(target)); client.Send(new ConsoleMessage("Le niveau a été modifié", ConsoleColorEnum.GREEN)); } else { client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED)); } }
public override void Execute(WorldClient client, CommandParameters parameters) { if (parameters.Lenght > 0) { int honor; try { honor = parameters.GetIntParameter(0); } catch (FormatException e) { client.Send(new ConsoleMessage("Le parametre 1 n'est pas un nombre décimal", ConsoleColorEnum.RED)); return; } var target = client.Character; if (parameters.Lenght > 1) { if (CharacterTable.Contains(parameters.GetParameter(1))) { target = CharacterTable.GetCharacter(parameters.GetParameter(1)); } } if (!target.IsOnline()) { client.Send(new ConsoleMessage("La Cible est deconnecté", ConsoleColorEnum.RED)); return; } target.AddHonor(honor); target.RefreshOnMap(); client.Send(new ConsoleMessage("Les points d'honneurs ont été ajouté", ConsoleColorEnum.GREEN)); } else { client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED)); } }
private static void ProcessFriendDeleteRequest(WorldClient Client, string Packet) { int guid = -1; switch (Packet[2]) { case '%': Packet = Packet.Substring(3); Player p = CharacterTable.GetCharacter(Packet); if (p == null || !p.IsOnline()) { Client.Send(new CharacterFriendAddMessage("Ef")); return; } guid = p.GetClient().Account.ID; break; default: Packet = Packet.Substring(2); Player Pr = CharacterTable.GetCharacter(Packet); if (Pr == null || !Pr.IsOnline()) { Client.Send(new CharacterFriendAddMessage("Ef")); return; } guid = Pr.GetClient().Account.ID; break; } if (guid == -1 || !Client.Account.Data.FriendsList.ContainsKey(guid)) { Client.Send(new CharacterFriendAddMessage("Ef")); return; } Client.Account.Data.FriendsList.Remove(guid); Client.Account.Data.Save(); Client.Send(new CharacterFriendDeleteMessage("K")); }
private static void ProcessFollowMember(WorldClient Client, string Packet) { if (Client.GetGameAction(GameActionTypeEnum.GROUP) != null) { var Party = (Client.GetGameAction(GameActionTypeEnum.GROUP) as GameParty).Party; long pGuid = -1; if (!long.TryParse(Packet.Substring(3), out pGuid)) { Client.Send(new BasicNoOperationMessage()); return; } var P = CharacterTable.GetCharacter(pGuid); if (P == null || !P.IsOnline()) { Client.Send(new BasicNoOperationMessage()); return; } if (Packet[2] == '+') { if (Client.Character.Follows != null) { Client.Character.Follows.Follower.Remove(Client.Character.ActorId); } Client.Send(new CharacterFlagMessage(P)); Client.Send(new PartyFlagMessage("+" + P.ActorId)); Client.Character.Follows = P; P.Follower.Add(Client.Character.ActorId, Client.Character); } else if (Packet[2] == '-') { Client.Send(new CharacterDeleteFlagMessage()); Client.Send(new PartyFlagMessage("-")); Client.Character.Follows = null; Client.Character.Follower.Remove(Client.Character.ActorId); } } }
private static void BuyRequest(WorldClient Client, string Packet) { Client.Send(new GameRideMessage("v")); MountPark MP = Client.Character.myMap.mountPark; if (MP == null) { Client.Send(new BasicNoOperationMessage()); return; } if (MP.get_owner() == -1) { Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 96)); return; } if (MP.get_price() == 0) { Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 97)); return; } if (!Client.Character.HasGuild()) { Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 135)); return; } if (Client.GetCharacter().getCharacterGuild().GradeType != GuildGradeEnum.GRADE_BOSS) { Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 98)); return; } byte enclosMax = (byte)Math.Floor((double)Client.Character.GetGuild().Level / 10); byte TotalEncloGuild = (byte)MountParkTable.CountByGuild(Client.Character.GetGuild().ID); if (TotalEncloGuild >= enclosMax) { Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 103)); return; } if (Client.Character.Kamas < MP.get_price()) { Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 82)); return; } Client.GetCharacter().InventoryCache.SubstractKamas(MP.get_price()); if (MP.get_owner() > 0) { var Owner = CharacterTable.GetCharacter(MP.get_owner()); if (Owner != null && Owner.Account.curPlayer != null) { Owner.Send(new ChatGameMessage("Un enclo a ete vendu a " + MP.get_price() + ".", "CC0000")); Owner.Account.Data.BankKamas += MP.get_price(); Owner.Account.Data.Save(); } else { AccountDataTable.Update(MP.get_price(), MP.get_owner()); } } MP.set_price(0); MP.set_owner(Client.Character.ID); MP.set_guild(Client.Character.GetGuild()); MountParkTable.Update(MP); CharacterTable.Update(Client.Character); Client.GetCharacter().myMap.SendToMap(new MapMountParkMessage(MP)); }
private static void ProcessFriendAddRequest(WorldClient Client, string Packet) { WorldClient client = null; switch (Packet[2]) { case '%': Packet = Packet.Substring(3); Player P = CharacterTable.GetCharacter(Packet); if (P == null || !P.IsOnline()) { Client.Send(new CharacterFriendAddMessage("Ef")); return; } client = P.GetClient(); break; default: Packet = Packet.Substring(2); Player Pr = CharacterTable.GetCharacter(Packet); if (Pr == null || !Pr.IsOnline()) { Client.Send(new CharacterFriendAddMessage("Ef")); return; } client = Pr.GetClient(); break; } if (client == null) { Client.Send(new CharacterFriendAddMessage("Ef")); return; } if (client.Account.ID == Client.Account.ID) { Client.Send(new CharacterFriendAddMessage("Ey")); return; } if (!Client.Account.Data.FriendsList.ContainsKey(client.Account.ID)) { Client.Account.Data.FriendsList.Add(client.Account.ID, client.Account.Pseudo); StringBuilder sb = new StringBuilder(";").Append("?;") /* Chno had zab ?*/.Append(client.Character.Name).Append(";"); if (client.Account.Data.FriendsList.ContainsKey(Client.Account.ID)) { sb.Append(client.Character.Level).Append(";"); sb.Append(client.Character.Alignement).Append(";"); } else { sb.Append("?;"); sb.Append("-1;"); } sb.Append(client.Character.Classe).Append(";"); sb.Append(client.Character.Sexe).Append(";"); sb.Append(client.Character.Look); Client.Send(new CharacterFriendAddMessage("K" + client.Account.Pseudo + sb.ToString())); Client.Account.Data.Save(); } else { Client.Send(new CharacterFriendAddMessage("Ea")); } }
private static void ProcessEnnemyAddRequest(WorldClient Client, string Packet) { WorldClient client = null; switch (Packet[2]) { case '%': Packet = Packet.Substring(3); Player P = CharacterTable.GetCharacter(Packet); if (P == null || !P.IsOnline()) { Client.Send(new CharacterFriendAddMessage("Ef")); return; } client = P.GetClient(); break; case '*': // Pseudo Packet = Packet.Substring(3); var sock = WorldServer.Network.WorldServer.Clients.FirstOrDefault(x => x.Account != null && x.Account.Pseudo == Packet); P = null; if (sock != null) { P = sock.Character; } if (P == null || !P.IsOnline()) { Client.Send(new CharacterFriendAddMessage("Ef")); return; } client = P.GetClient(); break; default: Packet = Packet.Substring(2); Player Pr = CharacterTable.GetCharacter(Packet); if (Pr == null || !Pr.IsOnline()) { Client.Send(new CharacterFriendAddMessage("Ef")); return; } client = Pr.GetClient(); break; } if (client == null) { Client.Send(new CharacterFriendAddMessage("Ef")); return; } if (client.Account.ID == Client.Account.ID) { Client.Send(new CharacterFriendAddMessage("Ey")); return; } if (!Client.Account.Data.EnnemyList.ContainsKey(client.Account.ID)) { Client.Account.Data.EnnemyList.Add(client.Account.ID, client.Account.Pseudo); StringBuilder sb = new StringBuilder(";").Append("?;") /* Chno had zab ?*/.Append(client.Character.Name).Append(";"); if (client.Account.Data.EnnemyList.ContainsKey(Client.Account.ID)) { sb.Append(client.Character.Level).Append(";"); sb.Append(client.Character.Alignement).Append(";"); } else { sb.Append("?;"); sb.Append("-1;"); } sb.Append(client.Character.Classe).Append(";"); sb.Append(client.Character.Sexe).Append(";"); sb.Append(client.Character.Look); Client.Send(new CharacterEnnemyAddMessage(client.Account.Pseudo + sb.ToString())); Client.Account.Data.Save(); } else { Client.Send(new CharacterOldEnnemyAddMessage()); } }
public Player getPerso() { return(CharacterTable.GetCharacter(this.ID)); }
private static void ProcessGuildKickRequest(WorldClient Client, string Packet) { var Guild = Client.GetCharacter().getCharacterGuild().GuildCache; if (Guild == null) { Client.Send(new BasicNoOperationMessage()); return; } var TargetName = Packet.Substring(2); var Member = Guild.GetMember(TargetName); if (Member != null) { if (Member == Client.GetCharacter().getCharacterGuild()) { Guild.RemovePlayer(Client.GetCharacter().getCharacterGuild()); Client.Character.setCharacterGuild(null); if (Client.Character.GetClient() != null) { Guild.UnRegister(Client.Character.GetClient()); } Client.Send(new GuildKickMessage('K', Args: TargetName + "|" + TargetName)); Client.Character.RefreshOnMap(); } else { if (!Client.GetCharacter().getCharacterGuild().Can(GuildRightEnum.RIGHT_BAN)) { Client.Send(new GuildKickMessage('E', GuildKickReason.REASON_NO_RIGHT)); } else { if (Member.GradeType == GuildGradeEnum.GRADE_BOSS) { Client.Send(new GuildKickMessage('E', GuildKickReason.REASON_UNKNOW)); } else { Guild.RemovePlayer(Member); var perso = CharacterTable.GetCharacter(Member.ID); if (perso == null) { return; } perso.setCharacterGuild(null); if (perso.GetClient() != null) { Guild.UnRegister(perso.GetClient()); } Client.Send(new GuildKickMessage('K', Args: Client.GetCharacter().Name + "|" + TargetName)); perso.Send(new GuildKickMessage('K', Args: Client.GetCharacter().Name)); perso.RefreshOnMap(); } } } } }