|
|
|
|
@ -28,16 +28,22 @@
|
|
|
|
|
<string>network_set_config(network_config_connect_timeout, 5000);
|
|
|
|
|
strict_init("dictionary.json");
|
|
|
|
|
canSend = false;
|
|
|
|
|
metroidCountChanged = false;
|
|
|
|
|
itemChanged = false;
|
|
|
|
|
metdeadChanged = false;
|
|
|
|
|
eventChanged = false;
|
|
|
|
|
connected = false;
|
|
|
|
|
queenHealthWait = false;
|
|
|
|
|
queenDead = false;
|
|
|
|
|
drawUpdate = false;
|
|
|
|
|
phase = 0;
|
|
|
|
|
seed = undefined;
|
|
|
|
|
var type;
|
|
|
|
|
type = network_socket_tcp;
|
|
|
|
|
var file = file_text_open_read(working_directory + "\ipaddress.txt");
|
|
|
|
|
ipaddress = file_text_read_string(file);
|
|
|
|
|
file_text_close(file);
|
|
|
|
|
ini_open(working_directory + "\mod settings.ini");
|
|
|
|
|
ipaddress = ini_read_string("ModSettings", "ipaddress", "127.0.0.1");
|
|
|
|
|
name = ini_read_string("ModSettings", "displayname", "name");
|
|
|
|
|
ini_close();
|
|
|
|
|
port = 64198;
|
|
|
|
|
socket = network_create_socket(type);
|
|
|
|
|
isConnected = network_connect(socket, ipaddress, port);
|
|
|
|
|
@ -51,15 +57,31 @@ buffer = buffer_create(size, type, alignment);
|
|
|
|
|
global.queenhealthPrev = 600;
|
|
|
|
|
global.queenphasePrev = 0;
|
|
|
|
|
|
|
|
|
|
if(instance_exists(oCharacter)){
|
|
|
|
|
global.prevX = oCharacter.x;
|
|
|
|
|
global.prevY = oCharacter.y;
|
|
|
|
|
global.prevSprite = oCharacter.sprite_index;
|
|
|
|
|
global.prevIndex = oCharacter.image_index;
|
|
|
|
|
}
|
|
|
|
|
global.roomPrev = room;
|
|
|
|
|
|
|
|
|
|
global.clientID = 0;
|
|
|
|
|
global.packetID = 0;
|
|
|
|
|
global.receivedPacketID = 0;
|
|
|
|
|
global.onlineList = ds_grid_create(3, 35);
|
|
|
|
|
global.onlineSend = ds_grid_create(3, 35);
|
|
|
|
|
global.onlineItem = ds_grid_create(1, 1);
|
|
|
|
|
global.onlineMetdead = ds_grid_create(1, 1);
|
|
|
|
|
global.onlineEvent = ds_grid_create(1, 1);
|
|
|
|
|
global.onlineReceived = ds_grid_create(3, 35);
|
|
|
|
|
global.storedBuffers = ds_grid_create(2, 1);
|
|
|
|
|
//global.storedBuffers = ds_grid_create(2, 1);
|
|
|
|
|
global.receivedPacketIDs = ds_list_create();
|
|
|
|
|
roomList = ds_list_create();
|
|
|
|
|
roomListData = ds_list_create();
|
|
|
|
|
ds_grid_clear(global.onlineSend, -1);
|
|
|
|
|
ds_grid_clear(global.onlineItem, -1);
|
|
|
|
|
ds_grid_clear(global.onlineMetdead, -1);
|
|
|
|
|
ds_grid_clear(global.onlineEvent, -1);
|
|
|
|
|
ds_grid_clear(global.onlineReceived, -1);
|
|
|
|
|
for(var i=0; i<ds_grid_height(global.onlineList); i++){
|
|
|
|
|
ds_grid_set(global.onlineList, 2, i, i);
|
|
|
|
|
@ -95,11 +117,247 @@ buffer_delete(buffer);
|
|
|
|
|
ds_grid_destroy(global.onlineList);
|
|
|
|
|
ds_grid_destroy(global.onlineSend);
|
|
|
|
|
ds_grid_destroy(global.onlineReceived);
|
|
|
|
|
ds_grid_destroy(global.storedBuffers);
|
|
|
|
|
//ds_grid_destroy(global.storedBuffers);
|
|
|
|
|
ds_grid_destroy(global.onlineItem);
|
|
|
|
|
ds_grid_destroy(global.onlineMetdead);
|
|
|
|
|
ds_grid_destroy(global.onlineEvent);
|
|
|
|
|
ds_list_destroy(global.receivedPacketIDs);
|
|
|
|
|
ds_list_destroy(roomList);
|
|
|
|
|
ds_list_destroy(roomListData);
|
|
|
|
|
if(connected){
|
|
|
|
|
popup_text("Disconnected");
|
|
|
|
|
}
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
</action>
|
|
|
|
|
</event>
|
|
|
|
|
<event eventtype="2" enumb="5">
|
|
|
|
|
<action>
|
|
|
|
|
<libid>1</libid>
|
|
|
|
|
<id>603</id>
|
|
|
|
|
<kind>7</kind>
|
|
|
|
|
<userelative>0</userelative>
|
|
|
|
|
<isquestion>0</isquestion>
|
|
|
|
|
<useapplyto>-1</useapplyto>
|
|
|
|
|
<exetype>2</exetype>
|
|
|
|
|
<functionname></functionname>
|
|
|
|
|
<codestring></codestring>
|
|
|
|
|
<whoName>self</whoName>
|
|
|
|
|
<relative>0</relative>
|
|
|
|
|
<isnot>0</isnot>
|
|
|
|
|
<arguments>
|
|
|
|
|
<argument>
|
|
|
|
|
<kind>1</kind>
|
|
|
|
|
<string>var v = 0;
|
|
|
|
|
for(var f=0; f<array_length_1d(global.event); f++){
|
|
|
|
|
if(global.eventPrev[f] != global.event[f]){
|
|
|
|
|
global.eventChanges[v, 0] = global.event[f];
|
|
|
|
|
global.eventChanges[v, 1] = f;
|
|
|
|
|
global.onlineEvent[# 0, 0] = global.eventChanges;
|
|
|
|
|
show_debug_message(string(global.eventPrev[f]) + " " + string(global.event[f]));
|
|
|
|
|
show_debug_message("event changed");
|
|
|
|
|
eventChanged = true;
|
|
|
|
|
v++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(eventChanged){
|
|
|
|
|
buffer_delete(buffer);
|
|
|
|
|
var size, type, alignment;
|
|
|
|
|
size = 1024;
|
|
|
|
|
type = buffer_grow;
|
|
|
|
|
alignment = 1;
|
|
|
|
|
buffer = buffer_create(size, type, alignment);
|
|
|
|
|
buffer_seek(buffer, buffer_seek_start, 0);
|
|
|
|
|
buffer_write(buffer, buffer_u8, 8);
|
|
|
|
|
buffer_write(buffer, buffer_string, strict_compress(ds_grid_write(global.onlineEvent)));
|
|
|
|
|
buffer_write(buffer, buffer_u8, global.clientID);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!eventChanged){
|
|
|
|
|
alarm[5] = 30;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(eventChanged){
|
|
|
|
|
eventChanged = false;
|
|
|
|
|
alarm[5] = 75;
|
|
|
|
|
}
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
</action>
|
|
|
|
|
</event>
|
|
|
|
|
<event eventtype="2" enumb="4">
|
|
|
|
|
<action>
|
|
|
|
|
<libid>1</libid>
|
|
|
|
|
<id>603</id>
|
|
|
|
|
<kind>7</kind>
|
|
|
|
|
<userelative>0</userelative>
|
|
|
|
|
<isquestion>0</isquestion>
|
|
|
|
|
<useapplyto>-1</useapplyto>
|
|
|
|
|
<exetype>2</exetype>
|
|
|
|
|
<functionname></functionname>
|
|
|
|
|
<codestring></codestring>
|
|
|
|
|
<whoName>self</whoName>
|
|
|
|
|
<relative>0</relative>
|
|
|
|
|
<isnot>0</isnot>
|
|
|
|
|
<arguments>
|
|
|
|
|
<argument>
|
|
|
|
|
<kind>1</kind>
|
|
|
|
|
<string>var v = 0;
|
|
|
|
|
for(var f=0; f<array_length_1d(global.metdead); f++){
|
|
|
|
|
if(global.metdeadPrev[f] != global.metdead[f]){
|
|
|
|
|
global.metdeadChanges[v, 0] = global.metdead[f];
|
|
|
|
|
global.metdeadChanges[v, 1] = f;
|
|
|
|
|
global.onlineMetdead[# 0, 0] = global.metdeadChanges;
|
|
|
|
|
show_debug_message(string(global.metdeadPrev[f]) + " " + string(global.metdead[f]));
|
|
|
|
|
show_debug_message("metdead changed");
|
|
|
|
|
metdeadChanged = true;
|
|
|
|
|
v++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(metdeadChanged){
|
|
|
|
|
buffer_delete(buffer);
|
|
|
|
|
var size, type, alignment;
|
|
|
|
|
size = 1024;
|
|
|
|
|
type = buffer_grow;
|
|
|
|
|
alignment = 1;
|
|
|
|
|
buffer = buffer_create(size, type, alignment);
|
|
|
|
|
buffer_seek(buffer, buffer_seek_start, 0);
|
|
|
|
|
buffer_write(buffer, buffer_u8, 7);
|
|
|
|
|
buffer_write(buffer, buffer_string, strict_compress(ds_grid_write(global.onlineMetdead)));
|
|
|
|
|
buffer_write(buffer, buffer_u8, global.clientID);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!metdeadChanged){
|
|
|
|
|
alarm[4] = 30;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(metdeadChanged){
|
|
|
|
|
metdeadChanged = false;
|
|
|
|
|
alarm[4] = 75;
|
|
|
|
|
}
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
</action>
|
|
|
|
|
</event>
|
|
|
|
|
<event eventtype="2" enumb="3">
|
|
|
|
|
<action>
|
|
|
|
|
<libid>1</libid>
|
|
|
|
|
<id>603</id>
|
|
|
|
|
<kind>7</kind>
|
|
|
|
|
<userelative>0</userelative>
|
|
|
|
|
<isquestion>0</isquestion>
|
|
|
|
|
<useapplyto>-1</useapplyto>
|
|
|
|
|
<exetype>2</exetype>
|
|
|
|
|
<functionname></functionname>
|
|
|
|
|
<codestring></codestring>
|
|
|
|
|
<whoName>self</whoName>
|
|
|
|
|
<relative>0</relative>
|
|
|
|
|
<isnot>0</isnot>
|
|
|
|
|
<arguments>
|
|
|
|
|
<argument>
|
|
|
|
|
<kind>1</kind>
|
|
|
|
|
<string>var v = 0;
|
|
|
|
|
for(var f=0; f<array_length_1d(global.item); f++){
|
|
|
|
|
if(global.itemPrev[f] != global.item[f]){
|
|
|
|
|
global.itemChanges[v, 0] = global.item[f];
|
|
|
|
|
global.itemChanges[v, 1] = f;
|
|
|
|
|
global.onlineItem[# 0, 0] = global.itemChanges;
|
|
|
|
|
show_debug_message(string(global.itemPrev[f]) + " " + string(global.item[f]));
|
|
|
|
|
show_debug_message("item changed");
|
|
|
|
|
itemChanged = true;
|
|
|
|
|
v++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(itemChanged){
|
|
|
|
|
buffer_delete(buffer);
|
|
|
|
|
var size, type, alignment;
|
|
|
|
|
size = 1024;
|
|
|
|
|
type = buffer_grow;
|
|
|
|
|
alignment = 1;
|
|
|
|
|
buffer = buffer_create(size, type, alignment);
|
|
|
|
|
buffer_seek(buffer, buffer_seek_start, 0);
|
|
|
|
|
buffer_write(buffer, buffer_u8, 6);
|
|
|
|
|
buffer_write(buffer, buffer_string, strict_compress(ds_grid_write(global.onlineItem)));
|
|
|
|
|
buffer_write(buffer, buffer_u8, global.clientID);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!itemChanged){
|
|
|
|
|
alarm[3] = 30;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(itemChanged){
|
|
|
|
|
itemChanged = false;
|
|
|
|
|
alarm[3] = 75;
|
|
|
|
|
}
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
</action>
|
|
|
|
|
</event>
|
|
|
|
|
<event eventtype="2" enumb="2">
|
|
|
|
|
<action>
|
|
|
|
|
<libid>1</libid>
|
|
|
|
|
<id>603</id>
|
|
|
|
|
<kind>7</kind>
|
|
|
|
|
<userelative>0</userelative>
|
|
|
|
|
<isquestion>0</isquestion>
|
|
|
|
|
<useapplyto>-1</useapplyto>
|
|
|
|
|
<exetype>2</exetype>
|
|
|
|
|
<functionname></functionname>
|
|
|
|
|
<codestring></codestring>
|
|
|
|
|
<whoName>self</whoName>
|
|
|
|
|
<relative>0</relative>
|
|
|
|
|
<isnot>0</isnot>
|
|
|
|
|
<arguments>
|
|
|
|
|
<argument>
|
|
|
|
|
<kind>1</kind>
|
|
|
|
|
<string>if(global.monstersleftPrev != global.monstersleft){
|
|
|
|
|
buffer_delete(buffer);
|
|
|
|
|
var size, type, alignment;
|
|
|
|
|
size = 1024;
|
|
|
|
|
type = buffer_grow;
|
|
|
|
|
alignment = 1;
|
|
|
|
|
buffer = buffer_create(size, type, alignment);
|
|
|
|
|
buffer_seek(buffer, buffer_seek_start, 0);
|
|
|
|
|
buffer_write(buffer, buffer_u8, 4);
|
|
|
|
|
buffer_write(buffer, buffer_s8, global.monstersleft);
|
|
|
|
|
buffer_write(buffer, buffer_u8, global.clientID);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
metroidCountChanged = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(global.monstersareaPrev != global.monstersarea){
|
|
|
|
|
buffer_delete(buffer);
|
|
|
|
|
var size, type, alignment;
|
|
|
|
|
size = 1024;
|
|
|
|
|
type = buffer_grow;
|
|
|
|
|
alignment = 1;
|
|
|
|
|
buffer = buffer_create(size, type, alignment);
|
|
|
|
|
buffer_seek(buffer, buffer_seek_start, 0);
|
|
|
|
|
buffer_write(buffer, buffer_u8, 5);
|
|
|
|
|
buffer_write(buffer, buffer_s8, global.monstersarea);
|
|
|
|
|
buffer_write(buffer, buffer_u8, global.clientID);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
metroidCountChanged = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!metroidCountChanged){
|
|
|
|
|
alarm[2] = 30;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(metroidCountChanged){
|
|
|
|
|
metroidCountChanged = false;
|
|
|
|
|
alarm[2] = 75;
|
|
|
|
|
}
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
@ -168,7 +426,8 @@ for(var i=0; i<ds_grid_height(global.onlineList); i++){
|
|
|
|
|
canSend = true;
|
|
|
|
|
alarm[0] = 600;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
if(i == 0){
|
|
|
|
|
var v = 0;
|
|
|
|
|
var itemPrev = global.onlineList[# 0, 0];
|
|
|
|
|
@ -225,6 +484,8 @@ for(var i=0; i<ds_grid_height(global.onlineList); i++){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(canSend){
|
|
|
|
|
@ -239,12 +500,12 @@ if(canSend){
|
|
|
|
|
buffer_write(buffer, buffer_string, strict_compress(ds_grid_write(global.onlineSend)));
|
|
|
|
|
buffer_write(buffer, buffer_u8, global.clientID);
|
|
|
|
|
buffer_write(buffer, buffer_u32, global.packetID);
|
|
|
|
|
global.storedBuffers[# 0, global.packetID] = global.onlineSend;
|
|
|
|
|
global.storedBuffers[# 1, global.packetID] = global.clientID;
|
|
|
|
|
//global.storedBuffers[# 0, global.packetID] = global.onlineSend;
|
|
|
|
|
//global.storedBuffers[# 1, global.packetID] = global.clientID;
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
show_debug_message("packetID = " + string(global.packetID));
|
|
|
|
|
global.packetID++;
|
|
|
|
|
ds_grid_resize(global.storedBuffers, 2, global.packetID + 1);
|
|
|
|
|
//ds_grid_resize(global.storedBuffers, 2, global.packetID + 1);
|
|
|
|
|
ds_grid_clear(global.onlineSend, -1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -319,6 +580,10 @@ if(instance_exists(oQueenHead) && !is_undefined(oQueenHead.myhealth) &am
|
|
|
|
|
buffer_write(buffer, buffer_u8, 1);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
alarm[0] = 5;
|
|
|
|
|
alarm[2] = 5;
|
|
|
|
|
alarm[3] = 5;
|
|
|
|
|
alarm[4] = 5;
|
|
|
|
|
alarm[5] = 5;
|
|
|
|
|
} else {
|
|
|
|
|
instance_destroy();
|
|
|
|
|
popup_text("Failed to connect");
|
|
|
|
|
@ -376,6 +641,43 @@ if(instance_exists(oQueen) && !is_undefined(oQueen.phase)){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(connected){
|
|
|
|
|
if(instance_exists(oCharacter)){
|
|
|
|
|
if(oCharacter.x != global.prevX || oCharacter.y != global.prevY || global.roomPrev != room || global.prevSprite != oCharacter.sprite_index || global.prevIndex != oCharacter.image_index){
|
|
|
|
|
if(global.prevX != oCharacter.x){
|
|
|
|
|
global.prevX = oCharacter.x;
|
|
|
|
|
}
|
|
|
|
|
if(global.prevY != oCharacter.y){
|
|
|
|
|
global.prevY = oCharacter.y;
|
|
|
|
|
}
|
|
|
|
|
if(global.roomPrev != room){
|
|
|
|
|
global.roomPrev = room;
|
|
|
|
|
}
|
|
|
|
|
if(global.prevSprite != oCharacter.sprite_index){
|
|
|
|
|
global.prevSprite = oCharacter.sprite_index;
|
|
|
|
|
}
|
|
|
|
|
if(global.prevIndex != oCharacter.image_index){
|
|
|
|
|
global.prevIndex = oCharacter.image_index;
|
|
|
|
|
}
|
|
|
|
|
buffer_delete(buffer);
|
|
|
|
|
var size, type, alignment;
|
|
|
|
|
size = 1024;
|
|
|
|
|
type = buffer_grow;
|
|
|
|
|
alignment = 1;
|
|
|
|
|
buffer = buffer_create(size, type, alignment);
|
|
|
|
|
buffer_seek(buffer, buffer_seek_start, 0);
|
|
|
|
|
buffer_write(buffer, buffer_u8, 100);
|
|
|
|
|
buffer_write(buffer, buffer_u8, global.clientID);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.x);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.y);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.sprite_index);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.image_index);
|
|
|
|
|
buffer_write(buffer, buffer_s16, room);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(keyboard_check_pressed(vk_f2)){
|
|
|
|
|
instance_destroy();
|
|
|
|
|
}
|
|
|
|
|
@ -415,6 +717,42 @@ switch(type_event){
|
|
|
|
|
buffer_seek(_buffer, buffer_seek_start, 0);
|
|
|
|
|
msgid = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
switch(msgid){
|
|
|
|
|
case 100:
|
|
|
|
|
var clientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
var clientX = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientY = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientSprite = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientImage = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientRoom = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var findsocket = ds_list_find_index(roomList, clientID);
|
|
|
|
|
if(global.clientID != clientID){
|
|
|
|
|
if(findsocket < 0){
|
|
|
|
|
if(clientRoom == room){
|
|
|
|
|
ds_list_add(roomList, clientID);
|
|
|
|
|
var arr;
|
|
|
|
|
arr[0] = clientID;
|
|
|
|
|
arr[1] = clientX;
|
|
|
|
|
arr[2] = clientY;
|
|
|
|
|
arr[3] = clientSprite;
|
|
|
|
|
arr[4] = clientImage;
|
|
|
|
|
arr[5] = clientRoom;
|
|
|
|
|
ds_list_add(roomListData, arr);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if(clientRoom != room){
|
|
|
|
|
var indexValue = ds_list_find_value(roomList, findsocket);
|
|
|
|
|
ds_list_delete(roomList, findsocket);
|
|
|
|
|
for(var i=0; i<ds_list_size(roomListData); i++){
|
|
|
|
|
var arrList = roomListData[| i];
|
|
|
|
|
if(arrList[0] == indexValue){
|
|
|
|
|
ds_list_delete(roomListData, i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
drawUpdate = true;
|
|
|
|
|
break;
|
|
|
|
|
case 0:
|
|
|
|
|
global.clientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
break;
|
|
|
|
|
@ -438,9 +776,9 @@ switch(type_event){
|
|
|
|
|
global.receivedClientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
update_variables("disablesame");
|
|
|
|
|
update_variables("updateprev");
|
|
|
|
|
global.itemChanges = 0;
|
|
|
|
|
global.metdeadChanges = 0;
|
|
|
|
|
global.eventChanges = 0;
|
|
|
|
|
//global.itemChanges = 0;
|
|
|
|
|
//global.metdeadChanges = 0;
|
|
|
|
|
//global.eventChanges = 0;
|
|
|
|
|
alarm[0] = 30;
|
|
|
|
|
ds_grid_clear(global.onlineReceived, -1);
|
|
|
|
|
break;
|
|
|
|
|
@ -492,10 +830,113 @@ switch(type_event){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
var monstersLeft = buffer_read(_buffer, buffer_s8);
|
|
|
|
|
var clientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
show_debug_message("metroidsleft received " + string(monstersLeft));
|
|
|
|
|
if(global.clientID != clientID && global.monstersleft != monstersLeft){
|
|
|
|
|
global.monstersleft = monstersLeft;
|
|
|
|
|
global.monstersleftPrev = global.monstersleft;
|
|
|
|
|
} else if(global.clientID == clientID){
|
|
|
|
|
global.monstersleftPrev = global.monstersleft;
|
|
|
|
|
}
|
|
|
|
|
alarm[2] = 30;
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
var monstersArea = buffer_read(_buffer, buffer_s8);
|
|
|
|
|
var clientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
show_debug_message("metroidsarea received " + string(monstersArea));
|
|
|
|
|
if(global.clientID != clientID && global.monstersarea != monstersArea){
|
|
|
|
|
global.monstersarea = monstersArea;
|
|
|
|
|
global.monstersareaPrev = global.monstersarea;
|
|
|
|
|
} else if(global.clientID == clientID){
|
|
|
|
|
global.monstersareaPrev = global.monstersarea;
|
|
|
|
|
}
|
|
|
|
|
alarm[2] = 30;
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
var item = ds_grid_create(1, 1);
|
|
|
|
|
ds_grid_read(item, strict_decompress(buffer_read(_buffer, buffer_string)));
|
|
|
|
|
var clientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
var itemArr = item[# 0, 0];
|
|
|
|
|
show_debug_message(itemArr);
|
|
|
|
|
if(is_array(itemArr)){
|
|
|
|
|
for(var i=0; i<array_length_1d(global.item); i++){
|
|
|
|
|
for(var f=0; f<array_height_2d(itemArr); f++){
|
|
|
|
|
if(i == itemArr[f, 1]){
|
|
|
|
|
global.itemPrev[i] = itemArr[f, 0];
|
|
|
|
|
show_debug_message("item prev index " + string(i) + " changed");
|
|
|
|
|
if(global.item[i] != itemArr[f, 0]){
|
|
|
|
|
global.item[i] = itemArr[f, 0];
|
|
|
|
|
show_debug_message("item current index " + string(i) + " changed");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
alarm[3] = 30;
|
|
|
|
|
if(global.clientID == clientID){
|
|
|
|
|
ds_grid_clear(global.onlineItem, -1);
|
|
|
|
|
global.itemChanges = 0;
|
|
|
|
|
}
|
|
|
|
|
ds_grid_destroy(item);
|
|
|
|
|
break;
|
|
|
|
|
case 8:
|
|
|
|
|
var metdead = ds_grid_create(1, 1);
|
|
|
|
|
ds_grid_read(metdead, strict_decompress(buffer_read(_buffer, buffer_string)));
|
|
|
|
|
var clientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
var metdeadArr = metdead[# 0, 0];
|
|
|
|
|
show_debug_message(metdeadArr);
|
|
|
|
|
if(is_array(metdeadArr)){
|
|
|
|
|
for(var i=0; i<array_length_1d(global.metdead); i++){
|
|
|
|
|
for(var f=0; f<array_height_2d(metdeadArr); f++){
|
|
|
|
|
if(i == metdeadArr[f, 1]){
|
|
|
|
|
global.metdeadPrev[i] = metdeadArr[f, 0];
|
|
|
|
|
show_debug_message("metdead prev index " + string(i) + " changed");
|
|
|
|
|
if(global.metdead[i] != metdeadArr[f, 0]){
|
|
|
|
|
global.metdead[i] = metdeadArr[f, 0];
|
|
|
|
|
show_debug_message("metdead current index " + string(i) + " changed");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
alarm[4] = 30;
|
|
|
|
|
if(global.clientID == clientID){
|
|
|
|
|
ds_grid_clear(global.onlineMetdead, -1);
|
|
|
|
|
global.metdeadChanges = 0;
|
|
|
|
|
}
|
|
|
|
|
ds_grid_destroy(metdead);
|
|
|
|
|
break;
|
|
|
|
|
case 9:
|
|
|
|
|
var event = ds_grid_create(1, 1);
|
|
|
|
|
ds_grid_read(event, strict_decompress(buffer_read(_buffer, buffer_string)));
|
|
|
|
|
var clientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
var eventArr = event[# 0, 0];
|
|
|
|
|
show_debug_message(eventArr);
|
|
|
|
|
if(is_array(eventArr)){
|
|
|
|
|
for(var i=0; i<array_length_1d(global.event); i++){
|
|
|
|
|
for(var f=0; f<array_height_2d(eventArr); f++){
|
|
|
|
|
if(i == eventArr[f, 1]){
|
|
|
|
|
global.eventPrev[i] = eventArr[f, 0];
|
|
|
|
|
show_debug_message("event prev index " + string(i) + " changed");
|
|
|
|
|
if(global.event[i] != eventArr[f, 0]){
|
|
|
|
|
global.event[i] = eventArr[f, 0];
|
|
|
|
|
show_debug_message("event current index " + string(i) + " changed");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
alarm[5] = 30;
|
|
|
|
|
if(global.clientID == clientID){
|
|
|
|
|
ds_grid_clear(global.onlineEvent, -1);
|
|
|
|
|
global.eventChanges = 0;
|
|
|
|
|
}
|
|
|
|
|
ds_grid_destroy(event);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
@ -523,8 +964,48 @@ buffer_delete(buffer);
|
|
|
|
|
ds_grid_destroy(global.onlineList);
|
|
|
|
|
ds_grid_destroy(global.onlineSend);
|
|
|
|
|
ds_grid_destroy(global.onlineReceived);
|
|
|
|
|
ds_grid_destroy(global.storedBuffers);
|
|
|
|
|
//ds_grid_destroy(global.storedBuffers);
|
|
|
|
|
ds_grid_destroy(global.onlineItem);
|
|
|
|
|
ds_grid_destroy(global.onlineMetdead);
|
|
|
|
|
ds_grid_destroy(global.onlineEvent);
|
|
|
|
|
ds_list_destroy(global.receivedPacketIDs);
|
|
|
|
|
ds_list_destroy(roomList);
|
|
|
|
|
ds_list_destroy(roomListData);
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
</action>
|
|
|
|
|
</event>
|
|
|
|
|
<event eventtype="8" enumb="0">
|
|
|
|
|
<action>
|
|
|
|
|
<libid>1</libid>
|
|
|
|
|
<id>603</id>
|
|
|
|
|
<kind>7</kind>
|
|
|
|
|
<userelative>0</userelative>
|
|
|
|
|
<isquestion>0</isquestion>
|
|
|
|
|
<useapplyto>-1</useapplyto>
|
|
|
|
|
<exetype>2</exetype>
|
|
|
|
|
<functionname></functionname>
|
|
|
|
|
<codestring></codestring>
|
|
|
|
|
<whoName>self</whoName>
|
|
|
|
|
<relative>0</relative>
|
|
|
|
|
<isnot>0</isnot>
|
|
|
|
|
<arguments>
|
|
|
|
|
<argument>
|
|
|
|
|
<kind>1</kind>
|
|
|
|
|
<string>if(ds_list_size(roomListData) > 0){
|
|
|
|
|
for(var i=0; i<ds_list_size(roomListData); i++){
|
|
|
|
|
var arrDraw = roomListData[| i];
|
|
|
|
|
var arrX = arrDraw[1];
|
|
|
|
|
var arrY = arrDraw[2];
|
|
|
|
|
var arrSprite = arrDraw[3];
|
|
|
|
|
var arrImage = arrDraw[4];
|
|
|
|
|
var arrRoom = arrDraw[5];
|
|
|
|
|
if(arrRoom == room && instance_exists(oCharacter)){
|
|
|
|
|
draw_sprite_ext(arrSprite, arrImage, arrX, arrY, 1, 1, direction, c_black, image_alpha);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
|