Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- gmod = gmod or {}
- gmod.Ip = "88.191.111.120"
- gmod.ServerPort = 27005
- gmod.ClientPort = 5556
- gmod.Hooks = gmod.Hooks or {}
- function gmod.Hook(tag, callback)
- gmod.Hooks[tag] = callback
- end
- local function decode(str)
- local args = sigh.Decode(str)
- local id = args[1]
- table.remove(args, 1)
- return id, args
- end
- local function encode(id, ...)
- return sigh.Encode(id, ...)
- end
- function gmod.Send(id, ...)
- local str = encode(id, ...)
- gmod.RawSend(str)
- end
- function gmod.ReceiveFromGmod(str)
- local id, args = decode(str)
- if gmod.Hooks[id] then
- gmod.Hooks[id](unpack(args))
- end
- end
- hook.Add("GmodMessage", "gmod", gmod.ReceiveFromGmod, print)
- -- socket specific code
- function gmod.RawSend(str)
- if gmod_client then
- gmod_client:close()
- end
- gmod_client = socket.connect(gmod.Ip, gmod.ClientPort)
- gmod_client:settimeout(0)
- gmod_client:send(str)
- end
- function gmod.StartServer()
- if gmod_server then
- gmod_server:close()
- end
- gmod_server = assert(luasocket.socket.bind("*", gmod.ServerPort))
- gmod_server:settimeout(0)
- timer.Create("gmod_server", 0, 0, function()
- local client = gmod_server:accept()
- if client then
- client:settimeout(0)
- local tries = 0
- timer.Create("gmod_server_send", 0, 0, function()
- local str, err = client:receive()
- if str then
- hook.Call("GmodMessage", str)
- tries = math.huge
- elseif err ~= "timeout" then
- print(err)
- end
- if tries > 20 then
- client:close()
- timer.Remove("gmod_server_send")
- end
- tries = tries + 1
- end)
- end
- end)
- end
- gmod.StartServer()
- gmod.Hook("hello", function(...)
- print(...)
- end)
- gmod.Send("hello", "hello from oohh!")
- --
- gmod.Hook("l", function(str)
- easylua.RunString(entities.GetLocalPlayer(), str)
- end)
- hook.Add("ConsolePrint",1,function(str)
- gmod.Send("console", str)
- end)
Advertisement
Add Comment
Please, Sign In to add comment