Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przeróbka kodu, players online
Forum PHP.pl > Forum > Przedszkole
Inaro
Hej, mam problem z kodem PHP ponieważ wyświetla listę graczy online na serwerze, i chciałbym go przerobić ponieważ chcę zrobić coś takiego jak jest na zdjęciu ponieważ teraz wyświetla informacje o serwerze oraz nick nad nick'iem a chcę aby wyświetlało tylko nick obok nicku czyli


Aktualnie jest teraz np.
Nick
Nick
Nick
Nick

A chcę zrobić np.
Nick, Nick, Nick, Nick - tak jak jest na zdjęciu

  1. <html>
  2. <head>
  3. <title>SA:MP Server Query Script</title>
  4. <style type="text/css">
  5. body { font-family: verdana; font-size: 11px; }
  6. td { font-family: verdana; font-size: 11px; }
  7. </style>
  8. </head>
  9. <body bgcolor="#1B304B" text="#EEEEEE">
  10. <br><center><b><font color="#ffffff">SA:MP Server Query Script</font></b></center><br><br>
  11. <table width="350" bgcolor="#000000" cellpadding="4" cellspacing="1" align="center">
  12. <?
  13. if (!isset($ip))
  14. $ip = '87.230.56.82';
  15. if (!isset($port))
  16. $port = 6969;
  17.  
  18. $fp = fsockopen('udp://' . $ip, $port, $errno, $errstr);
  19. if (!$fp)
  20. {
  21. echo "<tr><td bgcolor=\"#2B5486\">Socket Error: $errno - $errstr</td></tr>\n";
  22. }
  23. else
  24. {
  25. $packet = 'SAMP';
  26. $packet .= chr(strtok($ip, '.'));
  27. $packet .= chr(strtok('.'));
  28. $packet .= chr(strtok('.'));
  29. $packet .= chr(strtok('.'));
  30. $packet .= chr($port & 0xFF);
  31. $packet .= chr($port >> 8 & 0xFF);
  32.  
  33. fwrite($fp, $packet.'i');
  34. fread($fp, 11);
  35. $is_passworded = ord(fread($fp, 1));
  36. $plr_count = ord(fread($fp, 2));
  37. $max_plrs = ord(fread($fp, 2));
  38. $strlen = ord(fread($fp, 4));
  39. $hostname = fread($fp, $strlen);
  40. $strlen = ord(fread($fp, 4));
  41. $gamemode = fread($fp, $strlen);
  42. $strlen = ord(fread($fp, 4));
  43. $mapname = fread($fp, $strlen);
  44.  
  45. echo ' <tr><td bgcolor="#2B5486" colspan="2" align="center"><b>' . $hostname . '</b></td></tr>'."\n";
  46. echo ' <tr><td bgcolor="#2B5486" width="100">Players: </td><td bgcolor="#2B5486" width="250">' . $plr_count . ' / ' . $max_plrs . '</td></tr>'."\n";
  47. echo ' <tr><td bgcolor="#2B5486">GameMode: </td><td bgcolor="#2B5486">' . $gamemode . '</td></tr>'."\n";
  48. echo ' <tr><td bgcolor="#2B5486">MapName: </td><td bgcolor="#2B5486">' . $mapname . '</td></tr>'."\n";
  49. if ($is_passworded)
  50. {
  51. echo ' <tr><td bgcolor="#2B5486">Passworded: </td><td bgcolor="#2B5486">Yes</td></tr>'."\n";
  52. } else {
  53. echo ' <tr><td bgcolor="#2B5486">Passworded: </td><td bgcolor="#2B5486">No</td></tr>'."\n";
  54. }
  55.  
  56. fwrite($fp, $packet.'c');
  57. fread($fp, 11);
  58. $plr_count = ord(fread($fp, 2));
  59. if ($plr_count > 0)
  60. {
  61. echo ' </table><br>'."\n";
  62. echo ' <table width="350" bgcolor="#000000" cellpadding="4" cellspacing="1" align="center">'."\n";
  63. echo ' <tr><td bgcolor="#2B5486" colspan="2" align="center"><b>Players:</b></td></tr>'."\n";
  64. echo ' <tr><td bgcolor="#2B5486" align="center" width="250"><b>Player</b></td><td bgcolor="#2B5486" align="center" width="100"><b>Score</b></td></tr>'."\n";
  65. for ($i=0; $i<$plr_count; $i++)
  66. {
  67. $strlen = ord(fread($fp, 1));
  68. $plrname = fread($fp, $strlen);
  69. $score = ord(fread($fp, 4));
  70. echo ' <tr><td bgcolor="#2B5486">' . $plrname . '</td><td bgcolor="#2B5486">' . $score . '</td></tr>'."\n";
  71. }
  72. }
  73. fclose($fp);
  74. }
  75. ?>
  76. </table><br>
  77. <center><small>Š 2006 SA:MP Team. All rights reserved.</small></center>
  78. </body>
  79. </html>


Kod z forum..
  1. <tr>
  2. <td class="trow1"><span class="smalltext">
  3. Obecnie niema żadnych graczy online na serwerze.
  4. </span>
  5. </td>
  6. </tr>
Daimos
jeśli chcesz pomocy (do czego ten dział służy) to podpowiem, że nick wyświetla się tutaj:
  1. echo ' <tr><td bgcolor="#2B5486">' . $plrname . '</td><td bgcolor="#2B5486">' . $score . '</td></tr>'."\n";

Jak widzisz jest w tabelce, wystarczy go ozdobić odpowiednim HTMLem, przecinkiem, co tam tylko sobie wymarzysz, a jeśli chcesz przeróbki gotowej, to chyba wypada napisać w dziale na zlecenia winksmiley.jpg
Inaro
Nie było to zbyt trudne lecz mam problemik z tym, ponieważ źle wyświetla graczy online w statystykach forum... SS: http://uploaduj.eu/files/Kopia misiu_wsxxrw_3e511c1af8.gif


cały kod statystyk
  1. <table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
  2. <tr>
  3. <td class="thead">
  4. <div class="expcolimage"><img src="{$theme['imgdir']}/collapse{$collapsedimg['boardstats']}.gif" id="boardstats_img" class="expander" alt="[-]" title="[-]" /></div>
  5. <div><strong>{$lang->boardstats}</strong></div>
  6. </td>
  7. </tr>
  8. <tbody style="{$collapsed['boardstats_e']}" id="boardstats_e">
  9. {$whosonline}
  10. {$online_today}
  11. <tr>
  12. <td class="trow1"><span class="smalltext">
  13. <?
  14. if (!isset($ip))
  15. $ip = '87.230.56.82';
  16. if (!isset($port))
  17. $port = 6969;
  18.  
  19. $fp = fsockopen('udp://' . $ip, $port, $errno, $errstr);
  20. if (!$fp)
  21. {
  22. echo "<tr><td bgcolor=\"#2B5486\">Socket Error: $errno - $errstr</td></tr>\n";
  23. }
  24. else
  25. {
  26. $packet = 'SAMP';
  27. $packet .= chr(strtok($ip, '.'));
  28. $packet .= chr(strtok('.'));
  29. $packet .= chr(strtok('.'));
  30. $packet .= chr(strtok('.'));
  31. $packet .= chr($port & 0xFF);
  32. $packet .= chr($port >> 8 & 0xFF);
  33.  
  34. fwrite($fp, $packet.'i');
  35. fread($fp, 11);
  36. $is_passworded = ord(fread($fp, 1));
  37. $plr_count = ord(fread($fp, 2));
  38. $max_plrs = ord(fread($fp, 2));
  39. $strlen = ord(fread($fp, 4));
  40. $hostname = fread($fp, $strlen);
  41. $strlen = ord(fread($fp, 4));
  42. $gamemode = fread($fp, $strlen);
  43. $strlen = ord(fread($fp, 4));
  44. $mapname = fread($fp, $strlen);
  45.  
  46.  
  47. fwrite($fp, $packet.'c');
  48. fread($fp, 11);
  49. $plr_count = ord(fread($fp, 2));
  50. if ($plr_count > 0)
  51. {
  52. echo ' </table><br>'."\n";
  53. echo ' <table width="350" bgcolor="#000000" cellpadding="4" cellspacing="1" align="center">'."\n";
  54. for ($i=0; $i<$plr_count; $i++)
  55. {
  56. $strlen = ord(fread($fp, 1));
  57. $plrname = fread($fp, $strlen);
  58. $score = ord(fread($fp, 4));
  59. echo ',' . $plrname . ',' . $score . '';
  60. }
  61. }
  62. fclose($fp);
  63. }
  64. ?>
  65. </span>
  66. </td>
  67. </tr>
  68. {$user_legend}
  69. {$birthdays}
  70. {$forumstats}
  71. <tr>
  72. <td class="tfoot" style="text-align: right">
  73. <span class="smalltext">
  74. <a href="misc.php?action=markread">{$lang->markread}</a> |
  75. <a href="showteam.php">{$lang->forumteam}</a> |
  76. <a href="downloads.php">Pobieralnia</a> |
  77. <a href="stats.php">{$lang->forumstats}</a> |
  78. <a href="admins.php">Administracja i Obowiązki</a>
  79. </span> </span>
  80. </td>
  81. </tr>
  82. <br />
Daimos
co zle wyswietla? bo nie widze, chodzi o cyferki? zmienna score Ci daje to po przecinku, oprocz tego postaw spacje po przecinku, to bedzie sie zawijac
Inaro
No więc poradziłem sobie ze wszystkim prawie tylko błąd z wyświetleniem jest, raczej coś nie tak z tym kodem PHP jest... zobaczcie na


kod
  1. <table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
  2. <thead>
  3. <tr>
  4. <td class="thead">
  5. <div class="expcolimage"><img src="{$theme['imgdir']}/collapse{$collapsedimg['boardstats']}.gif" id="boardstats_img" class="expander" alt="[-]" title="[-]" /></div>
  6. <div><strong>{$lang->boardstats}</strong></div>
  7. </td>
  8. </tr>
  9. </thead>
  10. <tbody style="{$collapsed['boardstats_e']}" id="boardstats_e">
  11. {$whosonline}
  12. {$online_today}
  13. <tr>
  14. <td class="trow1"><span class="smalltext">
  15. <?
  16. if (!isset($ip))
  17. $ip = '87.230.56.82';
  18. if (!isset($port))
  19. $port = 6969;
  20.  
  21. $fp = fsockopen('udp://' . $ip, $port, $errno, $errstr);
  22. if (!$fp)
  23. {
  24. echo "<tr><td bgcolor=\"#2B5486\">Socket Error: $errno - $errstr</td></tr>\n";
  25. }
  26. else
  27. {
  28. $packet = 'SAMP';
  29. $packet .= chr(strtok($ip, '.'));
  30. $packet .= chr(strtok('.'));
  31. $packet .= chr(strtok('.'));
  32. $packet .= chr(strtok('.'));
  33. $packet .= chr($port & 0xFF);
  34. $packet .= chr($port >> 8 & 0xFF);
  35.  
  36. fwrite($fp, $packet.'i');
  37. fread($fp, 11);
  38. $is_passworded = ord(fread($fp, 1));
  39. $plr_count = ord(fread($fp, 2));
  40. $max_plrs = ord(fread($fp, 2));
  41. $strlen = ord(fread($fp, 4));
  42. $hostname = fread($fp, $strlen);
  43. $strlen = ord(fread($fp, 4));
  44. $gamemode = fread($fp, $strlen);
  45. $strlen = ord(fread($fp, 4));
  46. $mapname = fread($fp, $strlen);
  47.  
  48.  
  49. fwrite($fp, $packet.'c');
  50. fread($fp, 11);
  51. $plr_count = ord(fread($fp, 2));
  52. if ($plr_count > 0)
  53. {
  54. echo ' </table><br>'."\n";
  55. echo ' <table width="350" bgcolor="#000000" cellpadding="4" cellspacing="1" align="center">'."\n";
  56. for ($i=0; $i<$plr_count; $i++)
  57. {
  58. $strlen = ord(fread($fp, 1));
  59. $plrname = fread($fp, $strlen);
  60. $score = ord(fread($fp, 4));
  61. echo ',' . $plrname . ',' . $score . '';
  62. }
  63. }
  64. fclose($fp);
  65. }
  66. ?>
  67. </span>
  68. </td>
  69. </tr>
  70. {$user_legend}
  71. {$birthdays}
  72. {$forumstats}
  73. <tr>
  74. <td class="tfoot" style="text-align: right">
  75. <span class="smalltext">
  76. <a href="misc.php?action=markread">{$lang->markread}</a> |
  77. <a href="showteam.php">{$lang->forumteam}</a> |
  78. <a href="downloads.php">Pobieralnia</a> |
  79. <a href="stats.php">{$lang->forumstats}</a> |
  80. <a href="admins.php">Administracja i Obowiązki</a>
  81. </span> </span>
  82. </td>
  83. </tr>
  84. </tbody>
  85. </table>
  86. <br />
nowofresh
SA-MP na PHP.pl.
Z jakiego serwera jesteś biggrin.gif ?
XvAK
  1. echo ',' . $plrname . ',' . $score . '';


Co nie tak z kodem? Skoro sam masz ustawione wyświetlanie nicków i score winksmiley.jpg
Inaro
No więc usunąłem 'score' ale to zbyt lepszego efektu nie dało, jakieś pomysły?

zrobiłem tak
  1. echo ',' . $plrname . ',';
nowofresh
Podpowiem Ci jak to zrobić.

GG: 25147621.
XvAK
  1. echo ',' . $plrname . ' ';


W ten sposób powinieneś uzyskać "Nick, Nick, Nick, Nick".
Inaro
No dobra więc coś tam poprawiło lecz efekt jest podobny taki jak był. http://uploaduj.eu/files/Kopia_misiu_wsxxrw_1_c0e909b4fa.gif mi się wydaje że ten kod PHP jakby gryzie się z kodem MyBB...


Trzymaj fotkę:
Kod
http://uploaduj.eu/files/Kopia%20misiu_wsxxrw_3e511c1af8.gif



no chyba że źle wyświetla przez ten kod:
  1. echo ' </table><br>'."\n";
  2. echo ' <table width="350" bgcolor="#000000" cellpadding="4" cellspacing="1" align="center">'."\n";
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.