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
- Resource herunterladen und den Ordner
servoting-rewardsnachresources/kopieren. - In der
server.cfgeintragen:set servoting_api_key "sv_xxxxxxxx.yyyyyyyy" ensure servoting-rewards
- Belohnung in
config.luabeiConfig.GiveRewardeintragen (Beispiele unten). - Server neu starten. In der Konsole erscheint
[SERVOTING] Connected as <Servername>. Spieler sehen den Vote-Link mit/vote.
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
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.

