68 lines
1.6 KiB
Lua
68 lines
1.6 KiB
Lua
local Question = {}
|
|
local Questions = {}
|
|
|
|
local function ccDoQuestion(ply, cmd, args)
|
|
local q = Questions[args[1]]
|
|
if not q then return end
|
|
if not tonumber(args[2]) then return end
|
|
if q.Ent and q.Ent ~= ply then return end
|
|
|
|
q:handleNewQuestion(tonumber(args[2]))
|
|
end
|
|
concommand.Add("ans", ccDoQuestion)
|
|
|
|
local function handleQuestionEnd(id)
|
|
if not Questions[id] then return end
|
|
local q = Questions[id]
|
|
q.Callback(q.yn, q.Ent, q.Initiator, q.Target, unpack(q.Args))
|
|
Questions[id] = nil
|
|
end
|
|
|
|
function Question:handleNewQuestion(response)
|
|
if response == 1 or response == 0 then
|
|
self.yn = tobool(response)
|
|
end
|
|
|
|
handleQuestionEnd(self.ID)
|
|
end
|
|
|
|
function DarkRP.createQuestion(question, quesid, ent, delay, callback, fromPly, toPly, ...)
|
|
local newques = {}
|
|
for k, v in pairs(Question) do newques[k] = v end
|
|
|
|
newques.ID = quesid
|
|
newques.Callback = callback
|
|
newques.Ent = ent
|
|
newques.Initiator = fromPly
|
|
newques.Target = toPly
|
|
newques.Args = {...}
|
|
|
|
newques.yn = 0
|
|
|
|
Questions[quesid] = newques
|
|
|
|
umsg.Start("DoQuestion", ent)
|
|
umsg.String(question)
|
|
umsg.String(quesid)
|
|
umsg.Float(delay)
|
|
umsg.End()
|
|
|
|
timer.Create(quesid .. "timer", delay, 1, function() handleQuestionEnd(quesid) end)
|
|
end
|
|
|
|
function DarkRP.destroyQuestion(id)
|
|
umsg.Start("KillQuestionVGUI", Questions[id].Ent)
|
|
umsg.String(Questions[id].ID)
|
|
umsg.End()
|
|
|
|
Questions[id] = nil
|
|
end
|
|
|
|
function DarkRP.destroyQuestionsWithEnt(ent)
|
|
for _, v in pairs(Questions) do
|
|
if v.Ent == ent then
|
|
DarkRP.destroyQuestion(v.ID)
|
|
end
|
|
end
|
|
end
|