Peršokti į turinį
Su šv. Velykomis! 🐣 🐇 Linkėjimai nuo SuperGames.lt komandos! ×
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Negalima prašyti ar platinti betkokių žaidimą (multiplayer) palengvinančių programų ir scriptų! Kitaip bus taikoma 1.21. taisyklė
❗️ Dėmesio! Prieš leidžiant skriptus/modifikacijas, būtinai patikrinkite jų kodą! </>

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 126 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

(redaguota)

Neseniai susidūriau su vienu ESX serveriu, kur didelė problema buvo pinigų exploitų klaidos ir likau nustebęs, jog daugelis serverių neturi tokio kodo serveryje. Kaip žinome, daugelių serverių sistemos "loggina" pinigų gavimą tik tame resurse, kuris prideda pinigus, o kartais sistemose, kur yra galimybė gauti pinigų - išrašų nėra. Tam, jog nereikėtų kiekvienam resursui individualiai pridėti logginimo logikos, sukūriau itin paprastą sprendimą, kuris fiksuos kiekvieną gautą pinigą iš betkurio resurso ir išsiųs "log" į jūsų išrašų "Discord" su informacija - koks žaidėjas, kiek pinigų gavo, į koki "account" buvo pervesti pinigai sistemos bei koks resursas atsakingas už tą pinigų gavimą, jog lengviau būtų susekti, kokiame resurse yra "exploit".

image.png.42d4dea6839ea5d1f939c0637b7811d9.png

(foto, kuomet dar testavau, formatavima embedo pasitaisysit kam nepatiks)

  1. Atsidarykite „es_extended“ aplankalą savo serverio direktorijoje ;
  2. Nueikite į „server > classes > overrides > oxinventory.lua“
  3. Susirandame funkciją „addAccountMoney“:
  addAccountMoney = function(self)
    return function(accountName,money, reason)
      reason = reason or 'unknown'
      if money > 0 then
        local account = self.getAccount(accountName)

        if account then
				money = account.round and ESX.Math.Round(money) or money
				self.accounts[account.index].money += money
        self.triggerEvent('esx:setAccountMoney', account)
        TriggerEvent('esx:addAccountMoney', self.source, accountName, money, reason)
          if Inventory.accounts[accountName] then
            Inventory.AddItem(self.source, accountName, money)
          end
        end
      end
    end
  end,

Visą šią funkciją pakeičiame į:

  addAccountMoney = function(self)
    return function(accountName, money, reason)
        reason = reason or 'unknown'
        if money > 0 then
            local account = self.getAccount(accountName)

            if account then
                money = account.round and ESX.Math.Round(money) or money
                self.accounts[account.index].money += money
                self.triggerEvent('esx:setAccountMoney', account)
                TriggerEvent('esx:addAccountMoney', self.source, accountName, money, reason)
                
                if Inventory.accounts[accountName] then
                    Inventory.AddItem(self.source, accountName, money)
                end

                local xPlayer = ESX.GetPlayerFromId(self.source)
                if xPlayer then
                    local identifier = xPlayer.identifier or "unknown"
                    local playerName = xPlayer.getName() or "unknown"
                    local webhookData = {
                        username = "Pinigų išrašai",
                        embeds = {
                            {
                                title = "Pridėti pinigai",
                                description = "Žaidėjas gavo pinigų",
                                color = 3066993,
                                fields = {
                                    { name = "Žaidėjas", value = playerName .. " (" .. identifier .. ")", inline = true },
                                    { name = "Pinigų paskyra", value = accountName, inline = true },
                                    { name = "Suma", value = tostring(money), inline = true },
                                    { name = "Priežastis", value = reason, inline = true },
                                    { name = "Resursas", value = GetInvokingResource() or "unknown", inline = true }
                                },
                                timestamp = os.date("!%Y-%m-%dT%H:%M:%S")
                            }
                        }
                    }
                    PerformHttpRequest("JUSU WEBHOOK", 
                        function(err, text, headers) end, 
                        'POST', 
                        json.encode(webhookData), 
                        { ['Content-Type'] = 'application/json' }
                    )
                end
            end
        end
    end
end,

Jooo, turėtų gi išvis nebūti pinigų exploitų, bet kartais apie juos net nežinai:) Jeigu randat ką pataisyt, patobulint, parašykit čia, gal tapatį eina atlikti net paprasčiau???

Redaguota , nario freddy.

 

 

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 126 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

Skelbimai



×
×
  • Sukurti naują...