protected override void Process() { if (!BCUtils.CheckWorld(out var world)) { return; } if (Options.ContainsKey("filters")) { Filters(); return; } if (Options.ContainsKey("index")) { Indexed(); return; } if (Params.Count > 1) { SendOutput("Wrong number of arguments"); SendOutput(Config.GetHelp(GetType().Name)); return; } if (Params.Count == 1) { // specific entity Entity e = null; if (int.TryParse(Params[0], out var entityId)) { if (world.Entities.dict.ContainsKey(entityId)) { e = world.Entities.dict[entityId]; } } if (e == null) { SendOutput("Entity id not found."); return; } var entity = new BCMEntity(e, Options, GetFilters(BCMGameObject.GOTypes.Entities)); if (Options.ContainsKey("min")) { SendJson(new List <List <object> > { entity.Data().Select(d => d.Value).ToList() }); } else { SendJson(entity.Data()); } } else { //todo: /entity=id1,id2,id3 // All entities var data = new List <object>(); foreach (var entity in BCUtils.FilterEntities(world.Entities.dict, Options).Values.Select(en => new BCMEntity(en, Options, GetFilters(BCMGameObject.GOTypes.Entities)))) { if (Options.ContainsKey("min")) { data.Add(entity.Data().Select(d => d.Value).ToList()); } else { data.Add(entity.Data()); } } SendJson(data); } }
public override void Process() { var entities = GameManager.Instance.World.Entities; switch (Params.Count) { case 0: var data = new List <object>(); for (var i = entities.list.Count - 1; i >= 0; i--) { var entity = entities.list[i] as EntityAlive; if (entity == null) { continue; } var e = new BCMEntity { EntityId = entity.entityId, Name = entity.name, Buffs = new List <BCMBuff>() }; foreach (var current in entity.Stats.Buffs) { var buff = (MultiBuff)current; if (buff == null) { continue; } e.Buffs.Add(new BCMBuff { Name = buff.Name, Id = buff.MultiBuffClass.Id, Duration = $"{buff.MultiBuffClass.FDuration * buff.Timer.TimeFraction:0}/{buff.MultiBuffClass.FDuration}(s)", Percent = $"{buff.Timer.TimeFraction * 100:0.0}%" }); } data.Add(e); } SendJson(data); break; case 2: if (Options.ContainsKey("type")) { var type = Params[0]; var buffid = Params[1]; if (!MultiBuffClass.s_classes.ContainsKey(buffid)) { SendOutput($"Unknown Buff {buffid}"); } else { var multiBuffClassAction = MultiBuffClassAction.NewAction(buffid); if (multiBuffClassAction == null) { break; } foreach (var target in entities.list.OfType <EntityAlive>()) { if (target.GetType().ToString() != type) { continue; } multiBuffClassAction.Execute(target.entityId, target, false, EnumBodyPartHit.None, null); } } } else { if (!int.TryParse(Params[0], out var entityId)) { SendOutput("Error parsing entity id"); break; } var buffid = Params[1]; if (!MultiBuffClass.s_classes.ContainsKey(buffid)) { SendOutput($"Unknown buff {buffid}"); break; } if (!entities.dict.ContainsKey(entityId)) { SendOutput("Entity not found"); break; } var multiBuffClassAction = MultiBuffClassAction.NewAction(buffid); var target = entities.dict[entityId] as EntityAlive; if (multiBuffClassAction != null && target != null) { multiBuffClassAction.Execute(entityId, target, false, EnumBodyPartHit.None, null); SendOutput($"Buffed entity {entityId} with {buffid}"); } } break; default: SendOutput("Invalid arguments"); SendOutput(GetHelp()); break; } }