хелпа с скриптом

kereewka

Участник
Автор темы
67
25
Описание: Пропинговка SA:MP сервера
Lua:

local socket = require("socket")
local bit32 = require("bit")

function ping(ip, port)
local data
local commonPattern = generateCommonPattern(ip, port)
local udp = socket.udp()
udp:settimeout(3)
udp:setsockname("*", 0)
--
udp:sendto(commonPattern .. "i", ip, port)
data = udp:receive() -- optional
print(data) -- optional
--
udp:sendto(commonPattern .. "p" .. "aaaa", ip, port)
data = udp:receive() -- optional
print(data) -- optional
--
udp:sendto(commonPattern .. "c", ip, port)
data = udp:receive() -- optional
print(data) -- optional
--
udp:sendto(commonPattern .. "r", ip, port)
data = udp:receive() -- optional
print(data) -- optional
--
udp:close()
end

function generateCommonPattern(ip, port)
local separatedIp = explode(".", ip)
local firstPortByte = bit32.band(port, 0xFF)
local secondPortByte = bit32.band(bit32.rshift(port, 8), 0xFF)
return "SAMP" ..
string.char(separatedIp[1]) ..
string.char(separatedIp[2]) ..
string.char(separatedIp[3]) ..
string.char(separatedIp[4]) ..
string.char(firstPortByte) .. string.char(secondPortByte)
end

function explode(div, str)
if (div == "") then
return false
end
local pos, arr = 0, {}
for st, sp in function()
return string.find(str, div, pos, true)
end do
table.insert(arr, string.sub(str, pos, st - 1))
pos = sp + 1
end
table.insert(arr, string.sub(str, pos))
return arr
end

Пример использования:
Lua:

local ip, port = sampGetCurrentServerAddress()
ping(ip, port)
Что это такое и как его юзать??