Jump to content
Check out discord.gg/fxap for the cheapest decryptions! First one is free! ×

Get LB-Phone!

Unlock the powerful LB-Phone for a fraction of the price you pay on tebex.

Download

Premium TOS Clothing MEGA Pack!

11GB of pure TOS premium clothing best clothing pack for your Server!

Download

5Decrypt

Automated Asset Decryption

Learn More

1 Screenshot

About This File

RLO Script Pack 1

das sind viele rlo scripts


User Feedback

Recommended Comments

America1107

Posted

Vielen Dank. Hast du noch die Server.lua für rlo_admin?

 

America1107

Posted (edited)

rlo_admin
server > sv_main.lua

 

local ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)

local activeRequests = {}

-- Check ob Admin
ESX.RegisterServerCallback('rlo_ticketpanel:callback:isAdmin', function(source, cb)
    local xPlayer = ESX.GetPlayerFromId(source)
    cb(xPlayer and xPlayer.getGroup() ~= 'user')
end)

-- Anfrage erstellen (z. B. via /support)
RegisterCommand('support', function(source, args)
    local xPlayer = ESX.GetPlayerFromId(source)
    if not xPlayer then return end

    local reason = table.concat(args, " ")
    if reason == "" then
        TriggerClientEvent('esx:showNotification', source, "~r~Du musst einen Grund angeben!")
        return
    end

    local requestId = tostring(source) .. "_" .. os.time()

    activeRequests[requestId] = {
        playerId = source,
        playerName = xPlayer.getName(),
        reason = reason,
        state = "Offen",
        coords = GetEntityCoords(GetPlayerPed(source)),
        identifyId = requestId
    }

    -- Sende an Admins
    TriggerClientEvent('rlo_ticketpanel:client:syncRequest', -1, activeRequests, requestId)
end, false)

-- Anfrage bei Join anzeigen
AddEventHandler('playerConnecting', function(_, _, deferrals)
    local src = source
    Wait(5000)
    TriggerClientEvent('rlo_ticketpanel:client:syncRequestOnJoin', src, activeRequests)
end)

-- Löschen von HS
RegisterNetEvent('rlo_ticketpanel:server:syncHsDelete', function(data)
    if activeRequests[data.identifyId] then
        activeRequests[data.identifyId] = nil
        TriggerClientEvent('rlo_ticketpanel:client:syncHsDelete', -1, data)
    end
end)

-- Nachricht an Spieler senden
RegisterNetEvent('rlo_ticketpanel:server:hsMessage', function(data)
    local target = data.playerId
    if GetPlayerName(target) then
        TriggerClientEvent('chat:addMessage', target, {
            args = {"Support", "[ADMIN]: " .. data.message},
            color = {255, 0, 0}
        })
    end
end)

-- Normales Löschen
RegisterNetEvent('rlo_ticketpanel:server:syncDelete', function(data)
    if activeRequests[data.identifyId] then
        activeRequests[data.identifyId] = nil
        TriggerClientEvent('rlo_ticketpanel:client:syncDelete', -1, data)
    end
end)

-- Anfrage als "in Bearbeitung" markieren
RegisterNetEvent('rlo_ticketpanel:server:changeState', function(identifyId)
    if activeRequests[identifyId] then
        activeRequests[identifyId].state = "In Bearbeitung"
        TriggerClientEvent('rlo_ticketpanel:client:changeState', -1, identifyId)
    end
end)

-- Claim Request
RegisterNetEvent('rlo_ticketpanel:server:claimRequest', function(identifyId)
    local src = source
    local xPlayer = ESX.GetPlayerFromId(src)
    if not xPlayer then return end

    if activeRequests[identifyId] then
        activeRequests[identifyId].claimedBy = xPlayer.getName()
        activeRequests[identifyId].state = "Gecclaimed von " .. xPlayer.getName()
        TriggerClientEvent('rlo_ticketpanel:client:changeState', -1, activeRequests[identifyId].reason)
    end
end)

Edited by America1107
America1107

Posted

rlo_admin
web > js > main.js
 

$(function(){
  window.addEventListener('message', (event) => {                
      var data = event.data;
      if (data !== undefined && data.type === "open") {                     
          $("body").removeClass("d-none");

      } else if (data !== undefined && data.type === "close") {                        
          $("body").addClass("d-none");

      } else if (data !== undefined && data.type === "deleteRequest") {                        
          deleteRequest(data.requestContent);

      } else if (data !== undefined && data.type === "createRequest") {                        
          createRequest(data.requestContent);

      } else if (data !== undefined && data.type === "changeState") {                        
          changeState(data.reason);

      } else if (data !== undefined && data.type === "hsRequest") {                        
          hsRequest(data.requestContent);
      }
  });
}); 

function hsRequest(requestContent) {
  fetch(`https://${GetParentResourceName()}/hsMessage`, {
    method: 'POST',
    body: JSON.stringify(requestContent.playerId),
    headers: {'Content-Type': 'application/json; charset=UTF-8'},
  }).then(resp => resp.json()).catch(err => console.error(err));

  const elements = document.querySelectorAll('.content-header');
  elements.forEach(element => {
    const reasonElement = element.querySelector('.col-md-5.column');
    if (reasonElement && reasonElement.textContent === requestContent.reason) {
      element.remove();
    }
  });
}

function deleteRequest(requestContent) {
  const elements = document.querySelectorAll('.content-header');
  elements.forEach(element => {
    const reasonElement = element.querySelector('.col-md-5.column');
    if (reasonElement && reasonElement.textContent === requestContent.reason) {
      element.remove();
    }
  });
}

function changeState(reason) {
  const elements = document.querySelectorAll('.content-header');
  elements.forEach(element => {
    const reasonElement = element.querySelector('.col-md-5.column');
    if (reasonElement && reasonElement.textContent === reason) {
      const button = element.querySelector('button.btn-info');
      if (button) {
        button.textContent = 'In Bearbeitung';
        button.className = 'btn btn-warning me-2 d-flex align-items-center justify-content-center';
      }
    }
  });
}

function teleport(coords) {
  fetch(`https://${GetParentResourceName()}/teleport`, {
    method: 'POST',
    body: JSON.stringify(coords),
    headers: {'Content-Type': 'application/json; charset=UTF-8'},
  }).then(resp => resp.json()).catch(err => console.error(err));
}

function waypoint(coords) {
  fetch(`https://${GetParentResourceName()}/setWaypoint`, {
    method: 'POST',
    body: JSON.stringify(coords),
    headers: {'Content-Type': 'application/json; charset=UTF-8'},
  }).then(resp => resp.json()).catch(err => console.error(err));
}

function createRequest(requestContent) {
  const contentHeader = document.createElement('div');
  contentHeader.className = 'content-header row mt-1 text-center bor';

  const col1 = document.createElement('div');
  col1.className = 'col-md-2 column';
  
  const img = document.createElement('img');
  img.src = 'image/ticket.svg';
  img.alt = 'Icon';
  
  const div1 = document.createElement('div');
  div1.textContent = requestContent.playerName + ' : ' + requestContent.playerId;

  col1.appendChild(img);
  col1.appendChild(div1);

  const col2 = document.createElement('div');
  col2.className = 'col-md-5 column';
  col2.textContent = requestContent.reason;

  const col3 = document.createElement('div');
  col3.className = 'col-md-2 column';

  const buttonOpen = document.createElement('button');
  buttonOpen.className = 'btn btn-info me-2 d-flex align-items-center justify-content-center';
  buttonOpen.style.height = '38px';
  buttonOpen.textContent = requestContent.state;
  buttonOpen.addEventListener('click', function() {
    fetch(`https://${GetParentResourceName()}/changeState`, {
      method: 'POST',
      body: JSON.stringify(requestContent.identifyId),
      headers: {'Content-Type': 'application/json; charset=UTF-8'},
    }).then(resp => resp.json());
  });

  const buttonClaim = document.createElement('button');
  buttonClaim.className = 'btn btn-success me-2 d-flex align-items-center justify-content-center';
  buttonClaim.style.height = '38px';
  buttonClaim.textContent = 'Claim';
  buttonClaim.addEventListener('click', function () {
    fetch(`https://${GetParentResourceName()}/claimRequest`, {
      method: 'POST',
      body: JSON.stringify(requestContent.identifyId),
      headers: { 'Content-Type': 'application/json; charset=UTF-8' },
    })
    .then(resp => resp.json())
    .then(data => {
      col3.removeChild(buttonClaim);

      const adminNameTag = document.createElement('span');
      adminNameTag.className = 'text-success fw-bold';
      adminNameTag.textContent = data.adminName ?? ' ';
      col3.appendChild(adminNameTag);
    })
    .catch(err => console.error(err));
  });

  col3.appendChild(buttonOpen);
  col3.appendChild(buttonClaim);

  const col4 = document.createElement('div');
  col4.className = 'column';
  
  const buttonTP = document.createElement('button');
  buttonTP.className = 'btn btn-secondary me-2 d-flex align-items-center justify-content-center';
  buttonTP.addEventListener('click', function() {
    teleport(requestContent.coords);
  });
  buttonTP.style.height = '38px';
  buttonTP.textContent = 'TP';

  const buttonWP = document.createElement('button');
  buttonWP.className = 'btn btn-secondary me-2 d-flex align-items-center justify-content-center';
  buttonWP.addEventListener('click', function() {
    waypoint(requestContent.coords);
  });
  buttonWP.style.height = '38px';
  buttonWP.textContent = 'WP';

  const buttonDEL = document.createElement('button');
  buttonDEL.className = 'btn btn-danger me-2 d-flex align-items-center justify-content-center';
  buttonDEL.addEventListener('click', function() {
    fetch(`https://${GetParentResourceName()}/deleteRequest`, {
      method: 'POST',
      body: JSON.stringify(requestContent),
      headers: {'Content-Type': 'application/json; charset=UTF-8'},
    }).then(resp => resp.json());
  });
  buttonDEL.style.height = '38px';
  buttonDEL.textContent = 'DEL';

  const buttonHS = document.createElement('button');
  buttonHS.className = 'btn btn-danger me-2 d-flex align-items-center justify-content-center';
  buttonHS.addEventListener('click', function() {
    fetch(`https://${GetParentResourceName()}/hsRequest`, {
      method: 'POST',
      body: JSON.stringify(requestContent),
      headers: {'Content-Type': 'application/json; charset=UTF-8'},
    }).then(resp => resp.json());
  });
  buttonHS.style.height = '38px';
  buttonHS.textContent = 'HS';

  col4.appendChild(buttonTP);
  col4.appendChild(buttonWP);
  col4.appendChild(buttonDEL);
  col4.appendChild(buttonHS);

  contentHeader.appendChild(col1);
  contentHeader.appendChild(col2);
  contentHeader.appendChild(col3);
  contentHeader.appendChild(col4);

  document.getElementById('content').appendChild(contentHeader);
}

function refreshUi() { 
  fetch(`https://${GetParentResourceName()}/refreshUi`, {
    method: 'POST',
    headers: {'Content-Type': 'application/json; charset=UTF-8'},
  }).then(resp => resp.json());
}

function closeUi() { 
  fetch(`https://${GetParentResourceName()}/closeUi`, {
    method: 'POST',
    headers: {'Content-Type': 'application/json; charset=UTF-8'},
  }).then(resp => resp.json());
}
 

Sacha Wick

Posted

Es wäre geil wenn du den ganzen Server leaken könntest oder send mir eine Freundschaftsanfrage per Discord daryl_dixon1985

 

Lg

 

  • Happy 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.


×
×
  • Create New...

Important Information

By continuing on Launcherleaks.net, you agree to our Terms of Use, Guidelines & Privacy Policy