Ethanos

Serveur - BWH [FR]

Jul 16th, 2020
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 22.65 KB | None | 0 0
  1. ESX = nil
  2. local bancache,namecache = {},{}
  3. local open_assists,active_assists = {},{}
  4.  
  5. function split(s, delimiter)result = {};for match in (s..delimiter):gmatch("(.-)"..delimiter) do table.insert(result, match) end return result end
  6.  
  7. Citizen.CreateThread(function() -- startup
  8.     TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
  9.     while ESX==nil do Wait(0) end
  10.    
  11.     MySQL.ready(function()
  12.         refreshNameCache()
  13.         refreshBanCache()
  14.     end)
  15.  
  16.     sendToDiscord("Démarrage...")
  17.  
  18.     print("[^1"..GetCurrentResourceName().."^7] Performing version check...")
  19.     PerformHttpRequest("https://api.elipse458.me/resources/checkupdates.php", function(a,b,c)
  20.         local data = json.decode(b)
  21.         if a~=200 then
  22.             print("[^1"..GetCurrentResourceName().."^7] Version check failed!")
  23.         else
  24.             if data and data.updateNeeded then
  25.                 print("[^1"..GetCurrentResourceName().."^7] Outdated!")
  26.                 print("[^1"..GetCurrentResourceName().."^7] Current version: 1.7 | New version: "..data.newVersion.." | Versions behind: "..data.versionsBehind)
  27.                 print("[^1"..GetCurrentResourceName().."^7] Changelog:")
  28.                 for k,v in ipairs(data.update.changelog) do
  29.                     print("- "..v)
  30.                 end
  31.                 print("[^1"..GetCurrentResourceName().."^7] Database update needed: "..(data.update.dbUpdateNeeded and "^4Yes^7" or "^1No^7"))
  32.                 print("[^1"..GetCurrentResourceName().."^7] Config update needed: "..(data.update.configUpdateNeeded and "^4Yes^7" or "^1No^7"))
  33.                 print("[^1"..GetCurrentResourceName().."^7] Update url: ^4"..data.update.releaseUrl.."^7")
  34.                 if (type(data.versionsBehind)=="string" or data.versionsBehind>1) and data.update.dbUpdateNeeded then
  35.                     print("[^1"..GetCurrentResourceName().."^7] ^1!!^7 You are multiple versions behind, make sure you run update sql files (if any) from all new versions in order of release ^1!!^7")
  36.                 end
  37.                 sendToDiscord("Update found!\nUpdate url: "..data.update.releaseUrl.."\nCurrent version: 1.7\nNew version: "..data.newVersion.."\nVersions behind: "..data.versionsBehind)
  38.             else
  39.                 print("[^1"..GetCurrentResourceName().."^7] No updates found!")
  40.             end
  41.         end
  42.     end, "POST", "resname=el_bwh&ver=1.7")
  43.  
  44.     ESX.RegisterServerCallback("el_bwh:ban", function(source,cb,target,reason,length,offline)
  45.         if not target or not reason then return end
  46.         local xPlayer = ESX.GetPlayerFromId(source)
  47.         local xTarget = ESX.GetPlayerFromId(target)
  48.         if not xPlayer or (not xTarget and not offline) then cb(nil); return end
  49.         if isAdmin(xPlayer) then
  50.             local success, reason = banPlayer(xPlayer,offline and target or xTarget,reason,length,offline)
  51.             cb(success, reason)
  52.         else logUnfairUse(xPlayer); cb(false) end
  53.     end)
  54.  
  55.     ESX.RegisterServerCallback("el_bwh:warn",function(source,cb,target,message,anon)
  56.         if not target or not message then return end
  57.         local xPlayer = ESX.GetPlayerFromId(source)
  58.         local xTarget = ESX.GetPlayerFromId(target)
  59.         if not xPlayer or not xTarget then cb(nil); return end
  60.         if isAdmin(xPlayer) then
  61.             warnPlayer(xPlayer,xTarget,message,anon)
  62.             cb(true)
  63.         else logUnfairUse(xPlayer); cb(false) end
  64.     end)
  65.  
  66.     ESX.RegisterServerCallback("el_bwh:getWarnList",function(source,cb)
  67.         local xPlayer = ESX.GetPlayerFromId(source)
  68.         -- local start = GetGameTimer() -- debug
  69.         if isAdmin(xPlayer) then
  70.             local warnlist = {}
  71.             for k,v in ipairs(MySQL.Sync.fetchAll("SELECT * FROM bwh_warnings LIMIT @limit",{["@limit"]=Config.page_element_limit})) do
  72.                 v.receiver_name=namecache[v.receiver]
  73.                 v.sender_name=namecache[v.sender]
  74.                 table.insert(warnlist,v)
  75.             end
  76.             cb(json.encode(warnlist),MySQL.Sync.fetchScalar("SELECT CEIL(COUNT(id)/@limit) FROM bwh_warnings",{["@limit"]=Config.page_element_limit}))
  77.         else logUnfairUse(xPlayer); cb(false) end
  78.         -- TriggerClientEvent("chat:addMessage",source,{multiline=false,args={"[^4DEBUG^7] ^1BWH",("Warnlist loading time: %sms"):format(GetGameTimer()-start)}}) -- debug
  79.     end)
  80.  
  81.     ESX.RegisterServerCallback("el_bwh:getBanList",function(source,cb)
  82.         local xPlayer = ESX.GetPlayerFromId(source)
  83.         -- local start = GetGameTimer() -- debug
  84.         if isAdmin(xPlayer) then
  85.             local data = MySQL.Sync.fetchAll("SELECT * FROM bwh_bans LIMIT @limit",{["@limit"]=Config.page_element_limit})
  86.             local banlist = {}
  87.             for k,v in ipairs(data) do
  88.                 v.receiver_name = namecache[json.decode(v.receiver)[1]]
  89.                 v.sender_name = namecache[v.sender]
  90.                 table.insert(banlist,v)
  91.             end
  92.             cb(json.encode(banlist),MySQL.Sync.fetchScalar("SELECT CEIL(COUNT(id)/@limit) FROM bwh_bans",{["@limit"]=Config.page_element_limit}))
  93.         else logUnfairUse(xPlayer); cb(false) end
  94.         -- TriggerClientEvent("chat:addMessage",source,{multiline=false,args={"[^4DEBUG^7] ^1BWH",("Banlist loading time: %sms"):format(GetGameTimer()-start)}}) -- debug
  95.     end)
  96.  
  97.     ESX.RegisterServerCallback("el_bwh:getListData",function(source,cb,list,page)
  98.         local xPlayer = ESX.GetPlayerFromId(source)
  99.         if isAdmin(xPlayer) then
  100.             if list=="banlist" then
  101.                 local banlist = {}
  102.                 for k,v in ipairs(MySQL.Sync.fetchAll("SELECT * FROM bwh_bans LIMIT @limit OFFSET @offset",{["@limit"]=Config.page_element_limit,["@offset"]=Config.page_element_limit*(page-1)})) do
  103.                     v.receiver_name = namecache[json.decode(v.receiver)[1]]
  104.                     v.sender_name = namecache[v.sender]
  105.                     table.insert(banlist,v)
  106.                 end
  107.                 cb(json.encode(banlist))
  108.             else
  109.                 local warnlist = {}
  110.                 for k,v in ipairs(MySQL.Sync.fetchAll("SELECT * FROM bwh_warnings LIMIT @limit OFFSET @offset",{["@limit"]=Config.page_element_limit,["@offset"]=Config.page_element_limit*(page-1)})) do
  111.                     v.sender_name=namecache[v.sender]
  112.                     v.receiver_name=namecache[v.receiver]
  113.                     table.insert(warnlist,v)
  114.                 end
  115.                 cb(json.encode(warnlist))
  116.             end
  117.         else logUnfairUse(xPlayer); cb(nil) end
  118.     end)
  119.  
  120.     ESX.RegisterServerCallback("el_bwh:unban",function(source,cb,id)
  121.         local xPlayer = ESX.GetPlayerFromId(source)
  122.         if isAdmin(xPlayer) then
  123.             MySQL.Async.execute("UPDATE bwh_bans SET unbanned=1 WHERE id=@id",{["@id"]=id},function(rc)
  124.                 local bannedidentifier = "N/A"
  125.                 for k,v in ipairs(bancache) do
  126.                     if v.id==id then
  127.                         bannedidentifier = v.receiver[1]
  128.                         bancache[k].unbanned = true
  129.                         break
  130.                     end
  131.                 end
  132.                 logAdmin(("Admin ^1%s^7 a dé-banni ^1%s^7 (%s)"):format(xPlayer.getName(),(bannedidentifier~="N/A" and namecache[bannedidentifier]) and namecache[bannedidentifier] or "N/A",bannedidentifier))
  133.                 cb(rc>0)
  134.             end)
  135.         else logUnfairUse(xPlayer); cb(false) end
  136.     end)
  137. end)
  138.  
  139. AddEventHandler("playerConnecting",function(name, setKick, def)
  140.     local identifiers = GetPlayerIdentifiers(source)
  141.     if #identifiers>0 and identifiers[1]~=nil then
  142.         local banned, data = isBanned(identifiers)
  143.         namecache[identifiers[1]]=GetPlayerName(source)
  144.         if banned then
  145.             print(("[^1"..GetCurrentResourceName().."^7] Le joueur banni %s (%s) a essayé de rejoindre, son bannissement expire le %s (ID du ban : #%s)"):format(GetPlayerName(source),data.receiver[1],data.length and os.date("%d-%m-%Y %H:%M",data.length) or "PERMANENT",data.id))
  146.             local kickmsg = Config.banformat:format(data.reason,data.length and os.date("%Y-%m-%d %H:%M",data.length) or "PERMANENT",data.sender_name,data.id)
  147.             if Config.backup_kick_method then DropPlayer(source,kickmsg) else def.done(kickmsg) end
  148.         else
  149.             local data = {["@name"]=GetPlayerName(source)}
  150.             for k,v in ipairs(identifiers) do
  151.                 data["@"..split(v,":")[1]]=v
  152.             end
  153.             if not data["@steam"] then
  154.                 print("[^1"..GetCurrentResourceName().."^7] Un joueur se connecte sans SteamID, sautant le stockage des identifiants")
  155.             else
  156.                 MySQL.Async.execute("INSERT INTO `bwh_identifiers` (`steam`, `license`, `ip`, `name`, `xbl`, `live`, `discord`, `fivem`) VALUES (@steam, @license, @ip, @name, @xbl, @live, @discord, @fivem) ON DUPLICATE KEY UPDATE `license`=@license, `ip`=@ip, `name`=@name, `xbl`=@xbl, `live`=@live, `discord`=@discord, `fivem`=@fivem",data)
  157.             end
  158.         end
  159.     else
  160.         if Config.backup_kick_method then DropPlayer(source,"[BWH] Aucun identifiant n'a été trouvé lors de la connexion, veuillez vous reconnecter") else def.done("[BWH] Aucun identifiant n'a été trouvé lors de la connexion, veuillez vous reconnecter") end
  161.     end
  162. end)
  163.  
  164. AddEventHandler("playerDropped",function(reason)
  165.     if open_assists[source] then open_assists[source]=nil end
  166.     for k,v in ipairs(active_assists) do
  167.         if v==source then
  168.             active_assists[k]=nil
  169.             TriggerClientEvent("chat:addMessage",k,{color={255,0,0},multiline=false,args={"BWH : ","L'administrateur qui vous aidait à quitter le serveur"}})
  170.             return
  171.         elseif k==source then
  172.             TriggerClientEvent("el_bwh:assistDone",v)
  173.             TriggerClientEvent("chat:addMessage",v,{color={255,0,0},multiline=false,args={"BWH : ","Le joueur que vous aidiez a quitté le serveur, téléportation a la position précédente..."}})
  174.             active_assists[k]=nil
  175.             return
  176.         end
  177.     end
  178. end)
  179.  
  180. function refreshNameCache()
  181.     namecache={}
  182.     for k,v in ipairs(MySQL.Sync.fetchAll("SELECT steam,name FROM bwh_identifiers")) do
  183.         namecache[v.steam]=v.name
  184.     end
  185. end
  186.  
  187. function refreshBanCache()
  188.     bancache={}
  189.     for k,v in ipairs(MySQL.Sync.fetchAll("SELECT id,receiver,sender,reason,UNIX_TIMESTAMP(length) AS length,unbanned FROM bwh_bans")) do
  190.         table.insert(bancache,{id=v.id,sender=v.sender,sender_name=namecache[v.sender]~=nil and namecache[v.sender] or "N/A",receiver=json.decode(v.receiver),reason=v.reason,length=v.length,unbanned=v.unbanned==1})
  191.     end
  192. end
  193.  
  194. function sendToDiscord(msg)
  195.     if Config.discord_webhook~=nil then
  196.         PerformHttpRequest(Config.discord_webhook, function(a,b,c)end, "POST", json.encode({embeds={{title="BWH LOGS",description=msg:gsub("%^%d",""),color=65280,}}}), {["Content-Type"]="application/json"})
  197.     end
  198. end
  199.  
  200. function logAdmin(msg)
  201.     for k,v in ipairs(ESX.GetPlayers()) do
  202.         if isAdmin(ESX.GetPlayerFromId(v)) then
  203.             TriggerClientEvent("chat:addMessage",v,{color={255,0,0},multiline=false,args={"BWH : ",msg}})
  204.             sendToDiscord(msg)
  205.         end
  206.     end
  207. end
  208.  
  209. function isBanned(identifiers)
  210.     for _,ban in ipairs(bancache) do
  211.         if not ban.unbanned and (ban.length==nil or ban.length>os.time()) then
  212.             for _,bid in ipairs(ban.receiver) do
  213.                 for _,pid in ipairs(identifiers) do
  214.                     if bid==pid then return true, ban end
  215.                 end
  216.             end
  217.         end
  218.     end
  219.     return false, nil
  220. end
  221.  
  222. function isAdmin(xPlayer)
  223.     for k,v in ipairs(Config.admin_groups) do
  224.         if xPlayer.getGroup()==v then return true end
  225.     end
  226.     return false
  227. end
  228.  
  229. function execOnAdmins(func)
  230.     local ac = 0
  231.     for k,v in ipairs(ESX.GetPlayers()) do
  232.         if isAdmin(ESX.GetPlayerFromId(v)) then
  233.             ac = ac + 1
  234.             func(v)
  235.         end
  236.     end
  237.     return ac
  238. end
  239.  
  240. function logUnfairUse(xPlayer)
  241.     if not xPlayer then return end
  242.     print(("[^1"..GetCurrentResourceName().."^7] Le joueur %s (%s) a essayé d'utiliser une fonction d'administration"):format(xPlayer.getName(),xPlayer.identifier))
  243.     logAdmin(("Le joueur %s (%s) a essayé d'utiliser une fonction d'administration"):format(xPlayer.getName(),xPlayer.identifier))
  244. end
  245.  
  246. function banPlayer(xPlayer,xTarget,reason,length,offline)
  247.     local targetidentifiers,offlinename,timestring,data = {},nil,nil,nil
  248.     if offline then
  249.         data = MySQL.Sync.fetchAll("SELECT * FROM bwh_identifiers WHERE steam=@identifier",{["@identifier"]=xTarget})
  250.         if #data<1 then
  251.             return false, "~r~L'identifiant n'est pas dans la base de données des identifiants !"
  252.         end
  253.         offlinename = data[1].name
  254.         for k,v in pairs(data[1]) do
  255.             if k~="name" then table.insert(targetidentifiers,v) end
  256.         end
  257.     else
  258.         targetidentifiers = GetPlayerIdentifiers(xTarget.source)
  259.     end
  260.     if length=="" then length = nil end
  261.     MySQL.Async.execute("INSERT INTO bwh_bans(id,receiver,sender,length,reason) VALUES(NULL,@receiver,@sender,@length,@reason)",{["@receiver"]=json.encode(targetidentifiers),["@sender"]=xPlayer.identifier,["@length"]=length,["@reason"]=reason},function(_)
  262.         local banid = MySQL.Sync.fetchScalar("SELECT MAX(id) FROM bwh_bans")
  263.         logAdmin(("Le joueur ^1%s^7 (%s) a été banni par ^1%s^7, expiration: %s, raison: '%s'"..(offline and " (BAN HORS-LIGNE)" or "")):format(offline and offlinename or xTarget.getName(),offline and data[1].steam or xTarget.identifier,xPlayer.getName(),length~=nil and length or "PERMANENT",reason))
  264.         if length~=nil then
  265.             timestring=length
  266.             local day,month,year,hour,minute = string.match(length,"(%d+)/(%d+)/(%d+) (%d+):(%d+)")
  267.             length = os.time({year=year,month=month,day=day,hour=hour,min=minute})
  268.         end
  269.         table.insert(bancache,{id=banid==nil and "1" or banid,sender=xPlayer.identifier,reason=reason,sender_name=xPlayer.getName(),receiver=targetidentifiers,length=length})
  270.         if offline then xTarget = ESX.GetPlayerFromIdentifier(xTarget) end -- just in case the player is on the server, you never know
  271.         if xTarget then
  272.             TriggerClientEvent("el_bwh:gotBanned",xTarget.source, reason)
  273.             Citizen.SetTimeout(5000, function()
  274.                 DropPlayer(xTarget.source,Config.banformat:format(reason,length~=nil and timestring or "PERMANENT",xPlayer.getName(),banid==nil and "1" or banid))
  275.             end)
  276.         else return false, "~r~Erreur inconnu (MySQL?)" end
  277.         return true, ""
  278.     end)
  279. end
  280.  
  281. function warnPlayer(xPlayer,xTarget,message,anon)
  282.     MySQL.Async.execute("INSERT INTO bwh_warnings(id,receiver,sender,message) VALUES(NULL,@receiver,@sender,@message)",{["@receiver"]=xTarget.identifier,["@sender"]=xPlayer.identifier,["@message"]=message})
  283.     TriggerClientEvent("el_bwh:receiveWarn",xTarget.source,anon and "" or xPlayer.getName(),message)
  284.     logAdmin(("Admin ^1%s^7 a averti ^1%s^7 (%s), Message : '%s'"):format(xPlayer.getName(),xTarget.getName(),xTarget.identifier,message))
  285. end
  286.  
  287. AddEventHandler("el_bwh:ban",function(sender,target,reason,length,offline)
  288.     if source=="" then -- if it's from server only
  289.         banPlayer(sender,target,reason,length,offline)
  290.     end
  291. end)
  292.  
  293. AddEventHandler("el_bwh:warn",function(sender,target,message,anon)
  294.     if source=="" then -- if it's from server only
  295.         warnPlayer(sender,target,message,anon)
  296.     end
  297. end)
  298.  
  299. TriggerEvent('es:addCommand', 'aide', function(source, args, user)
  300.     local reason = table.concat(args," ")
  301.     if reason=="" or not reason then TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH","Please specify a reason"}}); return end
  302.     if not open_assists[source] and not active_assists[source] then
  303.         local ac = execOnAdmins(function(admin) TriggerClientEvent("el_bwh:requestedAssist",admin,source); TriggerClientEvent("chat:addMessage",admin,{color={0,255,255},multiline=Config.chatassistformat:find("\n")~=nil,args={"BWH : ",Config.chatassistformat:format(GetPlayerName(source),source,reason)}}) end)
  304.         if ac>0 then
  305.             open_assists[source]=reason
  306.             Citizen.SetTimeout(120000,function()
  307.                 if open_assists[source] then open_assists[source]=nil end
  308.                 if GetPlayerName(source)~=nil then
  309.                     TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Votre demande d'assistance a expiré"}})
  310.                 end
  311.             end)
  312.             TriggerClientEvent("chat:addMessage",source,{color={0,255,0},multiline=false,args={"BWH : ","Demande d'assistance envoyée (expire dans 120s), écrivez ^1/caide^7 pour annuler votre demande"}})
  313.         else
  314.             TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Il n'y a aucun administrateur sur le serveur"}})
  315.         end
  316.     else
  317.         TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Quelqu'un vous aide déjà ou vous avez déjà une demande d'assistance en attente"}})
  318.     end
  319. end)
  320.  
  321. TriggerEvent('es:addCommand', 'caide', function(source, args, user)
  322.     if open_assists[source] then
  323.         open_assists[source]=nil
  324.         TriggerClientEvent("chat:addMessage",source,{color={0,255,0},multiline=false,args={"BWH : ","Votre demande a bien été annulée"}})
  325.         execOnAdmins(function(admin) TriggerClientEvent("el_bwh:hideAssistPopup",admin) end)
  326.     else
  327.         TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Vous n'avez aucune demande d'aide en attente"}})
  328.     end
  329. end)
  330.  
  331. TriggerEvent('es:addCommand', 'faide', function(source, args, user)
  332.     local xPlayer = ESX.GetPlayerFromId(source)
  333.     if isAdmin(xPlayer) then
  334.         local found = false
  335.         for k,v in pairs(active_assists) do
  336.             if v==source then
  337.                 found = true
  338.                 active_assists[k]=nil
  339.                 TriggerClientEvent("chat:addMessage",source,{color={0,255,0},multiline=false,args={"BWH : ","Aide fermée, téléportation"}})
  340.                 TriggerClientEvent("el_bwh:assistDone",source)
  341.             end
  342.         end
  343.         if not found then TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Tu n'aides personne"}}) end
  344.     else
  345.         TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Vous n'avez pas l'autorisation d'utiliser cette commande !"}})
  346.     end
  347. end)
  348.  
  349. TriggerEvent('es:addCommand', 'bwh', function(source, args, user)
  350.     local xPlayer = ESX.GetPlayerFromId(source)
  351.     if isAdmin(xPlayer) then
  352.         if args[1]=="ban" or args[1]=="warn" or args[1]=="warnlist" or args[1]=="banlist" then
  353.             TriggerClientEvent("el_bwh:showWindow",source,args[1])
  354.         elseif args[1]=="refresh" then
  355.             TriggerClientEvent("chat:addMessage",source,{color={0,255,0},multiline=false,args={"BWH : ","Refreshing ban & name cache..."}})
  356.             refreshNameCache()
  357.             refreshBanCache()
  358.         elseif args[1]=="assists" then
  359.             local openassistsmsg,activeassistsmsg = "",""
  360.             for k,v in pairs(open_assists) do
  361.                 openassistsmsg=openassistsmsg.."^5ID "..k.." ("..GetPlayerName(k)..")^7 - "..v.."\n"
  362.             end
  363.             for k,v in pairs(active_assists) do
  364.                 activeassistsmsg=activeassistsmsg.."^5ID "..k.." ("..GetPlayerName(k)..")^7 - "..v.." ("..GetPlayerName(v)..")\n"
  365.             end
  366.             TriggerClientEvent("chat:addMessage",source,{color={0,255,0},multiline=true,args={"BWH : ","Aides en attente :\n"..(openassistsmsg~="" and openassistsmsg or "^1Aucune aide en attente")}})
  367.             TriggerClientEvent("chat:addMessage",source,{color={0,255,0},multiline=true,args={"BWH : ","Aides actives :\n"..(activeassistsmsg~="" and activeassistsmsg or "^1Aucune aide active")}})
  368.         else
  369.             TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Sous-commande non valide ! (^4ban^7,^4warn^7,^4banlist^7,^4warnlist^7,^4refresh^7)"}})
  370.         end
  371.     else
  372.         TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Vous n'avez pas l'autorisation d'utiliser cette commande !"}})
  373.     end
  374. end)
  375.  
  376. function acceptAssist(xPlayer,target)
  377.     if isAdmin(xPlayer) then
  378.         local source = xPlayer.source
  379.         for k,v in pairs(active_assists) do
  380.             if v==source then
  381.                 TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Vous êtes déjà entrain d'aider quelqu'un"}})
  382.                 return
  383.             end
  384.         end
  385.         if open_assists[target] and not active_assists[target] then
  386.             open_assists[target]=nil
  387.             active_assists[target]=source
  388.             TriggerClientEvent("el_bwh:acceptedAssist",source,target)
  389.             TriggerClientEvent("el_bwh:hideAssistPopup",source)
  390.             TriggerClientEvent("chat:addMessage",source,{color={0,255,0},multiline=false,args={"BWH : ","Téléportation au joueur..."}})
  391.         elseif not open_assists[target] and active_assists[target] and active_assists[target]~=source then
  392.             TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Quelqu'un aide déjà ce joueur"}})
  393.         else
  394.             TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Le joueur avec cet ID ne demande pas d'aide"}})
  395.         end
  396.     else
  397.         TriggerClientEvent("chat:addMessage",source,{color={255,0,0},multiline=false,args={"BWH : ","Vous n'avez pas l'autorisation d'utiliser cette commande !"}})
  398.     end
  399. end
  400.  
  401. TriggerEvent('es:addCommand', 'yaide', function(source, args, user)
  402.     local xPlayer = ESX.GetPlayerFromId(source)
  403.     local target = tonumber(args[1])
  404.     acceptAssist(xPlayer,target)
  405. end)
  406.  
  407. RegisterServerEvent("el_bwh:acceptAssistKey")
  408. AddEventHandler("el_bwh:acceptAssistKey",function(target)
  409.     if not target then return end
  410.     local _source = source
  411.     acceptAssist(ESX.GetPlayerFromId(_source),target)
  412. end)
  413.  
  414. if Config.enable_ban_json or Config.enable_warning_json then
  415.     SetHttpHandler(function(req,res)
  416.         if req.path=="/bans.json" and Config.enable_ban_json then
  417.             MySQL.Async.fetchAll("SELECT * FROM bwh_bans",{},function(data)
  418.                 res.send(json.encode(data))
  419.             end)
  420.         elseif req.path=="/warnings.json" and Config.enable_warning_json then
  421.             MySQL.Async.fetchAll("SELECT * FROM bwh_warnings",{},function(data)
  422.                 res.send(json.encode(data))
  423.             end)
  424.         end
  425.     end)
  426. end
Advertisement
Add Comment
Please, Sign In to add comment