protected override bool Process(Player player, RealmTime time, string[] args) { if (player.Owner is Vault) { player.SendInfo($"You cant summon player {args[0]} in your vault."); return(false); } foreach (ClientData i in GameServer.Manager.ClientManager.Values) { Player target = i.Client.Player; if (target.Name.EqualsIgnoreCase(args[0])) { Message msg; if (target.Owner == player.Owner) { target.Move(player.X, player.Y); msg = new GOTO { ObjectId = target.Id, Position = new Position(player.X, player.Y) }; target.UpdateCount++; player.SendInfo($"Player {target.Name} was moved to near you."); } else { msg = new RECONNECT { GameId = player.Owner.Id, Host = "", IsFromArena = false, Key = player.Owner.PortalKey, KeyTime = -1, Name = player.Owner.Name, Port = -1 }; player.SendInfo($"Player {target.Name} is connecting to {player.Owner.Name}."); } i.Client.SendMessage(msg); return(true); } } player.SendError($"An error occurred: player '{args[0]}' couldn't be found."); return(false); }
public string generarAugus(ReporteOptimizacion reporte) { string codigoAugus = "if(" + this.condicion.generarAugus() + ") goto " + this.etiqueta + ";\n"; OPtimizacion optimizacion = new OPtimizacion(); optimizacion.linea = "" + (this.linea + 1); optimizacion.antes = codigoAugus; optimizacion.tipo = "Mirilla - Eliminación de Codigo Inalcanzable"; if (this.condicion.tipo == Operacion.TIPO_OPERACION.IGUAL_IGUAL) { if (this.condicion.validarRegla4()) { optimizacion.regla = "Regla 3"; optimizacion.despues = "goto " + this.etiqueta + ";"; reporte.agregarOpt(optimizacion); codigoAugus = "goto " + this.etiqueta + ";\n"; } else if (this.condicion.validarRegla5()) { optimizacion.regla = "Regla 4"; optimizacion.despues = ""; reporte.agregarOpt(optimizacion); return(""); } } try { if (codigoAugus.StartsWith("if")) { if (this.instrucciones.Count > 0) { if (this.instrucciones.ElementAt(0) is GOTO) //validamos que la siguiente instruccion sea un goto { string condicionNueva = this.condicion.invertirCondicion(); if (!condicionNueva.Equals(this.condicion.generarAugus())) //si la condicion si cambio se hace la optimizacion { GOTO etiquetaFalse = (GOTO)this.instrucciones.ElementAt(0); Etiqueta etiquetaTrue = this.ast.obtenerEtiqueta(this.etiqueta); string codigoOptimizar = codigoAugus; codigoOptimizar += "goto " + etiquetaFalse.id + ";\n"; codigoOptimizar += etiquetaTrue.id + ":\n"; codigoOptimizar += "[instrucciones_" + etiquetaTrue.id + "]\n"; codigoOptimizar += etiquetaFalse.id + ":\n"; codigoOptimizar += "[instrucciones_" + etiquetaFalse.id + "]\n"; codigoAugus = "if(" + condicionNueva + ") goto " + etiquetaFalse.id + ";\n"; string codigoOptimizado = codigoAugus; codigoOptimizado += "[instrucciones_" + etiquetaTrue.id + "]\n"; codigoOptimizado += etiquetaFalse.id + ":\n"; codigoOptimizado += "[instrucciones_" + etiquetaFalse.id + "]\n"; optimizacion.antes = codigoOptimizar; optimizacion.despues = codigoOptimizado; optimizacion.regla = "Regla 2"; optimizacion.tipo = "Mirilla - Eliminación de Código Inalcanzable"; reporte.agregarOpt(optimizacion); this.seAplicoRegla3 = true; etiquetaTrue.imprimirEtiqueta = false; //etiquetaTrue.ast = ast; codigoAugus += etiquetaTrue.optimizarCodigo(reporte, ast); ast.etiquetasBetadas.AddLast(etiquetaTrue.id); } } } } } catch (Exception) { return(null); } return(codigoAugus); }