FANDOM



Zdobywanie informacji o pobliskim terenieEdit

Zakładamy, że mamy na wejściu dane pozycji gracza X, Y, Z.

Powinniśmy mieć jakieś stałe, założyć, że gracz widzi konkretny obszar. Obszar ten powinien być liczbą nieparzystą. Jeżeli obszar widoczności ustawiony jest na [x]15na[y]11, oznacza to, że na samym środku wyświetlamy gracza. Znajduje się od w polu X,Y,Z. Musimy załadować obszar, który znajduje się dookoła niego.

Kod przewiduje, że pobieramy tylko obecny poziom Z, resztę pomijamy.

x, y, z;

MAX_X_VIEW = 15;
MAX_Y_VIEW = 11;

getXmin = x - MAX_X_VIEW/2; //zwraca nam współrzędną X lewego górnego pola.
getXmax = x + MAX_X_VIEW/2; //zwraca nam współrzędną X prawego dolnego pola.
getYmin = y - MAX_Y_VIEW/2; //zwraca nam współrzędną Y lewego górnego pola.
getYmax = y + MAX_Y_VIEW/2; //zwraca nam współrzędną Y prawego dolnego pola.
getZ = z;


//Zapytanie sql wyglądałoby tak:
SELECT * FROM map WHERE posX >= getXmin AND posX <= getXmax AND posY >= getYmin AND posY <= getYmax AND posZ = getZ

Struktura bazy danychEdit

`type` tinyint unsigned <0; 255>
`posX` smallint <-32 768; 32 767>
`posY` smallint <-32 768; 32 767>
`posZ` smallint <-32 768; 32 767>
`img` smaillint unsigned <0; 65535>


Typ pola to praktycznie 3 wartości.

0 oznacza: Absolutna przeszkoda. Nie można chodzić. Nie przepuszcza pocisków. [góra, ściana]
1 oznacza: Brak przeszkód. Można chodzić. Przepuszcza pociski. [trawa, droga]
2 oznacza: Półprzepuszczalna. Nie ożna chodzić. Przepuszcza pociski. [niski mur, płot]


Współrzędne pola są intuicyjną sprawą.

Edytor map jest tak napisany, że niemożliwy jest przypadek, gdzie w bazie danych będą dwa rekordy o identycznych posX, posY, posZ.

W praktyce oznacza to, że zapyytanie w stylu:

SELECT * FROM `map` WHERE posX = x AND posY = y AND posZ = z;

Zwróci 0 rekordów ALBO 1 rekord. Jeżeli dostaniemy 0 rekordów, przyjmujemy, że pole nie istnieje, więc nie można na nie wejść, nie przepuszcza pocisków. Jest to efektywne rozwiązanie niż tworzyć 36,000,000 rekordów o typie '0' i jakiejś domyślnej grafice.


Pole img oznacza unikalną liczbę, kod grafiki.

Ścieżka do grafiki to:
/img/POLE_TYPE/POLE_IMG.png

Liczby są lepszym i szybszym rozwiązaniem. Dla nas nie robi to większej różnicy, po prostu nazywamy grafikę jako liczba i wrzucamy do odpowiedniego folderu.

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.