H
Hyteel
Guest
Hello, I am working on a multiplayer-project and have stumbled upon a strange error. I am getting "Attempting to read from outside the buffer, returning 0" from my code, and I cant seem to understand why. This is the code that sends the buffer:
//Send to player
buffer_seek(ServerBuffer, buffer_seek_start, 0);
buffer_write(ServerBuffer, buffer_u8, Network.SUpdateSelf); //u8
buffer_write(ServerBuffer, buffer_u8, Ypos); //u8
buffer_write(ServerBuffer, buffer_u8, LayerId); //u8
buffer_write(ServerBuffer, buffer_u16, ds_grid_get(ClientValues, 1, Ypos)) //u16
buffer_write(ServerBuffer, buffer_u16, ds_grid_get(ClientValues, 2, Ypos)) //u16
network_send_packet(ds_list_find_value(Clients, Ypos), ServerBuffer, buffer_tell(ServerBuffer));
and this is the one that receives it:
case Network.SUpdateSelf: //Receive SUpdate //u8
var Client = buffer_read(Buffer, buffer_u8); //u8
global.LayerId = buffer_read(Buffer, buffer_u8); //u8
ds_grid_set(global.ClientValue_Clientside, 1, Client, buffer_read(Buffer, buffer_u16)); //u16
ds_grid_set(global.ClientValue_Clientside, 2, Client, buffer_read(Buffer, buffer_u16)); //u16
I have tried rearranging it and finding out ways to solve it myself but to no awail, it is probably something I wrote wrong but I have been looking at the code for about half an hour now.
It is supposed to send 3 u8s and 2 u16s and then receive 3 u8s and 2 u16s and it seems to look like it should work in the code but the last one on the receiving end always reads outside of the buffer.
//Send to player
buffer_seek(ServerBuffer, buffer_seek_start, 0);
buffer_write(ServerBuffer, buffer_u8, Network.SUpdateSelf); //u8
buffer_write(ServerBuffer, buffer_u8, Ypos); //u8
buffer_write(ServerBuffer, buffer_u8, LayerId); //u8
buffer_write(ServerBuffer, buffer_u16, ds_grid_get(ClientValues, 1, Ypos)) //u16
buffer_write(ServerBuffer, buffer_u16, ds_grid_get(ClientValues, 2, Ypos)) //u16
network_send_packet(ds_list_find_value(Clients, Ypos), ServerBuffer, buffer_tell(ServerBuffer));
and this is the one that receives it:
case Network.SUpdateSelf: //Receive SUpdate //u8
var Client = buffer_read(Buffer, buffer_u8); //u8
global.LayerId = buffer_read(Buffer, buffer_u8); //u8
ds_grid_set(global.ClientValue_Clientside, 1, Client, buffer_read(Buffer, buffer_u16)); //u16
ds_grid_set(global.ClientValue_Clientside, 2, Client, buffer_read(Buffer, buffer_u16)); //u16
I have tried rearranging it and finding out ways to solve it myself but to no awail, it is probably something I wrote wrong but I have been looking at the code for about half an hour now.
It is supposed to send 3 u8s and 2 u16s and then receive 3 u8s and 2 u16s and it seems to look like it should work in the code but the last one on the receiving end always reads outside of the buffer.