Added buffer size checking to mitigate packet corruption crashes

pull/28/head v1.2-pre
milesthenerd 5 years ago
parent 7cf40c5a80
commit 74eaa1b7f3

@ -5537,6 +5537,7 @@
<script>scripts\send_seed.gml</script>
<script>scripts\popup_text_ext.gml</script>
<script>scripts\draw_character_ext.gml</script>
<script>scripts\reset_dmap.gml</script>
</scripts>
<scripts name="Misc">
<script>scripts\pal_swap_get_color_count.gml</script>

@ -73,7 +73,7 @@ sid = 0;
if (statetime == 1150) intensity = 1;
if (statetime == 1190) intensity = 0;
if (statetime == 1200) event_user(0);
if (statetime == 1000 &amp;&amp; global.lavastate &gt;= 10) sfx_play(sndQueenDistant);
if (statetime == 1000 &amp;&amp; global.lavastate &gt;= 10 &amp;&amp; global.event[303] == 0) sfx_play(sndQueenDistant);
if (global.quake) {
if (global.classicmode == 0) {
view_xport[0] = round(random(intensity));

@ -66,7 +66,7 @@ sid = 0;
if (statetime == 130) intensity = 5;
if (statetime == 160) intensity = 7;
if (statetime == 190) intensity = 9;
if (statetime == 340) sfx_play(sndQueenIntro); //240
if (statetime == 340 &amp;&amp; global.event[303] == 0) sfx_play(sndQueenIntro); //240
if (statetime == 250) {
intensity = 11;
audio_sound_gain(sid, 0, 1500);

@ -222,6 +222,11 @@ trail = 0;
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_u8, 254);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 254);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
}
@ -278,6 +283,14 @@ 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 bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
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));
if(ds_list_size(posData)){
@ -349,6 +362,29 @@ alarm[11] = 20;
buffer_write(buffer, buffer_s16, oCharacter.image_blend);
buffer_write(buffer, buffer_s8, oCharacter.fxtimer);
buffer_write(buffer, buffer_s16, global.roomPrev);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
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);
buffer_write(buffer, buffer_s8, oCharacter.fxtimer);
buffer_write(buffer, buffer_s16, global.roomPrev);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
if(global.roomPrev != room){
global.roomPrev = room;
@ -390,6 +426,12 @@ alarm[10] = 3;
buffer_write(buffer, buffer_u8, 12);
buffer_write(buffer, buffer_u8, global.maxsmissiles);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 12);
buffer_write(buffer, buffer_u8, global.maxsmissiles);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
maxsmissilesChanged = true;
}
@ -435,6 +477,12 @@ if(maxsmissilesChanged){
buffer_write(buffer, buffer_u8, 11);
buffer_write(buffer, buffer_u16, global.maxmissiles);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 11);
buffer_write(buffer, buffer_u16, global.maxmissiles);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
maxmissilesChanged = true;
}
@ -480,6 +528,12 @@ if(maxmissilesChanged){
buffer_write(buffer, buffer_u8, 10);
buffer_write(buffer, buffer_u8, global.itemstaken);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 10);
buffer_write(buffer, buffer_u8, global.itemstaken);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
itemstakenChanged = true;
}
@ -544,6 +598,12 @@ if(mapChanged){
buffer_write(buffer, buffer_u8, 9);
buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineMap)));
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 9);
buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineMap)));
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
}
@ -602,6 +662,12 @@ if(eventChanged){
buffer_write(buffer, buffer_u8, 8);
buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineEvent)));
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 8);
buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineEvent)));
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
}
@ -657,6 +723,12 @@ if(metdeadChanged){
buffer_write(buffer, buffer_u8, 7);
buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineMetdead)));
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 7);
buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineMetdead)));
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
}
@ -712,6 +784,12 @@ if(itemChanged){
buffer_write(buffer, buffer_u8, 6);
buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineItem)));
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 6);
buffer_write(buffer, buffer_string, strict_compress(ds_list_write(global.onlineItem)));
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
}
@ -756,6 +834,12 @@ if(itemChanged){
buffer_write(buffer, buffer_u8, 4);
buffer_write(buffer, buffer_s8, global.monstersleft);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
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;
}
@ -771,6 +855,12 @@ if(global.monstersareaPrev != global.monstersarea){
buffer_write(buffer, buffer_u8, 5);
buffer_write(buffer, buffer_s8, global.monstersarea);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
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;
}
@ -932,6 +1022,13 @@ 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);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 0);
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);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
show_debug_message("packetID = " + string(global.packetID));
global.packetID++;
@ -973,6 +1070,14 @@ if(instance_exists(oQueen) &amp;&amp; instance_exists(oQueenHead) &amp;&amp; !is
buffer_write(buffer, buffer_u8, global.clientID);
buffer_write(buffer, buffer_s8, oQueen.phase);
buffer_write(buffer, buffer_s8, oQueen.state);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 2);
buffer_write(buffer, buffer_s32, oQueenHead.myhealth);
buffer_write(buffer, buffer_u8, global.clientID);
buffer_write(buffer, buffer_s8, oQueen.phase);
buffer_write(buffer, buffer_s8, oQueen.state);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
}
}
@ -1023,9 +1128,11 @@ if(itemCount != global.itemstaken){
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_u8, 1);
buffer_write(buffer, buffer_string, name);
var bufferSize = buffer_get_size(buffer);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 1);
buffer_write(buffer, buffer_string, name);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
instance_create(x, y, oNametag);
} else {
@ -1040,6 +1147,10 @@ if(instance_exists(oCharacter)){
}
}
if(global.event[103] &gt; 0){
global.event[103] = floor(global.event[103]);
}
if(global.event[303] &gt; 0){
phase = 0;
}
@ -1097,10 +1208,6 @@ if(keyboard_check_pressed(vk_f2)){
if(keyboard_check_pressed(vk_f3)){
popup_text_ext(string(oControl.seed), 300);
global.event[303] = 1;
global.targetx = 864;
global.targety = 96;
room_change(rm_a7c01, 1);
}
if(keyboard_check_pressed(vk_f4)){
@ -1186,6 +1293,12 @@ if(maxpbombsTimer == 0 &amp;&amp; connected){
buffer_write(buffer, buffer_u8, 13);
buffer_write(buffer, buffer_u8, global.maxpbombs);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 13);
buffer_write(buffer, buffer_u8, global.maxpbombs);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
maxpbombsChanged = true;
}
@ -1212,6 +1325,12 @@ if(maxhealthTimer == 0 &amp;&amp; connected){
buffer_write(buffer, buffer_u8, 14);
buffer_write(buffer, buffer_u16, global.maxhealth);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 14);
buffer_write(buffer, buffer_u16, global.maxhealth);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
maxhealthChanged = true;
}
@ -1238,6 +1357,12 @@ if(etanksTimer == 0 &amp;&amp; connected){
buffer_write(buffer, buffer_u8, 15);
buffer_write(buffer, buffer_u8, global.etanks);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 15);
buffer_write(buffer, buffer_u8, global.etanks);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
etanksChanged = true;
}
@ -1264,6 +1389,12 @@ if(mtanksTimer == 0 &amp;&amp; connected){
buffer_write(buffer, buffer_u8, 16);
buffer_write(buffer, buffer_u8, global.mtanks);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 16);
buffer_write(buffer, buffer_u8, global.mtanks);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
mtanksChanged = true;
}
@ -1290,6 +1421,12 @@ if(stanksTimer == 0 &amp;&amp; connected){
buffer_write(buffer, buffer_u8, 17);
buffer_write(buffer, buffer_u8, global.stanks);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 17);
buffer_write(buffer, buffer_u8, global.stanks);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
stanksChanged = true;
}
@ -1316,6 +1453,12 @@ if(ptanksTimer == 0 &amp;&amp; connected){
buffer_write(buffer, buffer_u8, 18);
buffer_write(buffer, buffer_u8, global.ptanks);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 18);
buffer_write(buffer, buffer_u8, global.ptanks);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
ptanksChanged = true;
}
@ -1353,6 +1496,11 @@ if(pingTimer &lt;= 0){
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_u8, 103);
buffer_write(buffer, buffer_u32, current_time);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 103);
buffer_write(buffer, buffer_u32, current_time);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
}
@ -1426,9 +1574,14 @@ 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");
var bufferSize = buffer_get_size(_buffer);
buffer_seek(_buffer, buffer_seek_start, 0);
var bufferSizePacket = buffer_read(_buffer, buffer_s32);
show_debug_message(string(bufferSize) + " " + string(bufferSizePacket));
if(!is_real(bufferSizePacket)) exit;
if(bufferSizePacket + 4 != bufferSize) exit;
show_debug_message("done");
msgid = buffer_read(_buffer, buffer_u8);
show_debug_message(string(buffer_get_size(_buffer)));
switch(msgid){
case 254:
var clientID = buffer_read(_buffer, buffer_u8);
@ -1672,6 +1825,10 @@ switch(type_event){
var ping = buffer_read(_buffer, buffer_u32);
global.ping = current_time - ping;
break;
case 106:
load_character_vars();
reset_dmap();
break;
case 0:
global.clientID = buffer_read(_buffer, buffer_u8);
show_debug_message(string(msgid) + " " + string(global.clientID));
@ -1696,6 +1853,12 @@ switch(type_event){
buffer_write(buffer, buffer_u8, 200);
buffer_write(buffer, buffer_u8, global.clientID);
buffer_write(buffer, buffer_u8, preferredcolor);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 200);
buffer_write(buffer, buffer_u8, global.clientID);
buffer_write(buffer, buffer_u8, preferredcolor);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
break;
case 1:
@ -1856,6 +2019,9 @@ switch(type_event){
global.metdeadPrev[i] = metdeadArr[f, 0];
if(global.metdead[i] != metdeadArr[f, 0]){
global.metdead[i] = metdeadArr[f, 0];
if(metdeadArr[f, 0] == 1 &amp;&amp; global.clientID != clientID){
popup_text("Metroid killed");
}
}
}
}
@ -2303,6 +2469,13 @@ switch(type_event){
for(var i=0; i&lt;array_length_1d(global.item); i++){
buffer_write(itemBuffer, buffer_u8, global.item[i]);
}
var bufferSize = buffer_tell(itemBuffer);
buffer_seek(itemBuffer, buffer_seek_start, 0);
buffer_write(itemBuffer, buffer_s32, bufferSize);
buffer_write(itemBuffer, buffer_u8, 50);
for(var i=0; i&lt;array_length_1d(global.item); i++){
buffer_write(itemBuffer, buffer_u8, global.item[i]);
}
network_send_packet(socket, itemBuffer, buffer_tell(itemBuffer));
buffer_delete(itemBuffer);
}
@ -2312,10 +2485,10 @@ switch(type_event){
for(var i=0; i&lt;array_length_1d(global.event); i++){
if(i &lt; 350){
var receivedEvent = buffer_read(_buffer, buffer_u8);
if(receivedEvent &gt; global.event[i]){
if(floor(receivedEvent) &gt; floor(global.event[i])){
global.event[i] = receivedEvent;
global.eventPrev[i] = global.event[i];
} else if(receivedEvent &lt; global.event[i]){
} else if(floor(receivedEvent) &lt; floor(global.event[i])){
resend = true;
}
}
@ -2332,6 +2505,13 @@ switch(type_event){
for(var i=0; i&lt;array_length_1d(global.event); i++){
buffer_write(eventBuffer, buffer_u8, global.event[i]);
}
var bufferSize = buffer_tell(eventBuffer);
buffer_seek(eventBuffer, buffer_seek_start, 0);
buffer_write(eventBuffer, buffer_s32, bufferSize);
buffer_write(eventBuffer, buffer_u8, 51);
for(var i=0; i&lt;array_length_1d(global.event); i++){
buffer_write(eventBuffer, buffer_u8, global.event[i]);
}
network_send_packet(socket, eventBuffer, buffer_tell(eventBuffer));
buffer_delete(eventBuffer);
}
@ -2477,6 +2657,13 @@ switch(type_event){
for(var i=0; i&lt;array_length_1d(global.metdead); i++){
buffer_write(metdeadBuffer, buffer_u8, global.metdead[i]);
}
var bufferSize = buffer_tell(metdeadBuffer);
buffer_seek(metdeadBuffer, buffer_seek_start, 0);
buffer_write(metdeadBuffer, buffer_s32, bufferSize);
buffer_write(metdeadBuffer, buffer_u8, 52);
for(var i=0; i&lt;array_length_1d(global.metdead); i++){
buffer_write(metdeadBuffer, buffer_u8, global.metdead[i]);
}
network_send_packet(socket, metdeadBuffer, buffer_tell(metdeadBuffer));
buffer_delete(metdeadBuffer);
}
@ -2511,6 +2698,15 @@ switch(type_event){
buffer_write(dmapBuffer, buffer_u8, global.dmap[i, j]);
}
}
var bufferSize = buffer_tell(dmapBuffer);
buffer_seek(dmapBuffer, buffer_seek_start, 0);
buffer_write(dmapBuffer, buffer_s32, bufferSize);
buffer_write(dmapBuffer, buffer_u8, 53);
for(var i=0; i&lt;array_height_2d(global.dmap); i++){
for(var j=0; j&lt;array_length_2d(global.dmap, i); j++){
buffer_write(dmapBuffer, buffer_u8, global.dmap[i, j]);
}
}
network_send_packet(socket, dmapBuffer, buffer_tell(dmapBuffer));
buffer_delete(dmapBuffer);
}
@ -2554,6 +2750,12 @@ switch(type_event){
buffer_write(buffer, buffer_u8, 19);
buffer_write(buffer, buffer_s32, global.gametime);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 19);
buffer_write(buffer, buffer_s32, global.gametime);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
}
@ -2592,6 +2794,11 @@ if(room == titleroom){
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_u8, 254);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 254);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
}

@ -9,9 +9,6 @@ if (mystr != "0") {
wallD = string_char_at(mystr, 3);
wallL = string_char_at(mystr, 4);
color = string_char_at(mystr, 5);
//This line seems to change the underlying map color when the 8-bit shader is active
//It causes the 8-bit shader to miscolor map blocks; commented out
//if (oControl.shader_on == true) color = "2";
special = string_char_at(mystr, 6);
corner = string_char_at(mystr, 7);
draw_mapblock(x, y, wallU, wallR, wallD, wallL, color, special, global.dmap[argument0, argument1], corner);

@ -0,0 +1,11 @@
/// reset_dmap
i = 0;
repeat (80) {
j = 0;
repeat (80) {
global.dmap[i, j] = 0;
global.dmapPrev[i, j] = 0;
j += 1;
}
i += 1;
}

@ -8,5 +8,11 @@ buffer_seek(seedBuffer, buffer_seek_start, 0);
buffer_write(seedBuffer, buffer_u8, 3);
buffer_write(seedBuffer, buffer_f64, oControl.seed);
buffer_write(seedBuffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(seedBuffer, buffer_u8, 3);
buffer_write(seedBuffer, buffer_f64, oControl.seed);
buffer_write(seedBuffer, buffer_u8, global.clientID);
var result = network_send_packet(oClient.socket, seedBuffer, buffer_tell(seedBuffer));
popup_text("Seed sent");

@ -594,6 +594,15 @@ switch(argument0){
buffer_write(buffer, buffer_u8, global.smissiles);
buffer_write(buffer, buffer_u8, global.pbombs);
buffer_write(buffer, buffer_u8, global.clientID);
var bufferSize = buffer_tell(buffer);
buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_s32, bufferSize);
buffer_write(buffer, buffer_u8, 102);
buffer_write(buffer, buffer_s16, global.playerhealth);
buffer_write(buffer, buffer_s16, global.missiles);
buffer_write(buffer, buffer_u8, global.smissiles);
buffer_write(buffer, buffer_u8, global.pbombs);
buffer_write(buffer, buffer_u8, global.clientID);
var result = network_send_packet(socket, buffer, buffer_tell(buffer));
}
} else {

Loading…
Cancel
Save