Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mapa odwiedzanej lokacji w php; wyświetlanie wszystkich userów na mapie.
Forum PHP.pl > Forum > PHP
Enderlanas
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 winksmiley.jpg
bim2
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ć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.