So funktioniert ein FiveM-Server-Shop bei Skalp: Zahlung, Lieferung im Spiel und Erstattungen
Ein Server-Shop bei Skalp verkauft VIP, Ränge, Items und Fahrzeuge an die Spieler Ihres FiveM-Servers. Der Spieler zahlt auf Ihrer Shop-Seite, die Ressource skalp auf Ihrem Server holt den Kauf innerhalb von etwa zehn Sekunden ab und übergibt ihn im Spiel oder direkt in den Charakter, falls der Spieler offline ist. Skalp ist der Verkäufer, daher übernehmen wir Umsatzsteuer, Rechnungen, Erstattungen und Rückbuchungen.
Was Spieler kaufen können
Alles, was Ihr Server einem Spieler per Befehl oder Skript geben kann. Items und Fahrzeuge funktionieren bei den gängigen Frameworks sofort. Ein Job, ein Rang, ein Whitelist-Platz oder Warteschlangen-Priorität laufen über Ihre eigenen Serverbefehle. Ein monatliches VIP kann ein Abo sein, das in jedem bezahlten Monat erneut geliefert wird, und Spieler können jedes Produkt als Geschenk für einen Freund kaufen.
Der Shop bekommt eine eigene Adresse unter yourname.skalp.gg oder Ihre eigene Domain. Er ist im Skalp-Marketplace unter Server-Shops gelistet, mit der Zahl der Spieler online, wenn Sie Ihre Serveradresse angeben. Einzelne Produkte wie ein VIP-Rang erscheinen nicht in der Produktliste des Marketplace, weil sie nur für die Spieler Ihres Servers von Bedeutung sind.
Wie ein Kauf beim Spieler ankommt
- Vor dem Kauf verknüpft der Spieler sein Steam-Konto. So weiß Ihr Server, wer was gekauft hat. Bezahlt wird mit Karte, Apple Pay, Google Pay oder einer lokalen Zahlungsmethode.
- Die Ressource skalp fragt etwa alle zehn Sekunden bei Skalp nach neuen Käufen. Jeden speichert sie in der Tabelle
skalp_deliveries, bevor sie ihn bestätigt. Stürzt der Server dazwischen ab, wird der Kauf erneut abgeholt und nichts geht verloren.
- Ein Spieler, der im Spiel ist, bekommt den Kauf sofort. Ist er offline, landen die eingebauten Belohnungen direkt in seinem Charakter in Ihrer Datenbank, sodass beim nächsten Login alles da ist. Skalp nimmt den Charakter, den er zuletzt gespielt hat: ox_core und vRP verknüpfen ihn selbst mit Steam, bei ESX, QBCore und Qbox lernt die Ressource ihn, sobald der Spieler mit Ressource 3.2 oder neuer zum ersten Mal einen Charakter lädt. Bis dahin und für alles, was sich nicht sicher schreiben lässt, solange der Spieler weg ist, wartet die Lieferung auf seinen Beitritt.
- Die Bestellung in Ihrem Dashboard zeigt, ob sie geliefert wurde, wartet oder fehlgeschlagen ist, und warum.
Server verbinden
Öffnen Sie in Ihrem Shop-Dashboard Gameserver und klicken Sie auf Server verbinden. Laden Sie die Ressource herunter, legen Sie den Ordner skalp in resources und fügen Sie die drei Zeilen aus dem Dashboard in die server.cfg ein:
ensure skalp
set skalp_key "der Schlüssel aus dem Dashboard"
add_ace resource.skalp command allow
Nach einem Neustart gibt die Konsole Connected to Skalp aus, und das Dashboard zeigt den Server als verbunden an. Den Schlüssel sehen Sie nur einmal. Haben Sie ihn verloren, erstellen Sie einen neuen, und der alte funktioniert sofort nicht mehr.
Spieler werden über Steam zugeordnet, daher braucht der Server einen Steam-Web-API-Schlüssel (steam_webApiKey in der server.cfg). Die Ressource läuft mit ESX und seinen Forks, QBCore, Qbox, ox_core und vRP, mit ox_inventory oder dem Inventar des Frameworks. Ein Server ohne Framework kann trotzdem liefern, mit Befehlen und eigenen Skripten. oxmysql ist optional: Mit ihm werden Lieferungen in Ihrer Datenbank gespeichert, ohne ihn im eigenen Speicher der Ressource.
Nichts verbindet sich mit Ihrem Server, es gibt also keine Ports zu öffnen und keine URL einzutragen. Ihr Server fragt bei Skalp nach Käufen, und alles, was in beide Richtungen gesendet wird, ist mit Ihrem Schlüssel verschlüsselt und signiert. Der Schlüssel selbst verlässt den Server nie, deshalb kann eine gefälschte API oder eine abgefangene Verbindung ihn nicht dazu bringen, etwas auszugeben.
Was ein Produkt gibt
Bei jedem Produkt schreiben Sie als Befehl, was es gibt. Zur Ressource gehören Befehle, die bei jedem Framework gleich funktionieren, zum Beispiel:
| Befehl | Was er tut |
skalp_item {playerId} bread 5 | Fügt ein Item über ox_inventory, qb-inventory oder das Framework hinzu. |
skalp_vehicle {playerId} sultanrs | Speichert das Fahrzeug mit einem freien Kennzeichen in der Garage des Spielers. |
Jeder andere Befehl, den eine Ressource auf Ihrem Server registriert hat, funktioniert ebenfalls, zum Beispiel setjob {playerId} police 0. Mehrere Schritte trennen Sie mit ;. Skalp setzt {playerId}, {steamhex}, {steamid}, {quantity}, {orderId}, {productSlug} und {buyerName} ein. Ein Befehl, der {citizenid}, {charId} oder {license} statt {playerId} verwendet, läuft auch, während der Spieler offline ist. Außerdem können Sie den Käufer im Checkout bis zu zehn Dinge fragen, etwa nach dem Text für ein individuelles Kennzeichen, und die Antwort als {field_plate} verwenden. Vom Käufer eingegebene Antworten werden auf Buchstaben, Ziffern und _.:-[] gekürzt, damit niemand einen zweiten Befehl einschleusen kann.
Befehle laufen als Serverkonsole, und es laufen nur Befehle, die eine Spielressource registriert hat. Die eigenen Konsolenbefehle des Servers wie quit, exec oder add_ace sowie die Befehle von txAdmin werden nie ausgeführt, egal was in einem Produkt steht, und weitere können Sie in Config.BlockedCommands sperren. Ein Befehl, den es auf Ihrem Server nicht gibt, lässt die Lieferung mit seinem Namen fehlschlagen, ein Tippfehler zeigt sich also an der Bestellung.
Eigene Systeme: Ihre Garage, Ihr VIP- oder Shop-Skript
Wenn Ihr Server Dinge über ein eigenes Skript vergibt, zum Beispiel eine eigene Garage oder ein VIP-System ohne Konsolenbefehl, registrieren Sie einen Handler in Ihrer eigenen Ressource. Ein Handler übernimmt anstelle des Produktbefehls:
local function register()
exports.skalp:RegisterHandler('sultan-rs', function(ctx)
local ok, err = exports.my_garage:GiveCar(ctx.playerId, 'sultanrs')
if not ok then return false, err end
return true
end)
end
AddEventHandler('onResourceStart', function(name)
if name == 'skalp' then register() end
end)
if GetResourceState('skalp') == 'started' then register() end
Der Schlüssel ist der Slug oder die ID des Produkts. Geben Sie true zurück, wenn der Kauf geliefert ist, false, 'Grund', wenn er fehlgeschlagen ist (der Grund erscheint an der Bestellung), oder nil, 'Grund', damit er wartet und später erneut versucht wird. ctx enthält die Spieler-ID, seine Kennung, die Menge, die Bestellnummer, das Produkt und die Antworten des Käufers auf Ihre Fragen.
Die Ressource exportiert außerdem GiveItem und GiveVehicle für Ihre eigenen Skripte, und ihr Ordner examples enthält fertige Dateien für ESX, QBCore und Server ohne Framework. Handler liegen in Ihrer Ressource, ein Update von skalp überschreibt sie also nie.
Handler laufen, wenn der Spieler im Spiel ist. Hält Ihr Server Charaktere, Inventare oder Garagen in eigenen Tabellen, registrieren Sie Offline-Handler mit exports.skalp:RegisterOfflineHandler, dann funktioniert die Offline-Lieferung auch mit Ihrem Setup.
Abos, Erstattungen und Rückbuchungen
- Ein Abo wird für jeden bezahlten Zeitraum erneut geliefert. Sobald es wirklich beendet ist, läuft der Entzugsbefehl des Produkts. Ein Handler, der mit
RegisterSubscriptionHandler registriert wurde, erhält ctx.active und kann den Perk selbst vergeben oder entfernen.
- Eine vollständige Erstattung bricht alles ab, was noch wartet, und führt den Entzugsbefehl für das aus, was der Server bereits geliefert hat. Ein Spieler, der offline ist, verliert es beim nächsten Beitritt.
- Skalp wehrt Rückbuchungen gegenüber der Bank ab. Eine verlorene wirkt wie eine Erstattung und sperrt den Käufer zusätzlich für Ihren Server, und gewinnt man sie später zurück, wird die Sperre aufgehoben. Ein Spieler, der den Kauf als Geschenk bekommen hat, wird nicht wegen der Rückbuchung des Schenkenden gesperrt.
Was Ihr Server an Skalp sendet
Die Verbindungs-ID, die Version der Ressource, den Namen des Frameworks, ob Befehle und die Steam-Anmeldung aktiviert sind, und das Ergebnis jeder Lieferung. Er sendet keine Spielerliste, keine Kennungen von Spielern, die nichts gekauft haben, und nichts aus Ihrer Datenbank. Skalp wiederum sendet dem Server nur, was eine Lieferung braucht, ohne E-Mail-Adresse des Käufers, gezahlten Betrag oder andere Bestelldetails.
Zahlungen, Steuern und Auszahlungen
Skalp verkauft als Merchant of Record an den Spieler. Die Umsatzsteuer des Landes des Käufers wird im Checkout hinzugefügt, und Skalp stellt die Rechnung aus. Die Gebühr beträgt 10 % des Netto-Verkaufspreises, oder 7 %, sobald Ihr Umsatz der letzten 30 Tage 20.000 $ erreicht. Die Zahlungsabwicklung ist inbegriffen, und es gibt keine monatliche Gebühr. Bestellungen werden 7 Tage nach Abschluss abgerechnet, und ab 20 USD können Sie im Dashboard eine Auszahlung beantragen, auf ein Bankkonto auf Ihren Namen oder den Ihres Unternehmens.
Was Sie anbieten, entscheiden Sie
Sie entscheiden, welche Produkte Ihr Shop verkauft. Achten Sie darauf, dass jedes davon den Regeln des Spiels und der Plattform entspricht, auf der Ihr Server läuft.
Häufige Fragen
Muss ich einen Port öffnen oder einen Webhook einrichten?
Nein. Ihr Server fragt bei Skalp nach neuen Käufen, es muss sich also nichts von außen mit ihm verbinden.
Mit welchen Frameworks funktioniert es?
ESX und seine Forks, QBCore, Qbox, ox_core und vRP. Ein Server ohne Framework kann mit Befehlen und eigenen Handlern liefern.
Was passiert, wenn der Spieler offline oder sein Inventar voll ist?
Die eingebauten Belohnungen gehen sofort in den Charakter, sofern Skalp weiß, um welchen Charakter es sich handelt, und der Spieler nicht auf dem Server ist und ihn auch in den letzten zwei Minuten nicht verlassen hat. Items, die beim Erstellen eigene Daten bekommen, etwa Waffen, warten auf den Beitritt des Spielers, ebenso alles bei vollem Inventar. Wartende Lieferungen bleiben in der Tabelle skalp_deliveries, laufen, sobald der Spieler beitritt, und werden alle 30 Sekunden erneut versucht, solange er spielt. Tritt der Spieler innerhalb von 30 Tagen nicht bei, verfallen sie. Mit Config.OfflineDelivery = false warten Lieferungen immer auf den Spieler.
Kann ein Kauf zweimal geliefert werden?
Nein. Jedes Produkt einer Bestellung hat eine eigene Zeile, und eine Lieferung mit mehreren Schritten merkt sich, welche Schritte bereits gelaufen sind.
Wie teste ich es vor dem Verkauf?
Klicken Sie im Dashboard auf Test senden, und der Server gibt ihn bei der nächsten Abfrage in seiner Konsole aus. Die Belohnungsbefehle funktionieren auch in der Serverkonsole, zum Beispiel skalp_item 1 bread 5, und skalp status zeigt die Verbindung, das Framework und wie viele Lieferungen warten oder fehlgeschlagen sind.
Kann ich auch meine Skripte an andere Server verkaufen?
Ja, über einen Skript-Shop, der ein anderer Shop-Typ ist. Skalp schützt die Dateien und bindet sie an eine Lizenz. So funktioniert der Verkauf von FiveM-Skripten.
Ist Skalp mit Rockstar Games oder einer Spieleplattform verbunden?
Nein. Skalp ist ein unabhängiger Shop für digitale Produkte.