
Moderadores: Moderadores de Argentum, Especialistas de Argentum, Especialistas de Programación
LyRan escribió:Buenos Dias amigos y programadores de Gs Zone, Me gustaria pedirle la amabilidad de una ayuda con un cliente editado para mi Ao casero, Osea me explico, yo juego Ao con varios amigos y ellos todos usan cheat y no me gusta eso me gustaria que alguien me ayudara a crear un cliente editado con auto poteo de ambas potas a la ves ya sea que se alla gastado Mana lanzando algun hechis y comienze a potear solo hasta estar completamente el Mana, igual para la salud y poteo rapido para ambos.
806![Dragon Ancestral [1] Dragon Ancestral [1]](./images/ranks/Rango30.gif)
maTih.- escribió:@Ema, Miqueas : de esa forma si matas un npc con /MATA o borras 1 objeto con /DEST podes hacer reventar todo a la meirda.
929 (+5)![Dragon Ancestral [5] Dragon Ancestral [5]](./images/ranks/Rango34.gif)
maTih.- escribió:Shalvaid escribió:Bueno gracias a todos por sus respuestas. El sistema es tal cual como lo describe Pato, está hardcodeado y se complica entenderlo.
Seguí la idea que me dió Parra, empecé a buscar un poco acerca de los QuadTrees y se me ocurrió hacer algo asi:
[ Imagen ]
Como se puede ver, me quedarían 16 secciones (Hojas), divididas al ancho necesario, pongamos como ejemplo para un fullscreen.
(800 / 32) = 25 Tiles que sería la cantidad que entraría en una "hoja" del "arbol".
(600 / 32 = 19 Tiles, me estarían sobrando un par :p, pero bueno.
Mediante una ecuación, ubicar en que hoja se encuentra el usuario, y darle su ID de hoja. Cada vez que camina se fija si llega a la intersección marcada en líneas verdes, allí cambia la ID y reenvia la informacion del sector.
Como el CheckUpdateNeededUser solo checkea 3 cosas, Usuarios, Npc's y Objetos. Podría hacer algo así
- Public Type QuadTree
- MaxUsers as integer
- UserIndeX(1 to 100) as integer
- ---------------------------------------------
- MaxItems as integer
- Item(1 to 100) as QTObject (Este tipo tendría el ObjIndex, posicion X y posición Y del mapa)
- ---------------------------------------------
- MaxNpcs as integer
- Npcs(1 to 100) as QTNpc (Este tipo tendría el NpcIndex, posición X y posicion Y del mapa)
- end type
Se crearía una variable de este tipo, para cada "hoja". Y cuando un usuario accede a esa área, le envía solo la información que tiene almacenada previamente por los "MaxUsers", "MaxItems", "MaxNpcs", solo lo justo y necesario y nos ahorramos el loop por todas las coordenadas de esa área buscando a ver que hay.
Lo que si habría que hacer es cada vez que un usuario Tira un objeto, entra al mapa, o un npc se crea o se mueve, actualizarlo a su debido QuadTree.
Bueno, eso es todo, veremos que opinan.
Gracias a todos.
Edit: Pensandolo bien, en un rango de 25 tiles por 25 tiles tengo un total de 625 tiles, tendría que ver como manejar eso, para no tener que andar haciendo Redim Preserve al array cada vez que se agrega un user, un npc, un objeto, etc. -.- . Y 100 es muy poco.
eso mas que un quadtree es una negrada, maneja un array grande para cada tipo (npcs, usuarios, objetos), no uses redim, simplemente para añadir un tipo (npcs , usuarios, objetos) te fijas si entra , si no , mediante una funcion buscas un slot libre para el array y lo metes todo ahí, suponete
- Function buscarNpc(byval NPCindex as integeR) as byte
- 'Devuelve la posición para el array de npcs.
- dim j as long
- for j = 1 to ubound(arrayNPCS())
- if arraynpcs(j).npcindex = NPCINDEX then
- buscarnpc = j
- exit function
- end if
- next j
- end function
despues igualas si eso es > 0 entonces esta en el array, y actualizas las posiciones etc etc.
525![Legendario Inmortal [2] Legendario Inmortal [2]](./images/ranks/Rango37.gif)
166![Aprendiz [1] Aprendiz [1]](./images/ranks/Rango6.gif)
480![Oraculo [5] Oraculo [5]](./images/ranks/Rango29.gif)
Shalvaid escribió:Bueno Parra, realmente los QuadTrees son bastante complejos, estuve leyendo y viendo ejemplos pero no es nada fácil y creo haber visto solo uno hecho en visual basic que era "similar" pero de igual forma complejo. Creo que no es mi tiempo para implementar QuadTrees, aún me falta bastante por aprender y es una técnica utilizada por gente mucho más experimentada que yo en lo que es creacion de engines. No digo que no sea capas, es que dadas las circunstancias actuales, lo veo bastante dificil poder programar dicho sistema y que sea funcional y libre de bugs.
El problema no lo he podido solucionar aún, sigo con las áreas normales que tiene argentum, que por cierto, son incompatibles con una pantalla de 800x600. Estuve descargando otros engines en visual basic, así que voy a ponerme a ver por encima de qué forma trabajan para tener una idea.
Yo por mi parte, agradesco tu ayuda. Siempre estás ahí para ayudar a quien tenga algun problema.
No es un NO definitivo para los QuadTrees, simplemente voy a dejarlos para el futuro cuando tenga algo más de experiencia y práctica en engines y por supuesto en c++.
Te dejo 10 monedas por tu gran ayuda, ultimamente la gente anda escatimándolas no sé por qué.
Ah y suerte en AOC
525![Legendario Inmortal [2] Legendario Inmortal [2]](./images/ranks/Rango37.gif)
909
Franeg95 escribió:Fuera del tema de parra que me parece espectacular pero no logro cazarlo, para mejorar las areas, se me ocurre usar el cliente y su memoria.
No hablo de cargar todo el mapa cuando pasas, ya que si pasas y volves al anterior, mandaste datos sin usarlo.
Pero lo que podes hacer es, si pasas por el centro de ulla y tenes ciertos objetos estaticos, los almacenas. AL pasar la proxima vez, no vas a pedirle los datos de objetos que ya vistes, por lo tanto el paquete va a ser mucho menor.
Lo mejor si queres seria tener un gran array de mapas y posiciones.
type mapa
x as integer
y as integer
grhindex as integer
block as byte
objname as string
end type
public VMapa[1 to maxmapas] as mapa
cuando llegan los datos se los asignas a ese vector, y que el engine dibuje el vector en vez de trabajar con el paquete. El ultimo punto no estoy seguro si se cumple, pero lo demás es la optimizacion que podrías hacerle.
525![Legendario Inmortal [2] Legendario Inmortal [2]](./images/ranks/Rango37.gif)
LyRan escribió:Buenos Dias amigos y programadores de Gs Zone, Me gustaria pedirle la amabilidad de una ayuda con un cliente editado para mi Ao casero, Osea me explico, yo juego Ao con varios amigos y ellos todos usan cheat y no me gusta eso me gustaria que alguien me ayudara a crear un cliente editado con auto poteo de ambas potas a la ves ya sea que se alla gastado Mana lanzando algun hechis y comienze a potear solo hasta estar completamente el Mana, igual para la salud y poteo rapido para ambos.
806![Dragon Ancestral [1] Dragon Ancestral [1]](./images/ranks/Rango30.gif)
maTih.- escribió:...
525![Legendario Inmortal [2] Legendario Inmortal [2]](./images/ranks/Rango37.gif)
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados