Exemplo n.º 1
0
        public override void Execute(CommandCtx ctx)
        {
            // doesn't work as of 6/26/2020 when the drop refactoring occurred
            //var pField = ctx.Character.Field;

            //try
            //{
            //    var parsedMobId = int.Parse(ctx.NextString());
            //    var parsedDropId = int.Parse(ctx.NextString());
            //    var dropRate = int.Parse(ctx.NextString()) / 100;

            //    var mob = MasterManager.MobDropData(parsedMobId);

            //    if (mob == null)
            //        mob = new MobDropStruct { MobID = parsedMobId };

            //    // TODO add item and mob validation here
            //    var drops = mob.Drops.ToList();
            //    drops.Add(new DropStruct { ItemID = parsedDropId, Chance = dropRate });
            //    mob.Drops = drops;

            //    MasterManager.MobDropGenerator.Remove(mob.MobID);
            //    MasterManager.MobDropGenerator.Add(mob);

            //    ctx.Character.SendMessage($"Added drop ID: {parsedDropId} to mob ID: {mob.MobID}");
            //}
            //catch
            //{
            //    foreach (var mob in pField.Mobs)
            //    {
            //        var entry = MobDropGenerator.mobs.FirstOrDefault(m => m.ID == mob.nMobTemplateId);
            //        ctx.Character.SendMessage($"Mob ID: {entry.ID} <> Mob Name: {entry.Name}");
            //    }
            //}
        }
Exemplo n.º 2
0
        public override void Execute(CommandCtx ctx)
        {
            var pUser     = ctx.Character;
            var szMessage = $"Map: {pUser.Stats.dwPosMap} | {pUser.Position}";

            pUser.SendMessage(szMessage);
        }
Exemplo n.º 3
0
        public override void Execute(CommandCtx ctx)
        {
            var nX = ctx.NextInt();
            var nY = ctx.NextInt();

            //ctx.SendPacket(CPacket.Custom.Teleport(nX,nY));
        }
Exemplo n.º 4
0
        public override void Execute(CommandCtx ctx)
        {
            if (ctx.Empty)
            {
                ctx.Character.SendMessage($"[WarpCmd] Current MapId: {ctx.Character.Field.MapId}");
            }
            else
            {
                var szInput = ctx.NextString();

                if (!int.TryParse(szInput, out var nMapId))
                {
                    var pUserRemote = MasterManager.CharacterPool.Get(szInput);

                    if (pUserRemote == null)
                    {
                        ctx.Character.SendMessage($"[WarpCmd] Unable to find user: {szInput}");
                        return;
                    }

                    nMapId = pUserRemote.Stats.dwPosMap;
                }

                ctx.Character.Action.SetField(nMapId, 0, 0);
            }
        }
Exemplo n.º 5
0
            public override void Execute(CommandCtx ctx)
            {
                if (ctx.Character.Field.Template.HasMigrateLimit())                //|| ctx.Character.Field.Template.HasTeleportItemLimit())
                {
                    ctx.Character.SendMessage("This command can not be used in this map.");
                    return;
                }

                string input;

                if (ctx.Empty)
                {
                    input = null;
                }
                else
                {
                    input = ctx.NextString();
                }

                if (input is null || input.ToLower().Equals("list") || !aDestinationMap.ContainsKey(input.ToLower()))
                {
                    var toPrint = "Destinations: ";
                    foreach (var item in aDestinationMap)
                    {
                        toPrint += $"{item.Key}, ";
                    }

                    ctx.Character.SendMessage(toPrint);
                }
Exemplo n.º 6
0
        public override void Execute(CommandCtx ctx)
        {
            var anMobTemplate =
                ctx.Character.Field.Mobs
                .Select(mob => mob.nMobTemplateId)
                .Distinct();

            ctx.Character.SendMessage("Monster Drop List:");

            foreach (var nTemplateId in anMobTemplate)
            {
                var szMobName = MasterManager.StringData[StringDataType.Mob][nTemplateId].Name;
                var pDropNode = MasterManager.MobDropGenerator[nTemplateId];

                ctx.Character.SendMessage($"{szMobName} ({nTemplateId})");

                foreach (var pDrop in pDropNode.Drops)
                {
                    var szItemName = MasterManager.StringData[StringDataType.Item][pDrop.ItemID].Name;

                    if (szItemName != null)
                    {
                        ctx.Character.SendMessage($"\t - {szItemName}");
                    }
                }
            }
        }
Exemplo n.º 7
0
        public override void Execute(CommandCtx ctx)
        {
            var c = ctx.Character;

            var x = new CNpcImitate(9901000)
            {
                Foothold = c.Position.Foothold,
                X        = c.Position.X,
                Y        = c.Position.Y,
                Cy       = c.Position.Y,
                F        = false,
                Rx0      = -100,
                Rx1      = 100
            };

            x.Look = new AvatarLook();
            x.Look.CopyStats(c.Stats);
            x.Look.CopyInventory(c.EquippedInventoryNormal, c.EquippedInventoryCash);

            x.Name = "Rebirth";

            c.Field.Npcs.Add(x);

            c.Action.SystemMessage("PlayerNpc has been placed @ {0}", c.Position);
        }
Exemplo n.º 8
0
        public override void Execute(CommandCtx ctx)
        {
            var next = ctx.NextString();

            try
            {
                var npc      = int.Parse(next);
                var provider = ServerApp.Container.Resolve <ScriptManager>();

                ctx.Character.Socket.ChangeScript(provider.GetNpcScript(npc, ctx.Character.Socket));
                ctx.Character.Socket.NpcScript.Execute();
            }
            catch
            {
                switch (next.ToLower())
                {
                case "here":
                    List <int> names = new List <int>();
                    ctx.Character.Field.Npcs.ForEach(n => names.Add(n.TemplateId));

                    var nm = "NPCs: ";
                    names.ForEach(b => nm += " " + b);
                    ctx.Character.SendMessage(nm);
                    break;
                }
            }
        }
Exemplo n.º 9
0
        public override void Execute(CommandCtx ctx)
        {
            if (ctx.Empty)
            {
                ctx.Character.SendMessage(Syntax);
            }
            else
            {
                switch (ctx.NextString().ToLower())
                {
                case "start":
                    ctx.Character.DamageTracker.Start();
                    break;

                case "stop":
                case "end":
                    ctx.Character.DamageTracker.Stop();
                    break;

                case "restart":
                    ctx.Character.DamageTracker.Reset();
                    ctx.Character.DamageTracker.Start();
                    break;

                case "reset":
                    ctx.Character.DamageTracker.Reset();
                    break;

                default:
                    ctx.Character.SendMessage(Syntax);
                    break;
                }
            }
        }
Exemplo n.º 10
0
        public override void Execute(CommandCtx ctx)
        {
            var c = ctx.Character;

            var dwTemplateID = ctx.NextInt();

            using (var conn = new NpgsqlConnection(Constants.DB_World0_ConString))
            {
                conn.Open();

                using (var cmd = new NpgsqlCommand($"INSERT INTO {Constants.DB_All_World_Schema_Name}.custom_field_life (field_id, life_type, life_id, life_name, x_pos, y_pos, foothold, min_click_pos, max_click_pos, respawn_time, flags, cy, f) VALUES (@field_id, @life_type, @life_id, @life_name, @x_pos, @y_pos, @foothold, @min_click_pos, @max_click_pos, @respawn_time, @flags, @cy, @f)", conn))
                {
                    cmd.Parameters.AddWithValue("field_id", c.Field.MapId);
                    cmd.Parameters.AddWithValue("life_type", "npc");
                    cmd.Parameters.AddWithValue("life_id", dwTemplateID);
                    cmd.Parameters.AddWithValue("life_name", string.Empty);
                    cmd.Parameters.AddWithValue("x_pos", c.Position.X);
                    cmd.Parameters.AddWithValue("y_pos", c.Position.Y);
                    cmd.Parameters.AddWithValue("foothold", c.Position.Foothold);
                    cmd.Parameters.AddWithValue("min_click_pos", -100);
                    cmd.Parameters.AddWithValue("max_click_pos", 100);
                    cmd.Parameters.AddWithValue("respawn_time", 0);
                    cmd.Parameters.AddWithValue("flags", new string[] { });
                    cmd.Parameters.AddWithValue("cy", c.Position.Y);
                    cmd.Parameters.AddWithValue("f", 0);
                    cmd.ExecuteNonQuery();
                }
            }

            c.Field.Npcs.Load(c.Field.MapId); // reload
            c.SendMessage($"Added permenant NPC: {dwTemplateID}");
        }
        public override void Execute(CommandCtx ctx)
        {
            var provider = ServerApp.Container.Resolve <ScriptManager>();

            provider.ClearScriptCache();

            ctx.Character.Action.SystemMessage("Script cache has been cleared.");
        }
Exemplo n.º 12
0
        public override void Execute(CommandCtx ctx)
        {
            var szMessage = ctx.Remaining();

            MasterManager.CharacterPool.ForEach(pUser =>
            {
                pUser.SendPacket(CPacket.BroadcastServerMsg(szMessage));
            });
        }
Exemplo n.º 13
0
        public override void Execute(CommandCtx ctx)
        {
            foreach (var item in MasterManager.CharacterPool.ToArray())
            {
                item.Save();
            }

            MasterManager.TempInvManager.SaveAll();

            ctx.Character.SendMessage("All characters and temporary inventories have been saved");
        }
Exemplo n.º 14
0
 public override void Execute(CommandCtx ctx)
 {
     if (!ctx.Empty && int.TryParse(ctx.NextString(), out int seconds) && seconds > 0)
     {
         ctx.Character.Field.CreateFieldClock(seconds);
     }
     else
     {
         ctx.Character.SendMessage($"Syntax: !{Name} {Parameters}");
     }
 }
Exemplo n.º 15
0
        public override void Execute(CommandCtx ctx)
        {
            //if (ctx.Empty)
            //{
            //ctx.Character.SendPacket();
            //}
            //else
            //{

            //}
        }
Exemplo n.º 16
0
        public override void Execute(CommandCtx ctx)
        {
            ctx.Character.Action.Enable();
            ctx.Character.Modify.ResetForcedStat();

            var pScript = ctx.Character.Socket.NpcScript;

            pScript?.Dispose();

            ctx.Character.SendMessage("Dispose Complete");
        }
Exemplo n.º 17
0
        public override void Execute(CommandCtx ctx)
        {
            var victim = ctx.NextString();
            var msg    = ctx.Remaining();

            var remote = MasterManager.CharacterPool.Get(victim);

            if (remote != null)
            {
                remote.Action.BoxMessage(msg);
            }
        }
Exemplo n.º 18
0
        public override void Execute(CommandCtx ctx)
        {
            var nMapId = ctx.Character.Field.MapId;

            MasterManager.CharacterPool.ForEach(c =>
            {
                if (c != ctx.Character)
                {
                    c.Action.SetField(nMapId);
                }
            });
        }
Exemplo n.º 19
0
        public override void Execute(CommandCtx ctx)
        {
            if (ctx.Character.Stats.nHP <= 0)
            {
                return;
            }

            var provider = ServerApp.Container.Resolve <ScriptManager>();

            ctx.Character.Socket.ChangeScript(provider.GetNpcScript(9200000, ctx.Character.Socket)); // Cody: 9200000
            ctx.Character.Socket.NpcScript.Execute();
        }
Exemplo n.º 20
0
        public override void Execute(CommandCtx ctx)
        {
            var msg = new CMessageBox();

            msg.nItemID        = Floaties.Random();
            msg.sCharacterName = ctx.Character.Stats.sCharacterName;
            msg.sMessage       = ctx.Remaining();
            msg.Position.X     = ctx.Character.Position.X;
            msg.Position.Y     = ctx.Character.Position.Y;

            ctx.Character.Field.Kites.Add(msg);
        }
Exemplo n.º 21
0
        public override void Execute(CommandCtx ctx)
        {
            if (ctx.Empty)
            {
                ctx.Character.SendMessage(Syntax);
                return;
            }

            var name = ctx.NextString().ToLower();

            var targetChar = MasterManager.CharacterPool.Get(name);

            if (ctx.Empty || targetChar is null)
            {
                ctx.Character.SendMessage(Syntax);
                return;
            }

            var operation = ctx.NextString().ToLower();

            if (ctx.Empty)
            {
                ctx.Character.SendMessage(Syntax);
                return;
            }

            var amount = ctx.NextInt();

            targetChar.Modify.Stats(c =>
            {
                switch (operation)
                {
                case "sp":
                    c.SP += (short)amount;
                    break;

                case "ap":
                    c.AP += (short)amount;
                    break;

                case "nx":
                    targetChar.Modify.GainNX(amount);
                    break;

                default:
                    ctx.Character.SendMessage(Syntax);
                    return;
                }
            });
        }
Exemplo n.º 22
0
        public override void Execute(CommandCtx ctx)
        {
            var pUser   = ctx.Character;
            var pPortal = pUser.Field.Portals.GetPortalInRect(pUser.Position.X, pUser.Position.Y, 50);

            if (pPortal is null)
            {
                return;
            }

            pUser.SendMessage("Portal ID: " + pPortal.nIdx);
            pUser.SendMessage("Portal Name: " + pPortal.sName);
            pUser.SendMessage("Portal X-Pos: " + pPortal.nX);
            pUser.SendMessage("Portal Y-Pos: " + pPortal.nY);
        }
Exemplo n.º 23
0
        public override void Execute(CommandCtx ctx)
        {
            var nType = (byte)ctx.NextInt();

            if (ctx.Queue.Count > 0)
            {
                var nOpt = ctx.NextInt();
                var p    = CPacket.UserOpenUIWithOption((UIWindow)nType, nOpt);
                ctx.SendPacket(p);
            }
            else
            {
                var p = CPacket.UserOpenUI((UIWindow)nType);
                ctx.SendPacket(p);
            }
        }
        public override bool IsDisabled => true; // dont need anyone doing this

        public override void Execute(CommandCtx ctx)
        {
            var c = ctx.Character;
            var f = c.Field; // yes im lazy

            var fhCount = f.Footholds.Count;

            if (ctx.Empty)
            {
                ctx.Character.SendMessage("Total FH: " + fhCount);
            }
            else
            {
                var rand = ctx.NextInt();

                var spawnedMobs = 0;
                var nonwall     = 0;

                foreach (var item in f.Footholds.NonWallFHs)
                {
                    if (item.Wall)
                    {
                        continue;
                    }

                    nonwall += 1;

                    if (Constants.Rand.Next(100) > rand)
                    {
                        continue;
                    }

                    //var mob = new CMob(4230503);

                    //mob.SpawnCY = (short)((item.Y1 + item.Y2) / 2);
                    //mob.SpawnX = (short)((item.X1 + item.X2) / 2);
                    //mob.SpawnFH = item.Id;
                    //f.Mobs.CreateMob(mob);

                    spawnedMobs += 1;
                }

                ctx.Character.SendMessage($"Total FH: {fhCount}. Total non-wall FH: {nonwall}. Mobs spawned: {spawnedMobs}.");
            }
        }
Exemplo n.º 25
0
        public override void Execute(CommandCtx ctx)
        {
            var flag = ctx.NextBool();

            if (flag)
            {
                ctx.Character.Modify.ForcedStat(f =>
                {
                    f.Jump     = 255;
                    f.Speed    = 255;
                    f.SpeedMax = 255;
                });
            }
            else
            {
                ctx.Character.Modify.ResetForcedStat();
            }
        }
Exemplo n.º 26
0
        public override void Execute(CommandCtx ctx)
        {
            if (ctx.Character.Stats.nHP <= 0)
            {
                return;
            }
            int npc = 1072004;             // TODO fix this up

            // only first adventurer jobs will use this command, all others are auto adv
            //switch (ctx.Character.Stats.nJob)
            //{
            //    case 100:
            //        npc += 0;
            //        break;
            //    case 200:
            //        npc += 1;
            //        break;
            //    case 300:
            //        npc += 2;
            //        break;
            //    case 400:
            //        npc += 3;
            //        break;
            //    case 500:
            //        npc += 4;
            //        break;
            //    default:
            //        npc = 0;
            //        break;
            //}

            if (npc == 0 || ctx.Character.Stats.nLevel < 30 || ctx.Character.Stats.nSubJob > 0)
            {
                ctx.Character.SendMessage("You are not eligable for a Job Advancement.");
                return;
            }

            var provider = ServerApp.Container.Resolve <ScriptManager>();

            ctx.Character.Socket.ChangeScript(provider.GetNpcScript(npc, ctx.Character.Socket));
            ctx.Character.Socket.NpcScript.Execute();
        }
Exemplo n.º 27
0
        public override void Execute(CommandCtx ctx)
        {
            var nMobId    = ctx.NextInt();
            var nMobCount = 1;

            if (!ctx.Empty)
            {
                nMobCount = ctx.NextInt();
            }

            nMobCount = System.Math.Min(nMobCount, 150);

            for (int i = 0; i < nMobCount; i++)
            {
                var ptX = ctx.Character.Position.X;
                var ptY = ctx.Character.Position.Y - 10;
                var nFH = ctx.Character.Position.Foothold;

                ctx.Character.Field.Mobs.CreateMob(nMobId, null, ptX, ptY, nFH, 0xFE, 0, 0, MobType.Normal, null);
            }
        }
Exemplo n.º 28
0
        public override void Execute(CommandCtx ctx)
        {
            var center = ctx.Character.Socket.Server.Center;

            foreach (var game in center.WvsGames)
            {
                if (game.Clients.Count == 0)
                {
                    continue;
                }

                ctx.Character.Action.SystemMessage("[{0}]", game.Name);

                foreach (var user in game.Clients)
                {
                    if (user.LoggedIn)
                    {
                        ctx.Character.Action.SystemMessage("\t{0}\t{1}\t{2}", user.Character.dwId, user.Character.Stats.sCharacterName, user.Character.Stats.dwPosMap);
                    }
                }
            }
        }
Exemplo n.º 29
0
        public override void Execute(CommandCtx ctx)
        {
            var p = ctx.Character;

            string output;

            switch (ctx.NextString().ToLower())
            {
            case "job":
                output = "Job ID: " + p.Stats.nJob;
                break;

            case "subjob":
                output = "Sub Job ID: " + p.Stats.nSubJob;
                break;

            default:
                output = "Unhandled or invalid stat identifier.";
                break;
            }
            p.Action.SystemMessage(output);
        }
Exemplo n.º 30
0
        public override void Execute(CommandCtx ctx)
        {
            var itemId = ctx.NextInt();

            var sCount = !ctx.Empty ? ctx.NextString() : null;
            var nCount = 1;

            if (sCount is object)
            {
                if (!int.TryParse(sCount, out nCount))
                {
                    ctx.Character.SendMessage("Unable to parse count.");
                    return;
                }
            }

            var character = ctx.Character;

            var nInvType = ItemConstants.GetInventoryType(itemId);

            if (InventoryManipulator.CountFreeSlots(character, nInvType) > 0)
            {
                var item = MasterManager.CreateItem(itemId);

                if (item is null)
                {
                    return;
                }

                if (item is GW_ItemSlotBundle isb)
                {
                    isb.nNumber = (short)Math.Min(nCount, item.SlotMax);
                }

                InventoryManipulator.InsertInto(character, item);
                character.SendPacket(CPacket.DropPickUpMessage_Item(itemId, nCount, true));
            }
        }