2015-10-03 15:36:16 +13:00

79 lines
2.5 KiB
Lua

PKT_PORTALGUN_SET = network.sys_alloc_packet()
DIR_PORTALGUN = "pkg/gm/portalgun/"
WPN_PORTALGUN = weapon_add(DIR_PORTALGUN.."/gun_portal.lua")
weapons_enabled[WPN_PORTALGUN] = true
network.sys_handle_c2s(PKT_PORTALGUN_SET, "BBhhhbbbbbb", nwdec_plrset(
function (neth, cli, plr, sec_current, pid,
portal_select, cx, cy, cz, dx, dy, dz, sx, sy, sz)
print("RECEIVED")
if not (plr and plr.has_permission("build")) then return end
print("Got player")
if portal_select ~= 1 and portal_select ~= 2 then return end
print("Got valid portal")
local xlen,ylen,zlen
xlen,ylen,zlen = common.map_get_dims()
if not (cx >= 0 and cx < xlen and cz >= 0 and cz < zlen and cy >= 0 and cy < ylen) then return end
print("Got valid coords")
if dx == 0 and dy == 0 and dz == 0 then
print("SERVER DELETE PORTAL "..portal_select)
plr.portal_list[portal_select] = nil
net_broadcast(neth, common.net_pack("BBBhhhbbbbbb",
PKT_PORTALGUN_SET, cli.plrid, portal_select,
cx, cy, cz, dx, dy, dz, sx, sy, sz))
else
print("SERVER CREATE PORTAL "..portal_select.." AT ("..cx..", "..cy..", "..cz..")")
plr.portal_list[portal_select] = {cx, cy, cz, dx, dy, dz, sx, sy, sz}
net_broadcast(neth, common.net_pack("BBBhhhbbbbbb",
PKT_PORTALGUN_SET, cli.plrid, portal_select,
cx, cy, cz, dx, dy, dz, sx, sy, sz))
end
end))
network.sys_handle_s2c(PKT_PORTALGUN_SET, "BBhhhbbbbbb",
function (neth, cli, plr, sec_current, pid,
portal_select, cx, cy, cz, dx, dy, dz, sx, sy, sz)
print("CLIENT RECEIVED", pid)
local plr = players[pid]
if not plr then return end
print("Got player")
if portal_select ~= 1 and portal_select ~= 2 then return end
print("Got valid portal")
local xlen,ylen,zlen
xlen,ylen,zlen = common.map_get_dims()
if not (cx >= 0 and cx < xlen and cz >= 0 and cz < zlen and cy >= 0 and cy < ylen) then return end
print("Got valid coords")
if dx == 0 and dy == 0 and dz == 0 then
print("CLIENT DELETE PORTAL "..pid..":"..portal_select)
plr.portal_list[portal_select] = nil
if plr.portal_list[3-portal_select] then
plr.portal_list[3-portal_select].va = nil
end
else
print("CLIENT CREATE PORTAL "..pid..":"..portal_select.." AT ("..cx..", "..cy..", "..cz..")")
plr.portal_list[portal_select] = {cx, cy, cz, dx, dy, dz, sx, sy, sz}
if plr.portal_list[3-portal_select] then
plr.portal_list[3-portal_select].va = nil
end
end
end)
if server then
-- TODO more elegant method
local s_slot_add = slot_add
function slot_add(neth, tidx, wpn, name, ...)
wpn = WPN_PORTALGUN
return s_slot_add(neth, tidx, wpn, name, ...)
end
end