Advertisement
YellowAfterlife

GameMaker: Studio and land of network_ oddities.

Apr 23rd, 2014
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /// Client connecting:
  2. socket = network_create_socket(network_socket_tcp)
  3. data = buffer_create(1024, buffer_fixed, 1)
  4. if (network_connect(socket, "127.0.0.1", 7800) >= 0) {
  5.     state = 2
  6.     subst = 1
  7.     buffer_write(data, buffer_u32, game_id & $ffffffff)
  8.     network_send_packet(socket, data, buffer_tell(data))
  9.     text += "Request (" + string(buffer_tell(data)) + ") sent.#"
  10. } else text += "Failed to connect."
  11. /// Client network event:
  12. switch (ds_map_find_value(async_load, "type")) {
  13. case network_type_data:
  14.     var b = ds_map_find_value(async_load, "buffer"),
  15.         n = ds_map_find_value(async_load, "size");
  16.     text += "Response: [" + string(n) + "] "
  17.         + buffer_hex(b, n) + "#";
  18.     break
  19. }
  20.  
  21. /// Server startup:
  22. listener = network_create_server(network_socket_tcp, 7800, 1)
  23. if (listener >= 0) {
  24.     text += "Up on port 7800.#"
  25. } else text += "Failed to host.#"
  26. /// Server network event:
  27. switch (ds_map_find_value(async_load, "type")) {
  28. case network_type_data:
  29.     var b = ds_map_find_value(async_load, "buffer"),
  30.         n = ds_map_find_value(async_load, "size");
  31.     text += "[" + string(n) + "] "
  32.         + buffer_hex(b, n) + "#";
  33.     text += "Matches: " + string(buffer_read(b, buffer_u32) == game_id) + "#"
  34.     buffer_seek(data, buffer_seek_start, 0)
  35.     buffer_write(data, buffer_u8, $D0)
  36.     text += "Reply (" + string(buffer_tell(data)) + ") sent.#"
  37.     network_send_packet(socket, data, buffer_tell(data))
  38.     break
  39. case network_type_connect: // client joined
  40.     socket = ds_map_find_value(async_load, "socket")
  41.     text += "Client connected.#"
  42.     break
  43. case network_type_disconnect:
  44.     break
  45. }
  46.  
  47. /// Drawing (same for client and server):
  48. draw_set_font(fnt_test)
  49. draw_text(x, y, text)
  50.  
  51. /// buffer_hex(buffer, length):
  52. var o = argument0, q = buffer_tell(o), r = "", d, v;
  53. repeat (argument1) {
  54.     v = buffer_read(o, buffer_u8)
  55.     d = v >> 4
  56.     if (d < 10) r += chr(48 + d) else r += chr(55 + d)
  57.     d = v & 15
  58.     if (d < 10) r += chr(48 + d) else r += chr(55 + d)
  59.     r += " "
  60. }
  61. buffer_seek(o, buffer_seek_start, q)
  62. return r
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement