Create site free
Создание онлайн таблицы рекордов без использования длл - Примеры, статьи - Разработка игр на Game Maker (Simple Mode) - Форум Game Maker. Разработка игр.
Здравствуй Гость | Перейти на сайт

Главная | Форум | Регистрация | Войти
gmaker.net ;) [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Simple Mode) » Примеры, статьи » Создание онлайн таблицы рекордов без использования длл (Пример и описание)
Создание онлайн таблицы рекордов без использования длл
YemSalat Дата: Суббота, 12.06.2010, 15:56 | Сообщение # 1
Хрен заткнешь
Группа: Проверенные
Сообщений: 385
Статус: Offline
Здравствуйте друзья, недавно до меня дошло, что $_GET[] переменные можно передавать через ГМ, без всяких длл, используя исключительно функцию execute_shell()
Решил сделать пример создания онлайн таблицы рекордов smile

Вам потребуется:


  • Хост с поддержкой php и MySQL (есть бесплатные варианты)
  • Самые базовые знания верстки htm страниц, для "тюнинга" вашей таблицы

И так, создаем новую таблицу (для примера test_mysql) с полями name и score в базе данных, используя следующий SQL зарос:

Code
CREATE TABLE `*имя вашей БД*`.`test_mysql` (
`name` varchar( 32 ) NOT NULL ,
`score` int( 11 ) NOT NULL )

Отлично, готова таблица в БД, теперь создаем php скрипт, который будет работать с этой таблицей:

Code
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=WINDOWS-1251'>

<title>Testing highscore..</title>
</head>
<body>

<h1 align=center>Тестируем рекорды..</h1>
<p align=center><a href='highscore.php'><img src='sp_base.png'></a><br> <br>

<?php
//Чтобы скрипт добавл или обновил информацию об игроке, запусите его вот таким образом:highscore.php?action=set&name=putnamehere&score=scorehere

//сначала подключаемся к БД
$host = "localhost";
$user = "yemsalat";
$pass = "*****";
$scores_db = "testingphp";

$connect=mysql_connect ($host,$user,$pass) or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ($scores_db);

//создадим переменные из тех что были приняты, чтобы было проще к ним обращаться
$score=$_GET["score"];
$name=$_GET["name"];

$action=$_GET["action"];

//эта функция добавляет или обновляет игрока в таблице
function modify_table()
{
//сначало находим ряд в котором имя = заданному игроком имени
   $query = "SELECT * FROM test_mysql WHERE name='".$_GET["name"]."'";
   $res = mysql_query($query) or die("Couldn't execute $query: ".mysql_error());
     
   //если такого ряда нет - значит игрока еще нет в БД, если есть, значит игрок уже был туда внесен
   if (mysql_num_rows($res)==0)
   {
    //игрока нет - создаем новый ряд с его именем и очками
    $query = "INSERT INTO test_mysql VALUES('".$_GET["name"]."',".$_GET["score"].")";
    mysql_query($query) or die("Couldn't execute $query: ".mysql_error());
   }
   //игрок есть - обновляем его результат, если он выше чем тот который записан
   else
   {
$checker = mysql_fetch_assoc($res);
if ($checker[score]<$_GET[score])
    {//обновляем результат
    $query = "UPDATE test_mysql SET score=".$_GET["score"]." WHERE name='".$_GET["name"]."'";
    mysql_query($query) or die("Couldn't execute $query: ".mysql_error());}
   }
header("Location: http://yemsalat.org/test/highscore.php?curname=$_GET[name]");
exit;
}

function show_top()
{
   //этой функцией мы выбираем первые 50 рядов по возрастанию очков
   $query = "SELECT name, score FROM test_mysql ORDER BY score DESC LIMIT 50";
   $res = mysql_query($query) or die("Couldn't execute query: ".mysql_error());
     
   //дальнейший код создает html таблицу с результатами
   echo "
   <table align=center border=1>
    <tr>
     <td align='center'> <b>#</b> </td><td align='center'> <b>Имя</b> </td> <td align='center'> <b>Очки</b> </td>
    </tr>
    ";
{$rating=0;}
   while ($user = mysql_fetch_assoc($res))
   {
$user[name]=htmlspecialchars($user[name]);
$user[score]=htmlspecialchars($user[score]);
$rating++;
    echo "<tr>   
            <td align='center'>   
      ".$rating."   
      </td>";
    //выделяем выбранное имя зеленым фоном (если задана переменная $_GET[curname])
if($_GET[curname]!=$user[name])
           { echo"<td align='center'>";}
else
           {echo"<td align='center' bgcolor=#adff2f>";}

      echo"".$user["name"]."   
      </td> <td align='center'>   
       ".$user["score"]."   
      </td>   
      </tr>";
   }
   echo "</table>";
}

//свитч следит за тем какую функцию надо выполнить
switch ($action)
{
   case "set": modify_table(); break;
   case "top": show_top(); break;
   default: show_top(); break;
}

//закрыть соединение, это очень важно!
mysql_close();
?>

</body>
</html>

Дальше, уже в ГМ, нам осталось только обратиться к странице на которой расположен php скрипт при помощи функции execute_shell()
Все комментарии по ней - в примере.

СКАЧАТЬ ПРИМЕР
Получается вот такая таблица



Мои игры:
LaLaLaLAMA - игра не про Ламу
GoMommy! - Invaders Must Die !!
[Caption Game] - игра в заголовке
CombatForce - долгожданный релиз
А мою аватарку можно поменять


Сообщение отредактировал YemSalat - Суббота, 12.06.2010, 17:16
 
Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Simple Mode) » Примеры, статьи » Создание онлайн таблицы рекордов без использования длл (Пример и описание)
Страница 1 из 11
Поиск:



Сообщество Gmaker.SU 2005-2012
Используются технологии uCoz
Простой вход