|
52
|
Sistemas Operativos / Windows / Re: borrar archivos duplicados
|
en: 7 Noviembre 2024, 16:03 pm
|
+1 a Doblekiller de Machacador. Había probado otras cosas y eran complicadas de usar, este incluso sin el manual parece mejor, al menos a la hora de poder seleccionar y borrar los duplicados de cierta carpeta.
|
|
|
54
|
Foros Generales / Foro Libre / ¿Otros foros de Informática?
|
en: 5 Octubre 2024, 04:37 am
|
Vine a ampliar un tema que hice de videojuegos y me encontré con un privado diciéndome que me borraron un post de otro tema porque según la persona no tenía que ver con él.
Que borren cosas de política o incitaciones a la violencia lo entiendo, pero con eso y esto otro ya quitan las ganas de participar, no se puede hablar tranquilo, no se sabe cuando aparecerá alguno a borrar lo que escribas por a, por b, por c, etc ¿para qué escribir acá entonces? Te salís un poquito de la informática y te borran. Surgió un mini debate con Elektro sobre si está bien que pongan trabas a todos por culpa de algunos, algo que se hace en el foro, de hecho yo estaba defendiendo las reglas del foro y me borran el mensaje, bah.
En fin, pregunta del título. Pasen por privado. Si no les gusta el tema ciérrenlo, no lo borren please.
|
|
|
56
|
Programación / Programación General / Re: Lograr que un dibujo tenga X colores de forma más eficiente.
|
en: 4 Octubre 2024, 13:36 pm
|
Cambié esto que estaba incompleto: function VerSiColorFaltabaEtc () { // Esta función se usa en 2 lados distintos usando variables distintas, // por eso en algunos casos hay 2 traces casi iguales. // Esto puede cambiar: ColorFaltaba = "No"; PunteroDeColores = 0; while (PunteroDeColores<Faltantes) { PunteroDeColores++; trace ("Comparando con el color guardado en el lugar "+PunteroDeColores+": "+eval("Faltante"+PunteroDeColores)); if (ColorDeCuadradito.getRGB() == eval("Faltante"+PunteroDeColores)) { trace ("Iguales, el color del cuadradito recién agregado faltaba."); ColorFaltaba = "Sí"; trace ("El cuadradito "+CuadraditosColocados+" fue el 1ero de un color no anotado: "+ColorDeCuadradito.getRGB()); trace ("El cuadradito "+CuadraditoaRepintar+" fue el 1ero de un color no anotado: "+ColorDeCuadradito.getRGB()); // Quitarlo de la lista de faltantes, // para eso sustituirlo por... // el último y borrar el último // (si el que debe borrarse es el último, // la sustitución es en vano pero... // el resultado el mismo, // sin necesidad de reordenar la lista) set ("Faltante"+PunteroDeColores, eval("Faltante"+Faltantes)); Faltantes--; trace ("La cantidad de colores faltantes es "+Faltantes); // Para que no siga mirando la lista: PunteroDeColores = Faltantes; } } // Si el color no faltaba: if (ColorFaltaba == "No") { trace ("No faltaba, se verá si es uno de los únicos."); // Esto puede cambiar: ColorUnico = "Sí"; PunteroDeColores = 0; while (PunteroDeColores<MenosDe2) { PunteroDeColores++; trace ("Comparando con el color guardado en el lugar "+PunteroDeColores+": "+eval("MenosDe2"+PunteroDeColores)); if (ColorDeCuadradito.getRGB() == eval("MenosDe2"+PunteroDeColores)) { trace ("Iguales, el color del cuadradito recién agregado ya existía."); ColorUnico = "No"; // Quitarlo de la lista de únicos, // para eso sustituirlo por... // el último y borrar el último // (si el que debe borrarse es el último, // la sustitución es en vano pero... // el resultado el mismo, // sin necesidad de reordenar la lista) set ("MenosDe2"+PunteroDeColores, eval("MenosDe2"+MenosDe2)); MenosDe2--; trace ("La cantidad de colores únicos es "+MenosDe2); // Para que no siga mirando la lista: PunteroDeColores = MenosDe2; } } if (ColorUnico == "No") { trace ("El cuadradito "+CuadraditosColocados+" tiene un color ya existente: "+ColorDeCuadradito.getRGB()); trace ("El cuadradito "+CuadraditoaRepintar+" tiene un color ya existente: "+ColorDeCuadradito.getRGB()); } } } // Agregar, distribuir cuadraditos y asignarles un color, // pero la cantidad de diferentes colores debe ser... // la indicada por _level0.ColoresRequeridos. Por eso... // se hace una lista de los colores faltantes y de... // los presentes menos de 2 veces, // y se irán eliminando en el futuro: Faltantes = _level0.ColoresRequeridos; MenosDe2 = _level0.ColoresRequeridos; Colores = 0; do { Colores++; set ("Faltante"+Colores, _level0.PosiblesColores[Colores-1]); set ("MenosDe2"+Colores, _level0.PosiblesColores[Colores-1]); } while (Colores<_level0.ColoresRequeridos); CuadraditosColocados = 0; Columna = 0; Fila = 0; trace ("Asignando colores para un nuevo dibujo."); do { CuadraditosColocados = CuadraditosColocados+1; attachMovie("mCuadradito", "Cuadradito"+CuadraditosColocados, CuadraditosColocados); setProperty ("Cuadradito"+CuadraditosColocados, _x, Columna*_level0.LargoDeCuadraditos); setProperty ("Cuadradito"+CuadraditosColocados, _y, Fila*_level0.LargoDeCuadraditos); setProperty ("Cuadradito"+CuadraditosColocados, _width, _level0.LargoDeCuadraditos); setProperty ("Cuadradito"+CuadraditosColocados, _height, _level0.LargoDeCuadraditos); ColorDeCuadradito = new Color("Cuadradito"+CuadraditosColocados); ColorDeCuadradito.setRGB(_level0.PosiblesColores[random(_level0.PosiblesColores.length)]); // Si el dibujo no tenía los colores necesarios: if (Faltantes>0) { trace ("El dibujo probablemente aún no tiene los colores requeridos, faltaban: "+Faltantes); trace ("Se colocó el cuadradito: "+CuadraditosColocados); trace ("Su color es: "+ColorDeCuadradito.getRGB()); trace ("Se verá si es uno de los faltantes."); VerSiColorFaltabaEtc(); } Columna = Columna+1; if (Columna == _level0.CuadraditosPorFila) { Columna = 0; Fila = Fila+1; } } while (CuadraditosColocados<_level0.MaxCuadradito); // Si es necesario, reasignar colores hasta lograr lo requerido: while (Faltantes>0) { trace ("Se asignó color a todos los cuadraditos pero faltaron colores: "+Faltantes); trace ("Se volverán a asignar colores."); CuadraditoaRepintar = 0; do { CuadraditoaRepintar++; ColorDeCuadradito = new Color("Cuadradito"+CuadraditoaRepintar); ColorDeCuadradito.setRGB(_level0.PosiblesColores[random(_level0.PosiblesColores.length)]); VerSiColorFaltabaEtc(); } while (CuadraditoaRepintar<_level0.MaxCuadradito); }
Por esto simplificado que funciona mal: // Agregar, distribuir cuadraditos y asignarles un color: CuadraditosColocados = 0; Columna = 0; Fila = 0; trace ("Asignando colores para un nuevo dibujo."); do { CuadraditosColocados = CuadraditosColocados+1; attachMovie("mCuadradito", "Cuadradito"+CuadraditosColocados, CuadraditosColocados); setProperty ("Cuadradito"+CuadraditosColocados, _x, Columna*_level0.LargoDeCuadraditos); setProperty ("Cuadradito"+CuadraditosColocados, _y, Fila*_level0.LargoDeCuadraditos); setProperty ("Cuadradito"+CuadraditosColocados, _width, _level0.LargoDeCuadraditos); setProperty ("Cuadradito"+CuadraditosColocados, _height, _level0.LargoDeCuadraditos); ColorDeCuadradito = new Color("Cuadradito"+CuadraditosColocados); ColorDeCuadradito.setRGB(_level0.PosiblesColores[random(_level0.PosiblesColores.length)]); // Incrementar el contador de cuadraditos de ese color: Resumen = "Color"+ColorDeCuadradito; set(Resumen, eval(Resumen)+1); Columna = Columna+1; if (Columna == _level0.CuadraditosPorFila) { Columna = 0; Fila = Fila+1; } } while (CuadraditosColocados<_level0.MaxCuadradito); // El dibujo debe tener la cantidad de colores... // indicada por _level0.ColoresRequeridos. Por eso, // y por practicidad, se asignará a cuadraditos al azar, // cada uno de los colores, evitando reelegir cuadraditos. Colores = 0; do { // Elegir cuadradito al azar: CuadraditoElegido = random(_level0.MaxCuadradito)+1; trace("CuadraditoElegido: "+CuadraditoElegido); // Ver si ya fue elegido: PunteroDeElegidos = 0; while (Colores>PunteroDeElegidos) { PunteroDeElegidos++; trace("Comparando con el "+PunteroDeElegidos+", que es: "+eval("Elegido"+PunteroDeElegidos)); if (eval("Elegido"+PunteroDeElegidos) == CuadraditoElegido) { trace("Son iguales"); // Ya elegido, repetir el proceso para elegir otro: Colores--; // Terminar este loop: PunteroDeElegidos = Colores; } } Colores++; // Guardar en la lista al cuadradito elegido: set("Elegido"+Colores, CuadraditoElegido); trace("El recién elegido fue guardado en: Elegido"+Colores); // Asignarle el color: ColorDeCuadradito = new Color("Cuadradito"+CuadraditoElegido); ColorDeCuadradito.setRGB(_level0.PosiblesColores[Colores-1]); trace("Se le asignó el color "+_level0.PosiblesColores[Colores-1]); trace("La cantidad de colores asignada es "+Colores); } while (Colores<_level0.MaxCuadradito);
Y lo arreglé así: // Agregar, distribuir cuadraditos y asignarles un color: CuadraditosColocados = 0; Columna = 0; Fila = 0; trace ("Asignando colores para un nuevo dibujo."); do { CuadraditosColocados = CuadraditosColocados+1; attachMovie("mCuadradito", "Cuadradito"+CuadraditosColocados, CuadraditosColocados); setProperty ("Cuadradito"+CuadraditosColocados, _x, Columna*_level0.LargoDeCuadraditos); setProperty ("Cuadradito"+CuadraditosColocados, _y, Fila*_level0.LargoDeCuadraditos); setProperty ("Cuadradito"+CuadraditosColocados, _width, _level0.LargoDeCuadraditos); setProperty ("Cuadradito"+CuadraditosColocados, _height, _level0.LargoDeCuadraditos); ColorDeCuadradito = new Color("Cuadradito"+CuadraditosColocados); ColorDeCuadradito.setRGB(_level0.PosiblesColores[random(_level0.PosiblesColores.length)]); // Incrementar el contador de cuadraditos de ese color: Resumen = "Color"+ColorDeCuadradito; set(Resumen, eval(Resumen)+1); Columna = Columna+1; if (Columna == _level0.CuadraditosPorFila) { Columna = 0; Fila = Fila+1; } } while (CuadraditosColocados<_level0.MaxCuadradito); // El dibujo debe tener la cantidad de colores... // indicada por _level0.ColoresRequeridos. Por eso, // y por practicidad, se asignará a cuadraditos al azar, // cada uno de los colores, evitando reelegir cuadraditos. Colores = 0; do { // Elegir cuadradito al azar: CuadraditoElegido = random(_level0.MaxCuadradito)+1; trace("CuadraditoElegido: "+CuadraditoElegido); // Esto puede cambiar: ElegidoValido = "Sí"; // Ver si ya fue elegido: PunteroDeElegidos = 0; while (Colores>PunteroDeElegidos) { PunteroDeElegidos++; trace("Comparando con el "+PunteroDeElegidos+", que es: "+eval("Elegido"+PunteroDeElegidos)); if (eval("Elegido"+PunteroDeElegidos) == CuadraditoElegido) { trace("Repetido"); // Ya elegido, repetir el proceso para elegir otro: ElegidoValido = "No"; // Terminar este loop: PunteroDeElegidos = Colores; } } if (ElegidoValido == "Sí") { Colores++; // Guardar en la lista al cuadradito elegido: set("Elegido"+Colores, CuadraditoElegido); trace("El recién elegido fue guardado en: Elegido"+Colores); // Asignarle el color: ColorDeCuadradito = new Color("Cuadradito"+CuadraditoElegido); ColorDeCuadradito.setRGB(_level0.PosiblesColores[Colores-1]); trace("Se le asignó el color "+_level0.PosiblesColores[Colores-1]); trace("La cantidad de colores asignada es "+Colores); } } while (Colores<_level0.ColoresRequeridos);
Ahora bien ¿es necesario ese último if? ¿el código anterior no puede funcionar bien sin eso? Lo hice intentando evitar ese if y lo tuve que usar igual, bah, creí que era posible ¿no lo es? ¿cómo sería posible? En cuanto a qué es más eficiente, no lo sé, de esta forma se están asignando colores que puede que ya estén asignados y entonces es innecesario, pero la cantidad de colores que usaré es más bien poca así que el loop es corto y de la otra manera hay que usar más loops así que... Dudo que esto sea mala idea.
|
|
|
57
|
Foros Generales / Sugerencias y dudas sobre el Foro / Re: ¿Editar un tema lo vuelve a temas activos?
|
en: 4 Octubre 2024, 03:13 am
|
Está bien el ejemplo pero no se permite, en este país, entrar a supermercados con capucha puesta, lentes de Sol puestos, cascos puestos, las mochilas hay que dejarlas en casilleros, etc, tú sabrás por qué.
Quizá la solución sea que los moderadores puedan marcar temas como No editable, y los demás sí se puedan editar. O que se pueda si nadie respondió el tema. O que todos sean no editables por defecto y los mods puedan marcar temas como editables, no sé cual de las 2 les quedaría más cómodo para ellos, pero para el usuario sería lo 1ero porque con esto cabría preguntar "Eh ¿por qué aún no lo marcaste como editable?".
|
|
|
58
|
Media / Juegos y Consolas / ¿Posibilidad de que todos los monstruos se acerquen en Diablo 2?
|
en: 3 Octubre 2024, 11:00 am
|
Se acercan sólo si tú te acercas. Lo que digo sería que a penas sales del pueblo o llegas a un teletransportador, todos los que puedan acercarse lo hagan, y combatan. No me refiero a los que estén dentro de lugares apartados como mazmorras o Tristam, pero una vez que entres a una sería lo mismo, en lo posible.
¿Existe un mod para eso? ¿hay posibilidad de hacerlo?
|
|
|
59
|
Media / Juegos y Consolas / Re: Relación estado e ítems obtenibles en Diablo 2.
|
en: 2 Octubre 2024, 07:16 am
|
He leído cosas pero sigo sin saber los detalles que busco. Aquí por ejemplo hay info: https://diablo2.diablowiki.net/Item_Generation_Tutorial¿Cual es el ILV de los sets? En un sitio dice que el del Artic Gear es 3, pero los Artic Mitts son Light Gauntlets y ese tipo de ítems dice que tienen ILV 20, así que no sé. En teoría, si un jugador tuviera mucha suerte ¿desde qué momento podría tener el Artic Gear completo? Si se vence a un monstruo de LV10 por ejemplo ¿qué ítems puede dar? Me refiero a tipos (cap, hat, full hat, etc), a affixes y suffixes, a únicos y sets. Además ese texto me resulta confuso. Yo lo que sé es: - Los ítems que aparecen en los comercios tienen hasta LV+5 comparados con el del personaje, pero en la dificultad normal tienen límites y parece que hay otros límites, no entiendo bien. - El LV de los monstruos varía según el área y nivel de dificultad, salvo el de ciertos monstruos únicos. - El Item Level depende del LV del monstruo vencido. - Entre mayor sea el ILV, más probable es que el ítem sea mejor. Y alguna otra cosa pero me resulta complicado. Voy a mirar guías de Game faq a ver si ahí lo explican más claro, lo que he visto por ahora para mí no.
|
|
|
60
|
Foros Generales / Sugerencias y dudas sobre el Foro / ¿Editar un tema lo vuelve a temas activos?
|
en: 1 Octubre 2024, 03:41 am
|
Si tengo novedades sobre un tema, suelo publicarlas en una nueva respuesta. No más de 1, porque entiendo que el doble post no es del todo ético, y ni que hablar del triple o más. Responder es más rápido que editar, no sólo porque no es necesario ir al fondo del mensaje, sino porque no es necesario poner EDIT o pasar una raya, etc. Además es más prolijo, más fácil de entender, la novedad en un nuevo post, separado. Pero bueno, si es mejor, voy a empezar a editar en vez de responder. ¿Pero el tema vuelve a activos? Acá: https://foro.elhacker.net/unread.html;allO si vuelve a arriba en la lista de temas. Me pregunto porque qué sentido tiene poner novedades en un tema que seguirá abajo como si ya hubieran visto todo de él.
|
|
|
|
|
|
|