Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Mapa odwiedzanej lokacji w php; wyświetlanie wszystkich userów na mapie.
Enderlanas
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 18.04.2010

Ostrzeżenie: (10%)
X----


Witam, znalazłem właśnie bardzo ciekawy skrypt na chodzenie po mapie 2d z wykorzystaniem php. Znajduje się od pod tym linkiem: http://meares.webd.pl/blog/31;pseudo-mapa-...ml-jak/#more-31

Przerobiłem trochę plik, który odpowiada za wyświetlanie naszej postaci, i poruszanie się nią, ale nie potrafię wykonać skryptu, który wyświetlałby wszystkich graczy, którzy są w bazie danych. Mój przerobiony skrypt wygląda tak:

  1. <?php
  2.  
  3. /**
  4.  * Plik generujacy mape na podstawie wczesniej przygotowanej tablicy.
  5.  */
  6.  
  7. // Zalaczanie pliku z polaczeniam do bazy
  8. include('conn.php');
  9.  
  10. // Zalaczane tablicy
  11. include('genmapfile.php');
  12.  
  13. /**
  14.  * Pobiera wspolrzedne gracza o ID podanym jako parametr
  15.  *
  16.  * @author: Meares (http://mearesligitharr.blogspot.com/)
  17.  * @name: GetYXForPlayer
  18.  * @param: integer $ID
  19.  * @return: array
  20.  */
  21. function GetYXForPlayer($ID) {
  22. $Query = mysql_query('SELECT `y`, `x` FROM `user` WHERE `id`='.$ID.' LIMIT 1') or die(mysql_error());
  23. $Fetched = mysql_fetch_assoc($Query);
  24. return $Fetched;
  25. }
  26.  
  27. // Zdobycie wspolrzednych gracza
  28. $YX = GetYXForPlayer(1);
  29.  
  30. if(isset($_GET['y']) || isset($_GET['x'])) {
  31. // Zmiana miejsca gracza
  32. if(($YX['y'] + 1 == $_GET['y'] || $YX['y'] - 1 == $_GET['y'] || $YX['y'] == $_GET['y']) && ($YX['x'] + 1 == $_GET['x'] || $YX['x'] - 1 == $_GET['x'] || $YX['x'] == $_GET['x']) && $Map[$_GET['y']][$_GET['x']]['CanBeOn'] === true) {
  33. mysql_query('UPDATE `user` SET `y`='.$_GET['y'].', `x`='.$_GET['x'].' WHERE `id`=1 LIMIT 1');
  34. } else {
  35. echo 'Cheater!';
  36. }
  37. }
  38.  
  39. // Zdobycie aktualnych wspolrzednych gracza
  40. $YX = GetYXForPlayer(1);
  41.  
  42. // Generowanie
  43. // $Key zawiera wspolrzedna Y
  44. foreach($Map as $Key => $Value) {
  45. // $Key2 zawiera wspolrzedna X, a $Value2 to tablica zawierajaca informacje o podlozu oraz o tym czy na dane pole mozna wejsc
  46. foreach($Value as $Key2 => $Value2) {
  47. $EchoString[0] = '<span style="position: relative; left: 1px; z-index: 1;"><img src="images/'.$Value2['Image'].'" alt="ElementMapy" style="width: 32px; height: 32px;" /></span>';
  48. // Jesli mozna wejsc na pole
  49. if($Value2['CanBeOn'] === true) {
  50. // Generowanie "strzaleczek"
  51. if($Key - 1 == $YX['y'] && $Key2 == $YX['x']) {
  52. $EchoString[1] = '<span style="position: relative; left: 0px; z-index: 2;"></span>';
  53. } else if($Key + 1 == $YX['y'] && $Key2 == $YX['x']) {
  54. $EchoString[1] = '<span style="position: relative; left: 0px; z-index: 2;"></span>';
  55. } else if($Key2 - 1 == $YX['x'] && $Key == $YX['y']) {
  56. $EchoString[1] = '<span style="position: relative; left: 0px; z-index: 2;"></span>';
  57. } else if($Key2 + 1 == $YX['x'] && $Key == $YX['y']) {
  58. $EchoString[1] = '<span style="position: relative; left: 0px; z-index: 2;"></span>';
  59. } else if($Key == $YX['y'] && $Key2 == $YX['x']) {
  60. $EchoString[1] = '<span style="position: relative; left: 0px; z-index: 2;"><img src="images/character.png" alt="Moja postac" style="position: absolute; right: 0px; width: 32px; height: 32px;" /></span>';
  61. } else {
  62. $EchoString[1] = '';
  63. }
  64. } else {
  65. $EchoString[1] = '';
  66. }
  67. echo implode('', $EchoString);
  68. }
  69. echo '<br />';
  70. }
  71.  
  72.  
  73.  


Działanie skryptu można zobaczyć pod adresami:
http://endoria.za.pl/test/login.php
http://endoria.za.pl/test/zab.php



Wyświetla on gracza bez tych strzałek do poruszania, o ID'ie równym 1, co z resztą jest w zapytaniu do bazy. I tutaj mam problem. Jak zrobić, aby pobierało wszystkich graczy z bazy, i wyświetlało ich na mapie? Wiem, że mogę to zrobić, robiąc wiele zapytań, i zmieniając id na kolejny, ale z tym byłoby zbyt dużo roboty, i być może nie działałoby to zbyt dobrze. No więc może ktoś wie, co należy zastosować, jakiej funkcji użyć? Za każdą, nawet najmniejszą pomoc byłbym wdzięczny.

Pozdrawiam (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Podpowiem CI tylko że tutaj:
  1. #
  2. } else if($Key == $YX['y'] && $Key2 == $YX['x']) {
  3. #
  4. $EchoString[1] = '<span style="position: relative; left: 0px; z-index: 2;"><img src="images/character.png" alt="Moja postac" style="position: absolute; right: 0px; width: 32px; height: 32px;" /></span>';
  5. #
  6. } else {

Masz wyświetlanie swojej postaci. Musisz pobrać pozostałe postacie i sprawdzić czy powinny tutaj stać i je wyświetlić.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 06:13