79 lines
2.5 KiB
Lua
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
|
|
|