· 7 years ago · Nov 24, 2018, 04:50 PM
1local dbType = "SQLite"; --Here set your database type, "MySQL" or "SQLite" <!>
2local dbName = ""; --Your database name <!>
3local dbHost = ""; --Your hostname/IP <!>
4local dbUser = ""; --Username for database <!>
5local dbPass = ""; --Password for database <!>
6local dbPort = 0; --This is an port exemple CHANGE IT <!>
7
8if (dbType == "MySQL") then
9 db = dbConnect("mysql", "dbname="..dbName..";host="..dbHost..";port="..dbPort, dbUser, dbPass, "share=1");
10 dbExec(db, "CREATE TABLE IF NOT EXISTS rank(nome,conta,kills,deaths,alivetime,level,exp, clan)");
11elseif (dbType == "SQLite") then
12 db = dbConnect("sqlite", "iDB/Ranks.db");
13 dbExec(db, "CREATE TABLE IF NOT EXISTS rank(nome,conta,kills,deaths,kdr,alivetime,level,exp, clan)");
14 dbExec(db, "CREATE TABLE IF NOT EXISTS ranksemanal(nome,conta,kills,deaths,kdr, clan)");
15 dbExec(db, "CREATE TABLE IF NOT EXISTS rankclan(clan,membros,kills,mortes,kdr,level)");
16 dbExec(db, "CREATE TABLE IF NOT EXISTS rankclansemanal(clan,membros,kills,mortes,kdr,level)");
17else return end
18
19function iRankLogin()
20 local account = getPlayerAccount(source)
21 if account then
22 if getElementType(source) == "player" then
23 local Name = getPlayerName(source)
24 local accountName = getAccountName (account)
25 local Totalkills = getElementData(source,"Totalkills") or 0
26 local check = dbPoll(dbQuery(db, "SELECT * FROM rank WHERE conta = ?", accountName), -1)
27 if type(check) == "table" and #check == 0 or not check then
28 dbExec(db, "INSERT INTO rank(nome,conta,kills,deaths,alivetime,level,exp, clan, kdr) VALUES(?,?,?,?,?,?,?,?,?)",
29 Name, accountName,Totalkills,getElementData(source, "deaths3"),getElementData(source,"alivetime"),getElementData(source,"level") or 0,getElementData(source,"experience") or 0,getElementData(source,"Group") or "Nenhum", 0);
30 else
31 for i,res in ipairs (check) do
32 dbExec(db, "UPDATE rank SET nome = ?, kills = ?, alivetime = ?, deaths = ?, level = ?, exp = ?, clan = ?, kdr = ? WHERE conta = ?",
33 Name,Totalkills, getElementData(source,"alivetime"),getElementData(source,"deaths3"),getElementData(source,"level"),getElementData(source,"experience"),getElementData(source,"Group") or "Nenhum", Totalkills/getElementData(source,"deaths3"), accountName)
34 end
35 end
36 end
37 end
38end
39addEventHandler("onPlayerLogin", getRootElement(), iRankLogin)
40
41
42function iRankElements()
43 for index, player in ipairs ( getElementsByType ( "player" ) ) do
44 local account = getPlayerAccount(player)
45 if account then
46 if getElementData(player, "logedin") then
47 if getElementType(player) == "player" then
48 local Name = getPlayerName(player)
49 local accountName = getAccountName (account)
50 local Totalkills = getElementData(player,"Totalkills") or 0
51 local check = dbPoll(dbQuery(db, "SELECT * FROM rank WHERE conta = ?", accountName), -1)
52 if type(check) == "table" and #check == 0 or not check then
53 dbExec(db, "INSERT INTO rank(nome,conta,kills,deaths,alivetime,level,exp, clan, kdr) VALUES(?,?,?,?,?,?,?,?,?)",
54 Name, accountName,Totalkills,getElementData(player, "deaths3"),getElementData(player,"alivetime"),getElementData(player,"level") or 0,getElementData(player,"experience") or 0,getElementData(player,"Group") or "Nenhum", 0);
55 else
56 for i,res in ipairs (check) do
57 dbExec(db, "UPDATE rank SET nome = ?, kills = ?, alivetime = ?, deaths = ?, level = ?, exp = ?, clan = ?, kdr = ? WHERE conta = ?",
58 Name,Totalkills, getElementData(player,"alivetime"),getElementData(player,"deaths3"),getElementData(player,"level"),getElementData(player,"experience"),getElementData(player,"Group") or "Nenhum", Totalkills/getElementData(player,"deaths3"), accountName)
59 end
60 end
61 end
62 end
63 end
64 end
65end
66setTimer(iRankElements,3600000,0)
67
68local iDiasDaSemana = { "Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sabado" }
69function iRankSemanalElements()
70 local time = getRealTime(timestamp)
71 if (iDiasDaSemana[time.weekday+1] == "Segunda-feira" and time.hour == 0 and time.minute == 1 ) then
72 dbExec(db, "UPDATE ranksemanal SET kills = ?,deaths = ?,kdr= ?",0,0,0);
73 dbExec(db, "UPDATE rankclansemanal SET membros = ?,kills = ?,mortes= ? ,kdr = ?,level = ?",0,0,0,0,0);
74 end
75end
76setTimer(iRankSemanalElements,2000,0)
77
78function iMorreuMizeravi(killer, headshot, weapon)
79 if getElementType(source) == "player" or getElementType(killer) == "player" then
80 if getElementData(source, "logedin") or getElementData(killer, "logedin") then
81 local cMorreu = getElementData(source, "Group")
82 local cMatou = getElementData(killer, "Group")
83 local acc1 = getPlayerAccount(source)
84 local acc2 = getPlayerAccount(killer)
85 local accountName1 = getAccountName (acc1)
86 local accountName2 = getAccountName (acc2)
87 local nameMatou = getPlayerName(killer)
88 local nameMorreu = getPlayerName(source)
89 local RCMorreu = dbPoll(dbQuery(db, "SELECT * FROM rankclan WHERE clan = ?", cMorreu), -1)
90 local RCMorreuS = dbPoll(dbQuery(db, "SELECT * FROM rankclansemanal WHERE clan = ?", cMorreu), -1)
91 local RCMatou = dbPoll(dbQuery(db, "SELECT * FROM rankclan WHERE clan = ?", cMatou), -1)
92 local RCMatouS = dbPoll(dbQuery(db, "SELECT * FROM rankclansemanal WHERE clan = ?", cMatou), -1)
93 local RSemanalMatou = dbPoll(dbQuery(db, "SELECT * FROM ranksemanal WHERE conta = ?", accountName2), -1)
94 local RSemanalMorreu = dbPoll(dbQuery(db, "SELECT * FROM ranksemanal WHERE conta = ?", accountName1), -1)
95 for i,re in ipairs (RCMorreu) do
96 dbExec(db, "UPDATE rankclan SET membros = ?, mortes = ? WHERE clan = ?",
97 #exports["group"]:getGroupMembers(cMorreu),re["mortes"]+1, cMorreu)
98 end
99 for i,re in ipairs (RCMorreuS) do
100 dbExec(db, "UPDATE rankclansemanal SET membros = ?, mortes = ? WHERE clan = ?",
101 #exports["group"]:getGroupMembers(cMorreu),re["mortes"]+1, cMorreu)
102 end
103 for i,res in ipairs (RCMorreu) do
104 dbExec(db, "UPDATE rankclan SET kdr = ? WHERE clan = ?",
105 string.format("%.2f", res["kills"]/res["mortes"]), cMorreu)
106 end
107 for i,res in ipairs (RCMorreuS) do
108 dbExec(db, "UPDATE rankclansemanal SET kdr = ? WHERE clan = ?",
109 string.format("%.2f", res["kills"]/res["mortes"]), cMorreu)
110 end
111 for i,re in ipairs (RCMatou) do
112 dbExec(db, "UPDATE rankclan SET membros = ?, kills = ? WHERE clan = ?",
113 #exports["group"]:getGroupMembers(cMatou),re["kills"]+1, cMatou)
114 end
115 for i,re in ipairs (RCMatouS) do
116 dbExec(db, "UPDATE rankclansemanal SET membros = ?, kills = ? WHERE clan = ?",
117 #exports["group"]:getGroupMembers(cMatou),re["kills"]+1, cMatou)
118 end
119 for i,res in ipairs (RCMatou) do
120 dbExec(db, "UPDATE rankclan SET kdr = ? WHERE clan = ?",
121 string.format("%.2f", res["kills"]/res["mortes"]), cMatou)
122 end
123 for i,res in ipairs (RCMatouS) do
124 dbExec(db, "UPDATE rankclansemanal SET kdr = ? WHERE clan = ?",
125 string.format("%.2f", res["kills"]/res["mortes"]), cMatou)
126 end
127 for i,re in ipairs (RSemanalMorreu) do
128 dbExec(db, "UPDATE ranksemanal SET nome = ?,deaths = ? WHERE conta = ?",
129 nameMorreu,re["deaths"]+1, accountName1)
130 end
131 for i,re in ipairs (RSemanalMatou) do
132 dbExec(db, "UPDATE ranksemanal SET nome = ?, kills = ? WHERE conta = ?",
133 nameMatou,re["kills"]+1, accountName2)
134 end
135 end
136 end
137end
138addEvent("kilLDayZPlayer", true)
139addEventHandler("kilLDayZPlayer", getRootElement(), iMorreuMizeravi)
140
141function iLoginMizeravi(iSanData)
142 if ( iSanData == "logedin" or iSanData == "Group") then
143 local clan = getElementData(source, "Group")
144 local accountName = getAccountName (getPlayerAccount(source))
145 local Name = getPlayerName(source)
146 local cRCS = dbPoll(dbQuery(db, "SELECT * FROM rankclansemanal WHERE clan = ?", clan), -1)
147 local cRC = dbPoll(dbQuery(db, "SELECT * FROM rankclan WHERE clan = ?", clan), -1)
148 local pRankSemanal = dbPoll(dbQuery(db, "SELECT * FROM ranksemanal WHERE conta = ?", accountName), -1)
149 local pRank = dbPoll(dbQuery(db, "SELECT * FROM rank WHERE conta = ?", accountName), -1)
150 if clan == nil or clan == false then
151 else
152 if type(cRCS) == "table" and #cRCS == 0 or not cRCS then
153 dbExec(db, "INSERT INTO rankclansemanal(clan,membros,kills,kdr,level,mortes) VALUES(?,?,?,?,?,?)",
154 clan, #exports["group"]:getGroupMembers(clan),0,0,0,0);
155 end
156 if type(cRC) == "table" and #cRC == 0 or not cRC then
157 dbExec(db, "INSERT INTO rankclan(clan,membros,kills,kdr,level,mortes) VALUES(?,?,?,?,?,?)",
158 clan, #exports["group"]:getGroupMembers(clan),0,0,0,0);
159 end
160 end
161 if type(pRankSemanal) == "table" and #pRankSemanal == 0 or not pRankSemanal then
162 dbExec(db, "INSERT INTO ranksemanal(nome,conta,kills,deaths,kdr,clan) VALUES(?,?,?,?,?,?)",
163 Name,accountName,0,0,0,clan);
164 else
165 dbExec(db, "UPDATE ranksemanal SET nome = ?,clan = ? WHERE conta = ?",
166 Name,clan,accountName);
167 end
168 end
169end
170addEventHandler("onElementDataChange", root, iLoginMizeravi)
171
172--- Receber nas GUI
173function RankDados()
174 local TopRank = {}
175 local p = dbPoll(dbQuery(db, "SELECT * FROM rank"), -1)
176 if type(p) == "table" and #p == 0 or not p then
177 else
178 for i = 1,#p do
179 table.insert(TopRank,{name = p[i].nome,score = p[i].kills, deaths = p[i].deaths, kdr = p[i].kdr, alivetime = p[i].alivetime, level = p[i].level, expe = p[i].exp, clan = p[i].clan})
180 end
181 table.sort(TopRank, function(a,b) return (tonumber(a.score)or 0) > (tonumber(b.score)or 0) end)
182 for k, data in ipairs(TopRank) do
183 if k == 101 then break end
184 triggerClientEvent(source, "iRanks.RankTesteOpen", source, tostring(data.name), tostring(data.score),tostring(data.deaths),tostring(data.kdr),tostring(data.alivetime),tostring(data.level),tostring(data.expe),tostring(data.clan), tonumber(k))
185 end
186end end
187addEvent("iRanks.ReceberRank",true)
188addEventHandler("iRanks.ReceberRank",root, RankDados)
189
190function RankDadosSemanal()
191 local TopRankSemanal = {}
192 local p = dbPoll(dbQuery(db, "SELECT * FROM ranksemanal"), -1)
193 if type(p) == "table" and #p == 0 or not p then
194 else
195 for i = 1,#p do
196 table.insert(TopRankSemanal,{name = p[i].nome,score = p[i].kills, kdr = p[i].kdr, clan = p[i].clan})
197 end
198 table.sort(TopRankSemanal, function(a,b) return (tonumber(a.score)or 0) > (tonumber(b.score)or 0) end)
199 for k, data in ipairs(TopRankSemanal) do
200 if k == 101 then break end
201 triggerClientEvent(source, "iRanks.RankSemanal", source, tostring(data.name), tostring(data.score),tostring(data.kdr),tostring(data.clan), tonumber(k))
202 end
203end end
204addEvent("iRanks.ReceberRankSemanal",true)
205addEventHandler("iRanks.ReceberRankSemanal",root, RankDadosSemanal)
206
207function RankClanDados()
208 local TopClan = {}
209 local p = dbPoll(dbQuery(db, "SELECT * FROM rankclan"), -1)
210 if type(p) == "table" and #p == 0 or not p then
211 else
212 for i = 1,#p do
213 table.insert(TopClan,{name = p[i].clan,membros = p[i].membros, score = p[i].kills,kdr = p[i].kdr,level = p[i].level})
214 end
215 table.sort(TopClan, function(a,b) return (tonumber(a.score)or 0) > (tonumber(b.score)or 0) end)
216 for k, data in ipairs(TopClan) do
217 if k == 101 then break end
218 triggerClientEvent(source, "iRanks.RankClanOpen", source, tonumber(k), tostring(data.name), tostring(data.membros), tostring(data.score),tostring(data.kdr), tostring(data.level))
219 end
220end end
221addEvent("iRanks.RankClan",true)
222addEventHandler("iRanks.RankClan",root, RankClanDados)
223
224function RankClanSemanal()
225 local TopClan = {}
226 local p = dbPoll(dbQuery(db, "SELECT * FROM rankclansemanal"), -1)
227 if type(p) == "table" and #p == 0 or not p then
228 else
229 for i = 1,#p do
230 table.insert(TopClan,{name = p[i].clan,membros = p[i].membros, score = p[i].kills,kdr = p[i].kdr,level = p[i].level})
231 end
232 table.sort(TopClan, function(a,b) return (tonumber(a.score)or 0) > (tonumber(b.score)or 0) end)
233 for k, data in ipairs(TopClan) do
234 if k == 101 then break end
235 triggerClientEvent(source, "iRanks.RankClanSemanal", source, tonumber(k), tostring(data.name), tostring(data.membros), tostring(data.score),tostring(data.kdr), tostring(data.level))
236 end
237end end
238addEvent("iRanks.RankClanGetSemanal",true)
239addEventHandler("iRanks.RankClanGetSemanal",root, RankClanSemanal)