public static Prisme getPrism(long id) { Prisme prism = null; Cache.TryGetValue(id, out prism); return(prism); }
public static void Add(Prisme item) { try { MySqlCommand Command = new MySqlCommand() { Connection = DatabaseManager.Provider.getConnection(), CommandText = "REPLACE INTO `prismes` VALUES(@id,@mapid,@cellid,@align,@grade,@honor,@zone);", }; Command.Prepare(); Command.Parameters.AddWithValue("@id", item.ActorId); Command.Parameters.AddWithValue("@mapid", item.Mapid); Command.Parameters.AddWithValue("@cellid", item.CellId); Command.Parameters.AddWithValue("@align", item.Alignement); Command.Parameters.AddWithValue("@grade", item.Level); Command.Parameters.AddWithValue("@honor", item.Honor); Command.Parameters.AddWithValue("@zone", item.Area); Command.ExecuteNonQuery(); Cache.Add(item.ActorId, item); } catch (Exception e) { Logger.Error("Can't execute query : " + e.ToString()); } }
public PrismFighter(Fight Fight, Prisme Monster, int MonsterGuid) : base(Fight, GameActorTypeEnum.TYPE_PRISM) { this.Prisme = Monster; Prisme.Initialize(); Prisme.inFight = (byte)0; Prisme.CurrentFight = Fight; var oldStat = this.Prisme.myFightStats; base.InitFighter(oldStat, MonsterGuid, Prisme.Look); base.JoinFight(); }
public static void TryDeleteTax(Prisme tc) { try { lock (Cache) { Cache.Remove(tc.ActorId); } DatabaseManager.Provider.ExecuteQuery("DELETE FROM prismes WHERE id = '" + tc.ActorId + "'"); } catch (Exception ex) { Logger.Error("DatabaseEntities::TryDeletePrism : Guid=" + tc.ActorId + " " + ex.ToString()); } }
private static void ProcessConquestDefenseRequest(WorldClient Client, string Packet) { switch (Packet[2]) { case 'J': var Prism = PrismeTable.getPrism(Client.Character.myMap.subArea.Prisme); if (Prism != null) { Prisme.AnalyzeAttack(Client.Character); Prisme.AnalyzeDefense(Client.Character); } Client.Send(new ConquestInfoJoinPrismMessage(Client.Character.PrismHelper())); break; case 'V': Client.Send(new ConquestClosePanelMessage()); break; } }
public PrismFight(Map Map, WorldClient Player, Prisme Monsters) : base(FightType.TYPE_PVMA, Map) { try { Logger.Debug("PVMA_FIGHT Launched : Player=" + Player.GetCharacter().Name + " MapId=" + Map.Id); this.Prisme = Monsters; StartTimer(); AttFighter = new CharacterFighter(this, Player); var DefFighter = new PrismFighter(this, Prisme, this.NextActorId); Prisme.Map.DestroyActor(Prisme); Network.WorldServer.GetChatController().getAlignementChannel((AlignmentTypeEnum)Prisme.Alignement).Send(new ConquestPrismeAttackMessage(Prisme.Mapid + "|" + Prisme.Map.X + "|" + Prisme.Map.Y)); Player.AddGameAction(new GameFight(AttFighter, this)); base.InitFight(AttFighter, DefFighter); } catch (Exception ex) { Logger.Error("PrismFight::PrismFight() " + ex.ToString()); } }
public static void Load() { Cache.Clear(); long time = Environment.TickCount; var reader = DatabaseManager.Provider.ExecuteReader("SELECT * FROM prismes"); while (reader.Read()) { var template = new Prisme() { ActorId = reader.GetInt64("id"), Alignement = reader.GetInt32("align"), Level = (byte)reader.GetInt32("grade"), Mapid = reader.GetInt16("mapid"), CellId = reader.GetInt32("cellid"), Honor = reader.GetInt32("honor"), Area = reader.GetInt32("zone"), inFight = -1, Orientation = 1, }; Cache.Add(template.ActorId, template); if (template.Map != null) { template.Map.SpawnActor(template); } } reader.Close(); AreaTable.Cache.Values.ToList().ForEach(x => x.onPrismLoaded()); AreaSubTable.Cache.Values.ToList().ForEach(x => x.onPrismLoaded()); //Cache.Values.ToList().ForEach(x => x.Intialize()); Logger.Info("Loaded @'" + Cache.Count + "'@ Prism in @" + (Environment.TickCount - time) + "@ ms"); }
private static void ProcessConquestJoinDefenseRequest(WorldClient Client, string Packet) { if (Packet.Length < 2) { Client.Send(new BasicNoOperationMessage()); return; } switch (Packet[2]) { case 'J': long prismID = Client.Character.myMap.subArea.Prisme; var Prism = PrismeTable.getPrism(prismID); if (Prism == null || Prism.Alignement != Client.Character.Alignement || Client.GetFight() != null || Prism.CurrentFight == null) { Client.Send(new BasicNoOperationMessage()); return; } if (Client.GetFight() == null && !Client.GetCharacter().isAaway) { if (Client.GetCharacter().myMap.Id != Prism.Mapid) { Client.GetCharacter().isJoiningTaxFight = true; Client.GetCharacter().OldPosition = new Couple <Map, int>(Client.Character.myMap, Client.Character.CellId); Client.GetCharacter().Teleport(Prism.Map, Prism.CellId); try { System.Threading.Thread.Sleep(700); } catch (Exception e) { Logger.Error(e); } } if (Client.GetCharacter().HasRestriction(RestrictionEnum.RESTRICTION_IS_TOMBESTONE)) { Client.Send(new BasicNoOperationMessage()); return; } var Team = Prism.CurrentFight.GetTeam2(); if (Prism.CurrentFight.CanJoin(Team, Client.GetCharacter())) { var Fighter = new CharacterFighter(Prism.CurrentFight, Client); var FightAction = new GameFight(Fighter, Prism.CurrentFight); Client.AddGameAction(FightAction); Prism.CurrentFight.JoinFightTeam(Fighter, Team, false, -1, false); } } //AnalyseDefense var Packets = new List <PacketBase>(); foreach (var Prisme in PrismeTable.Cache.Values.Where(x => x.Alignement == Client.Character.Alignement && (x.inFight == 0 || x.inFight == -2))) { Packets.Add(new PrismInformationsDefenseMessage(Prisme.PrismDefenders(Prisme.ActorId, Prisme.CurrentFight))); } foreach (var packet in Packets) { Network.WorldServer.GetChatController().getAlignementChannel(Client.Character.AlignmentType).Send(packet); } break; } }
internal static void PlacePrisme(ActionModel actionModel, Player perso, Player target, int itemID, int cellID) { try { if (perso.CellId <= 0) { return; } if (perso.Deshonor >= 1) { perso.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 83)); } if (perso.getGrade() < 3) { perso.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 155)); } if (perso.Alignement == 0 || perso.Alignement == 3) { perso.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 34, "43")); return; } if (!perso.showWings) { perso.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 148)); return; } if (perso.myMap.FightCell == null || Regex.Split(perso.myMap.FightCell, "\\|").Length != 2) { perso.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 146)); return; } if (perso.myMap.subArea.Alignement != 0 || !perso.myMap.subArea.CanConquest) { perso.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 149)); return; } var Prisme = new Prisme() { ActorId = PrismeTable.getPrismeID(), Alignement = perso.Alignement, Level = 1, Mapid = perso.myMap.Id, CellId = perso.CellId, Honor = 0, Area = -1, inFight = -1, Orientation = 1, }; perso.myMap.subArea.setAlignement(perso.Alignement); perso.myMap.subArea.Prisme = Prisme.ActorId; Network.WorldServer.GetChatController().getAlignementChannel(AlignmentTypeEnum.ALIGNMENT_NEUTRAL).Send(new SubAreaAlignMessage(perso.myMap.subArea.ID + "|" + perso.Alignement + "|1")); if (perso.myMap.subArea.area.Alignement == 0) { Network.WorldServer.GetChatController().getAlignementChannel(AlignmentTypeEnum.ALIGNMENT_NEUTRAL).Send(new AreaAlignMessage(perso.myMap.subArea.areaID + "|" + perso.Alignement)); } Network.WorldServer.GetChatController().getAlignementChannel(AlignmentTypeEnum.ALIGNMENT_BONTARIAN).Send(new SubAreaAlignMessage(perso.myMap.subArea.ID + "|" + perso.Alignement + "|0")); if (perso.myMap.subArea.area.Alignement == 0) { Network.WorldServer.GetChatController().getAlignementChannel(AlignmentTypeEnum.ALIGNMENT_BONTARIAN).Send(new AreaAlignMessage(perso.myMap.subArea.areaID + "|" + perso.Alignement)); } Network.WorldServer.GetChatController().getAlignementChannel(AlignmentTypeEnum.ALIGNMENT_BRAKMARIAN).Send(new SubAreaAlignMessage(perso.myMap.subArea.ID + "|" + perso.Alignement + "|0")); if (perso.myMap.subArea.area.Alignement == 0) { Network.WorldServer.GetChatController().getAlignementChannel(AlignmentTypeEnum.ALIGNMENT_BRAKMARIAN).Send(new AreaAlignMessage(perso.myMap.subArea.areaID + "|" + perso.Alignement)); } if (perso.myMap.subArea.area.Alignement == 0) { perso.myMap.subArea.area.Prisme = Prisme.ActorId; perso.myMap.subArea.area.Alignement = perso.Alignement; Prisme.Area = perso.myMap.subArea.area.ID; } PrismeTable.Add(Prisme); perso.myMap.SpawnActor(Prisme); PrismeTable.DestroyPrismGepositionCache(); } catch (Exception e) { Logger.Error(e); } }