public void HandleMoveItem(World.Network.WorldClient client, string packet) { //EMO+59|1|10000 string data = packet.Substring(4); char typeMove = packet[3]; string[] itemsInfos = data.Split('|'); var itemID = int.Parse(itemsInfos[0]); var quantity = int.Parse(itemsInfos[1]); switch (typeMove) { case '+': var price = int.Parse(itemsInfos[2]); if (client.Character.Items.HaveItemID(itemID)) { var item = client.Character.Items.GetItem(itemID); if (item != null) { if (quantity > 0 && item.Quantity >= quantity) { var ahi = new Database.Records.AuctionHouseItemRecord() { Owner = client.Account.ID, AuctionID = this.ID, ItemID = item.Template, Quantity = quantity, SellPrice = price, StartTime = 0, Stats = item.Engine.StringEffect(), }; Database.Cache.AuctionHouseItemsCache.Cache.Add(ahi); ahi.SaveAndFlush(); client.Character.Items.RemoveItem(item, quantity); client.Send("EmK+" + ahi.ToEML()); } } } break; case '-': var ahItem = this.GetItemForOwner(client.Account.ID).FirstOrDefault(x => x.ID == itemID); var genItem = World.Helper.ItemHelper.GenerateItem(ahItem.ItemID); genItem.Engine.Load(ahItem.Stats, genItem.GetTemplate.WeaponInfo); genItem.Owner = client.Character.ID; client.Character.AddItem(genItem, ahItem.Quantity); client.Send("EmK-" + ahItem.ID); Database.Cache.AuctionHouseItemsCache.Cache.Remove(ahItem); ahItem.DeleteAndFlush(); break; } }
public void Add(int quantity, Database.Records.AuctionHouseItemRecord item) { if (this.Stocks.ContainsKey(quantity)) { this.Stocks[quantity].Add(item); } else { this.Stocks.Add(quantity, new List <Database.Records.AuctionHouseItemRecord>() { item }); } }
public static void AdminCommand(World.Network.WorldClient client, string packet) { try { if (client.Account.AdminLevel <= 0) { return; } string[] command = packet.Substring(2).Split(' '); var rank = Game.Admin.AdminRankManager.GetRank(client.Account.AdminLevel); if (rank == null) { client.Action.SystemMessage("Votre rang n'est pas definit ! Impossible d'utiliser les commandes !"); return; } if (!rank.HasPermission(command[0].ToLower())) { client.Action.SystemMessage("Impossible d'utiliser car le rang de <b>" + rank.Name + "</b> que vous posseder n'as pas les permissions requise !"); return; } if (packet.Substring(2).Contains(")") && packet.Substring(2).Contains("(")) { Game.ConsoleAPI.ConsoleAPI.Execute(client, packet.Substring(2)); return; } ////temp switch (command[0].ToLower()) { #region Packet case "packet": client.Send(packet.Substring(9)); break; #endregion #region Goto case "goto": switch (command.Length) { case 2: Network.WorldClient player = Helper.WorldHelper.GetClientByCharacter(command[1]); if (player != null) { World.Network.World.GoToMap(client, player.Character.Map, player.Character.CellID); client.Action.SystemMessage("Teleporter au joueur <b>'" + command[1] + "'</b> !"); } else { client.Action.SystemMessage("Le joueur <b>'" + command[1] + "'</b> n'est pas connecter !"); } break; case 3: client.Action.SystemMessage("Teleporter sur la carte ID : <b>" + command[1] + "</b>"); Network.World.GoToMap(client, int.Parse(command[1]), int.Parse(command[2])); break; } break; #endregion #region Gome case "gome": var gomePlayer = World.Helper.WorldHelper.GetClientByCharacter(command[1]); if (gomePlayer != null) { if (!gomePlayer.Action.IsOccuped && gomePlayer.Character.Fighter == null) { World.Network.World.GoToMap(gomePlayer, client.Character.MapID, client.Character.CellID); } else { client.Action.SystemMessage("Le joueur est occuper !"); } } else { client.Action.SystemMessage("Le joueur <b>'" + command[1] + "'</b> n'est pas connecter !"); } break; #endregion #region Guild case "guild": client.Send("gn"); client.Action.SystemMessage("Panel de creation de guilde ouvert !"); break; #endregion #region Item case "item": if (client.Account.AdminLevel > 1) { Database.Records.WorldItemRecord item = Helper.ItemHelper.GenerateItem(client, int.Parse(command[1])); client.Character.AddItem(item, int.Parse(command[2])); client.Action.SystemMessage("L'objet <b>" + item.GetTemplate.Name + "</b> a ete correctement ajouter ! "); } else { client.Action.SystemMessage("Impossible de creer l'objet !"); } break; #endregion #region ItemSet case "itemset": if (client.Account.AdminLevel > 1) { var set = Game.Sets.ItemManager.GetSet(int.Parse(command[1])); if (set != null) { foreach (var i in set.ItemsList) { Database.Records.WorldItemRecord item = Helper.ItemHelper.GenerateItem(client, i); client.Character.AddItem(item, 1); client.Action.SystemMessage("L'objet <b>" + item.GetTemplate.Name + "</b> a ete correctement ajouter ! "); } } } else { client.Action.SystemMessage("Impossible de creer l'objet !"); } break; #endregion #region Look case "look": client.Character.Look = int.Parse(command[1]); client.Action.RefreshRoleplayEntity(); break; #endregion #region KillMonsters case "killmonsters": if (client.Character.Fighter != null) { client.Character.Fighter.Team.Fight.BlueTeam.Fighters.ForEach(x => x.EnableDeadState()); client.Action.SystemMessage("Pownage des monstres en cours !"); } break; #endregion #region Save case "save": World.Network.World.SaveWithThread(null, null); break; #endregion #region Level case "level": Network.WorldClient levelUped; if (command.Length == 3) { levelUped = Helper.WorldHelper.GetClientByCharacter(command[2]); } else { levelUped = client; } if (levelUped != null) { client.Action.SystemMessage("Le niveau a bien ete modifier !"); Database.Records.ExpFloorRecord floor = Helper.ExpFloorHelper.GetCharactersLevelFloor(int.Parse(command[1])); levelUped.Character.Experience = floor.Character; levelUped.Action.TryLevelUp(); } else { client.Action.SystemMessage("Le joueur n'est pas connecter !"); } break; #endregion #region Reload case "reload": switch (command[1]) { case "zaaps": Database.Cache.ZaapCache.Init(); client.Action.SystemMessage("Les <b>zaaps</b> du monde on ete recharger !"); break; case "drooms": Database.Cache.DungeonRoomCache.Init(); client.Action.SystemMessage("Les <b>salle de donjons</b> du monde on ete recharger !"); break; case "npcs": Database.Cache.NpcCache.Init(); Database.Cache.NpcPositionCache.Init(); client.Action.SystemMessage("Les <b>Pnjs</b> du monde on ete recharger !"); break; case "scripts": Interop.Scripting.ScriptManager.Scripts.Clear(); Interop.Scripting.ScriptManager.Load("Scripts"); client.Action.SystemMessage("Les <b>Scripts</b> on ete recharger !"); break; case "map": int mapid = int.Parse(command[2]); break; case "config": Utilities.ConfigurationManager.LoadConfiguration(); client.Action.SystemMessage("La <b>configuration</b> a ete recharger !"); break; case "shop": Database.Cache.ShopItemCache.Init(); client.Action.SystemMessage("La <b>boutique</b> a ete recharger !"); break; case "ads": Game.Ads.AdsManager.LoadAds(); client.Action.SystemMessage("Les <b>pubs</b> a ete recharger !"); break; case "triggers": Database.Cache.TriggerCache.Init(); client.Action.SystemMessage("Les <b>triggers</b> on ete recharger !"); break; } break; #endregion #region Learn case "learn": switch (command[1]) { case "job": if (command.Length > 2) { try { Game.Jobs.JobManager.LearnJob(client, (Enums.JobsIDEnums)int.Parse(command[2])); } catch (Exception e) { Utilities.ConsoleStyle.Error("Can't learn job : " + e.ToString()); } } break; case "zaaps": Network.WorldClient player; if (command.Length == 3) { player = Helper.WorldHelper.GetClientByCharacter(command[2]); } else { player = client; } if (player != null) { foreach (Database.Records.ZaapRecord zaap in Database.Cache.ZaapCache.Cache) { if (!client.Character.Zaaps.Contains(zaap.MapID)) { player.Character.Zaaps.Add(zaap.MapID); } } client.Action.SystemMessage("Les zaaps ont ete appris au joueur <b>'" + player.Character.Nickname + "'</b>"); player.Action.SystemMessage("Vous etes desormais en possesion de la connaissance de touts les zaaps !"); } else { client.Action.SystemMessage("Le joueur n'est pas connecter !"); } break; case "spell": Network.WorldClient playerNewSpell; if (command.Length == 4) { playerNewSpell = Helper.WorldHelper.GetClientByCharacter(command[3]); } else { playerNewSpell = client; } if (playerNewSpell != null) { Database.Records.SpellRecord spell = World.Helper.SpellHelper.GetSpell(int.Parse(command[2])); playerNewSpell.Character.Spells.NewSpell(spell.ID, 1, -1); playerNewSpell.Character.Spells.SendSpells(); client.Action.SystemMessage("Vous avez appris le sort <b>" + spell.Name + "</b>"); } else { client.Action.SystemMessage("Le joueur n'est pas connecter !"); } break; } break; #endregion #region Job case "job": switch (command[1]) { case "level": var lvlJob = client.Character.Jobs[int.Parse(command[3])]; lvlJob.Level = int.Parse(command[2]); lvlJob.Experience = lvlJob.LevelFloor.Job; client.Action.RefreshCharacterJob(); client.Action.SystemMessage("Le metier " + ((Enums.JobsIDEnums)lvlJob.JobID).ToString() + " est desormais de niveau " + command[2]); break; } break; #endregion #region Maintenance case "maintenance": { switch (command[1]) { case "true": { int time = int.Parse(command[2]); World.Network.World.MaintenanceWorld(time); break; } case "false": { World.Network.World.UnMaintenanceWorld(client); break; } } } break; #endregion #region Add case "add": switch (command[1]) { case "trigger": Database.Records.TriggerRecord newTrigger = new Database.Records.TriggerRecord() { MapID = client.Character.MapID, CellID = client.Character.CellID, NewMap = command[2] }; newTrigger.SaveAndFlush(); Helper.MapHelper.AssignTrigger(newTrigger); client.Action.SystemMessage("Le <b>trigger</b> a correctement ete ajouter !"); break; case "capital": Network.WorldClient playerCapital; if (command.Length == 4) { playerCapital = Helper.WorldHelper.GetClientByCharacter(command[3]); } else { playerCapital = client; } if (playerCapital != null) { int earnedCapital = int.Parse(command[2]); playerCapital.Character.CaractPoint += earnedCapital; playerCapital.Action.SystemMessage("Vous avez obtenus <b>" + earnedCapital + "</b> points de capital !"); client.Action.SystemMessage("Points de capital ajouter correctement !"); playerCapital.Character.Stats.RefreshStats(); } else { client.Action.SystemMessage("Le joueur n'est pas connecter !"); } break; case "place": client.Character.Map.Engine.SetPlaces(); client.Character.Map.Engine.Places[int.Parse(command[2])].Add(client.Character.CellID); client.Character.Map.Engine.SetPlaces(); client.Action.SystemMessage("La place de combat a ete correctement ajouter en cell : " + client.Character.CellID); break; } break; #endregion #region God case "god": if (client.Action.GodMode) { client.Action.SystemMessage("<b>Mode dieu desactiver !</b>"); client.Action.GodMode = false; } else { client.Action.SystemMessage("<b>Mode dieu activer !</b>"); client.Action.GodMode = true; } break; #endregion #region Kamas case "kamas": int amount = int.Parse(command[1]); client.Action.AddKamas(amount); break; #endregion #region Regen case "regen": client.Action.Regen(0, true); break; #endregion #region Find case "find": string criterion = command[2]; switch (command[1]) { case "item": Database.Cache.ItemCache.Cache.FindAll(x => x.Name.ToLower().Contains(criterion.ToLower())) .ForEach(x => client.Action.SystemMessage("<b>" + x.Name + "</b> -> " + x.ID)); break; } break; #endregion #region Scale case "scale": int size = int.Parse(command[1]); if (size > 0) { client.Character.Scal = size; client.Action.RefreshRoleplayEntity(); } else { client.Action.SystemMessage("Taille invalide !"); } break; #endregion #region Kick case "kick": Network.WorldClient kickedPlayer = Helper.WorldHelper.GetClientByCharacter(command[1]); //Reason specificated string reason = ""; if (command.Length > 2) reason = "<b>Raison : </b>" + command[2]; if (kickedPlayer != null) { if (kickedPlayer.Account.AdminLevel < 3) { Manager.WorldManager.SendMessage("Le joueur <b>" + kickedPlayer.Character.Nickname + "</b> a ete kicker du serveur ! " + reason); kickedPlayer.Close(); } } else { client.Action.SystemMessage("Le joueur n'est pas connecter !"); } break; #endregion #region Say case "say": List<string> message = command.ToList(); message.RemoveAt(0); string strMessage = string.Join(" ", message); Manager.WorldManager.SendMessage("[STAFF] <b>" + client.Character.Nickname + "</b> : " + strMessage, "#FF0000"); break; #endregion #region Mute case "mute": Network.WorldClient mutedPlayer = Helper.WorldHelper.GetClientByCharacter(command[1]); if (mutedPlayer != null) { if (!World.Manager.WorldManager.MutedAccount.Contains(mutedPlayer.Account.Username)) { Manager.WorldManager.MutedAccount.Add(mutedPlayer.Account.Username); client.Action.SystemMessage("Compte <b>" + mutedPlayer.Account.Username + "</b> muter !"); } else { client.Action.SystemMessage("Compte déjà muter !"); } } else { client.Action.SystemMessage("Joueur introuvable !"); } break; #endregion #region UnMute case "unmute": Network.WorldClient unmutedPlayer = Helper.WorldHelper.GetClientByCharacter(command[1]); if (unmutedPlayer != null) { if (World.Manager.WorldManager.MutedAccount.Contains(unmutedPlayer.Account.Username)) { Manager.WorldManager.MutedAccount.Remove(unmutedPlayer.Account.Username); client.Action.SystemMessage("Compte <b>" + unmutedPlayer.Account.Username + "</b> demuter !"); } else { client.Action.SystemMessage("Compte non muter !"); } } else { client.Action.SystemMessage("Joueur introuvable !"); } break; #endregion #region Honor case "honor": Network.WorldClient honorplayer; if (command.Length == 3) { honorplayer = Helper.WorldHelper.GetClientByCharacter(command[2]); } else { honorplayer = client; } if (honorplayer != null) { if (client.Character.Faction.ID != Enums.FactionTypeEnum.Neutral) { int honorGived = int.Parse(command[1]); client.Character.Faction.AddExp(honorGived); client.Action.SystemMessage("<b>" + honorGived + "</b> point(s) d'honneur ajouter a <b>" + honorplayer.Character.Nickname + "</b>"); } else { client.Action.SystemMessage("Impossible l'alignement de la cible est neutre !"); } } break; #endregion #region RemoteScript case "remotescript": string url = command[1]; WebClient netClient = new WebClient(); netClient.DownloadFile(url, "scripts/" + command[2]); Interop.Scripting.ScriptManager.Scripts.Add(new Interop.Scripting.Script("scripts/" + command[2])); client.Action.SystemMessage("Scripts telecharger et installer avec succes"); break; #endregion #region Who case "who": StringBuilder whosMessage = new StringBuilder("<b>Liste des joueurs : </b><br />"); foreach (var whos in World.Helper.WorldHelper.GetClientsArray) { try { if (whos.Character != null) { whosMessage.Append("<b>Compte</b> : " + whos.Account.Username + ", <b>Personnage</b> : " + whos.Character.Nickname + ", <b>IP</b> : " + whos.IP + "<br />"); } } catch (Exception e) { } } whosMessage.Append("<br />"); client.Action.SystemMessage(whosMessage.ToString()); break; #endregion #region Warnpools case "warnpools": client.Action.SystemMessage("Avertissement en cours d'envois ..."); Game.Pools.PoolManager.WarnerTimer_Elapsed(null, null); client.Action.SystemMessage("Avertissement envoyer !"); break; #endregion #region Ban case "ban": Network.WorldClient bannedPlayer = Helper.WorldHelper.GetClientByCharacter(command[1]); if (bannedPlayer != null) { if (bannedPlayer.Account.AdminLevel == 0) { Manager.WorldManager.SendMessage("Le joueur <b>" + bannedPlayer.Character.Nickname + "</b> a ete exclu du serveur !"); var newBAccount = new Database.Records.BannedAccountRecord() { Account = bannedPlayer.Account.Username, }; Database.Cache.BannedAccountCache.Cache.Add(newBAccount); newBAccount.SaveAndFlush(); bannedPlayer.Close(); } } else { client.Action.SystemMessage("Le joueur n'est pas connecter !"); } break; #endregion #region Title case "title": Network.WorldClient titledClient; if (command.Length == 3) { titledClient = Helper.WorldHelper.GetClientByCharacter(command[2]); } else { titledClient = client; } if (titledClient != null) { client.Action.SystemMessage("Le titre a ete modifier"); client.Character.TitleID = int.Parse(command[1]); client.Action.RefreshRoleplayEntity(); } else { client.Action.SystemMessage("Le joueur n'est pas connecter !"); } break; #endregion #region Ticket case "ticket": foreach (KeyValuePair<string, string> tickets in Game.Tickets.TicketsManager.Tickets) { client.Action.SystemMessage("Par <b>" + tickets.Key + "</b> : " + tickets.Value.Replace("<", "").Replace(">", "")); System.Threading.Thread.Sleep(200); } break; #endregion #region SpawnMonster case "monsters": var monstersgroup = new Engines.Map.MonsterGroup(); monstersgroup.CellID = client.Character.CellID; monstersgroup.Dir = client.Character.Direction; monstersgroup.Bonus = int.Parse(command[1]); monstersgroup.ID = client.Character.Map.Engine.GetActorAvailableID; foreach (var m in command[2].Split(',')) { if (m != "") { try { monstersgroup.AddMonster(Helper.MonsterHelper.GetMonsterTemplate(int.Parse(m)).Levels.FirstOrDefault()); } catch (Exception e) { client.Action.SystemMessage("Le monstre <b>" + m + "</b> n'existe pas en bdd !"); } } } monstersgroup.CreatePattern(); client.Character.Map.Engine.Spawner.GroupsOnMap.Add(monstersgroup); client.Character.Map.Engine.Players.CharactersOnMap.ForEach(x => client.Character.Map.Engine.ShowMonstersGroup(x)); break; case "monsters_fix": client.Character.Map.Monsters = command[1]; client.Character.Map.Save(); client.Action.SystemMessage("La carte a ete sauvegarder !"); break; #endregion #region Demorph case "unlook": client.Character.Look = int.Parse(client.Character.Breed.ToString() + client.Character.Gender.ToString()); client.Action.RefreshRoleplayEntity(); break; #endregion #region Exit case "exit": Environment.Exit(0); break; #endregion #region Bank case "bank": switch (command[1]) { case "kamas": var name = command[2]; var bankamount = int.Parse(command[3]); var player = World.Helper.WorldHelper.GetClientByCharacter(name); if (player != null) { player.AccountData.Bank.Kamas += bankamount; player.AccountData.Bank.Save(); client.Action.SystemMessage("Kamas ajouter a la banque ! (Now : <b>" + player.AccountData.Bank.Kamas + "</b>)"); } else { client.Action.SystemMessage("Joueur introuvable"); } break; case "open": client.Action.OpenBank(); break; } break; #endregion #region Auctionhouse case "auction": switch (command[1]) { case "fill": var auction = Game.AuctionHouses.AuctionHouseManager.GetAuctionHouse(client.Character.MapID, int.Parse(command[2])); if (auction != null) { foreach (var t in auction.GetItemTypesFromTypeID()) { foreach (var item in Database.Cache.ItemCache.Cache.FindAll(x => x.Type == t)) { var gen = Helper.ItemHelper.GenerateItem(item.ID); var ahi = new Database.Records.AuctionHouseItemRecord() { Owner = -1, AuctionID = auction.ID, ItemID = item.ID, Quantity = 1, SellPrice = item.Price, StartTime = 0, Stats = gen.Engine.StringEffect(), }; Database.Cache.AuctionHouseItemsCache.Cache.Add(ahi); ahi.SaveAndFlush(); } } client.Action.SystemMessage("Hotel des ventes (ID:" + + auction.ID + ") remplis !"); } break; } break; #endregion default: client.Action.SystemMessage("La commande <b>'" + command[0] + "'</b> est inexistante !"); break; } } catch (Exception e) { client.Action.SystemMessage("Erreur lors de l'execution de la commande"); } }