Jak działa sklep serwera FiveM w Skalpie: płatność, dostawa w grze i zwroty
Sklep serwera w Skalpie sprzedaje graczom twojego serwera FiveM VIP-a, rangi, przedmioty i pojazdy. Gracz płaci na stronie sklepu, resource skalp na twoim serwerze odbiera zakup w ciągu około dziesięciu sekund i wydaje go w grze albo od razu w postaci gracza, jeśli jest offline. Sprzedawcą jest Skalp, więc VAT, faktury, zwroty i chargebacki są po naszej stronie.
Co gracze mogą kupić
Wszystko, co twój serwer potrafi dać graczowi komendą albo skryptem. Przedmioty i pojazdy działają od razu na popularnych frameworkach. Praca, ranga, miejsce na whiteliście albo priorytet w kolejce idą przez komendy twojego serwera. Miesięczny VIP może być subskrypcją, która dostarcza się na nowo w każdym opłaconym miesiącu, a każdy produkt gracz może kupić w prezencie dla znajomego.
Sklep dostaje własny adres twojanazwa.skalp.gg albo twoją domenę. Jest widoczny na marketplace Skalpa w zakładce Sklepy serwerów, z liczbą graczy online, jeśli podasz adres serwera. Pojedyncze produkty, np. ranga VIP, nie trafiają na listę produktów marketplace, bo mają sens tylko dla graczy twojego serwera.
Jak zakup trafia do gracza
- Przed zakupem gracz łączy konto Steam. Po nim twój serwer wie, kto co kupił. Płaci kartą, Apple Pay, Google Pay albo lokalną metodą płatności.
- Resource skalp pyta Skalpa o nowe zakupy mniej więcej co dziesięć sekund. Każdy zapisuje w tabeli
skalp_deliveries, zanim go potwierdzi, więc jeśli serwer padnie pomiędzy, pobierze zakup jeszcze raz i nic nie przepadnie.
- Gracz, który jest w grze, dostaje zakup od razu. Gdy jest offline, wbudowane nagrody trafiają prosto do jego postaci w twojej bazie danych, więc przy następnym logowaniu wszystko już jest. Skalp wybiera postać, którą gracz grał ostatnio: ox_core i vRP same łączą ją ze Steamem, a na ESX, QBCore i Qbox resource uczy się jej, gdy gracz pierwszy raz załaduje postać z resource w wersji 3.2 lub nowszej. Do tego czasu, a także dla wszystkiego, czego nie da się bezpiecznie zapisać pod nieobecność gracza, dostawa czeka, aż gracz wejdzie na serwer.
- Zamówienie w panelu pokazuje, czy zakup został dostarczony, czeka albo się nie udał, i dlaczego.
Podłączenie serwera
W panelu sklepu otwórz Serwer gry i kliknij Połącz serwer. Pobierz resource, wrzuć folder skalp do resources i wklej do server.cfg trzy linijki z panelu:
ensure skalp
set skalp_key "klucz z panelu"
add_ace resource.skalp command allow
Po restarcie konsola wypisze Connected to Skalp, a panel pokaże serwer jako połączony. Klucz widzisz tylko raz. Jeśli go zgubisz, wygeneruj nowy, a stary od razu przestanie działać.
Gracze są rozpoznawani po Steamie, więc serwer potrzebuje klucza Steam Web API (steam_webApiKey w server.cfg). Resource działa na ESX i jego forkach, QBCore, Qbox, ox_core i vRP, z ox_inventory albo ekwipunkiem frameworka. Serwer bez frameworka też może dostarczać, komendami i własnymi skryptami. oxmysql jest opcjonalny: z nim dostawy są trzymane w twojej bazie, bez niego w pamięci samego resource'a.
Nic nie łączy się z twoim serwerem, więc nie otwierasz portów i nie ustawiasz żadnego adresu URL. To serwer pyta Skalpa o zakupy, a wszystko, co idzie w obie strony, jest szyfrowane i podpisane twoim kluczem. Sam klucz nigdy nie opuszcza serwera, więc fałszywe API ani przechwycone połączenie nie zmusi go do wydania czegokolwiek.
Co daje produkt
Przy każdym produkcie wpisujesz komendę, która go wydaje. Resource ma wbudowane komendy, które działają tak samo na każdym frameworku, na przykład:
| Komenda | Co robi |
skalp_item {playerId} bread 5 | Dodaje przedmiot przez ox_inventory, qb-inventory albo framework. |
skalp_vehicle {playerId} sultanrs | Zapisuje pojazd z wolną rejestracją w garażu gracza. |
Działa też każda inna komenda, którą zarejestrował resource na twoim serwerze, np. setjob {playerId} police 0. Kilka kroków rozdzielasz ;. Skalp wstawia {playerId}, {steamhex}, {steamid}, {quantity}, {orderId}, {productSlug} i {buyerName}. Komenda, która używa {citizenid}, {charId} lub {license} zamiast {playerId}, wykona się też wtedy, gdy gracz jest offline. W checkoucie możesz też zadać kupującemu do dziesięciu pytań, np. o tekst na własnej tablicy rejestracyjnej, i użyć odpowiedzi jako {field_plate}. Z odpowiedzi wpisanych przez kupującego zostają tylko litery, cyfry i _.:-[], więc nikt nie dopisze drugiej komendy.
Komendy wykonują się jako konsola serwera i tylko te, które zarejestrował resource gry. Własne komendy konsoli serwera, takie jak quit, exec czy add_ace, i komendy txAdmina nie wykonają się nigdy, cokolwiek wpisano w produkcie, a kolejne zablokujesz w Config.BlockedCommands. Komenda, której nie ma na serwerze, kończy dostawę błędem z jej nazwą, więc literówkę zobaczysz przy zamówieniu.
Własne systemy: twój garaż, VIP albo skrypt sklepu
Jeśli twój serwer wydaje rzeczy własnym skryptem, np. customowym garażem albo systemem VIP bez komendy konsoli, zarejestruj handler we własnym resource. Handler ma pierwszeństwo przed komendą produktu:
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
Kluczem jest slug albo id produktu. Zwróć true, gdy zakup został wydany, false, 'powód', gdy się nie udało (powód widać przy zamówieniu), albo nil, 'powód', żeby dostawa poczekała i spróbowała później. W ctx dostajesz id gracza, jego identyfikator, ilość, numer zamówienia, produkt i odpowiedzi kupującego na twoje pytania.
Resource eksportuje też GiveItem i GiveVehicle dla twoich skryptów, a w folderze examples są gotowe pliki dla ESX, QBCore i serwerów bez frameworka. Handlery siedzą w twoim resource, więc aktualizacja skalp ich nie nadpisze.
Handlery wykonują się, gdy gracz jest w grze. Jeśli twój serwer trzyma postacie, ekwipunki lub garaże we własnych tabelach, zarejestruj handlery offline przez exports.skalp:RegisterOfflineHandler, a dostawa offline zadziała także z twoją konfiguracją.
Subskrypcje, zwroty i chargebacki
- Subskrypcja dostarcza się na nowo w każdym opłaconym okresie. Gdy naprawdę się skończy, wykonuje się komenda odebrania z produktu. Handler zarejestrowany przez
RegisterSubscriptionHandler dostaje ctx.active i może sam nadać albo zabrać perk.
- Pełny zwrot anuluje to, co jeszcze czeka, i wykonuje komendę odebrania dla tego, co serwer już wydał. Gracz offline straci to przy następnym wejściu.
- Chargebacki z bankiem rozgrywa Skalp. Przegrany działa jak zwrot i dodatkowo blokuje kupującemu wejście na serwer, a gdy spór zostanie później wygrany, blokada znika. Gracz, który dostał zakup w prezencie, nie dostaje bana za chargeback osoby, która go kupiła.
Co twój serwer wysyła do Skalpa
Id połączenia, wersję resource'a, nazwę frameworka, informację, czy komendy i logowanie przez Steam są włączone, oraz wynik każdej dostawy. Nie wysyła listy graczy, identyfikatorów graczy, którzy nic nie kupili, ani niczego z twojej bazy. Skalp z kolei wysyła serwerowi tylko to, czego potrzebuje dostawa, bez e-maila kupującego, zapłaconej kwoty i innych szczegółów zamówienia.
Płatności, podatki i wypłaty
Skalp sprzedaje graczowi jako merchant of record. VAT kraju kupującego jest doliczany w checkoucie, a fakturę wystawia Skalp. Prowizja to 10% ceny netto, a 7%, gdy twoja sprzedaż z ostatnich 30 dni dojdzie do 20 000 $. Obsługa płatności jest w cenie i nie ma opłaty miesięcznej. Zamówienia rozliczają się 7 dni po realizacji, a od 20 USD możesz zlecić w panelu wypłatę na konto bankowe na ciebie albo twoją firmę.
Co sprzedajesz, decydujesz ty
To ty decydujesz, jakie produkty sprzedaje twój sklep. Upewnij się, że każdy z nich jest zgodny z zasadami gry i platformy, na której działa twój serwer.
Najczęstsze pytania
Muszę otwierać port albo ustawiać webhook?
Nie. Twój serwer sam pyta Skalpa o nowe zakupy, więc nic nie musi się z nim łączyć z zewnątrz.
Z jakimi frameworkami to działa?
Z ESX i jego forkami, QBCore, Qbox, ox_core i vRP. Serwer bez frameworka dostarcza komendami i własnymi handlerami.
Co jeśli gracz jest offline albo ma pełny ekwipunek?
Wbudowane nagrody trafiają do postaci od razu, o ile Skalp wie, o którą postać chodzi, a gracza nie ma na serwerze i nie wyszedł z niego w ciągu ostatnich dwóch minut. Przedmioty, które przy tworzeniu dostają własne dane, np. broń, czekają, aż gracz wejdzie, i tak samo wszystko przy pełnym ekwipunku. Oczekujące dostawy zostają w tabeli skalp_deliveries, wykonują się, gdy gracz wejdzie na serwer, a w trakcie gry są ponawiane co 30 sekund. Jeśli gracz nie wejdzie przez 30 dni, wygasają. Ustaw Config.OfflineDelivery = false, żeby dostawy zawsze czekały na gracza.
Czy zakup może zostać wydany dwa razy?
Nie. Każdy produkt w zamówieniu ma własny wiersz, a dostawa z kilkoma krokami pamięta, które już się wykonały.
Jak to przetestować przed sprzedażą?
Kliknij Wyślij test w panelu, a serwer wypisze go w konsoli przy najbliższym odpytaniu. Komendy nagród działają też w konsoli serwera, np. skalp_item 1 bread 5, a skalp status pokazuje połączenie, framework i liczbę dostaw, które czekają albo się nie udały.
Mogę też sprzedawać swoje skrypty innym serwerom?
Tak, ze sklepu ze skryptami, czyli innego typu sklepu. Skalp zabezpiecza tam pliki i wiąże je z licencją. Jak działa sprzedaż skryptów FiveM.
Czy Skalp jest powiązany z Rockstar Games albo jakąś platformą gier?
Nie. Skalp to niezależny sklep z produktami cyfrowymi.