elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [25] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ... 254
241  Foros Generales / Dudas Generales / Re: ¿Es caro mandar bots a hacer propaganda? en: 4 Abril 2025, 22:49 pm
No me dieron suficiente información, también estoy curioso sobre eso.

Es sobre un político en Rumania. Creo que ganó pero lo descalificaron porque se dice que gastó mucho en propaganda. Alguien me está diciendo que con bots. Yo no entiendo, en foros hay bots pero parece imposible que alguien les haga caso. No se vota a alguien porque use bots. Pero el tema es si es caro o no, no sé.

Tic toc creo. ¿Qué tipo de bots hay?
242  Foros Generales / Foro Libre / Re: PornografIA en: 4 Abril 2025, 22:33 pm
No sé qué le ves de malo al porno.

En principio son videos. Un video puede ser bueno o malo. Los involucrados pueden estar voluntariamente o no. Pueden ser beneficiados o no. Los 3eros, dudo que importen. Sería como prohibir una película porque a alguien de afuera le moleste. En estos casos, dudo que sea basado en una historia de esa persona, o sea reconocido por ella.

Si los videos se publican sin autorización de los involucrados, se pueden calificar de malos, pero personalmente me gusta lo real, no lo exagerado, así que si parecen pasarlo bien me parece bien. En cambio si veo cosas raras paso. He visto un poco de uno que era horrible, una mujer tirada en una pequeña sala y una fila de tipos. Ella dijo que no quería y uno le dijo que siga y tome su dinero. No apareció en la deep web ni nada raro, no ando por ahí. Pero he visto cientos de videos y prácticamente fue el único así.

Si son beneficiados aunque quisieran que sus videos no estén, tampoco es bueno, pero sería un caso muy raro. Además a nadie debería molestarle, o sea, hay muchos videos, es muy difícil que haya uno en que salgas y te vea gente cercana a ti, o sea, si por ejemplo fue hecho en Europa y lo veo yo ¿qué les importa? Vive y deja vivir.

¿Cuando un video es malo? Cuando sus protagonistas sufren por eso o si tiene hipnosis o algo, que ni siquiera tengo confirmado que sea posible. ¿Los protagonistas sufren en los videos? Quizá, pero ¿es culpa de los consumidores? Si me gusta el anime por el estilo de dibujo, las voces, e historias en varios casos, pero últimamente hacen montones de Isekais ¿es mi culpa? Si te gustan los videojuegos pero últimamente ponele que hacen montones de FPS ¿es mi culpa?

No, o sea, sí consumo Isekai y algún FPS he jugado, pero lo que intento decir es que no hay un único estilo de porno, como no lo hay de anime o videojuego, y si hacen muchos de un estilo no es culpa de todos, no quieras prohibir el anime o lo que sea porque se esté haciendo mal. Además en el caso del porno no creo que sea tanto el caso, hay de todo, y por supuesto hay mujeres que lo hacen para autopromocionarse, algunas quizá hasta eligen con quien y lo pasan bien y ganan dinero y los demás lo disfrutamos (en lo posible) ¿qué tiene de malo?

Además es medio como una necesidad, me siento mal si no... Y no siempre quiero usar la imaginación.

Ah, también está el tema del porno infantil y cosas raras, pero creo que es otro tema, vos atacaste a todo el porno no a un estilo o forma específica.
243  Programación / Programación General / Agregar cosas que se muevan, colisionen, desaparezcan, etc. en: 4 Abril 2025, 13:58 pm
La idea es que este Mario pueda convocar cosas como en su juego original:

Maníbulas, pájaros, chispas...

Donkey Kong también otras cosas.

Otros personajes que ponga más adelante también, e incluso las cosas mismas (algunos pájaros de Mario dejan caer huevos, por ejemplo).

Algunas diferentes tipos de cosas se moverían igual, pero otras no.

El daño que hacen al colisionar con algo depende de qué cosa sea ella, y el algo. Aún no tengo seguro esto pero es básicamente poder de colisión y de defensa.

¿Cómo harían todo eso uds?

Quiero evitar líos.

Por ahora lo que se me ocurre es:
- Crear una lista de Profundidades disponibles. En Flash cada cosa visible que se agrega debe tener cierta profundidad, un número, y si se pone que una tenga la misma que otra, la 1era desaparece. No sé si 1000 será muy pesado. Significaría que puede haber hasta 1000 cosas agregadas.
- Crear una lista de Extras, que serían las cosas agregadas.
- Cuando se agrega algo, se toma el 1er número disponible de Profundidades, y la cosa se agrega en la lista de Extras. Su nombre sería por ejemplo "Spark"+Numero (obtenido de Profundidad). Eso significa que podría haber Spark1 y Spark3, sin haber existido 2, si en medio se agregó otra cosa. Pero bueno, el número es su profundidad y para distinguir, no es un conteo de los tipos de cosas agregadas.
- Cuando un extra desaparece, se agrega su número en Profundidades y su nombre se quita de Extras.

Y lo más complicado, un while que recorrería la lista de Extras llamando a sus correspondientes códigos y viendo si colisionan con otra cosa.

Para llamar a distintos códigos según qué extra sea, tendría que quitarle el número a su nombre, porque no puede existir una función Spark1Code, Spark2Code, etc, todos iguales, debe ser SparkCode, BirdCode, etc. Entonces en vez de una lista de extras podrían ser 2:
- Una tiene los nombres con número para saber exacto qué cosa es, cuando se requiera moverla, etc.
- La otra tiene sólo el nombre del tipo de cosa que es, así se sabe a qué código llamar.

Otra posibilidad sería que exista un objeto Pájaros, por ejemplo, donde se pongan ellos, y entonces no habría saltos en la numeración (aunque no es problema) y todos usarían el mismo código.
No habría necesidad de funciones variables, pero habría muchos objetos generalmente en vano viendo si tienen algo en ellos... Creo que es mejor lo anterior.

Otra sería que en vez de una lista de Extras haya una de pájaros, etc, pero de nuevo serían muchos whiles, uno para cada lista, que generalmente estaría vacía, so...

Los códigos de las cosas agregadas, en vez de estar en la zona root pueden estar en ellos mismos, pero eso hace que se ejecuten luego de lo que esté en root, creo, así que tampoco parece buena idea.

¿Estará bien?

Ya tengo a Mario pudiendo caminar y dar latigazos, todo dependiente de la velocidad o fuerza que le ponga. Cuando tiene 1 MP convoca a una mandíbula. Me falta que se mueva.
Donkey Kong camina hacia Mario golpeando su pecho a una velocidad dependiente de la que camina. No lo muestro porque me paspa grabar el video.

Código
  1. // Las imágenes fueron tomadas con Virtualnes, zoom 2,
  2. // copiadas desde Chrome.
  3. // General:
  4. fscommand ("fullscreen", "true");
  5. // Se refiere a convocados:
  6. ListaDeExtras = [];
  7. // Player:
  8. attachMovie("sMarioDK", "Player", 1001);
  9. setProperty ("Player", _x, 20);
  10. setProperty ("Player", _y, 568);
  11. // Determinan a qué función se llama:
  12. Player.Action = "Quiet";
  13. Player.Action2 = "Quiet";
  14. Player.Facing = 1;
  15. MarioDKHP = 1;
  16. MarioDKMPMax = 1;
  17. MarioDKMP = 1;
  18. MarioDKMPRecovery = 0.003;
  19. MarioDKPower = 2;
  20. MarioDKSpeed = 0.5;
  21. // La animación avanza cuando esto llega a 100:
  22. MarioDKTurn = 0;
  23. // La velocidad de la animación puede depender de la velocidad...
  24. // de caminar, o de la fuerza, etc:
  25. MarioDKTic = MarioDKSpeed*1.5;
  26. // Para que al empezar a caminar o a quedarse quieto,
  27. // el martillo quede como estaba, arriba o abajo,
  28. // en el mismo nro de frame:
  29. Player.EtapaDeMartillo = 1;
  30. Player.ResetearEtapaDeMartillo = "No";
  31. // IA:
  32. attachMovie("sDK", "IA", 1000);
  33. setProperty ("IA", _x, 780);
  34. setProperty ("IA", _y, 568);
  35. IA.Action2 = "Quiet";
  36. IA.Facing = -1;
  37. DKSpeed = 0.4;
  38. IATurn = 0;
  39. // Escenario:
  40. attachMovie("sDKSuelo", "Suelo", 0);
  41. setProperty ("Suelo", _x, 0);
  42. setProperty ("Suelo", _y, 568);
  43. // /////////////////////////////////////////////
  44. // //////////////////  Most  ///////////////////
  45. // /////////////////////////////////////////////
  46. function FaceRight (Character) {
  47. if (eval(Character+".Facing") == -1) {
  48. set (Character+".Facing", 1);
  49. eval(Character)._xscale = 100;
  50. }
  51. }
  52. function FaceLeft (Character) {
  53. if (eval(Character+".Facing") == 1) {
  54. set (Character+".Facing", -1);
  55. eval(Character)._xscale = -100;
  56. }
  57. }
  58. // /////////////////////////////////////////////
  59. // //////////////////  Mario  //////////////////
  60. // /////////////////////////////////////////////
  61. // Power up: Las criaturas que convoca se mueven mejor.
  62. function ControlMario () {
  63. if (Key.isDown(83)) {
  64. // Si se presiona S.
  65. eval("SWhen"+Player.Action+Player.Action2)();
  66. } else if (Key.isDown(32)) {
  67. // Espacio:
  68. eval("SpaceWhen"+Player.Action+Player.Action2)();
  69. } else if (Key.isDown(39)) {
  70. // Derecha:
  71. eval("RightWhen"+Player.Action+Player.Action2)();
  72. } else if (Key.isDown(37)) {
  73. // Izquierda:
  74. eval("LeftWhen"+Player.Action+Player.Action2)();
  75. } else {
  76. // Nada:
  77. eval("QuietWhen"+Player.Action+Player.Action2)();
  78. }
  79. MarioDKTurn = MarioDKTurn + MarioDKTic;
  80. if (MarioDKTurn >= 10) {
  81. MarioDKTurn = 0;
  82. Player.EtapaDeMartillo++;
  83. if (Player.EtapaDeMartillo == 7) {
  84. Player.EtapaDeMartillo = 1;
  85. }
  86. Player.Movie.play();
  87. }
  88. if (MarioDKMP < MarioDKMPMax) {
  89. MarioDKMP = MarioDKMP+MarioDKMPRecovery;
  90. }
  91. }
  92. // When QuietQuiet:
  93. function SWhenQuietQuiet () {
  94. Whip();
  95. }
  96. function RightWhenQuietQuiet () {
  97. StartToWalk();
  98. WalkToRight();
  99. }
  100. function LeftWhenQuietQuiet () {
  101. StartToWalk();
  102. WalkToLeft();
  103. }
  104. // When QuietWalking:
  105. function SWhenQuietWalking () {
  106. Player.Action2 = "Quiet";
  107. Whip();
  108. }
  109. function RightWhenQuietWalking () {
  110. WalkToRight();
  111. }
  112. function LeftWhenQuietWalking () {
  113. WalkToLeft();
  114. }
  115. function QuietWhenQuietWalking () {
  116. Player.Action2 = "Quiet";
  117. Quiet();
  118. }
  119. // To whens:
  120. function Whip () {
  121. Player.Action = "Whiping";
  122. MarioDKTic = MarioDKPower/2;
  123. Player.gotoAndStop(3);
  124. if (MarioDKMP >= 1) {
  125. MarioDKMP--;
  126. Extras++;
  127. Name = "Extra"+Extras;
  128. attachMovie("sDKSnapjaw", Name, Extras);
  129. setProperty (Name, _x, Player._x+1);
  130. setProperty (Name, _y, 568);
  131. }
  132. }
  133. function StartToWalk () {
  134. Player.Action2 = "Walking";
  135. MarioDKTic = MarioDKSpeed*1.5;
  136. Player.gotoAndStop(2);
  137. }
  138. function WalkToRight () {
  139. Player._x = Player._x+MarioDKSpeed;
  140. FaceRight("Player");
  141. }
  142. function WalkToLeft () {
  143. Player._x = Player._x-MarioDKSpeed;
  144. FaceLeft("Player");
  145. }
  146. function Quiet () {
  147. Player.Action2 = "Quiet";
  148. Player.gotoAndStop(1);
  149. }
  150. // /////////////////////////////////////////////
  151. // //////////////////  DK IA  //////////////////
  152. // /////////////////////////////////////////////
  153. // Power up: Puede caminar.
  154. function DKVsMario () {
  155. Distancia = IA._x-Player._x;
  156. if (Distancia > 0) {
  157. IA._x = IA._x-DKSpeed;
  158. IA.Action2 = "Walking";
  159. } else if (Distancia < 0) {
  160. IA._x = IA._x+DKSpeed;
  161. IA.Action2 = "Walking";
  162. } else {
  163. IA.Action2 = "Quiet";
  164. }
  165. IATurn = IATurn+DKSpeed/2;
  166. if (IATurn >= 10) {
  167. IATurn = IATurn-10;
  168. IA.play();
  169. }
  170. }

El juego sería de que recibirán un ataque y deben entrenar. Irán ganando poderes y esas cosas. Se desbloquearían más personajes, etc, pero ya es otro tema.
244  Foros Generales / Dudas Generales / ¿Es caro mandar bots a hacer propaganda? en: 3 Abril 2025, 14:48 pm
Se me dijo que cierta persona los usó y tenía prohibido gastar más de cierta cantidad de dinero, pero me imaginaba que usarlos era más un tema de saber hacerlos que de tener dinero ¿cómo es?

Pregunto porque se le acusó con ese pretexto, o eso me dijeron, que está demostrado que gastó mucho, porque usó muchos bots, y para mí no tiene sentido porque dudo mucho que eso cueste mucho.

Si son propagandas tipo carteles sería otra cosa.

A menos que fueran bots con super IA, pero en teoría también se podría sin gastar mucho. Yo no podría con esta PC supongo, pero con una normal hoy en día ¿no? ¿es muy complicado? Seguro hay herramientas gratis que lo hacen. Se instala una IA, un programa le pide que elabore propagandas y las manda ¿no?

Tampoco tengo la habilidad como para eso, pero tampoco para manejar un avión, y no es que haya que ser un genio para eso. Los interesados podrían aprender sin mucho gasto ¿o no?
245  Foros Generales / Foro Libre / Re: ¿En el Ajedrez cual es el estado más lejano del inicial y cuántas jugadas se requieren? en: 2 Abril 2025, 01:16 am
Las posibilidades si son infinitas por el motivo de que puedes volver a la misma posición.
Eso si se consideran las reglas que dices luego, sí es una situación distinta considerando la serie de jugadas, pero la situación en el tablero es la misma, las piezas y sus posiciones.

Hay cantidades más infinitas que otras (ejemplo los números pares son infinitos, pero son menos que los números comúnes), hace tiempo pensé que si había casos imposibles entonces no hay infinito, pero me equivoqué en el razonamiento.
Igual, creo que hay muchas situaciones imposibles.

Desde mi punto de vista, conocer los posibles principios no implica conocer sus posibles consecuencias. Olvidé mencionar que quiero calcular probabilidades basado en las posibles consecuencias.

Por otro lado, me diste la idea de buscar un árbol de 3 en línea.
246  Foros Generales / Foro Libre / Re: Hola de nuevo en: 1 Abril 2025, 08:30 am
Es por los que se fueron hace 15 años.
Al irse, el foro perdió actividad, y los que quedaban perdieron parte de la motivación para quedarse, es como una fila de fichas de dominó, no sé si me explico, la caída o el retiro de uno provoca lo mismo en otro, o contribuye a provocarlo.

O hay algo más, no sé bien qué.

Preguntas hay, e incluso aportes.

En el caso de los aportes, yo no puedo opinar porque no sé de qué hablan, parece chino. Pero por qué otros no postean para decir que harían X mejora o Y, no sé ¿se considera mala educación decir eso, como si se estuviera criticando el trabajo de otro? Buh.

Preguntas en general tampoco puedo responder, además en varios casos soy quien las hago. Por qué no las responden, no sé, puede ser que no les interesa el tema porque poco tiene que ver con seguridad informática, o porque uso un lenguaje muy antiguo, o porque escribo mucho, o mal, o porque son preguntas complicadas, etc.

Luego está la teoría, que la dijo un usuario que se fue, de que muchos aquí no quieren compartir lo que saben.

Muchos imagino que no tienen tiempo, ni muchos recursos, como para usar una PC seguido.

En fin, es cierto que si la gente se va esto decae, pero los que están podrían hacer más que sólo aparecer para moderar y/o saludar en fin de año:
https://foro.elhacker.net/foro_libre/feliz_navidad-t522878.0.html
El tema que más recibe respuestas es el más vanal o el de guerras donde es su creador (del tema) quien más postea, y muchas veces ni son escritos suyos. Pero para algunos está prohibido casi hablar de política, así que aunque esos temas tuvieran mucho valor, es como que baja por eso.

Sin ánimo de ofender o decir que el foro está horrible, sólo trato de entender qué pasa, no creo que sea sólo "se fue mucha gente" ¿qué pasa con la que queda?

La otra teoría que se me olvidó es que, como la información está por ahí, no vale la pena decirla, es como un tema de humildad también, la gente no se cree super hacker y por lo tanto no vienen a dar clases. Yo no tengo mucho interés en el hacking, pero algunos consejos de programación podrían servir, un tema con un curso. En vez de hacer temas de que Musk o Trump se tiraron un pedo o lo que sea.
247  Foros Generales / Foro Libre / ¿En el Ajedrez cual es el estado más lejano del inicial y cuántas jugadas se requieren? en: 1 Abril 2025, 07:47 am
Lo acabo de hablar con Deepseek.

En teoría los peones tendrían que haberse movido de a 1 casillero, hasta coronar, probablemente a caballo.

Pero para que los peones no se bloqueen entre sí, algunas piezas deberían perderse, lo cual pone en duda la teoría.

Los reyes tendrían que moverse hacia las esquinas opuestas, sin enrocar, pero la posibilidad de que les hagan jaque y los obliguen a retroceder u otras cosas, hace que no pueda descartarlo.

Dije que los peones probablemente deban coronar a caballo porque esa es la pieza que más tardaría en llegar a cierto sitio.

Demasiada teoría, muy en el aire.

¿Qué opinan?

Dicen que en este juego hay más posibilidades que átomos en el universo, y yo aún no termino mi IA para Signos en línea, pero he pensado que se debe iniciar a resolver desde las situaciones más alejadas, en que sólo queda 1 casillero libre, y entonces me preguntaba qué sería lo análogo en el Ajedrez... Pero no digo las situaciones en que un jugador sólo tiene 1 opción, sino las que requieren más movimientos para ocurrir, aunque... como en este juego se puede volver a situaciones anteriores, no como en el Signos en línea, supongo que mi plan no funcionaría. Sólo puedo evaluar situaciones que sólo tienen 1 opción que termine la partida o que lleven a situaciones ya evaluadas. Si hay situaciones no resueltas que lleven a otras no resueltas, no sé. En fin, ese es el motivo, es otra cuestión que estoy pensando, pero la pregunta me pareció interesante.
248  Programación / Programación General / El martillo no se queda donde lo dejé. en: 31 Marzo 2025, 20:54 pm
Tengo 2 animaciones de Mario martillando.

En una está quieto, en la otra caminando.

Ambas tienen 6 frames.

En los 1eros 3 el martillo está arriba, en las demás abajo.

Cuando el personaje pase de quieto a caminando, o viceversa, debo cambiar la animación y quiero que el martillo quede como estaba, o sea, si estaba en el 2ndo frame en que está arriba, la otra animación debe empezar ahí.

Para eso puse una variable EtapaDeMartillo, que marca a qué frame debe irse.

Cada animación, en el frame 1, establece que es 1, y en los demás le suma 1.

Cuando debe ocurrir el cambio de animación, uso esto:
Código
  1. Player.SaveDeEtapaDeMartillo = Player.EtapaDeMartillo;
  2. Player.gotoAndStop(3);
  3. Player.Movie.gotoAndStop(Player.SaveDeEtapaDeMartillo);
  4. Player.EtapaDeMartillo = Player.SaveDeEtapaDeMartillo;
  5.  
Donde dice 3, en el otro caso es 2. No hay problema con eso. Lo demás son intentos de hacer que funcione pero no hay caso. No entiendo bien qué pasa, tengo estos prints:
f1, 1
f2, 2
f3, 3
f4, 4
quiet
f1, 4
f4, 2
walking
f1, 2
f2, 2
significa que, durante 4 frames estuvo bien, en el frame 1 la variable es 1, en el 2 es 2, etc, hasta 4, se estaba ejecutando la animación de que estaba quieto. En el 4to es cuando baja el martillo. Ahí empecé a caminar. Se activa el frame 1 de la otra animación, aunque ese frame no se muestre, aparentemente es inevitable, cuando carga la película se activa eso. Eso hace que EtapaDeMartillo sea 1, pero va al frame 4 donde debe ser 4, se le suma 1 ahí y queda 2, pero debe ser 4. Luego cuando dejo de caminar el martillo aparece encima, supongo que porque está en el frame 2.

Con SaveDeEtapaDeMartillo intenté que luego de que se cargue la película y se modifique EtapaDeMartillo, esta variable lo vuelva a su valor original, pero no funciona, como expliqué, es como si 1ero se ejecutara este código y luego el que está en la película.

Puedo poner un if en el 1er frame de las animaciones, que no resetee EtapaDeMartillo si acaba de ocurrir un cambio, pero parece una forma muy tosca de hacerlo ¿qué alternativas son mejores?

Citar
Tienes un problema clásico de _sincronización_ entre el código y la línea de tiempo en Flash/ActionScript. Básicamente, cuando haces `gotoAndStop()`, inmediatamente se ejecutan las acciones del primer frame del `MovieClip` al que estás yendo, **antes** de que tu siguiente línea de código se ejecute. Por eso tu variable `EtapaDeMartillo` se sobrescribe con `1` antes de que tengas oportunidad de restaurarla.

### ✅ Diagnóstico
Tu flujo actual es este:

1. Guardas `EtapaDeMartillo` en `SaveDeEtapaDeMartillo`.
2. Haces `gotoAndStop()` para cambiar de animación (`2` o `3`).
3. Al entrar al nuevo `MovieClip`, se ejecuta el **Frame 1**, que **resetea** `EtapaDeMartillo` a `1`.
4. Luego intentas restaurar `EtapaDeMartillo`, pero ya es tarde: el `MovieClip` ya avanzó y está desfasado.

---

## 🛠️ Soluciones posibles

### ✅ Solución 1: Usar una bandera para evitar el reset

Es la que tú mencionas, y aunque suene "tosca", **es una de las soluciones más robustas y utilizadas** en este tipo de casos. Aquí te la detallo bien organizada:

```actionscript
// Antes de cambiar de animación
Player.SkipResetEtapa = true;
Player.SaveDeEtapaDeMartillo = Player.EtapaDeMartillo;
Player.gotoAndStop(3); // o 2
Player.Movie.gotoAndStop(Player.SaveDeEtapaDeMartillo);
Player.EtapaDeMartillo = Player.SaveDeEtapaDeMartillo;
```

Y en el **frame 1** de cada animación:

```actionscript
if (!Player.SkipResetEtapa) {
    Player.EtapaDeMartillo = 1;
} else {
    Player.SkipResetEtapa = false;
}
```

Esto evita que el frame 1 sobrescriba `EtapaDeMartillo` si acabás de hacer un cambio controlado.

> 💡 *Este patrón se llama "flag de inicialización" y es muy común para evitar que el código embebido en los frames interfiera con lógica externa.*

---

### ✅ Solución 2: Mover la lógica de `EtapaDeMartillo` fuera de los frames

En lugar de que cada frame modifique `EtapaDeMartillo` desde la línea de tiempo, mueve la lógica a un solo lugar central en tu código. Esto te da **control total** y evita que los `gotoAndStop()` ejecuten código no deseado.

**Ventajas:**
- Código más limpio y mantenible.
- Sin efectos colaterales de `gotoAndStop`.

**Desventajas:**
- Necesitas refactorizar un poco tu animación para que no dependa de código en los frames.

---

### ✅ Solución 3: Usar `onEnterFrame` para aplicar el cambio luego del `gotoAndStop`

Otra técnica es **dejar que el frame se cargue** y luego, en el siguiente frame (es decir, en el siguiente `onEnterFrame`), restaurar la variable:

```actionscript
Player.SaveDeEtapaDeMartillo = Player.EtapaDeMartillo;
Player.gotoAndStop(3);
Player.RestaurarEtapa = true;

// Luego, en el onEnterFrame del jugador
if (Player.RestaurarEtapa) {
    Player.Movie.gotoAndStop(Player.SaveDeEtapaDeMartillo);
    Player.EtapaDeMartillo = Player.SaveDeEtapaDeMartillo;
    Player.RestaurarEtapa = false;
}
```

Esto asegura que el código del `MovieClip` se ejecute primero, y tú corrijas después.

---

## ✅ Recomendación final

La solución **más simple y efectiva** en tu caso es la **bandera en el frame 1**. Es clara, fácil de mantener, y resuelve el problema sin grandes refactorizaciones.

```actionscript
// En el frame 1
if (!Player.SkipResetEtapa) {
    Player.EtapaDeMartillo = 1;
} else {
    Player.SkipResetEtapa = false;
}
```

Y en tu código principal:

```actionscript
Player.SkipResetEtapa = true;
Player.SaveDeEtapaDeMartillo = Player.EtapaDeMartillo;
Player.gotoAndStop(3); // o 2
Player.Movie.gotoAndStop(Player.SaveDeEtapaDeMartillo);
Player.EtapaDeMartillo = Player.SaveDeEtapaDeMartillo;
```

¡Con esto deberías tener el martillo siempre en sincronía! 🛠️🍄

¿Querés que lo adaptemos a un ejemplo visual o interactivo en HTML?

Explícame la solución 2: Mover la lógica de EtapaDeMartillo fuera de los frames.

Citar
¡Claro! Vamos a desglosar bien la **Solución 2: mover la lógica de `EtapaDeMartillo` fuera de los frames**, para que entiendas **qué significa, cómo se hace, y por qué es útil**.

---

## 🧠 ¿Qué significa mover la lógica fuera de los frames?

En Flash/ActionScript, es común poner código dentro de los **frames de la línea de tiempo** de un `MovieClip`. Esto puede funcionar, pero también puede causar problemas de control, como el que estás teniendo.

**Mover la lógica fuera de los frames** quiere decir:

> En vez de que los propios frames del `MovieClip` modifiquen la variable `EtapaDeMartillo`, lo haces tú **desde el código externo**, es decir, desde donde estás controlando al personaje (`Player`), centralizando el control.

---

## 🧱 ¿Cómo es tu estructura actual?

Actualmente, en el `MovieClip` de la animación (por ejemplo, `Player.Movie`), en cada frame tenés algo como:

```actionscript
// En el frame 1
Player.EtapaDeMartillo = 1;

// En el frame 2
Player.EtapaDeMartillo += 1;

// En el frame 3
Player.EtapaDeMartillo += 1;

// ...
```

Esto significa que **el MovieClip decide** qué valor tiene `EtapaDeMartillo` en cada momento, según el frame.

---

## 🔄 ¿Cómo lo cambiamos?

Vamos a quitar esa lógica de los frames del `MovieClip`, y pasarla a un código central. Por ejemplo, en un `onEnterFrame` principal, o en el controlador del jugador.

### 1. Limpia los frames del MovieClip

Quita cualquier código que modifique directamente `EtapaDeMartillo` desde los frames del `MovieClip`.

```actionscript
// Frame 1, 2, 3, 4, etc.
(Eliminar el código que modifica Player.EtapaDeMartillo)
```

---

### 2. Controlás tú el avance de la animación y la etapa del martillo

En tu controlador de juego, pon algo como esto:

```actionscript
// Este código iría en onEnterFrame o en un bucle de juego
if (Player.estado == "quieto") {
    Player.gotoAndStop(2);
} else if (Player.estado == "caminando") {
    Player.gotoAndStop(3);
}

// Lógica del martillo
Player.EtapaDeMartillo += 1;
if (Player.EtapaDeMartillo > 6) {
    Player.EtapaDeMartillo = 1;
}

// Mostrar el frame correcto en la animación del martillo
Player.Movie.gotoAndStop(Player.EtapaDeMartillo);
```

---

## 🎯 ¿Qué ganás con esto?

- 🔄 **Sincronización perfecta**: sos vos quien decide **cuándo y cómo avanza el martillo**, no la animación.
- 💥 **Evita conflictos**: ya no hay riesgo de que un `gotoAndStop()` dispare código oculto en los frames y arruine tu sincronización.
- 🧼 **Código más limpio y predecible**: todo está en un solo lugar.

---

## 📌 Consideraciones

- Asegurate de que `EtapaDeMartillo` se actualice **una vez por frame**, y que `gotoAndStop()` apunte al frame correcto.
- Si querés que el martillo esté arriba por 3 frames y abajo por 3, simplemente ajustá tu lógica según el número del frame.

---

## 💡 Ejemplo completo simplificado

```actionscript
// En onEnterFrame
Player.EtapaDeMartillo += 1;
if (Player.EtapaDeMartillo > 6) {
    Player.EtapaDeMartillo = 1;
}

// Cambiar animación según estado
if (Player.estado == "quieto") {
    Player.gotoAndStop(2);
} else if (Player.estado == "caminando") {
    Player.gotoAndStop(3);
}

// Mostrar el frame correspondiente de la animación
Player.Movie.gotoAndStop(Player.EtapaDeMartillo);
```

---

¿Querés que te ayude a adaptar esto a tu código actual paso a paso?

Intentaré eso.
249  Programación / Programación General / Re: Mostrar dibujos variándolos desde izquierda arriba, empezando por una _| en: 31 Marzo 2025, 09:10 am
Aparentemente sí era eso, lo hablé con Deepseek y lo solucioné:
Código
  1. function ConvertiraBinario (numero) {
  2. // Averiguar cómo es en binario:
  3. DibujoEnBinario = "";
  4. while (numero>0) {
  5. DibujoEnBinario = numero%2+DibujoEnBinario;
  6. numero = Math.floor(numero/2);
  7. }
  8. // Agregar 0s a DibujoEnBinario si hacen falta:
  9. while (DibujoEnBinario.length<Cuadraditos) {
  10. DibujoEnBinario = 0+DibujoEnBinario;
  11. }
  12. }

Dice que hay mejores formas de hacerlo, pero yo de esto no entiendo mucho ni me llama mucho, estas cosas matemáticas.
250  Seguridad Informática / Hacking / Re: como puedo pegar correctarmente bytes a una caja de texto de una app de windows para intentar vulnerarla? en: 31 Marzo 2025, 06:21 am
Sé de algo que quizá funcione ¿pero es ético? ô.ó
Páginas: 1 ... 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [25] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ... 254
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines