/// <summary> /// Remove a creature from the map /// </summary> /// <param name="player"></param> public static void RemoveCreature(Creature creature) { Creatures.Remove(creature); creature.StandingTile.RemoveCreature(creature); if (creature is Player) { Channels.RemovePlayerFromAllChannels((Player)creature); RuleViolations.CloseRuleViolationReport((Player)creature); } }
private void parseCloseRuleViolation(NetworkMessage msg) { string reporter = msg.ReadString(); Player player = Game.getPlayer(reporter); if (player != null) { RuleViolations.CloseRuleViolationReport(player); } }
private void parseProcessRuleViolation(NetworkMessage msg) { string reporter = msg.ReadString(); Player player = Game.getPlayer(reporter); if (player != null) { RuleViolations.PlayerProcessRuleViolation(Player, player); } }
public AnalyzeContext AnalyzeTryStatements(TryStatementSyntax tryStatementSyntax) { var tryContext = new AnalyzeContext(Project, Document); var tryStatement = new TryStatement(); tryContext.Node = tryStatementSyntax; tryContext.TryStatement = tryStatement; var(@class, declaration) = GetPlaceOfTryStatement(tryStatementSyntax, tryContext); tryContext.Class = @class; tryContext.Declaration = declaration; tryStatement.CatchClauses = AnalyzeCatchClauses(tryStatementSyntax, tryContext); tryStatement.FinallyClause = AnalyzeFinallyClause(tryStatementSyntax, tryContext); RuleViolations.AddRange(tryContext.TryStatement.CatchClauses.SelectMany(c => c.RuleViolations)); AnalyzedContexts.Add(tryContext); return(tryContext); }
public RuleViolations ValidateCompany(CompanyInfo prm) { var result = new RuleViolations(); if (string.IsNullOrWhiteSpace(prm.Title)) { result.AddError(nameof(prm.Title), "Please specify company name"); } else { if (_companyReader .Any(new CompanyFilter { Title = prm.Title, ExceptIds = new[] { prm.Id } })) { result.AddError(nameof(prm.Title), "A company with this name already exists"); } } return(result); }
/// <summary> /// Triggered when any creature speaks /// We're basically using "Creature" since this function will handle NPCs and monsters speaking /// </summary> /// <param name="creature"></param> /// <param name="type"></param> /// <param name="message"></param> /// <param name="privateTo"></param> /// <param name="channelId"></param> public static void CreatureSpeak(Creature creature, TalkType type, string message, string privateTo, short channelId = 0) { Task.Factory.StartNew(() => { HashSet <Creature> spectators = new HashSet <Creature>(); switch (type) { case TalkType.Say: GetCreatureSpectators(spectators, creature.Position, false, Map.maxClientViewportX, Map.maxClientViewportX, Map.maxClientViewportY, Map.maxClientViewportY); foreach (Creature c in spectators) { if (c is Player) { Player player = (Player)c; player.Connection.SendCreatureSay(creature, type, message); } c.onCreatureSpeak(creature, type, message); } break; case TalkType.Whisper: GetCreatureSpectators(spectators, creature.Position, false, Map.maxClientViewportX, Map.maxClientViewportX, Map.maxClientViewportY, Map.maxClientViewportY); foreach (Creature c in spectators) { if (c is Player) { Player player = (Player)c; if (Position.AreInRange(player.Position, creature.Position)) { player.Connection.SendCreatureSay(creature, type, message); } else { player.Connection.SendCreatureSay(creature, type, "pspsps"); } } c.onCreatureSpeak(creature, type, message); } break; case TalkType.Yell: // TODO: Yelling exhaustion, 30 seconds GetCreatureSpectators(spectators, creature.Position, false, 18, 18, 14, 14); foreach (Creature c in spectators) { if (c is Player) { Player player = (Player)c; player.Connection.SendCreatureSay(creature, type, message.ToUpper()); } } break; case TalkType.PrivateChannel: case TalkType.PrivateChannelRed: case TalkType.RuleViolationAnswer: PlayerTalkTo((Player)creature, type, message, privateTo); break; case TalkType.ChannelYellow: case TalkType.ChannelRed: case TalkType.ChannelRedAnonymous: if (!Channels.PlayerTalkToChannel((Player)creature, (ChannelID)channelId, message, type)) { // Re-send in default as we weren't able to talk to the given channel CreatureSpeak(creature, TalkType.Say, message, ""); } break; case TalkType.Broadcast: PlayerBroadcastMessage((Player)creature, message); break; case TalkType.RuleViolationContinue: RuleViolations.PlayerContinueRuleViolationReport((Player)creature, message); break; case TalkType.RuleViolationChannel: // Rule Violation Reporting RuleViolations.PlayerReportRuleViolation((Player)creature, message); break; default: break; } }); }
/// <summary> /// Pretty self explanatory /// </summary> /// <param name="packetType"></param> /// <param name="msg"></param> private void parsePacket(byte packetType, NetworkMessage msg) { switch (packetType) { case 0x14: // Logout Disconnect(); Game.RemoveCreature(Player); break; case 0x1E: // Keep Alive / Ping Response break; case 0x64: // Auto Walk break; case 0x65: // Move North Game.MoveCreature(Player, Direction.North); break; case 0x66: // Move East Game.MoveCreature(Player, Direction.East); break; case 0x67: // Move South Game.MoveCreature(Player, Direction.South); break; case 0x68: // Move West Game.MoveCreature(Player, Direction.West); break; case 0x69: // Stop-AutoWalk break; case 0x6A: // Move North East Game.MoveCreature(Player, Direction.NorthEast); break; case 0x6B: // Move South East Game.MoveCreature(Player, Direction.SouthEast); break; case 0x6C: // Move South West Game.MoveCreature(Player, Direction.SouthWest); break; case 0x6D: // Move North West Game.MoveCreature(Player, Direction.NorthWest); break; case 0x6F: // Turn North break; case 0x70: // Turn East break; case 0x71: // Turn South break; case 0x72: // Turn West break; case 0x78: // Move Item break; case 0x7D: // Request Trade break; case 0x7E: // Look at an item in trade break; case 0x7F: // Accept Trade break; case 0x80: // Close/Cancel Trade break; case 0x82: // Use Item break; case 0x83: // Use Item Ex break; case 0x84: // Battle Window break; case 0x85: // Rotate Item break; case 0x87: // Close Container break; case 0x88: // "up-arrow" container break; case 0x89: // Text Window break; case 0x8A: // House Window break; case 0x8C: // Look break; case 0x96: // Say something parseSay(msg); break; case 0x97: // Request Channels Channels.PlayerRequestChannels(Player); break; case 0x98: // Open Channel ChannelID channelId = (ChannelID)msg.ReadShort(); Channels.PlayerOpenChannel(Player, channelId); break; case 0x99: // Close Channel Channels.RemovePlayerFromChannel(Player, (ChannelID)msg.ReadShort()); break; case 0x9A: // Open Private Channel break; case 0x9B: // Process Rule Violation Report parseProcessRuleViolation(msg); break; case 0x9C: // GM closes Rule Violation Report parseCloseRuleViolation(msg); break; case 0x9D: // Player Cancels Report RuleViolations.CancelPlayerRuleViolation(Player); break; case 0xA0: // Fight Modes break; case 0xA1: // Attack break; case 0xA2: // Follow break; case 0xA3: // Invite Party break; case 0xA4: // Join Party break; case 0xA5: // Remove Party Invitation break; case 0xA6: // Pass Party Leadership break; case 0xA7: // Leave Party break; case 0xAA: // Create Private Channel break; case 0xAB: // Channel Invite break; case 0xAC: // Channel Exclude break; case 0xBE: // Cancel Move break; case 0xC9: // Client Requests to resend tile break; case 0xCA: // Client Requests to resend a container (happens when you store more than a container maxsize) break; case 0xD2: // Requets Outfits break; case 0xD3: // Set Outfit break; case 0xDC: // Add VIP break; case 0xDD: // Remove VIP break; case 0xE6: // Bug Report break; case 0xE7: // Violation Window break; case 0xE8: // Debug Assertion break; default: Console.WriteLine("{0} sent packet 0x{1} which is unknown.", Player.Name, packetType.ToString("X2")); break; } listenConnection(); }