Exemplo n.º 1
0
        protected override bool Process(Player player, RealmTime time, string args)
        {
            Command[] cmds = player.Manager.Commands.Commands.Values
                .Where(x => x.HasPermission(player))
                .ToArray();

            int curPage = (args != "") ? Convert.ToInt32(args) : 1;
            double maxPage = Math.Floor((double) cmds.Length/10);

            if (curPage > maxPage + 1)
                curPage = (int) maxPage + 1;
            if (curPage < 1)
                curPage = 1;

            var sb = new StringBuilder(string.Format("Commands <Page {0}/{1}>: \n", curPage, maxPage + 1));

            int y = (curPage - 1) * 10;
            int z = y + 10;

            int commands = cmds.Length;
            if (z > commands)
            {
                z = commands;
            }

            for (int i = y; i < z; i++)
            {
                sb.Append(string.Format("[/{0}{1}]{2}", cmds[i].CommandName, (cmds[i].CommandUsage != "" ? " " + cmds[i].CommandUsage : null), (cmds[i].CommandDesc != "" ? ": " + cmds[i].CommandDesc : null)) + "\n");
            }
            player.SendHelp(sb.ToString());
            return true;
        }
Exemplo n.º 2
0
 protected override bool Process(Player player, RealmTime time, string args)
 {
     if (player.Guild != "")
         try
         {
             var saytext = string.Join(" ", args);
             if ((from w in player.Manager.Worlds let world = w.Value where w.Key != 0 from i in world.Players.Where(i => i.Value.Guild == player.Guild) select world).Any())
             {
                 if (saytext.Equals(" ") || saytext == "")
                 {
                     player.SendHelp("Usage: /guild <text>");
                     return false;
                 }
                 player.Manager.Chat.SayGuild(player, saytext.ToSafeText());
                 return true;
             }
         }
         catch(Exception e)
         {
             player.SendError(e.ToString());
             player.SendInfo("Cannot guild chat!");
             return false;
         }
     else
         player.SendInfo("You need to be in a guild to use guild chat!");
     return false;
 }
Exemplo n.º 3
0
 protected override bool Process(Player player, RealmTime time, string args)
 {
     if (args.Length == 0)
     {
         player.SendHelp("Usage: /announce <saytext>");
         return false;
     }
     foreach (var client in player.Manager.Clients.Values)
         client.Player.SendText("@Announcement", args);
     return true;
 }
Exemplo n.º 4
0
 public override void Buy(Player player)
 {
     if (!player.Guild.IsDefault)
     {
         if (player.Guild[player.AccountId].Rank >= 30)
         {
             using (var db = new Database())
             {
                 if (db.GetGuild(db.GetGuildId(player.Guild[player.AccountId].Name)).GuildFame >= Price)
                 {
                     var cmd = db.CreateQuery();
                     cmd.CommandText = "UPDATE guilds SET level=level+1, guildFame=guildFame-@price WHERE name=@guildName";
                     cmd.Parameters.AddWithValue("@guildName", player.Guild.Name);
                     cmd.Parameters.AddWithValue("@price", Price);
                     if (cmd.ExecuteNonQuery() == 1)
                     {
                         player.Client.SendPacket(new BuyResultPacket
                         {
                             Message = "{\"key\":\"server.sale_succeeds\"}",
                             Result  = BuyResult.Success
                         });
                         player.SendInfo("Please leave the Guild Hall, we need some minutes to update the Guild Hall.");
                         player.Guild.UpdateGuildHall();
                     }
                 }
                 else
                 {
                     player.SendHelp("F**K");
                     player.Client.SendPacket(new BuyResultPacket
                     {
                         Message = "{\"key\":\"server.not_enough_fame\"}",
                         Result  = BuyResult.NotEnoughFame
                     });
                 }
             }
         }
         else
         {
             player.Client.SendPacket(new BuyResultPacket
             {
                 Message = "Founder or Leader rank required.",
                 Result  = 0
             });
         }
     }
 }
Exemplo n.º 5
0
        private static void Handle(Player player)
        {
            var cli = player.Client;

            if (cli.Account.RaidToken < 1)
            {
                player.SendError("You do not have an Alert to launch.");
                return;
            }

            if (cli.Account.Credits < 1000)
            {
                player.SendError("You do not have the required amount of gold to launch an Alert.");
                return;
            }

            var rnd = new Random();

            cli.Manager.Database.UpdateAlertToken(cli.Account, -1);
            player.AlertToken--;
            player.ForceUpdate(player.AlertToken);

            player.SendHelp("Launching Alert... Good luck!");
            var alertArea = player.Owner.Manager.Resources.Worlds[AlertAreas[rnd.Next(AlertAreas.Length)]];

            DynamicWorld.TryGetWorld(alertArea, player.Client, out var world);
            world = player.Owner.Manager.AddWorld(world ?? new World(alertArea));

            player.Owner.Timers.Add(new WorldTimer(8000, (w, t) => {
                player.Client.Reconnect(new Reconnect {
                    Host        = "",
                    Port        = 2050,
                    GameId      = world.Id,
                    Name        = world.SBName,
                    IsFromArena = false
                });
            }));
        }
Exemplo n.º 6
0
 public override void Buy(Player player)
 {
     player.Manager.Data.AddPendingAction(db =>
     {
         if (db.GetGuild(db.GetGuildId(player.Guild)).GuildFame >= Price)
         {
             player.Client.SendPacket(new BuyResultPacket
             {
                 Message = "Upgrade successful! Please leave the Guild Hall to have it upgraded",
                 Result  = 0
             });
         }
         else
         {
             player.SendHelp("F**K");
             player.Client.SendPacket(new BuyResultPacket
             {
                 Message = "Not enough Guild Fame!",
                 Result  = 9
             });
         }
     });
     base.Buy(player);
 }
Exemplo n.º 7
0
 public override void Buy(Player player)
 {
     player.Manager.Data.AddPendingAction(db =>
     {
         if (db.GetGuild(db.GetGuildId(player.Guild)).GuildFame >= Price)
         {
             player.Client.SendPacket(new BuyResultPacket
             {
                 Message = "Upgrade successful! Please leave the Guild Hall to have it upgraded",
                 Result = 0
             });
         }
         else
         {
             player.SendHelp("F**K");
             player.Client.SendPacket(new BuyResultPacket
             {
                 Message = "Not enough Guild Fame!",
                 Result = 9
             });
         }
     });
     base.Buy(player);
 }
Exemplo n.º 8
0
 protected override bool Process(Player player, RealmTime time, string args)
 {
     if (args.Length == 0)
     {
         player.SendHelp("Usage: /eff <effectid>");
         return false;
     }
     ConditionEffectIndex effect;
     if (!Enum.TryParse(args, true, out effect))
     {
         player.SendError("Invalid effect!");
         return false;
     }
     if ((player.ConditionEffects & (ConditionEffects)(1 << (int)effect)) != 0)
     {
         //remove
         player.ApplyConditionEffect(new ConditionEffect()
         {
             Effect = effect,
             DurationMS = 0
         });
     }
     else
     {
         //add
         player.ApplyConditionEffect(new ConditionEffect()
         {
             Effect = effect,
             DurationMS = -1
         });
     }
     return true;
 }
Exemplo n.º 9
0
 protected override bool Process(Player player, RealmTime time, string args)
 {
     if (args.Length == 0)
     {
         player.SendHelp("Usage: /summon <playername>");
         return false;
     }
     foreach (var i in player.Owner.Players)
     {
         if (i.Value.Name.EqualsIgnoreCase(args))
         {
             i.Value.Teleport(time, player.Id);
             player.SendInfo("Player summoned!");
             return true;
         }
     }
     player.SendError(string.Format("Player '{0}' could not be found!", args));
     return false;
 }
Exemplo n.º 10
0
        protected override bool Process(Player player, RealmTime time, string args)
        {
            if (args.Length == 0)
            {
                player.SendHelp("Usage: /spawn <objectname>");
                return false;
            }
            int index = args.IndexOf(' ');
            int num;
            string name = args;

            if (args.IndexOf(' ') > 0 && int.TryParse(args.Substring(0, args.IndexOf(' ')), out num)) //multi
                name = args.Substring(index + 1);
            else
                num = 1;

            ushort objType;
            if (!player.Manager.GameData.IdToObjectType.TryGetValue(name, out objType) ||
                !player.Manager.GameData.ObjectDescs.ContainsKey(objType))
            {
                player.SendError("Unknown entity!");
                return false;
            }

            for (int i = 0; i < num; i++)
            {
                var entity = Entity.Resolve(player.Manager, objType);
                entity.Move(player.X, player.Y);
                player.Owner.EnterWorld(entity);
            }
            return true;
        }
Exemplo n.º 11
0
 protected override bool Process(Player player, RealmTime time, string args)
 {
     if (args.Length == 0)
     {
         player.SendHelp("Usage: /setpiece <piecename>");
         return false;
     }
     ISetPiece piece = (ISetPiece)Activator.CreateInstance(Type.GetType(
         "wServer.realm.setpieces." + args, true, true));
     piece.RenderSetPiece(player.Owner, new IntPoint((int)player.X + 1, (int)player.Y + 1));
     return true;
 }
Exemplo n.º 12
0
 protected override bool Process(Player player, RealmTime time, string args)
 {
     if (args.Length == 0)
     {
         player.SendHelp("Usage: /oryxSay <saytext>");
         return false;
     }
     player.Manager.Chat.Oryx(player.Owner, args);
     return true;
 }
Exemplo n.º 13
0
 protected override bool Process(Player player, RealmTime time, string args)
 {
     if (args.Length == 0)
     {
         player.SendHelp("Usage: /killPlayer <playername>");
         return false;
     }
     foreach (var i in player.Manager.Clients.Values)
     {
         if (i.Account.Name.EqualsIgnoreCase(args))
         {
             i.Player.HP = 0;
             i.Player.Death("Moderator");
             player.SendInfo("Player killed!");
             return true;
         }
     }
     player.SendError(string.Format("Player '{0}' could not be found!", args));
     return false;
 }
Exemplo n.º 14
0
        protected override bool Process(Player player, RealmTime time, string args)
        {
            int index = args.IndexOf(' ');
              int num;
              string stat = args;

              if (args.IndexOf(' ') > 0 && int.TryParse(args.Substring(index), out num))
            stat = args.Substring(0, args.IndexOf(' '));
              else
            num = 1;

              switch (stat)
              {
            case "hp":
              player.Stats[0] = num;
              player.UpdateCount++;
              break;
            case "mp":
              player.Stats[1] = num;
              player.UpdateCount++;
              break;
            case "att":
              player.Stats[2] = num;
              player.UpdateCount++;
              break;
            case "def":
              player.Stats[3] = num;
              player.UpdateCount++;
              break;
            case "spd":
              player.Stats[4] = num;
              player.UpdateCount++;
              break;
            case "vit":
              player.Stats[5] = num;
              player.UpdateCount++;
              break;
            case "wis":
              player.Stats[6] = num;
              player.UpdateCount++;
              break;
            case "dex":
              player.Stats[7] = num;
              player.UpdateCount++;
              break;
            case "all":
              player.Stats[2] = num;
              player.Stats[3] = num;
              player.Stats[4] = num;
              player.Stats[5] = num;
              player.Stats[6] = num;
              player.Stats[7] = num;
              player.UpdateCount++;
              break;
            default:
              player.SendHelp("Usage: /stats <stat name> <amount>");
              break;
              }
              player.SendInfo("Successfully updated " + stat);
              return true;
        }
Exemplo n.º 15
0
        protected override bool Process(Player player, RealmTime time, string args)
        {
            if (args.Length == 0)
            {
                player.SendHelp("Usage: /trade <username>");
                return true;
            }

            Player plr = player.Manager.FindPlayer(args);
            if (plr != null && plr.Owner == player.Owner)
            {
                player.RequestTrade(time, new RequestTradePacket { Name = plr.Name });
                return true;
            }
            return false;
        }
Exemplo n.º 16
0
        protected override bool Process(Player player, RealmTime time, string args)
        {
            if (args.Length == 0)
            {
                player.SendHelp("Usage: /tpPos <X> <Y>");
                return false;
            }
            string[] coordinates = args.Split(' ');
            if (coordinates.Length != 2)
            {
                player.SendError("Invalid coordinates!");
                return false;
            }

            int x, y;
            if (!int.TryParse(coordinates[0], out x) ||
                !int.TryParse(coordinates[1], out y))
            {
                player.SendError("Invalid coordinates!");
                return false;
            }

            player.Move(x + 0.5f, y + 0.5f);
            player.SetNewbiePeriod();
            player.UpdateCount++;
            player.Owner.BroadcastPacket(new GotoPacket()
            {
                ObjectId = player.Id,
                Position = new Position()
                {
                    X = player.X,
                    Y = player.Y
                }
            }, null);
            return true;
        }
Exemplo n.º 17
0
 protected override bool Process(Player player, RealmTime time, string args)
 {
     if (args.Length == 0)
     {
         player.SendHelp("Usage: /gimme <Itemname>");
         return false;
     }
     ushort objType;
     if (!player.Manager.GameData.IdToObjectType.TryGetValue(args, out objType))
     {
         player.SendError("Unknown item type!");
         return false;
     }
     for (int i = 0; i < player.Inventory.Length; i++)
         if (player.Inventory[i] == null)
         {
             player.Inventory[i] = player.Manager.GameData.Items[objType];
             player.UpdateCount++;
             player.SaveToCharacter();
             player.SendInfo("Success!");
             return true;
         }
     player.SendError("Not enough space in inventory!");
     return false;
 }
Exemplo n.º 18
0
 protected override bool Process(Player player, RealmTime time, string args)
 {
     if (args.Trim() != "")
     {
         string cmd = args.Split(' ')[0];
         string left = args.Split(' ').Length > 1 ? string.Join(" ", args.Split(' ').Skip(1)) : "";
         bool inParty = player.Party != null;
         bool leader = inParty && player.Party.Leader == player;
         switch (cmd)
         {
             case "join":
                 if (left == "")
                 {
                     player.SendInfo("Usage: /party join <username>");
                     return false;
                 }
                 Player target = player.Owner.GetUniqueNamedPlayer(left);
                 if(target == null)
                 {
                     player.SendInfo("Player not found.");
                     return false;
                 }
                 if(target.Party == null)
                 {
                     player.SendInfo("Player is not in a party.");
                     return false;
                 }
                 if(target.Party.Leader != target)
                 {
                     player.SendInfo("You can only join the leader of the party.");
                     return false;
                 }
                 if(!target.Party.Invitations.Contains(player.AccountId))
                 {
                     player.SendInfo("You must be invited to join a party.");
                     return false;
                 }
                 if (player.Party != null)
                     if (player.Party.Leader == player)
                         player.Party.Disband();
                     else
                         player.Party.RemoveMember(player);
                 target.Party.AddMember(player);
                 break;
             case "invite":
                 if (left == "")
                 {
                     player.SendInfo("Usage: /party invite <username>");
                     return false;
                 }
                 if(inParty && !leader)
                 {
                     player.SendInfo("You must be the leader of a party to invite others.");
                     return false;
                 }
                 if(!inParty)
                 {
                     player.Party = new Party(player);
                     player.UpdateCount++;
                     inParty = true;
                 }
                 Player target2 = player.Owner.GetUniqueNamedPlayer(left);
                 if (target2 == null)
                 {
                     player.SendInfo("Player not found.");
                     return false;
                 }
                 if(target2.Client == null)
                 {
                     player.SendError("Player no longer exists!");
                     return false;
                 }
                 if(target2.Party == player.Party)
                 {
                     player.SendInfo("Player is already in your party.");
                     return false;
                 }
                 if (!player.Party.Invitations.Contains(target2.AccountId))
                     player.Party.Invitations.Add(target2.AccountId);
                 player.Party.SendPacket(new TextPacket
                 {
                     BubbleTime = 0,
                     Stars = -1,
                     Name = "",
                     Recipient = "*Party*",
                     Text = target2.Name + " was invited to the party"
                 }, null);
                 target2.Client.SendPacket(new InvitedToPartyPacket
                 {
                     Name = player.Name,
                     PartyID = player.Party.ID
                 });
                 break;
             case "kick":
                 if(left == "")
                 {
                     player.SendInfo("Usage: /party kick <username>");
                     return false;
                 }
                 if(!inParty || !leader)
                 {
                     player.SendInfo("You must be the leader of a party to kick others.");
                     return false;
                 }
                 Player target3 = player.Owner.GetUniqueNamedPlayer(left);
                 if (target3 == null)
                 {
                     player.SendInfo("Player not found.");
                     return false;
                 }
                 if (target3.Party != player.Party)
                 {
                     player.SendInfo("Player must be in your party.");
                     return false;
                 }
                 player.Party.SendPacket(new TextPacket
                 {
                     BubbleTime = 0,
                     Stars = -1,
                     Name = "",
                     Recipient = "*Party*",
                     Text = target3.Name + " was kicked from the party"
                 }, null);
                 player.Party.RemoveMember(target3);
                 break;
             case "disband":
             case "leave":
                 if(!inParty)
                 {
                     player.SendInfo("You are not in a party.");
                     return false;
                 }
                 if (player.Party.Leader == player)
                     player.Party.Disband();
                 else
                     player.Party.RemoveMember(player);
                 break;
             case "chat":
                 if(left.Trim() == "")
                 {
                     player.SendInfo("Usage: /party chat <message> or /p <message>");
                     return false;
                 }
                 if(!inParty)
                 {
                     player.SendInfo("You are not in a party.");
                     return false;
                 }
                 player.Manager.Chat.SayParty(player, left.ToSafeText());
                 break;
             case "help":
                 player.SendHelp("Party commands:\n[/party join <username>]: accept a party invite\n[/party invite <username>]: invite a player to your party (leader only)\n[/party kick <username>]: kick a user from your party (leader only)\n[/party leave]: leave your current party\n[/party chat <message>]: send a message to your party");
                 break;
             default:
                 player.SendInfo("Invalid command!");
                 player.SendInfo("Type \"/party help\" for commands.");
                 break;
         }
     }
     else
     {
         if(player.Party == null)
         {
             player.SendInfo("You are not in a party!");
             player.SendInfo("Type \"/party help\" for commands.");
             return false;
         }
         player.SendInfo("Party Leader:\n " + player.Party.Leader.Name);
         var members = player.Party.Members.Select(i => i.Name).ToList();
         player.SendInfo("Party Members:\n " + (members.Count > 0 ? string.Join(", ", members.ToArray()) : "None"));
         player.SendInfo("Type \"/party help\" for commands.");
     }
     return true;
 }