Hoe een FiveM-serverwinkel op Skalp werkt: betaling, levering in de game en terugbetalingen
Een serverwinkel op Skalp verkoopt VIP, rangen, items en voertuigen aan de spelers van je FiveM-server. De speler betaalt op je winkelpagina, de skalp-resource op je server haalt de aankoop binnen ongeveer tien seconden op en levert hem in de game af, of rechtstreeks in het personage van de speler als die offline is. Skalp is de verkoper, dus btw, facturen, terugbetalingen en chargebacks regelen wij.
Wat spelers kunnen kopen
Alles wat je server een speler kan geven met een commando of een script. Items en voertuigen werken direct op de gangbare frameworks. Een job, een rang, een plek op de whitelist of voorrang in de wachtrij lopen via je eigen servercommando's. Een maandelijkse VIP kan een abonnement zijn dat elke betaalde maand opnieuw wordt geleverd, en spelers kunnen elk product als cadeau voor een vriend kopen.
De winkel krijgt een eigen adres op yourname.skalp.gg, of je eigen domein. Hij staat op de Skalp-marketplace onder Serverwinkels, met het aantal spelers online als je het adres van je server toevoegt. Losse producten zoals een VIP-rang staan niet in de productlijst van de marketplace, omdat ze alleen iets betekenen voor spelers van jouw server.
Hoe een aankoop bij de speler komt
- Voor de aankoop koppelt de speler zijn Steam-account. Zo weet je server wie wat heeft gekocht. Betalen kan met kaart, Apple Pay, Google Pay of een lokale betaalmethode.
- De skalp-resource vraagt Skalp ongeveer elke tien seconden om nieuwe aankopen. Elke aankoop wordt opgeslagen in de tabel
skalp_deliveries voordat hij wordt bevestigd, dus bij een crash ertussen wordt hij opnieuw opgehaald en gaat er niets verloren.
- Een speler die in de game is, krijgt de aankoop meteen. Is de speler offline, dan gaan de ingebouwde beloningen rechtstreeks naar zijn personage in je database, zodat alles er is bij de volgende login. Skalp kiest het personage dat de speler het laatst speelde: ox_core en vRP koppelen het zelf aan Steam, en bij ESX, QBCore en Qbox leert de resource het de eerste keer dat de speler een personage laadt met resource 3.2 of nieuwer. Tot dat moment, en voor alles wat niet veilig te schrijven is terwijl de speler weg is, wacht de levering tot de speler inlogt.
- De bestelling in je dashboard laat zien of hij is geleverd, wacht of is mislukt, en waarom.
Je server koppelen
Open in het dashboard van je winkel Gameserver en klik op Server koppelen. Download de resource, zet de map skalp in resources en plak de drie regels uit het dashboard in server.cfg:
ensure skalp
set skalp_key "de sleutel uit het dashboard"
add_ace resource.skalp command allow
Na een herstart toont de console Connected to Skalp en staat de server in het dashboard als verbonden. Je ziet de sleutel maar één keer. Raak je hem kwijt, maak dan een nieuwe aan, de oude werkt dan meteen niet meer.
Spelers worden gekoppeld via Steam, dus de server heeft een Steam Web API-sleutel nodig (steam_webApiKey in server.cfg). De resource werkt met ESX en zijn forks, QBCore, Qbox, ox_core en vRP, met ox_inventory of de eigen inventaris van het framework. Een server zonder framework kan toch leveren met commando's en eigen scripts. oxmysql is optioneel: daarmee worden leveringen in je database bewaard, zonder oxmysql in de eigen opslag van de resource.
Er maakt niets verbinding met je server, dus je hoeft geen poorten te openen en geen URL in te stellen. Je server vraagt Skalp om aankopen, en alles wat heen en terug gaat, is versleuteld en ondertekend met je sleutel. De sleutel zelf verlaat de server nooit, dus een nep-API of een onderschepte verbinding kan hem niets laten uitgeven.
Wat een product geeft
Bij elk product schrijf je als commando op wat het geeft. De resource heeft commando's die op elk framework hetzelfde werken, bijvoorbeeld:
| Commando | Wat het doet |
skalp_item {playerId} bread 5 | Voegt een item toe via ox_inventory, qb-inventory of het framework. |
skalp_vehicle {playerId} sultanrs | Slaat het voertuig met een vrij kenteken op in de garage van de speler. |
Elk ander commando dat een resource op je server heeft geregistreerd, werkt ook, bijvoorbeeld setjob {playerId} police 0. Scheid meerdere stappen met ;. Skalp vult {playerId}, {steamhex}, {steamid}, {quantity}, {orderId}, {productSlug} en {buyerName} in. Een commando dat {citizenid}, {charId} of {license} gebruikt in plaats van {playerId}, wordt ook uitgevoerd terwijl de speler offline is. Je kunt de koper bij de checkout ook maximaal tien vragen stellen, zoals de tekst voor een eigen kenteken, en het antwoord gebruiken als {field_plate}. Antwoorden die de koper typt, worden teruggebracht tot letters, cijfers en _.:-[], zodat niemand er een tweede commando tussen kan stoppen.
Commando's draaien als de serverconsole, en alleen commando's die een gameresource heeft geregistreerd, worden uitgevoerd. De eigen consolecommando's van de server, zoals quit, exec of add_ace, en de commando's van txAdmin worden nooit uitgevoerd, wat een product ook zegt, en in Config.BlockedCommands kun je er meer blokkeren. Een commando dat op je server niet bestaat, laat de levering mislukken met de naam erbij, dus een typfout zie je terug op de bestelling.
Eigen systemen: je eigen garage-, VIP- of winkelscript
Geeft je server dingen via een eigen script, bijvoorbeeld een eigen garage- of VIP-systeem zonder consolecommando, registreer dan een handler in je eigen resource. Een handler neemt het over van het commando van het product:
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
De sleutel is de slug of het id van het product. Geef true terug als de aankoop is geleverd, false, 'reden' als het is mislukt (de reden staat dan op de bestelling), of nil, 'reden' om de levering te laten wachten en later opnieuw te proberen. ctx bevat het speler-id, zijn identifier, de hoeveelheid, het bestelnummer, het product en de antwoorden van de koper op je vragen.
De resource exporteert ook GiveItem en GiveVehicle voor je eigen scripts, en in de map examples staan kant-en-klare bestanden voor ESX, QBCore en servers zonder framework. Handlers staan in je eigen resource, dus een update van skalp overschrijft ze nooit.
Handlers worden uitgevoerd als de speler in de game is. Bewaart je server personages, inventarissen of garages in eigen tabellen, registreer dan offline handlers met exports.skalp:RegisterOfflineHandler, dan werkt offline levering ook met jouw setup.
Abonnementen, terugbetalingen en chargebacks
- Een abonnement wordt voor elke betaalde periode opnieuw geleverd. Is het echt afgelopen, dan draait het intrekcommando van het product. Een handler die is geregistreerd met
RegisterSubscriptionHandler krijgt ctx.active en kan het voordeel zelf toekennen of weghalen.
- Een volledige terugbetaling annuleert alles wat nog wacht en voert het intrekcommando uit voor wat de server al heeft geleverd. Een speler die offline is, raakt het kwijt zodra hij weer inlogt.
- Skalp vecht chargebacks uit met de bank. Een verloren chargeback werkt als een terugbetaling en verbant de koper ook van je server, en als hij later toch wordt gewonnen, vervalt het verbod. Een speler die de aankoop als cadeau kreeg, wordt niet verbannen voor de chargeback van de gever.
Wat je server naar Skalp stuurt
Het verbindings-id, de versie van de resource, de naam van het framework, of commando's en Steam-inloggen aan staan, en het resultaat van elke levering. Er gaat geen spelerslijst mee, geen identifiers van spelers die niets hebben gekocht en niets uit je database. Skalp stuurt de server op zijn beurt alleen wat een levering nodig heeft, zonder e-mailadres van de koper, het betaalde bedrag of andere bestelgegevens.
Betalingen, belasting en uitbetalingen
Skalp verkoopt aan de speler als merchant of record. De btw van het land van de koper wordt bij de checkout opgeteld en Skalp maakt de factuur. De kosten zijn 10% van de nettoverkoopprijs, of 7% zodra je verkopen van de afgelopen 30 dagen $20.000 bereiken. Betalingsverwerking zit erbij en er zijn geen maandkosten. Bestellingen worden 7 dagen na afronding vrijgegeven, en vanaf USD 20 kun je in het dashboard een uitbetaling aanvragen naar een bankrekening op jouw naam of die van je bedrijf.
Wat je verkoopt, bepaal je zelf
Jij bepaalt welke producten je winkel verkoopt. Zorg dat elk product voldoet aan de regels van de game en van het platform waarop je server draait.
Vragen die mensen stellen
Moet ik een poort openen of een webhook instellen?
Nee. Je server vraagt Skalp om nieuwe aankopen, dus er hoeft van buitenaf niets met hem te verbinden.
Met welke frameworks werkt het?
ESX en zijn forks, QBCore, Qbox, ox_core en vRP. Een server zonder framework kan leveren met commando's en eigen handlers.
Wat gebeurt er als de speler offline is of zijn inventaris vol is?
De ingebouwde beloningen gaan meteen naar het personage, zolang Skalp weet om welk personage het gaat en de speler niet op de server is en die de afgelopen twee minuten ook niet heeft verlaten. Items die bij het aanmaken eigen data krijgen, zoals wapens, wachten tot de speler inlogt, en dat geldt ook voor alles als het inventaris vol is. Wachtende leveringen blijven in de tabel skalp_deliveries, worden uitgevoerd zodra de speler inlogt en elke 30 seconden opnieuw geprobeerd zolang hij speelt. Komt de speler binnen 30 dagen niet online, dan vervallen ze. Met Config.OfflineDelivery = false wachten leveringen altijd op de speler.
Kan een aankoop twee keer worden geleverd?
Nee. Elk product in een bestelling heeft een eigen rij, en een levering met meerdere stappen onthoudt welke stappen al zijn uitgevoerd.
Hoe test ik het voordat ik ga verkopen?
Klik in het dashboard op Test sturen, en de server toont de test in zijn console zodra hij weer contact maakt. De beloningscommando's werken ook in de serverconsole, bijvoorbeeld skalp_item 1 bread 5, en skalp status toont de verbinding, het framework en hoeveel leveringen wachten of zijn mislukt.
Kan ik ook mijn scripts aan andere servers verkopen?
Ja, via een scriptwinkel, wat een ander winkeltype is. Skalp beschermt de bestanden en koppelt ze aan een licentie. Hoe FiveM-scripts verkopen werkt.
Is Skalp verbonden aan Rockstar Games of een ander gameplatform?
Nee. Skalp is een onafhankelijke winkel voor digitale producten.