Networking problem...

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:
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
Now on with the code.

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;

}
Create Event (con_client object):
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);
Received Packet Script:
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;
   
    }

}
Server Project:

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;
}
Create Event: (con_server object):
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;
Received Packet Script:
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;

}
}
 

FrostyCat

Redemption Seeker
This simply means you don't have an object named obj_dummy. Make sure it exists, and check the spelling.
 

rytan451

Member
Export the object, delete it, and re-import the object. You may also wish to clear the cache (the broom icon next to the play button). If this doesn't help, copy the project, strip it down to the absolute minimum to reproduce the problem, and report it as a bug.
 
Not so sure, but can it be you somewhere confused/swap a player_connect and a player_joined?
If I'm reading this correctly, obj_dummy will only be created when player_JOINED, and not when player_CONNECTS. Maybe it's all fine, tho, just asking, but it definitely caught m eye 'cause I couldn't figure out the difference between connect and join (a lobby, maybe?)
Referring to this part:
GML:
        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;
 
Top