StormLight
Member
Before I give you the huge chunks of code, know that it is most likely a VERY simple error I overlooked. Okay, so I have a server project, and I have a client project. I have made some code which will create an object called obj_dummy, but actually be the player on the other client. I can connect one client fine, and the server sees where it is. But when I add another client to it, I get this error:
Now on with the code.
Client Project:
Async Networking Event (con_client object):
Create Event (con_client object):
Received Packet Script:
Server Project:
Async Network Event (con_server object):
Create Event: (con_server object):
Received Packet Script:
Code:
ERROR in
action number 1
of Async Event: Networking
for object con_client:
Variable con_client.obj_dummy(100014, -2147483648) not set before reading it.
at gml_Script_received_packet
############################################################################################
gml_Script_received_packet (line -1)
gml_Object_con_client_Other_68
Client Project:
Async Networking Event (con_client object):
GML:
type_event = ds_map_find_value(async_load,"type");
switch(type_event) {
case network_type_data:
buffer = ds_map_find_value(async_load,"buffer");
buffer_seek(buffer,buffer_seek_start,0);
received_packet(buffer);
break;
}
GML:
enum network {
player_connect,
player_joined,
move
}
client = network_create_socket(network_socket_tcp);
connected = network_connect(client,"192.168.1.128",25567);
client_buffer = buffer_create(1024,buffer_fixed,1);
GML:
// Script assets have changed for v2.3.0 see
// https://help.yoyogames.com/hc/en-us/articles/360005277377 for more information
function received_packet(){
buffer = argument0;
msgid = buffer_read(buffer,buffer_u8);
switch(msgid) {
case network.player_connect:
var _socket = buffer_read(buffer,buffer_u8);
var _x = buffer_read(buffer,buffer_u16);
var _y = buffer_read(buffer,buffer_u16);
var _player = instance_create_depth(_x,_y,depth,obj_player);
_player.socket = _socket;
break;
case network.player_joined:
var _socket = buffer_read(buffer,buffer_u8);
var _x = buffer_read(buffer,buffer_u16);
var _y = buffer_read(buffer,buffer_u16);
var _dummy = instance_create_depth(_x,_y,depth,obj_dummy);
_dummy.socket = _socket;
break;
case network.move:
var move_x = buffer_read(buffer,buffer_u16);
var move_y = buffer_read(buffer,buffer_u16);
obj_player.x = move_x;
obj_player.y = move_y;
break;
}
}
Async Network Event (con_server object):
GML:
type_event = ds_map_find_value(async_load,"type");
switch(type_event) {
case network_type_connect:
socket = ds_map_find_value(async_load, "socket");
ds_list_add(socket_list,socket);
var _player = instance_create_depth(playerSpawn_x, playerSpawn_y,depth,obj_player);
ds_map_add(socket_to_instanceid,socket,_player);
buffer_seek(server_buffer,buffer_seek_start,0);
buffer_write(server_buffer,buffer_u8,network.player_connect);
buffer_write(server_buffer,buffer_u8,socket);
buffer_write(server_buffer,buffer_u16,_player.x);
buffer_write(server_buffer,buffer_u16,_player.y);
network_send_packet(socket,server_buffer,buffer_tell(server_buffer));
var i = 0;
repeat(ds_list_size(socket_list))
{
var _sock = ds_list_find_value(socket_list,i);
if _sock != socket{
buffer_seek(server_buffer,buffer_seek_start,0);
buffer_write(server_buffer,buffer_u8,network.player_joined);
buffer_write(server_buffer,buffer_u8,socket);
buffer_write(server_buffer,buffer_u16,_player.x);
buffer_write(server_buffer,buffer_u16,_player.y);
network_send_packet(socket,server_buffer,buffer_tell(server_buffer));
}
}
break;
case network_type_disconnect:
socket = ds_map_find_value(async_load,"socket");
ds_list_delete(socket_list,ds_list_find_index(socket_list, socket));
with(ds_map_find_value(socket_to_instanceid,socket))
{
instance_destroy();
}
break;
case network_type_data:
buffer = ds_map_find_value(async_load,"buffer")
socket = ds_map_find_value(async_load,"id")
buffer_seek(buffer,buffer_seek_start,0);
received_packet(buffer,socket);
break;
}
GML:
enum network {
player_connect,
player_joined,
move
}
port = 25567;
max_clients = 10;
network_create_server(network_socket_tcp,port,max_clients)
server_buffer = buffer_create(1024,buffer_fixed,1);
socket_list = ds_list_create();
socket_to_instanceid = ds_map_create();
playerSpawn_x = 100;
playerSpawn_y = 100;
GML:
// Script assets have changed for v2.3.0 see
// https://help.yoyogames.com/hc/en-us/articles/360005277377 for more information
function received_packet(){
buffer = argument0;
socket = argument1;
msgid = buffer_read(buffer, buffer_u8);
switch(msgid)
{
case network.move:
var move_x = buffer_read(buffer,buffer_u16);
var move_y = buffer_read(buffer,buffer_u16);
var _player = ds_map_find_value(socket_to_instanceid,socket)
_player.x = move_y;
_player.y = move_y;
buffer_seek(server_buffer,buffer_seek_start,0);
buffer_write(server_buffer,buffer_u8,network.move);
buffer_write(server_buffer,buffer_u16,move_x);
buffer_write(server_buffer,buffer_u16,move_y);
network_send_packet(socket,server_buffer,buffer_tell(server_buffer));
break;
}
}