API głosowania w Metin2: jak nagradzać graczy za głosy
Drobna nagroda w grze za oddany głos cieszy Twoją społeczność i jednocześnie podnosi serwer w tygodniowym rankingu. API głosowania Metin2PvpServarlar.com automatycznie informuje Twój serwer, czy gracz naprawdę zagłosował. W tym poradniku krok po kroku pokazujemy wdrożenie API głosowania dla serwera Metin2, z przykładowym kodem PHP i zasadami bezpieczeństwa.
Jak działa system?
- Gracz na Twojej stronie albo w grze klika link do głosowania, który zawiera numer jego konta.
- Na naszej stronie przechodzi weryfikację antybotową (Cloudflare Turnstile) i oddaje głos.
- Gdy gracz chce odebrać nagrodę, Twój serwer pyta adres weryfikacji o numer tego konta.
- Jeśli odpowiedź to
1, wydajesz nagrodę; jeśli0, przypominasz graczowi, żeby najpierw zagłosował.
Na ten sam serwer można głosować raz na 24 godziny. Przy głosach oddanych przez link do głosowania ten limit obejmuje zarówno adres IP, jak i konto w grze.
Gdzie znajdziesz linki?
W Panelu sterowania › Moje serwery kliknij przycisk API obok swojego serwera. Zobaczysz tam dwa adresy i krótki przykład w PHP.
Link do głosowania to adres, który klika gracz:
https://www.metin2pvpservarlar.com/oy-ver/{sunucu-adi}/{sunucu_id}/{ID}
Adres weryfikacji wywołuje wyłącznie Twój serwer:
https://www.metin2pvpservarlar.com/api/oy/{sunucu_id}/{api_anahtari}/{ID}
ID na końcu obu adresów to numer konta gracza w grze i musi być liczbą większą od zera. Skopiuj link do głosowania z panelu bez zmian i podmieniaj tylko końcową część ID. Adres weryfikacji zwraca zwykły tekst: 1, jeśli gracz w ciągu ostatnich 24 godzin zagłosował na Twój serwer przez link do głosowania, albo 0, jeśli tego nie zrobił.
Wdrożenie krok po kroku
- Generuj link dla każdego gracza: Nie każ graczom wpisywać numeru konta ręcznie. W panelu użytkownika na swojej stronie albo w przycisku głosowania w grze automatycznie dodawaj do linku numer zalogowanego konta. Dzięki temu nagroda trafi na właściwe konto.
- Dodaj przycisk „Odbierz nagrodę”: Gracz naciska go po oddaniu głosu; zapytanie weryfikacyjne wysyła wtedy kod działający na Twoim serwerze.
- Zapisuj nagrody: Adres weryfikacji zwraca
1przez 24 godziny od głosu. Zapisuj w swojej bazie danych czas wydania nagrody razem z numerem konta i nie dawaj temu samemu kontu drugiej nagrody, zanim nie miną 24 godziny. Inaczej gracz jednym głosem będzie klikał przycisk raz za razem i zbierał nagrody. - Wydaj nagrodę: Użyj metody obsługiwanej przez pliki Twojego serwera, na przykład doładowania salda w Item-Shopie albo wysłania graczowi przedmiotu.
Przykładowy kod PHP
Poniższy kod możesz dodać do pliku PHP na swojej stronie, który działa po stronie serwera:
// Nigdy nie umieszczaj klucza API w kliencie gry, w kodzie JavaScript
// ani w publicznie dostępnym pliku.
const SUNUCU_ID = '{sunucu_id}'; // Numer Twojego serwera z panelu
const API_ANAHTARI = '{api_anahtari}'; // Twój klucz API z panelu
function oyVerdiMi(int $hesapId): bool
{
if ($hesapId < 1) {
return false;
}
$adres = 'https://www.metin2pvpservarlar.com/api/oy/'
. SUNUCU_ID . '/' . API_ANAHTARI . '/' . $hesapId;
$curl = curl_init($adres);
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 10,
]);
$yanit = curl_exec($curl);
$hataKodu = curl_errno($curl);
$httpKodu = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// Błąd połączenia, przekroczony czas albo nieprawidłowe zapytanie: bez nagrody.
if ($yanit === false || $hataKodu !== 0 || $httpKodu !== 200) {
return false;
}
return trim($yanit) === '1';
}
// $hesapId pochodzi z sesji zalogowanego gracza.
if (oyVerdiMi($hesapId)) {
// Jeśli to konto nie dostało nagrody w ciągu ostatnich 24 godzin, wydaj ją
// i zapisz czas nagrody w bazie danych.
} else {
// Przypomnij graczowi, żeby najpierw zagłosował.
}
Kod wydaje nagrodę tylko wtedy, gdy odpowiedź to dokładnie 1. Jeśli klucz albo numer są błędne, odpowiedzią może być krótki komunikat o błędzie; przy przekroczeniu czasu odpowiedź w ogóle nie nadejdzie. Wszystkie te przypadki są traktowane jako „brak głosu”.
Bezpieczeństwo i zasady
- Trzymaj klucz w tajemnicy: Jeśli weryfikację wykonuje kod działający na komputerze gracza, gracz może podrobić odpowiedź i dostać nagrodę za darmo, a Twój klucz trafi w ręce wszystkich. Jeśli podejrzewasz, że klucz wyciekł, napisz do nas przez stronę kontaktową.
- Ogranicz liczbę zapytań: Sprawdzaj głos tylko wtedy, gdy gracz prosi o nagrodę. Regularne odpytywanie wszystkich kont niepotrzebnie obciąża serwery.
- Przestrzegaj zasad: Nagrody w grze za głosy są dozwolone. Kupowanie głosów, płacenie za głosy albo zbieranie ich botami, przez VPN i z fałszywych kont jest zabronione; nieuczciwe głosy mogą zostać usunięte, a serwer usunięty z listy.
- Dobierz nagrodę z umiarem: Zamiast dużych nagród, które psują gospodarkę gry, dawaj małe, ale regularne. Gracze głosujący codziennie pomagają serwerowi piąć się w rankingu najlepszych serwerów.
Częste problemy
- Zawsze wraca
0: Gracz mógł nie użyć linku do głosowania z numerem konta. Głosy oddane po zalogowaniu na naszej stronie, przyciskiem Oddaj głos na stronie serwera, liczą się do rankingu, ale nie są widoczne pod adresem weryfikacji. Sprawdź też, czy w linku do głosowania i w zapytaniu weryfikacyjnym jest ten sam numer. - Gracz nie może zagłosować: Ponieważ przy linku do głosowania limit obejmuje też adres IP, gracze dzielący to samo łącze internetowe mogą tym linkiem zagłosować na Twój serwer tylko raz na 24 godziny. Wyjaśnij to graczom z wyprzedzeniem.
- Odpowiedź się opóźnia: Pokaż graczowi komunikat „spróbuj ponownie za kilka minut”; nie powtarzaj zapytania raz za razem w pętli.
Gdzie udostępniać link do głosowania, opisaliśmy w poradniku o promocji serwera. Żeby wyjaśnić graczom, jak odebrać nagrodę, możesz udostępnić im nasz poradnik o głosowaniu.
Najczęściej zadawane pytania
Jak wdrożyć API głosowania, jeśli nie używam PHP?
Logika jest w każdym języku taka sama: wyślij zapytanie GET na adres weryfikacji i jeśli odpowiedź to dokładnie 1, wydaj nagrodę. Jeśli Twoja strona jest napisana w innym języku, te same kroki wykonasz właśnie w nim.
Czy gracz może dostać nagrodę dwa razy tego samego dnia?
Nie powinien. Ponieważ adres weryfikacji zwraca 1 przez 24 godziny od głosu, zapisywanie czasu nagrody i blokowanie powtórek to zadanie Twojego kodu.
Jakiego numeru użyć jako ID?
Numeru konta gracza w grze. Musi to być liczba większa od zera, a w linku do głosowania i w zapytaniu weryfikacyjnym trzeba użyć tego samego numeru.
Czy reset głosów wpływa na system nagród?
Nie. Głosy są zerowane na potrzeby rankingu w każdy piątek o 20:59 czasu tureckiego (UTC+3); 24-godzinny odstęp między głosami biegnie niezależnie od tego. Jeśli gracz zagłosował tuż przed resetem, kolejny głos i tak odda dopiero po upływie tego czasu.
Komentarze 0
Nie dodano jeszcze żadnych komentarzy.