Madiwka 4 роки тому
коміт
6c06952290
2 змінених файлів з 111 додано та 0 видалено
  1. +8
    -0
      README.md
  2. +103
    -0
      server.lua

+ 8
- 0
README.md Переглянути файл

@@ -0,0 +1,8 @@
# NuclearServer
A server lua script for NuclearPong.

# Usage
Just launch it with Lua. Requires lua and lua-socket.
```
lua server.lua
```

+ 103
- 0
server.lua Переглянути файл

@@ -0,0 +1,103 @@
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
local requesterip
local requresterport
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

if data == "HELLO" then
requesterip = msg_or_ip
requesterport = port_or_nil
else
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

end
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
if requesterip then
print("getting pnged!")
if player1ip == "none" then
udp:sendto("nettest",requesterip, requesterport)
print("nettest av to: " .. requesterip)
elseif player2ip == "none" then
udp:sendto("clienttest", requesterip, requesterport)
print("clienttest av to: " .. requesterip)
else
udp:sendto("full", requesterip, requesterport)
print("full to: " .. msg_or_ip)
end
requesterip, requesterport = nil
end
socket.sleep(0.015)

end

Завантаження…
Відмінити
Зберегти