local running = true local socket = require 'socket' local udp = socket.udp() local player1ip, player2ip, player1port, player2port = "none", "none", nil, nil udp:settimeout(0) udp:setsockname('*', 12345) local p1ping = 0 local p2ping = 0 while running do local data, msg_or_ip, port_or_nil local p1data, p2data repeat data, msg_or_ip, port_or_nil = udp:receivefrom() if data then print(string.sub(data,1,1) .. "Playerlist: " .. player1ip .. " " .. player2ip) if (player1ip == msg_or_ip) then p1ping = 0 p1data = data elseif player2ip == msg_or_ip then p2data = data p2ping = 0 else if (player1ip == "none") then player1ip = msg_or_ip p1data = data p1ping = 0 player1port = port_or_nil print("CONNECTED: PLAYER 1 FROM: " .. player1ip) elseif player2ip == "none" and msg_or_ip ~= player1ip then player2ip = msg_or_ip p2data = data p2ping = 0 player2port = port_or_nil print("CONNECTED: PLAYER 2 FROM: " .. player2ip) elseif (player1ip ~= msg_or_ip and player2ip ~= msg_or_ip) then print("Lobby Full!" .. player1ip .. player2ip) end end else end until not data if player1ip ~= "none" then p1ping = p1ping + 1 if p1ping > 100 then if p2data then udp:sendto(p2data .. '|' .. p1ping, player1ip, player1port) end print("PLAYER 1 DISCONNECTED") p1data = nil player1ip = "none" player1port = nil end end if player2ip ~= "none" then p2ping = p2ping + 1 if p2ping > 100 then if p1data then udp:sendto(p1data .. '|' .. p2ping, player2ip, player2port) end print("PLAYER 2 DISCONNECTED") p2data = nil player2ip = "none" player2port = nil end end if p1data and player2port then udp:sendto(p1data .. '|' .. p2ping, player2ip, player2port) print("SENT TO " .. player2ip .. ":" .. player2port .. " : " .. string.sub(p1data,1,1)) end if p2data and player1port then udp:sendto(p2data .. '|' .. p1ping, player1ip, player1port) print("SENT TO " .. player1ip .. ":" .. player1port .. " : " .. string.sub(p2data,1,1)) --print("1::" .. p1data) --print("2::" .. p2data) --print("SENT1: " .. player2ip .. " " .. player2port .. " " .. p1data) --print("SENT2: " .. player1ip .. " " .. player1port .. " " .. p2data) end socket.sleep(0.015) end