EVM (código)

388 messages, 13 pages:  12 3 4; 13 ↖ Go back to topic list

Score: +4

31. el_pichon,

Mañana reviso con calma.

Score: +0

32. el_pichon,

@sol-dorado ya he incorporado tus cambios. Cuidado, las advertencias de Git no están para ignorarlas! ¿A que el cliente no te compila? Cuando Git te diga que hay conflictos, debes mirar con calma los archivos indicados. En ellos verás:
<<<<<<<HEAD
código antiguo



código nuevo
>>>>>>> nueva rama
Y esto se repetirá una vez por cada conflicto. Cuando Git te pida que hagas commit de los cambios, asegúrate de que no quedan bloques de este tipo y que has elegido el código correcto.
Por otro lado, estoy viendo que metéis la pata y colapsáis la pila de llamadas, y eso lo hacéis todos. Si Dalison no lo ha corregido en BC, también lo hace. La forma de volver a mainloop desde un menú no es llamar a mainloop, es hacer return y volver a la función que creó ese menú! Ahora mismo ocurre algo como esto:
-El juego se inicia.
-El juego llama a mainloop desde la función main (se incrementa la pila, pero está bien).
-Mainloop crea un menú porque el usuario lo solicita (se incrementa la pila, pero sigue estando bien).
-El usuario abandona el menú. Se llama a mainloop (la pila de llamadas se incrementa, pero esta vez está mal).
-Desde mainloop se entra al menú...
La pila de llamadas aumenta recursivamente cada vez que el usuario entra y sale del constructor de mapas. Si hacéis la prueba (entrar y salir sin parar) el cliente explotará en algún momento.
¿Y por qué funciona si está mal? Porque todos los bucles llaman a las variables globales. Los bucles externos se quedan esperando a que los internos finalicen, pero los internos son ellos mismos.
El caso del constructor de mapas no es el único, todo está mal hecho.

Score: +0

33. ElCrackLoko ,

Vaya que se aprende mucho con las palabras del Pichon.

Score: +0

34. sol-dorado,

Eso pasa gracias a que ves el código hecho de cierta forma, y lo replicas sin analizar lo que hace la función a la que se llama, menudo error. Gracias pichon, me pondré a arreglarlo ya que todo el código que mantengo yo actualmente tiene ese mismo problema,
y en cuanto a los bloques a lo que te refieres, si claro es que pude hacer merge internamente para no perder miscambios gracias a que los corregí a mano, pero no me advirtió git de que todavía hubieran problemas. De igual manera, el tema del constructor no es enteramente mío, yo tomé la base que traía ya para continuarlo, de nuevo mil gracias por las recomendaciones!

Score: +0

35. el_pichon,

Si estás pensando en enviar más cambios espera. No codifiques de momento. Quiero indentar el código (poner tabuladores al principio de las líneas según corresponda).

Score: +0

36. sol-dorado,

Dale perfecto, estaré atento a tus avances para incorporarlos, así aprendo sobre indentación, porque lo poco que se aplicar es poner las llaves solas luego de inicio de funciones / if / else / whiles, y añadir espacios luego del igual, y dentro de condicionales para leer usando control y flecha izquierda / derecha.

Score: +0

37. Dalison ,

Identa con el AStyle. Es un programa genial para eso.

Score: +0

38. BOFH ,

Na. Se indenta a mano o a lo sumo con algún ide.

Score: +0

39. kvothe,

¿Astyle? y eso qué es? No lo conocía.

Score: +0

40. el_pichon,

Indentar, en este caso, es poner tabuladores dentro de los bloques. Por ejemplo, si se abre una clase, todas las líneas de dentro de esa clase tienen un tabulador al principio. Si se abre un método dentro de la clase, las líneas de ese método tienen 2 tabuladores. Si se abre un while dentro del método, las líneas del interior del while tienen 3 y así sucesivamente. Podéis ver ejemplos prácticos en los archivos más pequeños dentro de server/includes, donde ya se ha hecho. Por cierto, el mapa caverna.map está corrupto, y algunas de las 10 cavernas de la prehistoria me parece que también. El servidor, además, se dedica a meter paredes una y otra vez en las 10 cavernas, modificando los mapas.

Score: +0

41. Dalison ,

AStyle es un programa muy bueno para identar código en varios lenguajes. Está en open-source también.

Score: +0

42. Markk,

Hola. Hay un error a la hora de compilar el cliente
File: C:\Users***\EVM\client\includes.bgt
On line: 1 (1)
Line: #include "../config.bgt"
Warning: The script section is empty

Score: +0

43. sauron ,

Buenas, lo que también quería reportar es que ninguna de las teclas del servidor funcionan (f5 y f9 respectivamente)...

Score: +0

44. sol-dorado,

Hola, quiero responder a los dos mensajes o por lo menos intentarlo. El cliente no compila ni se ejecuta, ya que fue modificado el archivo includes, dejando solo las inclusiones, lo que hace que el motor lo vea como un archivo vacío, aunque no lo esté, yo lo he encontrado y ya está corregido, simplemente eliminando dicho archivo, añadiendo un comentario en el archivo client.bgt,
y poniendo la líneas de inclusión en él. En cuanto a f9, si no abre el menú del constructor, debe ser que no tienes permisos de administrador. En cuanto a f5 no puedo decir nada, hasta que no lo revice.

Score: +0

45. Dalison ,

F5 no es del servidor, y sep del cliente.

Score: +0

46. sol-dorado,

Confirmado, f5 al ser tecla de usuario no tiene ningún problema, el menú de jugadores se muestra sin problema.

Score: +0

47. Markk,

El menú de f9 en teoría tampoco tiene ningún problema, lo estuve usando hoy.
Otra cosa, cómo se hace el servidor accesible desde fuera? hay que poner la ip publica en el config.bgt o se deja localhost. Con localhost a otra persona no le conectaba... y tengo el puerto redireccionado a mi ip local en el router.
Poniendo la ip pública no me dejaba conectar ni a mi mismo xDD además de que empezó a joder el windows defender

Score: +0

48. sol-dorado,

En config.bgt debes poner tu ip pública, y debes tener abierto el puerto para que redirija desde la ip pública hacia la máquina local que gestiona el servidor.
Para tí puedes seguir usando localhost, para tí mismo no hay problema por lo que puedes compilar dos veces. la primera para entregar al binario con tu ip pública, y otra para que uses localhost y no tengaque hacer un doble enrutamiento de conección.

Score: +0

49. Markk,

Ok, sigo sin poder hacer el servidor accesible. En el config.bgt puse la ip pública. Tengo el puerto abierto, pero no hay manera. Me aseguré de que no sea el firewall.
alguna idea?

Score: +0

50. sol-dorado,

Es raro, y lamento no poder ayudar, ya que los routers aunque parecidos, tienen diferencias. Básicamente es que dirección y puertos remotos se dejan en blanco, porque permite a todos; luego pide datos como el puerto y la ip a abrir, ponemos la ip y el puerto públicos, y luego en el internal port y en la internal address ponemos el puerto y la ip de la máquina a la que se redirigirán las peticiones. El protocolo debe ser UDP, y listo.
A propósito, voy ha hacer un pull request con mis últimos cambios y correcciones.

Score: +0

51. Markk,

Es raro porque si lanzo alguna otra cosa por el mismo puerto como un server de rtr o un mud, va perfecto

Score: +0

52. sol-dorado,

Debe ser porque estás permitiendo en el firewall de windows varias aplicaciones al mismo puerto, desconozco si esto causará problema al ejecutarlos una a una, pero no me extrañaría.

Score: +0

53. EL_REY_HALCON ,

Interesante lo que se aprende aquí.
No sé nada de programación, pero veo que es interesante todo lo que se habla en este tema

Score: +0

54. el_pichon,

Hola a todos.
Acabo de terminar de indentar el código del servidor. A partir de ahora, acepto pull requests para él. Cosas que se pueden mejorar:

  • Arrays: se usan poco, deberían utilizarse más. He visto 50 variables, una para cada piso del edificio residencial: andar1, andar2, andar3... ¡así no se programa!
  • Switch en vez de if para algunas condiciones. Sí, en BGT existe el switch, por raro que pueda parecer. Se podría aplicar en netloop?
  • Podría existir código muerto en la función main.
  • Existen variables que podrían declararse como constantes.
  • Si en un entero vamos a trabajar sólo con números positivos, y se sabe que nunca va a tener un número negativo, es mejor usar uint en vez de int. Así puede aumentar su tamaño el doble.
  • Y un largo, largo etcétera.

Se recomienda explorar el código con el complemento IndentNav de NVDA, la experiencia no dejará indiferente a nadie.

Score: +0

55. EL_REY_HALCON ,

Ya que veo el hilo arriba, si algún admin está conectado me puede ayudar? estoy en el área desconocida del túnel y por más que intento salir siempre caigo en él

Score: +0

56. sol-dorado,

Hola hola, por ahí hay pull míos y de dalison, ya decides cual entra :) hay una cantidad de variables impresionantes que a mi juicio podrían modificarse,
eso sí, no he tocado aún ni en el código que trabajo por ahí ni en éste el tema del edificio.
Y tengo que ponerme las pilas porque he hecho nuevos cambios y vastante grandes al constructor, pero primero actualizo el repositorio para tener los cambios de @el_pichon. Ahora que hablas de switch,
cuando trasteaba con php y javascript los usaba mucho, me extraña que en bgt nunca he visto uno, en serio que nunca lo he visto.
Gabo, creo que el administrador único que es BOFH anda sin mucho tiempo como para ayudarte, la única es que elimines tu cuenta y vuelvas a crearla. Hay mapas que están dañados
y otros vacíos, eso vi en los mapas del proyecto en el que codifico yo. Aunque no los estamos usando, si que se me hace como que alguien hubiera dañado mapas a consiencia.

Score: +0

57. James_Potter,

yo ya lo ayudé a el que se abía quedado atrapado xd

Score: +0

58. BOFH ,

Alguien debería hacer un par de mapas para evitar problemas. Hay un caos curioso. Mañana actualizo el servidor.

Score: +0

59. EL_REY_HALCON ,

Gracias @BOFH, por si acaso constantemente hago /g para no perder nada

Score: +0

60. sol-dorado,

Hola, venga, cuales mapas hay que hacer? no más dimeque me pongo en ello

Score: +0

Last edited by sol-dorado, Jul 31 2019 20:55:17

388 messages, 13 pages:  12 3 4; 13 ↖ Go back to topic list

Answer to topic

You must be connected in order to be allowed to post.

Lost password ? Create account