Zum Inhalt
SERVOTINGDocs

Votes und Belohnungen

FiveM und RedM

Für FiveM und RedM gibt es eine fertige Resource. Sie fragt neue Votes ab, vergibt die Belohnung über dein Framework und erstellt persönliche Vote-Links mit /vote.

Installation

  1. Resource herunterladen und den Ordner servoting-rewards nach resources/ kopieren.
  2. In der server.cfg eintragen:
    set servoting_api_key "sv_xxxxxxxx.yyyyyyyy"
    ensure servoting-rewards
  3. Belohnung in config.lua bei Config.GiveReward eintragen (Beispiele unten).
  4. Server neu starten. In der Konsole erscheint [SERVOTING] Connected as <Servername>. Spieler sehen den Vote-Link mit /vote.

FiveM-Ressource herunterladen

So arbeitet die Resource

Die Resource fragt jede Minute neue Votes ab. Ist der Spieler online, wird Config.GiveReward aufgerufen. Gibt die Funktion true zurück, gilt der Vote als eingelöst und wird nie doppelt vergeben. Mit false wird es beim nächsten Abruf erneut versucht, zum Beispiel wenn der Spieler gerade lädt. Offene Votes bleiben 7 Tage abrufbar: Wer votet, während er nicht auf dem Server ist, bekommt die Belohnung beim nächsten Join. Die Resource prüft dafür jeden Spieler kurz nach dem Verbinden.

Charaktername

Auf RP-Servern voten Spieler meist mit ihrem Charakternamen. Die Resource erkennt ESX, QBCore und Qbox und vergleicht Charakter- und FiveM-Namen (Config.NameMode = 'auto'). Mit 'character' zählt nur der Charaktername, mit 'fivem' nur der FiveM-Name. Für andere Frameworks kannst du Config.GetCharacterName selbst setzen. Votes über /vote laufen zusätzlich über die License und kommen immer beim richtigen Spieler an.

Beispiele für Config.GiveReward

ESX

local ESX = exports['es_extended']:getSharedObject()

Config.GiveReward = function(source, playerName, event)
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return false end
xPlayer.addMoney(1000)                       -- Bargeld
-- xPlayer.addInventoryItem('bread', 2)      -- oder ein Item
TriggerClientEvent('esx:showNotification', source, 'Danke fürs Voten! +1.000 $')
return true
end

QBCore / Qbox

local QBCore = exports['qb-core']:GetCoreObject()

Config.GiveReward = function(source, playerName, event)
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return false end
Player.Functions.AddMoney('cash', 1000, 'servoting-vote')
-- exports.ox_inventory:AddItem(source, 'water', 2)
return true
end

RedM (VORP)

local VorpCore = exports.vorp_core:GetCore()

Config.GiveReward = function(source, playerName, event)
local user = VorpCore.getUser(source)
if not user then return false end
user.getUsedCharacter.addCurrency(0, 10)    -- 0 = Geld
return true
end
Hinweis

Die Beispiele zeigen das übliche Muster. Prüfe die Funktionen deines Frameworks, Namen können je nach Version abweichen. Wichtig ist nur: true zurückgeben, wenn die Belohnung wirklich vergeben wurde.