Jak to się robiło...? - Gildie

Jerzy Biernacki
05.09.2015

Artykuł ten postawił sobie za cel pokazać Ci jak utworzyć w Twojej grze bMMO własny system gildii / klanów. Jest to tylko część teoretyczna lecz znajdziemy tu też dane dot. tabel i malutkie przykładowe kody

Jakie tabelę/rekordy musimy stworzyć/dodać?



Na początek stwórzmy tabelę gildie:

KOD
id int(11) auto-increment + index
   nazwa varchar(255)
   logo varchar(255)
   opis text
   zloto bigint(11)



Mamy tu 4 pola id - id gildi, nazwę - czyli nazwę gildii,logo - ścieżka do loga gildii(herbu),opis - opis gildii typu "Witaj w gildii X w celu zaproszenia zgłoś się do Y", złoto ze skarbca gildii.

Kolejny rekordy to dwa pola w tabeli z graczami:

KOD
gildia varchar(255) lub int(11) w zależności czy pobieramy gildię wg. nazwy czy id(lepiej)
   gildia_ranga varchar(255)



Dodajemy dwa pola: gildia informuje nas o przynależności gracza do jakiejś gildii, gildia_ranga świadczy o pozycji gracza w gildii np wartości Member,Founder
 

Zajmujemy się plikiem gildia.php



Musi on zawierać trochę instrukcji warunkowych np

KOD
if($gracz['gildia'] == 0 || $gracz['gildia'] == NULL){ die("Należysz już do gildii"); } else { //dalszy kod }


Jest tu sprawdzane czy gracz należy do gildii, najlepiej gdyby zaproszenia były wysyłane ze strony gildii do graczy, a nie na odwrót w ten sposób nie musimy odrzucać dennych zapytań. Taką instrukcję "wsadzamy" do miejsca gdzie UPDATE'ujemy gracza i zmieniamy wartość gildia.

Warto postarać się o jakiś panel admina/władcy/założyciela, w ten sposób przyda nam się ranga Founder/Admin/Władca i IF

KOD
if($gracz['gildia_ranga'] == "Admin"){ //kod } else { die("Nie masz uprawnień"); }


Oczywiście możemy dodać inne możliwe rangi które mogą zarządzać gildią poprzez dodania kolejnego sprawdzania czyli:
Po

KOD
$gracz['gildia_ranga'] == "Admin"

dodajemy

KOD
&& $gracz['gildia_ranga'] == "[RANGA]"


W miejsce [RANGA] wstawiamy nazwę rangi która ma mieć dostęp do PA.

W tymże pliku znajdować się musi także lista członków, wyświetlimy ich poprzez proste zapytanie:

KOD
$zap = mysql_query("SELECT login,gildia_ranga,zloto FROM gracze WHERE gildia = '".$id."'");


$id - zawiera tablicę $_GET['id'], poprzez nią "podglądamy" gildię
następnie takie zapytanie "wrzucamy" w pętle while(){}

KOD
while($gracz = mysql_fetch_array($zap)){
   echo 'Nick: '.$gracz['login'].' Ranga '.$gracz['gildia_ranga'].' Złoto w sakiewce '.$gracz['zloto'].'
   ';
   }



Pętla wyświetli wszystkich graczy będących w gildii. Poprzez echo wyświetlimy ich Login, Rangę oraz Złoto w sakiewce
W pliku znajdować się musi także opcja odchodzenia z gildii oraz skarbiec gdzie wpłacane będą pieniądze. Pierwsza opcja jest to zwyczajny warunek
który sprawdza czy gracz jest w danej gildii, oraz UPDATE'jt do bazy "usuwający" gracza z gildii czyli zmiana pola gildia na 0 lub puste.

Druga opcja to formularz wysyłające dane przez POST i sprawdzanie czy wysyłane dane są liczbą do tego wykorzystać możemy wyrażenia regularne lub funkcje do tego przeznaczone np is_numeric() lub ctype_digit() oraz czy gracz ma tyle złota ile zakwestionował, następnie UPDATE'jt tabeli gilidie zmieniający wartość złoto dodającą do aktualnej wartości pieniądze które gracz "wysyła".

Jakie mogą być urozmaicenia dot. gildii?



Urozmaiceniem gildii mogą być np wojny. Możemy wybrać dwie drogi "prowadzenia" wojen czyli :
Admin/Władca/Założyciel "wystawia skład" na bitwy np 5 członków, do tego celu przydała by się osobna tabela lub też idąc na skróty ranga - Wojownik
Drugim sposobem jest walka poprzez podliczania obrony oraz ataku wszystkich graczy(członków) i porównywanie ich z przeciwnikiem oraz odejmowanie "Życia gildii" poprzez wrzucenie tego w pętle - tak jak w przypadku normalniej walki PvP(Player vs Player) lub PvM(Player vs Monster).

Ciekawym pomysłem może okazać się umożliwienie członkom budowy budynków gildii np Kościół dodaje graczom 10% ich obecnej Many.
Do tego "czynu" możemy korzystać z osobnej tabeli gildia_budynki lub idąc na skróty "wpakować" to w tabelę gildie.

Rzeczą którą będą cenić gracze są Pakty/Sojusze oraz Wojny. Jest to dodatek mały ale cieszący. Tu nie możemy już iść na skróty więc tworzymy tabelę
gildia_pakty z polami:

KOD
id int(11) auto-increment + index
   gildia int(11)
   typ varchar(255)



Id - oznacza liczbę porządkową, gildia to id gildii, typ czli typ paktu(Agresja lub Pokój).


To tyle dot. gildii w teorii, raz na jakiś czas będę uzupełniał artykuł o dodatkowe kody.

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

Więcej w tym dziale Zobacz wszystkie