Hola amigos de CGM!, la verdad he intentado de manera amateur, hacer un juego online con 39dll, pero uff...entiendo muy poco aún, soy aun muy principiante con el uso de esta, y pienso que cada vez aprendo mas como usarla, gracias a jucarave, lukeescude, thesivart y silverlight. Pero, igual, todavia no entiendo como hacer que cuando un jugador se desconecte, se borre de los clientes ... eso, y aun muchas cosas que necesito entender para expandir mi proyecto :D .
A continuación les adjunto una base de online, que descargué por ahí en youtube, y la modifiqué ligeramente, uff... que dificil labor :'( .
https://www.dropbox.com/s/oi8tlvdiktq867q/online.rar?dl=0
De antemano, muchisimas gracias por leer e intentar apoyarme ;D .
PD: Gracias a todo aquel que colabore, de nuevo, enserio, es realmente dificil para mi aun, y bueno me rompe la cabeza jajajaja XD .
Volveré a preguntar, como siempre XD .
Cuando dices "borrar de los clientes" te refieres a limpiar la lista de clientes alojada en el Servidor
O hacer que las instancias en todas las pantallas desaparezca?
Lo siento, no puedo descargar el editable ni probarlo, puesto que ahora uso Linux pero a lo mejor puedo darte una mano.
Exactamente Silverlight :D , hacer que las instancias en todas las pantallas desaparezca, cuando un jugador se desconecta... esa es mi pregunta :) ... el resto, bueno, quiza siga mirando tu tutorial de tu pagina XD .
Bueno, en ese caso lo que tienes que hacer, se me ocurre es utilizar una lista dentro de cada cliente. Usas dos ds_list's.
La forma de operar sería la siguiente, cada vez que un cliente se conecta al servidor, es el Servidor quien generaría un número único de identificador. El cual re-enviaría a todos los demás clientes que ya estén en el juego.
Una vez que es enviado, cada cliente, almacena en una lista, el numero único, pongamosle "lista_id" y a su vez, crea el objeto que representará al jugador, y colocará el id de la instancia dentro de otra, llamemosla "lista_inst".
Algo como:
[gml]
var id_instancia= instance_create(0,0, o_cliente_rep);
ds_list_add(lista_id, valor_unico)
ds_list_add(lista_inst, id_instancia)
[/gml]
Luego, al momento de que un jugador se desconectase, le enviaría un mensaje al servidor, el cual deberá re-enviar todos los clientes.
Finalmente cada cliente debería recibir el valor_unico, buscarlo dentro de la lista "lista_id" y quitarlo obteniendo la posicion. Luego se debería obtener la instancia en la misma posicion pero en "lista_inst" y eliminarla. Luego vaciar el lugar en la lista.
Muchas gracias, se nota que dominas bien el tema, espero poder entender aun mejor el networking de la 39dll :3 ... muchas gracias Silver, me caes bien :v .