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}"); // } //} }
public override void Execute(CommandCtx ctx) { var pUser = ctx.Character; var szMessage = $"Map: {pUser.Stats.dwPosMap} | {pUser.Position}"; pUser.SendMessage(szMessage); }
public override void Execute(CommandCtx ctx) { var nX = ctx.NextInt(); var nY = ctx.NextInt(); //ctx.SendPacket(CPacket.Custom.Teleport(nX,nY)); }
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); } }
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); }
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}"); } } } }
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); }
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; } } }
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; } } }
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."); }
public override void Execute(CommandCtx ctx) { var szMessage = ctx.Remaining(); MasterManager.CharacterPool.ForEach(pUser => { pUser.SendPacket(CPacket.BroadcastServerMsg(szMessage)); }); }
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"); }
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}"); } }
public override void Execute(CommandCtx ctx) { //if (ctx.Empty) //{ //ctx.Character.SendPacket(); //} //else //{ //} }
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"); }
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); } }
public override void Execute(CommandCtx ctx) { var nMapId = ctx.Character.Field.MapId; MasterManager.CharacterPool.ForEach(c => { if (c != ctx.Character) { c.Action.SetField(nMapId); } }); }
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(); }
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); }
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; } }); }
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); }
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}."); } }
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(); } }
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(); }
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); } }
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); } } } }
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); }
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)); } }