Compare commits
5 Commits
12ca9aca54
...
ghost
Author | SHA1 | Date | |
---|---|---|---|
adbdbb8c03 | |||
e833227b64 | |||
ef620772d9 | |||
46f787f543 | |||
d0e3698ee4 |
36
ghost.lua
36
ghost.lua
@ -123,9 +123,16 @@ Ghosts = {
|
||||
this:reset()
|
||||
|
||||
local headers = Index:getMap(gamemap, mapChecksum(gamemap))
|
||||
local data
|
||||
local ok, data
|
||||
for _, header in ipairs(headers) do
|
||||
data = Ghost.read(header, Ghost.tableReader)
|
||||
ok, data = pcall(Ghost.read, header, Ghost.tableReader)
|
||||
if not ok then
|
||||
print(data)
|
||||
print("\x85\ERROR:\x80 invalid ghost data, removing entry")
|
||||
Index:remove(header)
|
||||
Index:write()
|
||||
continue
|
||||
end
|
||||
this:set(header, data)
|
||||
end
|
||||
end,
|
||||
@ -197,7 +204,7 @@ CV_RegisterVar({
|
||||
name = "lb_ghost_trans_prox",
|
||||
defaultvalue = 150,
|
||||
flags = CV_CALL,
|
||||
PossibleValue = CV_NATURAL,
|
||||
PossibleValue = CV_Natural,
|
||||
func = function(cv)
|
||||
transProximity = cv.value
|
||||
end
|
||||
@ -406,6 +413,10 @@ Server = {
|
||||
|
||||
transmitters = {},
|
||||
callback = function(cmd, handle)
|
||||
if handle.transmitters[cmd] then
|
||||
return
|
||||
end
|
||||
|
||||
local mapindex = Index:getMap(gamemap, mapChecksum(gamemap))
|
||||
local header = assert(mapindex[tonumber(cmd)])
|
||||
local data = Ghost.read(header, Ghost.stringReader)
|
||||
@ -579,7 +590,7 @@ local function open(filename, mode, fn)
|
||||
f:close()
|
||||
|
||||
if not ok then
|
||||
err = string.format("%s\n(%s (%s))", err, filename, mode)
|
||||
err = string.format("%s\n(\x82%s\x80 (%s))", err, filename, mode)
|
||||
end
|
||||
|
||||
return ok, err
|
||||
@ -602,6 +613,17 @@ Index = {
|
||||
this:setMap(header.map, header.checksum, map)
|
||||
end,
|
||||
|
||||
remove = function(this, header)
|
||||
local map = this:getMap(header.map, header.checksum)
|
||||
for i, h in ipairs(map) do
|
||||
if h.player == header.player then
|
||||
map[i] = nil
|
||||
this:setMap(header.map, header.checksum, map)
|
||||
return
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
find = function(this, header)
|
||||
local index = this:getMap(header.map, header.checksum)
|
||||
for i, h in ipairs(index) do
|
||||
@ -645,10 +667,10 @@ Index = {
|
||||
map = c:next(),
|
||||
checksum = c:next(),
|
||||
player = c:next(),
|
||||
time = c:next(),
|
||||
flags = c:next(),
|
||||
time = tonumber(c:next()),
|
||||
flags = tonumber(c:next()),
|
||||
skin = c:next(),
|
||||
color = c:next()
|
||||
color = tonumber(c:next())
|
||||
}
|
||||
end,
|
||||
|
||||
|
@ -90,7 +90,7 @@ end
|
||||
rawset(_G, "lb_transmitter", Transmitter)
|
||||
|
||||
addHook("ThinkFrame", function()
|
||||
if not #transmitters then return end
|
||||
if not (#transmitters and leveltime) then return end
|
||||
|
||||
local index = (leveltime % #transmitters) + 1
|
||||
local transmitter = transmitters[index]
|
||||
|
Reference in New Issue
Block a user