Vallheru: Tester gry

Jerzy Biernacki
05.09.2015

Dzisiaj przedstawię sposób jak zrobić konto testowe do swojej gry. Odwiedzajacy grę, będą mogli przetestować sobię grę, bez konieczności założenia nowego konta na twojej grze. U mnie zminimalizowało to ilość powstałych kont, które są zaraz po zarejestrowaniu porzuczne!

Domyślne ustawienia:
E-Mail: test@test.pl
Hasło: Test1

To konto ma wiele opcji zablokowanych. Nie może np. zmienić hasła i maila!
Dobra, przejdźmy do opisu jak zrobić takie konto. Nie jest to skomplikowane.

Na początek edytujemy plik updates.php . Tutaj damy opcje, aby zaraz po zalogowaniu się opcje konta zostały ustawione na standardowe.

Zaraz po :

$title = "Wie¶ci";

require_once("includes/head.php");


Umieszczmy takiego ifa:

if ($player -> rank == "Tester") {

$db -> Execute("UPDATE players SET age=0 where id=5");

$db -> Execute("UPDATE players SET user='Tester' where id=5");

$db -> Execute("UPDATE players SET opis='Testuję grę' where id=5");

$db -> Execute("UPDATE players SET level=1 where id=5");

$db -> Execute("UPDATE players SET exp=0 where id=5");

$db -> Execute("UPDATE players SET credits=3500 where id=5");

$db -> Execute("UPDATE players SET energy=60 where id=5");

$db -> Execute("UPDATE players SET max_energy=0 where id=5");

$db -> Execute("UPDATE players SET strength=3 where id=5");

$db -> Execute("UPDATE players SET agility=3 where id=5");

$db -> Execute("UPDATE players SET ap=35 where id=5");

$db -> Execute("UPDATE players SET platinum=75 where id=5");

$db -> Execute("UPDATE players SET hp=15 where id=5");

$db -> Execute("UPDATE players SET max_hp=15 where id=5");

$db -> Execute("UPDATE players SET bank=0 where id=5");

$db -> Execute("UPDATE players SET ability=0.01 where id=5");

$db -> Execute("UPDATE players SET tribe=0 where id=5");

$db -> Execute("UPDATE players SET profile='Proszę, nie zwracać uwagi na mnie! Jestem tu tylko tymczasowo
w celu przetestowania gry. Jeżeli spodoba mi się ona, to zarejestruję się!' where id=5");

$db -> Execute("UPDATE players SET refs=0 where id=5");

$db -> Execute("UPDATE players SET tribe=0 where id=5");

$db -> Execute("UPDATE players SET tribe=0 where id=5");

$db -> Execute("UPDATE players SET age=5");

$db -> Execute("UPDATE players SET rasa='' where id=5");

$db -> Execute("UPDATE players SET klasa='' where id=5");

$db -> Execute("UPDATE players SET ineteli=0 where id=5");

$db -> Execute("UPDATE players SET atak=0.01 where id=5");

$db -> Execute("UPDATE players SET unik=0.01 where id=5");

$db -> Execute("UPDATE players SET magia=0.01 where id=5");

$db -> Execute("UPDATE players SET szyb=3 where id=5");

$db -> Execute("UPDATE players SET wytrz=3 where id=5");

$db -> Execute("UPDATE players SET alchemia=0.01 where id=5");

$db -> Execute("UPDATE players SET shoot=0.01 where id=5");

$db -> Execute("UPDATE players SET fletcher=0.01 where id=5");

$db -> Execute("UPDATE players SET maps=0 where id=5");

$db -> Execute("UPDATE players SET gotowanie=0 where id=5");

$db -> Execute("UPDATE players SET stan='Wolny' where id=5");

}

 

Pamiętaj o zmianie wartości bo mogą one być inne w Twojej grze. U mnie sa takie... :)

Teraz wchodzimy do bazy danych poprzez phpMyAdmin'a. Teraz będziemy dodawać konto testera...
Tak więc wchodzimy w naszą bazę danych gdzie mamy dane gry. Wchodzimy do tabeli players a następnie wybieramy 'Dodaj'. I zmieniamy tylko :

    Id na 5
    User na Tester
    email na test@test.pl
    pass na e1b849f9631ffc1829b2e31402373e3c (powinno to być nasz Test1)
    rank na Tester


I resztę rzeczy standardowo pozostawiamy w spokoju i klikamy na 'Wykonaj'! :)

Jeżeli chcesz mieć inne id tej postaci to dajesz do tabeli inne id Testera i przede wszystkiim zmieniasz w upadates.php końcówkę każdego db na:

    where id='wybrany id'
    gdzie 'wybrany id' to twój numerek... :)


Teraz przechodzimy do account.php.
Tutaj teraz ustawimy ograniczenia dla pewnych funkcji z opcji gracza.
Będzie to bardzo proste bo znowu dodajemy tylko jednego if'a:

if ($player -> rank == "Tester") {

error ("Posiadasz konto testowe. Opcja ta jest dla Ciebie zablokowana!");

}


Czyli np. blokada resetu postaci w całości będzie wyglądała tak:

// reset postaci


if (isset ($_GET['view']) && $_GET['view'] == "reset") {

if (isset ($_GET['step']) && $_GET['step'] == 'make') {

$code = rand(1,1000000);

if ($player -> rank == "Tester") {

error ("Posiadasz konto testowe. Opcja ta jest dla Ciebie zablokowana!");

}


$message = "Dosta3e¶ ten list poniewa? chcia3e¶ zresetowaa postaa. Je?eli nadal pragniesz zresetowaa
swoj± postaa na ".$gamename." (".$player -> user." ID: ".$player -> id.") wejd1 w ten link
".$gameadress."/preset.php?id=".$player -> id."&code=".$code." Je?eli jednak nie chcesz resetowaa postaci
(b±d1 kto¶ inny za ciebie zg3osi3 tak± chea) wejd1 w ten link ".$gameadress."/preset.php?id=".$player
-> id." Pozdrawiam Thindil";

$adress = $_SESSION['email'];

$subject = "Reset konta gracza na ".$gamename;

require_once('mailer/mailerconfig.php');

if (!$mail -> Send()) {

error("Wiadomo¶a nie zosta3a wys3ana. B3±d:
 ".$mail -> ErrorInfo);

}

$db -> Execute("INSERT INTO reset (player, code) VALUES(".$player -> id.",".$code.")") or error("nie
moge wykonaa zapytania");

}

}


Dla zmiany hasła będzie to tak wyglądało:

 

// zmiana hasła do konta


if (isset($_GET['view']) && $_GET['view'] == "pass") {

if (isset($_GET['step']) && $_GET['step'] == "cp") {

if ($player -> rank == "Tester") {

error ("Posiadasz konto testowe. Opcja ta jest dla Ciebie zablokowana!");

}

if (empty ($_POST['np'])) {

error ("Wype3nij wszystkie pola.");

}

if (empty ($_POST['cp'])) {

error ("Wype3nij wszystkie pola.");

}

require_once('includes/verifypass.php');

verifypass($_POST['np'],'account');

$_POST['np'] = str_replace("'","",strip_tags($_POST['np']));

$_POST['cp'] = str_replace("'","",strip_tags($_POST['cp']));

$db -> Execute("UPDATE players SET pass = MD5('".$_POST['np']."') WHERE pass = MD5('".$_POST['cp']."') AND
id=".$player -> id);

$_SESSION['pass'] = $_POST['np'];

error ("Zmieni3e¶ has3o z ".$_POST['cp']." na ".$_POST['np']);

}

}


// edycja profilu

if (isset($_GET['view']) && $_GET['view'] == "profile") {

require_once('includes/bbcode.php');

$profile = htmltobbcode($player -> profile);

$smarty -> assign ("Profile", $profile);

if (isset($_GET['step']) && $_GET['step'] == "profile") {

if (empty ($_POST['profile'])) {

error ("Wype3nij wszystkie pola.");

}

require_once('includes/bbcode.php');

$_POST['profile'] = bbcodetohtml($_POST['profile']);

$db -> Execute("UPDATE players SET profile = '".$_POST['profile']."' WHERE id = '".$player -> id."'");

$smarty -> assign ("Profile",$_POST['profile']);

}

}

 

 

i jeszcze w edycji e-maila to umieszczamy:

 

// edycja maila oraz numeru gg


if (isset($_GET['view']) && $_GET['view'] == 'eci') {

if (empty($player -> gg)) {

if ($player -> rank == "Tester") {

error ("Posiadasz konto testowe. Opcja ta jest dla Ciebie zablokowana!");

} [/b] $player -> gg = '';

}

$smarty -> assign("GG", $player -> gg);

if (isset($_GET['step']) && $_GET['step'] == "gg") {

if (!ereg("^[0-9]*$", $_POST['gg'])) {

error ("Zapomnij o tym");

}

$query= $db -> Execute("SELECT id FROM players WHERE gg='".$_POST['gg']."'");

$dupe = $query -> RecordCount();

$query -> Close();

if ($dupe > 0 && $_POST['gg'] != 0) {

error ("Kto¶ ju? posiada taki adres gadu-gadu.");

}

$db -> Execute("UPDATE players SET gg=".$_POST['gg']." WHERE id=".$player -> id) or error ("Nie mog
 dodaa");

error ("Zmieni3e¶ numer gadu-gadu na ".$_POST['gg']."
");

}

if (isset($_GET['step']) && $_GET['step'] == "ce") {

if (empty ($_POST["ne"])) {

error ("Wype3nij wszystkie pola.");

}

if (empty ($_POST["ce"])) {

error ("Wype3nij wszystkie pola.");

}

require_once('includes/verifymail.php');

if (MailVal($_POST['ne'], 2)) {

error("Nieprawid3owy adres email.");

}

if ($player -> rank == "Tester") {

error ("Posiadasz konto testowe. Opcja ta jest dla Ciebie zablokowana!");

}

$query = $db -> Execute("SELECT id FROM players WHERE email='".$_POST['ne']."'");

$dupe = $query -> RecordCount();

$query -> Close();

if ($dupe > 0) {

error ("Kto¶ ju? posiada taki adres email.");

}

$db -> Execute("UPDATE players SET email = '".$_POST['ne']."' WHERE email = '".$_POST['ce']."' AND id =
'".$player -> id."'") or error ("Z3y mail");

error ("Zmieni3e¶ adres e-mail z ".$_POST['ce']." na ".$_POST['ne'].". Zamknij to okno przegl±darki
i zaloguj sie ponownie.");

}

}


Możecie umieścić pogrubionego if'a wszędzie gdzie chcecie ograniczyć dostęp do danej funkcji... :) Tylko pamiętajcie

w jakim miejscu go umieścić! Pokazałem wam powyżej 3 przykłady, które na 100% działają dobrze,

więc wniosek wyciągnijcie sami!

Tak więc byłoby to na tyle! :) Wkrótce postaram się dać kilka innych artykułów. Jeśli ktoś wzoruje się na

mojej metodzie to fajnie by było żeby umieścił bannera tej strony! Nawet musisz!!! :)

Pozdrawiam,
Revolas

PS: Zaprezentowana metoda na pewno działa w Vallheru 0.7! :) Tak więc wszystko zostało dokładnie

przetestowane. Jeżeli masz problem to pisz w komantarzach. :)

Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie