Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Mapa odwiedzanej lokacji w php; wyświetlanie wszystkich userów na mapie.
Enderlanas
post 21.04.2010, 15:37:37
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 winksmiley.jpg
Go to the top of the page
+Quote Post
bim2
post 21.04.2010, 15:49:04
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 04:51