· 6 years ago · Sep 08, 2019, 11:18 PM
1QStable = {}
2PendingQS = {}
3database = dbConnect("sqlite", "support.db")
4dbExec(database, "CREATE TABLE IF NOT EXISTS support ( `qs` TEXT, `answer` TEXT)")
5
6function asking(player, command, ...)
7 local question = {...}
8 local matching = false
9 local QSscore = {}
10 for i,v in ipairs(QStable) do
11 QSscore[#QSscore + 1] = {0, v[2], v[1]}
12 for k,l in ipairs(question) do
13 matching = string.match(v[1], l)
14 if (matching ~= nil) then
15 QSscore[#QSscore][1] = QSscore[#QSscore][1] + 1
16 end
17 end
18 end
19 table.sort(QSscore, function(a,b) return a[1]>b[1] end)
20 outputChatBox("Top 3 answers: ", player)
21 for i = 1,3 do
22 outputChatBox(QSscore[i][2] .." - Related QS:"..QSscore[i][3] , player)
23 end
24 triggerClientEvent(player, "onClientAsk", player, table.concat( question, " "), QSscore[1][2])
25end
26addCommandHandler("ask", asking)
27
28function updateQStable(Q, A)
29 QStable[#QStable + 1] = {}
30 QStable[#QStable][1] = Q
31 QStable[#QStable][2] = A
32 dbExec(database ,"INSERT INTO support (qs,answer) VALUES (?,?)", Q, A)
33end
34addEvent("addData", true)
35addEventHandler("addData", root, updateQStable)
36
37function starting()
38 qh = dbQuery(database, "SELECT * FROM support")
39 result = dbPoll(qh, -1)
40 for i,v in ipairs(result) do
41 QStable[#QStable + 1] = {}
42 QStable[#QStable][1] = v["qs"]
43 QStable[#QStable][2] = v["answer"]
44 end
45end
46addEventHandler("onResourceStart", resourceRoot, starting)
47
48function supporter(Q, A)
49 PendingQS[#PendingQS + 1] = Q
50 notifySupporters(Q)
51end
52addEvent("Unsatisfied", true)
53addEventHandler("Unsatisfied", root, supporter)
54
55function notifySupporters()
56 for i,v in ipairs(getElementsByType("player")) do
57 outputChatBox(getPlayerName(client).. " has asked a question.", v)
58 end
59end
60
61function management(player)
62 triggerClientEvent(player, "onQSManage", player, PendingQS)
63end
64addCommandHandler("qsm", management)