diff --git a/Export_CodeServer/gml_Object_oFreeForAll_Create.gml b/Export_CodeServer/gml_Object_oFreeForAll_Create.gml new file mode 100644 index 0000000..8b026db --- /dev/null +++ b/Export_CodeServer/gml_Object_oFreeForAll_Create.gml @@ -0,0 +1,2 @@ +global.freeForAll = 0 +image_speed = 0 diff --git a/Export_CodeServer/gml_Object_oFreeForAll_Draw.gml b/Export_CodeServer/gml_Object_oFreeForAll_Draw.gml new file mode 100644 index 0000000..2694d1a --- /dev/null +++ b/Export_CodeServer/gml_Object_oFreeForAll_Draw.gml @@ -0,0 +1,4 @@ +draw_self() +draw_set_halign(fa_right) +draw_text((x - sprite_width), (y - 12), "Toggle FFA") +draw_set_halign(fa_left) diff --git a/Export_CodeServer/gml_Object_oFreeForAll_MouseLeft.gml b/Export_CodeServer/gml_Object_oFreeForAll_MouseLeft.gml new file mode 100644 index 0000000..c09dc53 --- /dev/null +++ b/Export_CodeServer/gml_Object_oFreeForAll_MouseLeft.gml @@ -0,0 +1,9 @@ +global.freeForAll = (!global.freeForAll) +if global.freeForAll +{ + global.itemSync = 0 + global.itemToggleSync = 0 + global.healthSync = 0 + global.ammoSync = 0 + global.mapSync = 0 +} diff --git a/Export_CodeServer/gml_Object_oFreeForAll_Step.gml b/Export_CodeServer/gml_Object_oFreeForAll_Step.gml new file mode 100644 index 0000000..b9e5edb --- /dev/null +++ b/Export_CodeServer/gml_Object_oFreeForAll_Step.gml @@ -0,0 +1,4 @@ +if global.freeForAll + image_index = 0 +else + image_index = 1 diff --git a/Export_CodeServer/gml_Object_oServer_Alarm_11.gml b/Export_CodeServer/gml_Object_oServer_Alarm_11.gml index 42c05b2..1beeb87 100644 --- a/Export_CodeServer/gml_Object_oServer_Alarm_11.gml +++ b/Export_CodeServer/gml_Object_oServer_Alarm_11.gml @@ -15,6 +15,7 @@ buffer_write(buffer, buffer_u8, global.lobbyLocked) buffer_write(buffer, buffer_u8, samCount) buffer_write(buffer, buffer_string, string(global.damageMult)) buffer_write(buffer, buffer_u8, global.experimental) +buffer_write(buffer, buffer_u8, global.freeForAll) bufferSize = buffer_tell(buffer) buffer_seek(buffer, buffer_seek_start, 0) buffer_write(buffer, buffer_s32, bufferSize) @@ -24,6 +25,7 @@ buffer_write(buffer, buffer_u8, global.lobbyLocked) buffer_write(buffer, buffer_u8, samCount) buffer_write(buffer, buffer_string, string(global.damageMult)) buffer_write(buffer, buffer_u8, global.experimental) +buffer_write(buffer, buffer_u8, global.freeForAll) for (i = 0; i < sockets; i++) network_send_packet(ds_list_find_value(playerList, i), buffer, buffer_tell(buffer)) alarm[11] = 30 diff --git a/Export_CodeServer/gml_Object_oServer_Create_0.gml b/Export_CodeServer/gml_Object_oServer_Create_0.gml index d611229..5bc9f86 100644 --- a/Export_CodeServer/gml_Object_oServer_Create_0.gml +++ b/Export_CodeServer/gml_Object_oServer_Create_0.gml @@ -79,3 +79,6 @@ global.lobbyLocked = 0 global.damageMult = 0 global.clientVersion = "V1.9.3" global.experimental = 0 +global.freeForAll = 0 +global.totalItemCount = 0 +global.FFAItemCounter[0] = 0 diff --git a/Export_CodeServer/gml_Object_oServer_Other_68.gml b/Export_CodeServer/gml_Object_oServer_Other_68.gml index a3f369f..5e98761 100644 --- a/Export_CodeServer/gml_Object_oServer_Other_68.gml +++ b/Export_CodeServer/gml_Object_oServer_Other_68.gml @@ -842,11 +842,76 @@ switch type_event network_send_packet(tempSocket, buffer, buffer_tell(buffer)) } else - { g++ - continue + } + ds_grid_read(vars, strict_decompress(buffer_read(_buffer, buffer_string))) + clientID = buffer_read(_buffer, buffer_u8) + packetID = buffer_read(_buffer, buffer_u32) + buffer_delete(buffer) + 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, 1) + buffer_write(buffer, buffer_string, strict_compress(ds_grid_write(vars))) + buffer_write(buffer, buffer_u8, clientID) + buffer_write(buffer, buffer_u32, packetID) + 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, strict_compress(ds_grid_write(vars))) + buffer_write(buffer, buffer_u8, clientID) + buffer_write(buffer, buffer_u32, packetID) + sockets = ds_list_size(playerList) + for (i = 0; i < sockets; i++) + { + if (ds_list_find_value(playerList, i) != socket) + { + if (global.itemSync && global.itemToggleSync) + { + for (i = 0; i < sockets; i++) + { + for (f = 0; f < ds_list_size(idList); f++) + { + arr = ds_list_find_value(idList, f) + arrID = arr[0, 0] + arrSocket = arr[0, 1] + if (arrSocket == ds_list_find_value(playerList, i)) + { + findID = ds_list_find_index(samusList, arrID) + if (findID >= 0 && team == 1) + network_send_packet(ds_list_find_value(playerList, i), buffer, buffer_tell(buffer)) + findID = ds_list_find_index(saxList, arrID) + if (findID >= 0 && team == 2) + network_send_packet(ds_list_find_value(playerList, i), buffer, buffer_tell(buffer)) + } + } + } + } + } + else + { + size = 1024 + type = buffer_grow + alignment = 1 + socketBuffer = buffer_create(size, type, alignment) + buffer_seek(socketBuffer, buffer_seek_start, 0) + buffer_write(socketBuffer, buffer_u8, 2) + buffer_write(socketBuffer, buffer_string, strict_compress(ds_grid_write(vars))) + buffer_write(socketBuffer, buffer_u8, clientID) + bufferSize = buffer_tell(socketBuffer) + buffer_seek(socketBuffer, buffer_seek_start, 0) + buffer_write(socketBuffer, buffer_s32, bufferSize) + buffer_write(socketBuffer, buffer_u8, 2) + buffer_write(socketBuffer, buffer_string, strict_compress(ds_grid_write(vars))) + buffer_write(socketBuffer, buffer_u8, clientID) + network_send_packet(ds_list_find_value(playerList, i), socketBuffer, buffer_tell(socketBuffer)) + buffer_delete(socketBuffer) } } + break } else break @@ -1303,6 +1368,7 @@ switch type_event item = ds_list_create() ds_list_read(item, strict_decompress(buffer_read(_buffer, buffer_string))) clientID = buffer_read(_buffer, buffer_u8) + global.FFAItemCounter[clientID] = buffer_read(_buffer, buffer_u8) sockets = ds_list_size(playerList) itemArr = ds_list_find_value(item, 0) for (v = 0; v < sockets; v++) diff --git a/Export_CodeServer/gml_Script_check_items.gml b/Export_CodeServer/gml_Script_check_items.gml index 8cfeb86..3dfcc72 100644 --- a/Export_CodeServer/gml_Script_check_items.gml +++ b/Export_CodeServer/gml_Script_check_items.gml @@ -1,5 +1,8 @@ var etankCount, i, stankCount, ptankCount, mtankCount, itemCount, h, val, sval; etankCount = 0 +global.totalItemCount = 0 +for (i = 0; i < array_length_1d(global.FFAItemCounter); i++) + global.totalItemCount += global.FFAItemCounter[i] for (i = 0; i < array_length_1d(global.itemSamus); i++) { if (i == 50 || i == 103 || i == 108 || i == 157 || i == 158 || i == 200 || i == 201 || i == 251 || i == 254 || i == 306) @@ -57,6 +60,8 @@ itemCount = (itemCount / 2) global.damageMult = ((itemCount / 88) * 3) if global.experimental global.damageMult = ((itemCount / 88) * 5) +if global.freeForAll + global.damageMult = (((global.totalItemCount / ds_list_size(playerList)) / 88) * 3) etankCount = 0 for (i = 0; i < array_length_1d(global.itemSAX); i++) { diff --git a/Export_ObjectServer/oFreeForAll.json b/Export_ObjectServer/oFreeForAll.json new file mode 100644 index 0000000..b54e30c --- /dev/null +++ b/Export_ObjectServer/oFreeForAll.json @@ -0,0 +1,123 @@ +{ + "name": "oFreeForAll", + "sprite": "sOption", + "visible": true, + "solid": false, + "depth": 0, + "persistent": false, + "parent_id": null, + "texture_mask_id": null, + "uses_physics": false, + "is_sensor": false, + "collision_shape": 0, + "density": 0.5, + "restitution": 0.1, + "group": 0, + "linear_damping": 0.1, + "angular_damping": 0.1, + "friction": 0.2, + "awake": true, + "kinematic": false, + "physics_vertices": [], + "events": [ + [ + { + "event_subtype": 0, + "actions": [ + { + "lib_id": 0, + "id": 0, + "kind": 0, + "use_relative": false, + "is_question": false, + "use_apply_to": false, + "exe_type": 0, + "action_name": null, + "code_id": "gml_Object_oFreeForAll_Create", + "argument_count": 0, + "who": 0, + "relative": false, + "is_not": false + } + ] + } + ], + [], + [], + [ + { + "event_subtype": 0, + "actions": [ + { + "lib_id": 0, + "id": 0, + "kind": 0, + "use_relative": false, + "is_question": false, + "use_apply_to": false, + "exe_type": 0, + "action_name": null, + "code_id": "gml_Object_oFreeForAll_Step", + "argument_count": 0, + "who": 0, + "relative": false, + "is_not": false + } + ] + } + ], + [], + [], + [ + { + "event_subtype": 4, + "actions": [ + { + "lib_id": 0, + "id": 0, + "kind": 0, + "use_relative": false, + "is_question": false, + "use_apply_to": false, + "exe_type": 0, + "action_name": null, + "code_id": "gml_Object_oFreeForAll_MouseLeft", + "argument_count": 0, + "who": 0, + "relative": false, + "is_not": false + } + ] + } + ], + [], + [ + { + "event_subtype": 0, + "actions": [ + { + "lib_id": 0, + "id": 0, + "kind": 0, + "use_relative": false, + "is_question": false, + "use_apply_to": false, + "exe_type": 0, + "action_name": null, + "code_id": "gml_Object_oFreeForAll_Draw", + "argument_count": 0, + "who": 0, + "relative": false, + "is_not": false + } + ] + } + ], + [], + [], + [], + [], + [], + [] + ] +} \ No newline at end of file diff --git a/Export_RoomServer/room0.json b/Export_RoomServer/room0.json index f07c357..17b627a 100644 --- a/Export_RoomServer/room0.json +++ b/Export_RoomServer/room0.json @@ -653,6 +653,20 @@ "pre_create_code": null, "image_speed": 0, "image_index": 0 + }, + { + "x": 1248, + "y": 704, + "object_definition": "oFreeForAll", + "instance_id": 100030, + "creation_code": null, + "scale_x": 1, + "scale_y": 1, + "color": 4294967295, + "rotation": 0, + "pre_create_code": null, + "image_speed": 0, + "image_index": 0 } ], "tiles": [],