Files
2026-03-15 14:54:49 +03:00

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