Привет! У меня есть вопрос. Я хотел сделать локальное голосование для двух игроков в своей системе, но почему-то не получается — у меня answer всегда приравнивается к nil, хотя я всё делал так, как написано на сайте DarkRP Wiki.
Вот код:
local function ShowTestw(answer, ply, target)
if answer then
net.Start("OpenMenu")
net.WriteEntity(ply)
net.Send(target)
else
print("no")
end
end
DarkRP.createVote(question, "testw" .. ply:SteamID64(), target, 35, ShowTestw(answer, ply, target))
local function ShowTestw(answer)
if tobool(answer) then
net.Start("OpenMenu")
net.WriteEntity(ply)
net.Send(target)
else
print("no")
end
end
local exclude = {}
for _, v in player.Iterator() do
if v == ply or v == target then continue end
exclude[v] = true
end
DarkRP.createVote(question, "testw" .. ply:SteamID64(), target, 35, ShowTestw, exclude)
я делал голосование для категорий профессий для аддона job employer. можешь попробовать из этого сделать своё для игроков
net.Receive("ENPC.ChangeJobNPC", function(len, ply)
local job_id = net.ReadInt(16)
local skin_ = net.ReadInt(16)
local requestedJobTable = RPExtraTeams[job_id]
local currentJobTable = ply:getJobTable()
if requestedJobTable and requestedJobTable.team == TEAM_HECU9 then
if currentJobTable and isstring(currentJobTable.category) and currentJobTable.category == "Повстанцы" then
DarkRP.createVote(
ply:Nick() .. " хочет стать Лидер сопротивления.",
"vote_resistance_leader",
ply,
30,
function(voteResult)
if voteResult then
ply:changeTeam(TEAM_HECU9, true)
DarkRP.notifyAll(0, 0, ply:Nick() .. " стал Лидером сопротивления!")
else
DarkRP.notify(ply, 1, 4, "Голосование провалено. Вы не стали Лидером сопротивления.")
end
end
)
DarkRP.notify(ply, 0, 4, "Вы инициировали голосование за Лидера сопротивления.")
return
else
DarkRP.notify(ply, 1, 4, "Только 'Повстанцы' могут инициировать голосование за Лидера сопротивления!")
return
end
end
local result, msg = hook.Call("ENPC.playerCanChangeTeam", nil, ply, job_id)
if result then
ply:changeTeam(job_id, true)
timer.Simple(0.1, function() ply:SetSkin(skin_) end)
elseif msg then
DarkRP.notify(ply, 1, 4, msg)
end
end)
hook.Add("canPlayerVote", "RestrictResistanceLeaderVote", function(voter, voteType, voteData)
if voteType == "vote_resistance_leader" then
local voterJobTable = RPExtraTeams[voter:Team()]
return voterJobTable and isstring(voterJobTable.category) and voterJobTable.category == "Повстанцы"
end
return true
end)
Желательно протестить с игроком, но если сборку появляется увед о начале голосования - то скорее всего оно работает
(Именно увед а не само меню голосования)
Вместо самой функции в качестве callback, вызываешь её сразу.
вызывается тут же, а результат (который nil) передаётся в createVote. Вот почему answer всегда nil