public static bool HandleCommandChase(Character character, string initialCommand, CommandHandling.CommandArgs Args) { if (Args.Count > 0) { string other = Args[0].Value.ToLower(); var otherChar = Server.Instance.GetCharacter(other); if (otherChar != null) { if (character.MapID != otherChar.MapID) { character.ChangeMap(otherChar.MapID); } var p = new Packet(0xC1); p.WriteShort(otherChar.Position.X); p.WriteShort(otherChar.Position.Y); character.SendPacket(p); return(true); } MessagePacket.SendText(MessagePacket.MessageTypes.RedText, "Victim not found.", character, MessagePacket.MessageMode.ToPlayer); } return(true); }
public static bool HandleCommand(Character chr, CommandHandling.CommandArgs args) { if (args.Sign != '!' && args.Sign != '/') { return(false); } try { var initialCommand = args.Command.ToLowerInvariant(); if (_commands.TryGetValue(initialCommand, out var handler)) { var rank = UserAdminLevels.NormalPlayer; if (Server.Tespia) { rank |= UserAdminLevels.Tespian; } if (chr.BetaPlayer) { rank |= UserAdminLevels.BetaPlayer; } if (chr.GMLevel >= 1) { rank |= UserAdminLevels.Intern; } if (chr.GMLevel >= 2) { rank |= UserAdminLevels.GM; } if (chr.GMLevel >= 3) { rank |= UserAdminLevels.Admin; } Trace.WriteLine($"User ranks: {rank}"); CommandCharacter = chr; if ((handler.Ranks & rank) != 0) { return(handler.Handler(chr, initialCommand, args)); } else { HandlerHelpers.ShowError("You cannot use this command."); } } } catch { } finally { CommandCharacter = null; } return(false); }
public override bool FilterAdminCommand(Character character, CommandHandling.CommandArgs command) { switch (command.Command) { case "omok": OnStart(character, GameKindEnum.Omok); return(true); case "senduser": // Arg: <charname> <portalname> if (command.Count == 2) { var charName = command[0].Value; var portalName = command[1].Value; if (Portals.TryGetValue(portalName, out Portal portal)) { var c = FindUser(charName); if (c != null) { c.ChangeMap(ID, portal); } } } return(true); case "reset": // Do map reset.... return(true); case "matchtable": { SendAvatarInfo(character); var p = new Packet(ServerMessages.TOURNAMENT_MATCH_TABLE); // This one is nasty. We cannot write lots of data at once. for (var i = 0; i < SLOTS; i++) { for (var j = 0; j < 6; j++) { p.WriteInt(character.ID); } } var round = CurrentRound; if (round >= 100) { round -= 100; } p.WriteByte((byte)round); character.SendPacket(p); return(true); } case "prize": // Arg: <itemid1> <itemid2> // TODO add validation if (command.Count == 2) { PrizeSet = true; var p = new Packet(ServerMessages.TOURNAMENT_SET_PRIZE); ItemID[0] = command[0].GetInt32(); ItemID[1] = command[1].GetInt32(); p.WriteBool(true); p.WriteByte(1); p.WriteInt(ItemID[0]); p.WriteInt(ItemID[1]); SendPacket(p); // For the user himself p = new Packet(ServerMessages.TOURNAMENT_SET_PRIZE); p.WriteBool(true); p.WriteByte(0); character.SendPacket(p); } return(true); case "giveprize": // Arg: <itemid> <portalname> if (command.Count == 2) { var itemid = command[0].GetInt32(); var portalName = command[1].Value; if (Portals.TryGetValue(portalName, out Portal portal)) { var item = BaseItem.CreateFromItemID(itemid); item.GiveStats(ItemVariation.None); var reward = Reward.Create(item); // Drops through floor with X + 50 on pt 2 DropPool.Create( reward, 0, 0, DropType.Normal, 0, new Pos((short)(portal.X + 40), portal.Y), portal.X + 40, 0, false, 0, true, // Yes, by pet??!? false ); } } return(true); } return(false); }
public static bool HandleCommandWhereAmI(Character character, string initialCommand, CommandHandling.CommandArgs Args) { ShowInfo($"You are on mapid {character.MapID}, X {character.Position.X}, Y {character.Position.Y}, FH {character.Foothold}"); return(true); }
public static bool HandleMapCommand(Character character, string initialCommand, CommandHandling.CommandArgs Args) { if (Args.Count <= 0) { return(true); } var FieldID = -1; if (!Args[0].IsNumber()) { var MapStr = Args[0]; var TempID = GetMapidFromName(MapStr); if (TempID == -1) { switch (MapStr) { case "here": FieldID = character.MapID; break; case "town": FieldID = character.Field.ReturnMap; break; } } else { FieldID = TempID; } } else { FieldID = Args[0].GetInt32(); } if (DataProvider.Maps.ContainsKey(FieldID)) { character.ChangeMap(FieldID); } else { ShowError("Map not found."); } return(true); }