Initial commit
This commit is contained in:
67
gamemodes/darkrp/gamemode/modules/voting/sv_questions.lua
Normal file
67
gamemodes/darkrp/gamemode/modules/voting/sv_questions.lua
Normal file
@@ -0,0 +1,67 @@
|
||||
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
|
||||
Reference in New Issue
Block a user