|
|
|
|
@ -2,7 +2,7 @@
|
|
|
|
|
<object>
|
|
|
|
|
<spriteName><undefined></spriteName>
|
|
|
|
|
<solid>0</solid>
|
|
|
|
|
<visible>0</visible>
|
|
|
|
|
<visible>-1</visible>
|
|
|
|
|
<depth>0</depth>
|
|
|
|
|
<persistent>-1</persistent>
|
|
|
|
|
<parentName><undefined></parentName>
|
|
|
|
|
@ -32,10 +32,11 @@ metroidCountChanged = false;
|
|
|
|
|
itemChanged = false;
|
|
|
|
|
metdeadChanged = false;
|
|
|
|
|
eventChanged = false;
|
|
|
|
|
mapChanged = false;
|
|
|
|
|
connected = false;
|
|
|
|
|
queenHealthWait = false;
|
|
|
|
|
queenDead = false;
|
|
|
|
|
drawUpdate = false;
|
|
|
|
|
sameRoom = false;
|
|
|
|
|
phase = 0;
|
|
|
|
|
seed = undefined;
|
|
|
|
|
var type;
|
|
|
|
|
@ -73,11 +74,14 @@ 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.onlineMap = ds_grid_create(1, 1);
|
|
|
|
|
global.onlineReceived = ds_grid_create(3, 35);
|
|
|
|
|
//global.storedBuffers = ds_grid_create(2, 1);
|
|
|
|
|
global.receivedPacketIDs = ds_list_create();
|
|
|
|
|
roomList = ds_list_create();
|
|
|
|
|
roomListData = ds_list_create();
|
|
|
|
|
global.idList = ds_list_create();
|
|
|
|
|
posData = ds_list_create();
|
|
|
|
|
ds_grid_clear(global.onlineSend, -1);
|
|
|
|
|
ds_grid_clear(global.onlineItem, -1);
|
|
|
|
|
ds_grid_clear(global.onlineMetdead, -1);
|
|
|
|
|
@ -90,6 +94,15 @@ for(var i=0; i<ds_grid_height(global.onlineList); i++){
|
|
|
|
|
update_variables("initprev");
|
|
|
|
|
|
|
|
|
|
update_variables("onlinevars");
|
|
|
|
|
|
|
|
|
|
if(shader_is_compiled(shd_pal_swapper)){
|
|
|
|
|
alpha = 1
|
|
|
|
|
} else {
|
|
|
|
|
alpha = 0.5
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
posX = 3;
|
|
|
|
|
posY = 3;
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
@ -112,7 +125,21 @@ update_variables("onlinevars");
|
|
|
|
|
<arguments>
|
|
|
|
|
<argument>
|
|
|
|
|
<kind>1</kind>
|
|
|
|
|
<string>network_destroy(socket);
|
|
|
|
|
<string>if(connected){
|
|
|
|
|
popup_text("Disconnected");
|
|
|
|
|
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, 254);
|
|
|
|
|
buffer_write(buffer, buffer_u8, global.clientID);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
network_destroy(socket);
|
|
|
|
|
buffer_delete(buffer);
|
|
|
|
|
ds_grid_destroy(global.onlineList);
|
|
|
|
|
ds_grid_destroy(global.onlineSend);
|
|
|
|
|
@ -121,11 +148,182 @@ ds_grid_destroy(global.onlineReceived);
|
|
|
|
|
ds_grid_destroy(global.onlineItem);
|
|
|
|
|
ds_grid_destroy(global.onlineMetdead);
|
|
|
|
|
ds_grid_destroy(global.onlineEvent);
|
|
|
|
|
ds_grid_destroy(global.onlineMap);
|
|
|
|
|
ds_list_destroy(global.receivedPacketIDs);
|
|
|
|
|
ds_list_destroy(roomList);
|
|
|
|
|
ds_list_destroy(roomListData);
|
|
|
|
|
if(connected){
|
|
|
|
|
popup_text("Disconnected");
|
|
|
|
|
ds_list_destroy(global.idList);
|
|
|
|
|
ds_list_destroy(posData);
|
|
|
|
|
|
|
|
|
|
global.canConnect = false;
|
|
|
|
|
oControl.alarm[10] = 90;
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
</action>
|
|
|
|
|
</event>
|
|
|
|
|
<event eventtype="2" enumb="11">
|
|
|
|
|
<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>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, 101);
|
|
|
|
|
buffer_write(buffer, buffer_u8, global.clientID);
|
|
|
|
|
buffer_write(buffer, buffer_s16, room);
|
|
|
|
|
buffer_write(buffer, buffer_s16, posX);
|
|
|
|
|
buffer_write(buffer, buffer_s16, posY);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
|
|
|
|
|
alarm[11] = 20;
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
</action>
|
|
|
|
|
</event>
|
|
|
|
|
<event eventtype="2" enumb="10">
|
|
|
|
|
<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(sameRoom){
|
|
|
|
|
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, oCharacter.aspr1);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.asprx);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.aspry);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.aspr2);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.aspr2x);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.aspr2y);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.aspr2a);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.mirror);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.armmsl);
|
|
|
|
|
buffer_write(buffer, buffer_s16, room);
|
|
|
|
|
buffer_write(buffer, buffer_string, name);
|
|
|
|
|
buffer_write(buffer, buffer_s16, oCharacter.image_blend);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
alarm[10] = 3;
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
</action>
|
|
|
|
|
</event>
|
|
|
|
|
<event eventtype="2" enumb="6">
|
|
|
|
|
<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 i=0; i<array_height_2d(global.dmap); i++){
|
|
|
|
|
for(var f=0; f<array_length_2d(global.dmap, i); f++){
|
|
|
|
|
if(global.dmapPrev[i, f] != global.dmap[i, f]){
|
|
|
|
|
global.dmapChanges[v, 0] = global.dmap[i, f];
|
|
|
|
|
global.dmapChanges[v, 1] = i;
|
|
|
|
|
global.dmapChanges[v, 2] = f;
|
|
|
|
|
global.onlineMap[# 0, 0] = global.dmapChanges;
|
|
|
|
|
mapChanged = true;
|
|
|
|
|
if(v == 30){
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
v++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(mapChanged){
|
|
|
|
|
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, 9);
|
|
|
|
|
buffer_write(buffer, buffer_string, strict_compress(ds_grid_write(global.onlineMap)));
|
|
|
|
|
buffer_write(buffer, buffer_u8, global.clientID);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!mapChanged){
|
|
|
|
|
alarm[6] = 30;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(mapChanged){
|
|
|
|
|
mapChanged = false;
|
|
|
|
|
alarm[6]= 75;
|
|
|
|
|
}
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
@ -151,12 +349,13 @@ if(connected){
|
|
|
|
|
<kind>1</kind>
|
|
|
|
|
<string>var v = 0;
|
|
|
|
|
for(var f=0; f<array_length_1d(global.event); f++){
|
|
|
|
|
if(f > 350){
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
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++;
|
|
|
|
|
}
|
|
|
|
|
@ -212,8 +411,6 @@ for(var f=0; f<array_length_1d(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++;
|
|
|
|
|
}
|
|
|
|
|
@ -269,8 +466,6 @@ for(var f=0; f<array_length_1d(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++;
|
|
|
|
|
}
|
|
|
|
|
@ -422,7 +617,6 @@ for(var i=0; i<ds_grid_height(global.onlineList); i++){
|
|
|
|
|
global.onlineSend[# 0, i] = global.onlineList[# 0, i];
|
|
|
|
|
global.onlineSend[# 1, i] = global.onlineList[# 1, i];
|
|
|
|
|
global.onlineSend[# 2, i] = global.onlineList[# 2, i];
|
|
|
|
|
show_debug_message(string(global.onlineSend[# 0, i]) + " " + string(global.onlineSend[# 1, i]) + " " + string(global.onlineSend[# 2, i]));
|
|
|
|
|
canSend = true;
|
|
|
|
|
alarm[0] = 600;
|
|
|
|
|
}
|
|
|
|
|
@ -584,6 +778,9 @@ if(instance_exists(oQueenHead) && !is_undefined(oQueenHead.myhealth) &am
|
|
|
|
|
alarm[3] = 5;
|
|
|
|
|
alarm[4] = 5;
|
|
|
|
|
alarm[5] = 5;
|
|
|
|
|
alarm[6] = 5;
|
|
|
|
|
alarm[10] = 3;
|
|
|
|
|
alarm[11] = 20;
|
|
|
|
|
} else {
|
|
|
|
|
instance_destroy();
|
|
|
|
|
popup_text("Failed to connect");
|
|
|
|
|
@ -602,6 +799,10 @@ if(global.event[303] > 0){
|
|
|
|
|
phase = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(global.event[203] < 9){
|
|
|
|
|
global.event[203] = 9;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(instance_exists(oQueen) && !is_undefined(oQueen.phase)){
|
|
|
|
|
if(phase >= 1 && instance_exists(inst_146524)){
|
|
|
|
|
event_perform_object(oQueenFireball, ev_other, ev_user1);
|
|
|
|
|
@ -641,43 +842,6 @@ 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();
|
|
|
|
|
}
|
|
|
|
|
@ -685,6 +849,14 @@ if(keyboard_check_pressed(vk_f2)){
|
|
|
|
|
if(keyboard_check_pressed(vk_f3)){
|
|
|
|
|
popup_text_ext(string(oControl.seed), 300);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(instance_exists(oCharacter)){
|
|
|
|
|
posX = global.mapposx;
|
|
|
|
|
posY = global.mapposy;
|
|
|
|
|
} else {
|
|
|
|
|
posX = posX;
|
|
|
|
|
posY = posY;
|
|
|
|
|
}
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
@ -713,17 +885,55 @@ var type_event = ds_map_find_value(async_load, "type");
|
|
|
|
|
switch(type_event){
|
|
|
|
|
case network_type_data:
|
|
|
|
|
var _buffer = ds_map_find_value(async_load, "buffer");
|
|
|
|
|
show_debug_message(buffer_get_size(_buffer));
|
|
|
|
|
buffer_seek(_buffer, buffer_seek_start, 0);
|
|
|
|
|
show_debug_message(string(buffer_get_size(_buffer)));
|
|
|
|
|
msgid = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
switch(msgid){
|
|
|
|
|
case 254:
|
|
|
|
|
var clientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
if(ds_list_size(roomList) > 0){
|
|
|
|
|
var findsocket = ds_list_find_index(roomList, clientID);
|
|
|
|
|
if(findsocket >= 0){
|
|
|
|
|
ds_list_delete(roomList, findsocket);
|
|
|
|
|
for(var i=0; i<ds_list_size(roomListData); i++){
|
|
|
|
|
var arrList = roomListData[| i];
|
|
|
|
|
if(arrList[0] == clientID){
|
|
|
|
|
ds_list_delete(roomListData, i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for(var f=0; f<ds_list_size(global.idList); f++){
|
|
|
|
|
var arrList = global.idList[| f];
|
|
|
|
|
if(clientID == arrList[0, 0]){
|
|
|
|
|
ds_list_delete(global.idList, f);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for(var v=0; v<ds_list_size(posData); v++){
|
|
|
|
|
var arrList = posData[| v];
|
|
|
|
|
if(clientID == arrList[0]){
|
|
|
|
|
ds_list_delete(posData, v);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
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 clientA1 = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientA1X = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientA1Y = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientA2 = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientA2X = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientA2Y = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientA2A = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientMirror = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientArmmsl = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientRoom = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientName = buffer_read(_buffer, buffer_string);
|
|
|
|
|
var clientBlend = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var findsocket = ds_list_find_index(roomList, clientID);
|
|
|
|
|
if(global.clientID != clientID){
|
|
|
|
|
if(findsocket < 0){
|
|
|
|
|
@ -735,11 +945,48 @@ switch(type_event){
|
|
|
|
|
arr[2] = clientY;
|
|
|
|
|
arr[3] = clientSprite;
|
|
|
|
|
arr[4] = clientImage;
|
|
|
|
|
arr[5] = clientRoom;
|
|
|
|
|
arr[5] = clientA1;
|
|
|
|
|
arr[6] = clientA1X;
|
|
|
|
|
arr[7] = clientA1Y;
|
|
|
|
|
arr[8] = clientA2;
|
|
|
|
|
arr[9] = clientA2X;
|
|
|
|
|
arr[10] = clientA2Y;
|
|
|
|
|
arr[11] = clientA2A;
|
|
|
|
|
arr[12] = clientMirror;
|
|
|
|
|
arr[13] = clientArmmsl;
|
|
|
|
|
arr[14] = clientRoom;
|
|
|
|
|
arr[15] = clientName;
|
|
|
|
|
arr[16] = clientBlend;
|
|
|
|
|
ds_list_add(roomListData, arr);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
var arr;
|
|
|
|
|
arr[0] = clientID;
|
|
|
|
|
arr[1] = clientX;
|
|
|
|
|
arr[2] = clientY;
|
|
|
|
|
arr[3] = clientSprite;
|
|
|
|
|
arr[4] = clientImage;
|
|
|
|
|
arr[5] = clientA1;
|
|
|
|
|
arr[6] = clientA1X;
|
|
|
|
|
arr[7] = clientA1Y;
|
|
|
|
|
arr[8] = clientA2;
|
|
|
|
|
arr[9] = clientA2X;
|
|
|
|
|
arr[10] = clientA2Y;
|
|
|
|
|
arr[11] = clientA2A;
|
|
|
|
|
arr[12] = clientMirror;
|
|
|
|
|
arr[13] = clientArmmsl;
|
|
|
|
|
arr[14] = clientRoom;
|
|
|
|
|
arr[15] = clientName;
|
|
|
|
|
arr[16] = clientBlend;
|
|
|
|
|
var indexValue = ds_list_find_value(roomList, findsocket);
|
|
|
|
|
for(var i=0; i<ds_list_size(roomListData); i++){
|
|
|
|
|
var arrList = roomListData[| i];
|
|
|
|
|
if(arrList[0] == indexValue){
|
|
|
|
|
roomListData[| i] = arr;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(clientRoom != room){
|
|
|
|
|
sameRoom = false;
|
|
|
|
|
var indexValue = ds_list_find_value(roomList, findsocket);
|
|
|
|
|
ds_list_delete(roomList, findsocket);
|
|
|
|
|
for(var i=0; i<ds_list_size(roomListData); i++){
|
|
|
|
|
@ -751,7 +998,70 @@ switch(type_event){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
drawUpdate = true;
|
|
|
|
|
break;
|
|
|
|
|
case 101:
|
|
|
|
|
var clientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
var clientRoom = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientMapX = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var clientMapY = buffer_read(_buffer, buffer_s16);
|
|
|
|
|
var findsocket = ds_list_find_index(roomList, clientID);
|
|
|
|
|
if(clientRoom == room && global.clientID != clientID){
|
|
|
|
|
sameRoom = true;
|
|
|
|
|
} else if(clientRoom != room && global.clientID != clientID){
|
|
|
|
|
if(ds_list_size(roomList) > 0 && findsocket >= 0){
|
|
|
|
|
sameRoom = false;
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
checkList = ds_list_create();
|
|
|
|
|
|
|
|
|
|
if(ds_list_size(global.idList) > 0){
|
|
|
|
|
for(var f=0; f<ds_list_size(global.idList); f++){
|
|
|
|
|
if(ds_list_size(posData) > 0 && clientID != global.clientID){
|
|
|
|
|
var arrPosData;
|
|
|
|
|
arrPosData[0] = clientID;
|
|
|
|
|
arrPosData[1] = clientMapX;
|
|
|
|
|
arrPosData[2] = clientMapY;
|
|
|
|
|
for(var v=0; v<ds_list_size(posData); v++){
|
|
|
|
|
var arr = posData[| v];
|
|
|
|
|
ds_list_add(checkList, arr[0]);
|
|
|
|
|
if(arr[0] == clientID){
|
|
|
|
|
posData[| v] = arrPosData;
|
|
|
|
|
if(instance_exists(oMapCursor) && surface_exists(oSS_Control.s_map)){
|
|
|
|
|
surface_free(oSS_Control.s_map);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var find = ds_list_find_index(checkList, clientID);
|
|
|
|
|
|
|
|
|
|
if(find < 0){
|
|
|
|
|
ds_list_add(posData, arrPosData);
|
|
|
|
|
}
|
|
|
|
|
} else if(ds_list_size(posData) == 0 && clientID != global.clientID){
|
|
|
|
|
var arrPosData;
|
|
|
|
|
arrPosData[0] = clientID;
|
|
|
|
|
arrPosData[1] = clientMapX;
|
|
|
|
|
arrPosData[2] = clientMapY;
|
|
|
|
|
ds_list_add(posData, arrPosData);
|
|
|
|
|
if(instance_exists(oMapCursor) && surface_exists(oSS_Control.s_map)){
|
|
|
|
|
surface_free(oSS_Control.s_map);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ds_list_destroy(checkList);
|
|
|
|
|
break;
|
|
|
|
|
case 102:
|
|
|
|
|
ds_list_read(global.idList, strict_decompress(buffer_read(_buffer, buffer_string)));
|
|
|
|
|
break;
|
|
|
|
|
case 0:
|
|
|
|
|
global.clientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
@ -833,7 +1143,6 @@ switch(type_event){
|
|
|
|
|
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;
|
|
|
|
|
@ -845,7 +1154,6 @@ switch(type_event){
|
|
|
|
|
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;
|
|
|
|
|
@ -859,16 +1167,13 @@ switch(type_event){
|
|
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -886,16 +1191,13 @@ switch(type_event){
|
|
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -913,16 +1215,13 @@ switch(type_event){
|
|
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -935,6 +1234,35 @@ switch(type_event){
|
|
|
|
|
}
|
|
|
|
|
ds_grid_destroy(event);
|
|
|
|
|
break;
|
|
|
|
|
case 10:
|
|
|
|
|
var dmap = ds_grid_create(1, 1);
|
|
|
|
|
ds_grid_read(dmap, strict_decompress(buffer_read(_buffer, buffer_string)));
|
|
|
|
|
var clientID = buffer_read(_buffer, buffer_u8);
|
|
|
|
|
var dmapArr = dmap[# 0, 0];
|
|
|
|
|
if(is_array(dmapArr)){
|
|
|
|
|
for(var i=0; i<array_height_2d(global.dmap); i++){
|
|
|
|
|
for(var f=0; f<array_length_2d(global.dmap, i); f++){
|
|
|
|
|
for(var v=0; v<array_height_2d(dmapArr); v++){
|
|
|
|
|
if(i == dmapArr[v, 1] && f == dmapArr[v, 2]){
|
|
|
|
|
global.dmapPrev[i, f] = dmapArr[v, 0];
|
|
|
|
|
if(global.dmap[i, f] != dmapArr[v, 0]){
|
|
|
|
|
global.dmap[i, f] = dmapArr[v, 0];
|
|
|
|
|
if(global.ingame){
|
|
|
|
|
with (oControl) event_user(2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
alarm[6] = 30;
|
|
|
|
|
if(global.clientID == clientID){
|
|
|
|
|
ds_grid_clear(global.onlineMap, -1);
|
|
|
|
|
global.dmapChanges = 0;
|
|
|
|
|
}
|
|
|
|
|
ds_grid_destroy(dmap);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</string>
|
|
|
|
|
@ -959,7 +1287,20 @@ switch(type_event){
|
|
|
|
|
<arguments>
|
|
|
|
|
<argument>
|
|
|
|
|
<kind>1</kind>
|
|
|
|
|
<string>network_destroy(socket);
|
|
|
|
|
<string>if(connected){
|
|
|
|
|
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, 254);
|
|
|
|
|
buffer_write(buffer, buffer_u8, global.clientID);
|
|
|
|
|
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
network_destroy(socket);
|
|
|
|
|
buffer_delete(buffer);
|
|
|
|
|
ds_grid_destroy(global.onlineList);
|
|
|
|
|
ds_grid_destroy(global.onlineSend);
|
|
|
|
|
@ -968,9 +1309,12 @@ ds_grid_destroy(global.onlineReceived);
|
|
|
|
|
ds_grid_destroy(global.onlineItem);
|
|
|
|
|
ds_grid_destroy(global.onlineMetdead);
|
|
|
|
|
ds_grid_destroy(global.onlineEvent);
|
|
|
|
|
ds_grid_destroy(global.onlineMap);
|
|
|
|
|
ds_list_destroy(global.receivedPacketIDs);
|
|
|
|
|
ds_list_destroy(roomList);
|
|
|
|
|
ds_list_destroy(roomListData);
|
|
|
|
|
ds_list_destroy(global.idList);
|
|
|
|
|
ds_list_destroy(posData);
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
@ -993,19 +1337,48 @@ ds_list_destroy(roomListData);
|
|
|
|
|
<arguments>
|
|
|
|
|
<argument>
|
|
|
|
|
<kind>1</kind>
|
|
|
|
|
<string>if(ds_list_size(roomListData) > 0){
|
|
|
|
|
<string>if(ds_list_size(roomListData) > 0){
|
|
|
|
|
for(var i=0; i<ds_list_size(roomListData); i++){
|
|
|
|
|
var arrDraw = roomListData[| i];
|
|
|
|
|
var arrID = arrDraw[0];
|
|
|
|
|
var arrX = arrDraw[1];
|
|
|
|
|
var arrY = arrDraw[2];
|
|
|
|
|
var arrSprite = arrDraw[3];
|
|
|
|
|
var arrImage = arrDraw[4];
|
|
|
|
|
var arrRoom = arrDraw[5];
|
|
|
|
|
var arrA1 = arrDraw[5];
|
|
|
|
|
var arrA1X = arrDraw[6];
|
|
|
|
|
var arrA1Y = arrDraw[7];
|
|
|
|
|
var arrA2 = arrDraw[8];
|
|
|
|
|
var arrA2X = arrDraw[9];
|
|
|
|
|
var arrA2Y = arrDraw[10];
|
|
|
|
|
var arrA2A = arrDraw[11];
|
|
|
|
|
var arrMirror = arrDraw[12];
|
|
|
|
|
var arrArmmsl = arrDraw[13];
|
|
|
|
|
var arrRoom = arrDraw[14];
|
|
|
|
|
var arrName = arrDraw[15];
|
|
|
|
|
var arrBlend = arrDraw[16];
|
|
|
|
|
if(arrRoom == room && instance_exists(oCharacter)){
|
|
|
|
|
draw_sprite_ext(arrSprite, arrImage, arrX, arrY, 1, 1, direction, c_black, image_alpha);
|
|
|
|
|
draw_character_ext(arrSprite, arrX, arrY, arrA1, arrA1X, arrA1Y, arrA2, arrA2X, arrA2Y, arrA2A, arrMirror, arrBlend, alpha, arrArmmsl, arrImage, arrID);
|
|
|
|
|
draw_set_font(font_displayname);
|
|
|
|
|
draw_set_halign(fa_center);
|
|
|
|
|
draw_cool_text(arrX, arrY - 52, arrName, c_black, c_white, c_white, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(instance_exists(oMapCursor)){
|
|
|
|
|
if(ds_list_size(posData) > 0){
|
|
|
|
|
for(var i=0; i<ds_list_size(posData); i++){
|
|
|
|
|
var arrMapIcon = posData[| i];
|
|
|
|
|
var arrID = arrMapIcon[0];
|
|
|
|
|
var arrX = arrMapIcon[1];
|
|
|
|
|
var arrY = arrMapIcon[2];
|
|
|
|
|
draw_sprite(sDarkMultitroidPlayer, (arrID - 1), (arrX * 8), ((arrY * 8) + 32));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
</string>
|
|
|
|
|
</argument>
|
|
|
|
|
</arguments>
|
|
|
|
|
|