Суббота, 20 Апреля 2024, 00:17

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Движки для браузерных игр » Новые уроки по создание броузерной игры – 7 - Часть 1 (О боже, мои глаза. Они хотят спать :D)
Новые уроки по создание броузерной игры – 7 - Часть 1
last2424Дата: Четверг, 21 Августа 2014, 07:20 | Сообщение # 1
30 мл. блоков
Сейчас нет на сайте
Боже мой, я спать хочу но всё равно писать урок решил, будьте благодарны, smile

<-- пред урок

Я сразу предупрежу, перед тем как мы приступим к делу, в этот раз… ну… скажем так,… комментариев будет немного меньше, так, как… моё сегодняшнее состояние… ну вы поняли. Также я сделал всё как можно примитивнее, так, как это уроки, а вы должны учится делать своё, я вам показываю максимально то что может сделать любой из вас, вы же можете потом сделать из этого более удобную вещь, ответ на домашнее задание уже будет в, скрипте game.php, поэтому не переживайте, не буду особо говорить о реализаций.

Начнём. Нам предстоит создать 8 новых файлов и изменить примерно 6 файлов.

Начнём с .htaccess, важная штука вы должны хорошенько задавать настройки вашей игре, но в данном случае я туда добавил только то что в .js файле может работать php код(потом вы поймёте почему).

Код
AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>


Как это работает я уже объяснил, поэтому пойдём дальше.

Game.php:
Код
<?
header("Cache-Control: no-store, no-cache"); //отключаем кеширование, кеш - плохо
set_time_limit(0); // скрипт работает бесконечно

include 'conf.php'; // вставляем конфигурацию в игру

if($server_work == 1 and $_SESSION['login_player'] != null){ //проверяем если сервер включён и пользователь авторизировался
?>
<!DOCTYPE html>
<html>
<head>
<title>THEBESTGAME</title>
<script src="condisk_server.js"></script> <!--Подключаем condisk_server.js-->
<script src="game.js"></script><!--Подключаем game.js-->
<script src="chat.js"></script><!--Подключаем chat.js-->
<link rel="stylesheet" href="style_game.css"/><!--Подключаем стили-->
</head>
<body>
<canvas id="map"></canvas>
<div id="chat">
<iframe src="chat_messages.php" width="898" height="200" id="sms"><!--Создаём фрейм через который подключаем chat_messages.php для вывода сообщений-->
        </iframe>
</div><div id="smeski"><input type="text" name="mes" value="" method="post"/><input type="submit" onclick="var mes = document.getElementsByName('mes')[0].value; sub(mes);" method="post"/></div><!--Форма для отправки сообщений-->
<div id="menu"><a href="inventory.php" target="_blank"><img src="images/invopen.png"/></a><a href="quests.php" target="_blank"><img src="images/queopen.png"/></a><a href="skills.php" target="_blank"><img src="images/mageopen.png"/></a></div> <!--Меню-->
</body>
</html>
<?        

}else if($_SESSION['login_player'] == null){ //если пользователь не авторизирован

echo 'Вы не авторизирвоались!'; // выводим строчку "Вы не авторизировались!"

}else if($server_work != 1){ //если сервер не включён

echo 'Сервер выключен.'; // выводим строчку "Сервер выключен."

}

?>


Тут можно увидеть что я подключил новый файл: chat.js. Он отвечает за функций игрового чата, кроме того были добавлены ещё форма отправки сообщение и iframe с выводом этих сообщений, а также меню из кнопок-картинок(все картинки в конце урока).

Reg.php:
Код
<?
include 'conf.php'; //подключаем конфиг
$select = $users->findOne(array('login' => $_POST['login']));
if(isSet($_POST['regestration']) && $_POST['password'] == $_POST['repassword'] && preg_match('/[0-9a-zA-Z]/', $_POST['password']) && preg_match('/[0-9a-zA-Z]/', $_POST['login']) && $_POST['login'] != $select['login']){ //если пароли одинаковы и в них вообще чего-нибудь написано
$users->insert( //запись в бд
               array(
                    'login' => $_POST['login'], //логин пользователя
                    'password' => $_POST['password'], //пароль пользователя
           'email' => $_POST['email'], //эмэйл пользователя
           //основные характеристики персонажа
           'charaster_class' => "",
           'lvl' => 1,
                    'xp' => 0,
                    'hp' => 100,
                    'mn' => 100,           
           //второстепенные характеристики персонажа
           'strength' => 0,
           'speed' => 0,
           'intelligence' => 0,
           'faith' => 0,
           'count_up' => 50,
           //динамические данные
           'x' => 0,
           'y' => 0,
           'session_id' => 0
           ));
$inventory->insert( //запись в бд
               array(
                    'login' => $_POST['login'], //логин пользователя
           '1' => "invcell",
           '2' => "invcell",
           '3' => "invcell",
           '4' => "invcell",
           '5' => "invcell",
           '6' => "invcell",
           '7' => "invcell",
           '8' => "invcell",
           '9' => "invcell",
           'weapon' => "weapon"
           ));        
           $_SESSION['login_player'] = $_POST['login'];
echo '<script>
            document.location.href = "http://25.120.133.229/charcreater.php";
            </script>';//и переходим на страницу с с созданием персонажа
}
?>
<!DOCTYPE html>
<html>
<head>
<title>THE BEST GAME</title>
<link rel="stylesheet" type="text/css" href="stylereg.css">
</head>
<form action="reg.php" method="post">
<body>
<input type="text" placeholder="Login" name="login" class="textinputlogin"/>
<input type="email" placeholder="Email" name="email" class="textinputemail"/>
<input type="password" placeholder="Password" name="password" class="textinputpassword"/>
<input type="password" placeholder="Repeat password" name="repassword" class="textinputrepassword"/>
<input type="submit" value="Зарегистрироваться" name="regestration" class="button"/>
</form>
</body>
</html>


Тут я добавил новую форму только она добавляется в коллекцию inventory – это инвентарь игрока, он создаётся при регистраций.

Game.js:
Код
<?
include 'conf.php';
$data_player = $users->findOne(array('login' => $_SESSION['login_player'])); //вытаскиваем данные пользователя
?>

var karta; //экран
var ckarta; //контекст экрана

var gameWidth = 900; //ширина игрового экрана
var gameHeight = 400; //высота игрового экрана

var groundgreen = new Image(); //создаём переменную groundgreen в которую пихаем новый экземляр картинки
groundgreen.src = "images/groundgreen.jpg"; //указываем где находится картинка

var tree = new Image(); //создаём переменную tree в которую пихаем новый экземляр картинки
tree.src = "images/tree.png"; //указываем где находится картинка

var hp = new Image();
hp.src = "images/hp.png";

var mn = new Image();
mn.src = "images/mn.png";

window.onload = function(){ //функция старта
karta = document.getElementById("map"); //подключаем canvas к карте
ckarta = map.getContext("2d"); //в даём доступ к канвасу для рисования

karta.width = gameWidth; //ширина экрана
karta.height = gameHeight //высота экрана
drawImg(); //запускаем функцию рисования

}

function drawImg() //обьявляем функцию drawImg
{
for(var x = 0; x < 29; x++){ //запускаем первый цикл в котором у нас рисуется вся трава по x
        for(var y = 0; y < 13; y++){ //запускаем второй цикл в котором у нас рисуется вся трава по y
        ckarta.drawImage(groundgreen, 0, 0, gameWidth, gameHeight, 32*x, 32*y, gameWidth, gameHeight); //рисуем <img src="http://s12.ucoz.net/sm/1/smile.gif" border="0" align="absmiddle" alt="smile" />
}
}
for(var x = 0; x < 5; x++){ //запускаем первый цикл в котором у нас рисуются деревья по x
        for(var y = 0; y < 3; y++){//запускаем первый цикл в котором у нас рисуются деревья по y
        ckarta.drawImage(tree, 0, 0, gameWidth, gameHeight, 200*x, 150*y, gameWidth, gameHeight); //рисую
        }
        }
        for(var i = 0; i < <?echo $data_player['hp'];?>; i++){
        ckarta.drawImage(hp, 0, 0, gameWidth, gameHeight, 1*i, 0, gameWidth, gameHeight); //рисую
        }        
         for(var i = 0; i < <?echo $data_player['mn'];?>; i++){
        ckarta.drawImage(mn, 0, 0, gameWidth, gameHeight, 1*i, 6, gameWidth, gameHeight); //рисую
        }        
}


Вот наконец то мы используем php в js файле, тут я в данном случае только вывожу количество здоровье и манны через php, связываюсь с БД, я вижу это крайне удобным, не думаете?

Conf.php:
Код
<?session_start(); // запускаем сессию
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] .'../sessions/'); //меняем место положение наших сессий(возможно на бесплатных хостингах работать не будет закомементируйте, если что)
ini_set('session.gc_maxlifetime', 120960); //долгая жизнь сессий
$server_work = 1;
$dbhost = 'localhost'; //адрес хоста к mongodb
$dbname = 'thebestgame'; //имя базы данных

//подключение к mongodb
$m = new Mongo("mongodb://$dbhost");
$db = $m->$dbname;

//коллекций из которых делается выборка
$users = $db->users;
$chat = $db->chat;
$inventory = $db->inventory;
$items = $db->items;
$quests = $db->quests;
?>


Тут я добавил в список новые коллекций: chat, inventory, items, quests.

Style_game.css:
Код

body {
background: #000;
margin: 0px;
padding: 0px;
}
img{
vertical-align: middle;
}
#chat {
background: #fff;
width: 900px;
height: 200px;
display: block;
}
#smeski {
background: #fff;
width: 900px;
}

#map        
{
display: block;
background: #fff;
}
#menu{
display: block;
width: 900px;
height: 200px;
}

#ms{
background: #fff;
}

#inventory{
display: block;
margin: 0px;
}

#quest {
background: #F0A303;
display: block;
border: 1;
border-color: red;
width: 600px;
}

#white_text{
color: #fff;
}


Тут я добавил только разные, новые таблицы со стилями.

Skills.php:
Код
<?
header("Cache-Control: no-store, no-cache"); //отключаем кеширование, кеш - плохо
set_time_limit(0); // скрипт работает бесконечно

include 'conf.php'; // вставляем конфигурацию в игру

$data_player = $users->findOne(array('login' => $_SESSION['login_player'])); //вытаскиваем инвентарь

if($server_work == 1 and $_SESSION['login_player'] != null){ //проверяем если сервер включён и пользователь авторизировался
?>
<!DOCTYPE html>
<html>
<head>
<title>THEBESTGAME</title>
<script src="skills.js"></script> <!--Подключаем skills.js-->
<link rel="stylesheet" href="style_game.css"/><!--Подключаем стили-->
</head>
<body>
<p id="white_text"><?echo "Колличество очков для прокачки: ".$data_player['count_up'];?></p>
<p id="white_text">Здоровье:<?echo " ".$data_player['hp']." ";?> <a href="" onclick="hpplus();">+</a></p>
<p id="white_text">Мана: <?echo " ".$data_player['mn']." ";?><a href="" onclick="mnplus();">+</a></p>
<p id="white_text">Сила: <?echo " ".$data_player['strength']." ";?><a href="" onclick="stplus();">+</a></p>
<p id="white_text">Скорость: <?echo " ".$data_player['speed']." ";?><a href="" onclick="spplus();">+</a></p>
<p id="white_text">Интелект: <?echo " ".$data_player['intelligence']." ";?><a href="" onclick="intplus();">+</a></p>
<p id="white_text">Вера: <?echo " ".$data_player['faith']." ";?><a href="" onclick="ftplus();">+</a></p>
<div id="test"></div>
</body>
</html>
<?        

}else if($_SESSION['login_player'] == null){ //если пользователь не авторизирован

echo 'Вы не авторизирвоались!'; // выводим строчку "Вы не авторизировались!"

}else if($server_work != 1){ //если сервер не включён

echo 'Сервер выключен.'; // выводим строчку "Сервер выключен."

}

?>


Это примерно такая же вещь как и во время создание персонажа – прокачка.

В данном случае просто вывод, с кнопками.

Код
var xmlhttp; //переменная через которую будут многие функций протекать

if (window.XMLHttpRequest) // если наш браузер использует XMLHttpRequest
         {
         xmlhttp=new XMLHttpRequest(); //в переменную записываем новый экземляр класса XMLHttpRequest
         }
else if(window.ActiveXObject("Microsoft.XMLHTTP")) //иначе если у нас используется ActiveXObject("Microsoft.XMLHTTP")
         {
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); //записываем новый экземляр класса ActiveXObject("Microsoft.XMLHTTP")
         }else{ //иначе
           xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); //записываем новый экземляр класса ActiveXObject("Msxml2.XMLHTTP")
         }        
                
function hpplus(){
xmlhttp.onreadystatechange=function() //через xmlhttp.onreadystatechange постоянно смотрим за состоянием xmlhttp
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) //если запрос удачно отправлен(или принят, я не помню уже) и статус равен 200, а не 404 или чему то другому
           {
           }
         }
xmlhttp.open("POST","server.php",true); //открываем асинхронное соединение с адресом server.php методом POST
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //отправляем заголовок, таким образом имитируя форму, POST запрос всегда требует        
xmlhttp.send("hpplus=1"); //отправляем сообщение
}

function mnplus(){
xmlhttp.onreadystatechange=function() //через xmlhttp.onreadystatechange постоянно смотрим за состоянием xmlhttp
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) //если запрос удачно отправлен(или принят, я не помню уже) и статус равен 200, а не 404 или чему то другому
           {
           }
         }
xmlhttp.open("POST","server.php",true); //открываем асинхронное соединение с адресом server.php методом POST
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //отправляем заголовок, таким образом имитируя форму, POST запрос всегда требует        
xmlhttp.send("mnplus=1"); //отправляем сообщение
}

function stplus(){
xmlhttp.onreadystatechange=function() //через xmlhttp.onreadystatechange постоянно смотрим за состоянием xmlhttp
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) //если запрос удачно отправлен(или принят, я не помню уже) и статус равен 200, а не 404 или чему то другому
           {
           }
         }
xmlhttp.open("POST","server.php",true); //открываем асинхронное соединение с адресом server.php методом POST
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //отправляем заголовок, таким образом имитируя форму, POST запрос всегда требует        
xmlhttp.send("stplus=1"); //отправляем сообщение
}

function spplus(){
xmlhttp.onreadystatechange=function() //через xmlhttp.onreadystatechange постоянно смотрим за состоянием xmlhttp
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) //если запрос удачно отправлен(или принят, я не помню уже) и статус равен 200, а не 404 или чему то другому
           {
           }
         }
xmlhttp.open("POST","server.php",true); //открываем асинхронное соединение с адресом server.php методом POST
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //отправляем заголовок, таким образом имитируя форму, POST запрос всегда требует        
xmlhttp.send("spplus=1"); //отправляем сообщение
}

function intplus(){
xmlhttp.onreadystatechange=function() //через xmlhttp.onreadystatechange постоянно смотрим за состоянием xmlhttp
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) //если запрос удачно отправлен(или принят, я не помню уже) и статус равен 200, а не 404 или чему то другому
           {
           }
         }
xmlhttp.open("POST","server.php",true); //открываем асинхронное соединение с адресом server.php методом POST
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //отправляем заголовок, таким образом имитируя форму, POST запрос всегда требует        
xmlhttp.send("intplus=1"); //отправляем сообщение
}

function ftplus(){
xmlhttp.onreadystatechange=function() //через xmlhttp.onreadystatechange постоянно смотрим за состоянием xmlhttp
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) //если запрос удачно отправлен(или принят, я не помню уже) и статус равен 200, а не 404 или чему то другому
           {
           }
         }
xmlhttp.open("POST","server.php",true); //открываем асинхронное соединение с адресом server.php методом POST
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //отправляем заголовок, таким образом имитируя форму, POST запрос всегда требует        
xmlhttp.send("ftplus=1"); //отправляем сообщение
}


Тут ещё всё проще, мы создаём AJAX запрос, и создаём 6 разных функций в которых выполнятся одно и тоже только разные названия. В данном случае они отправляют на сервер то что игрок нажал на “+” возле одного из характеристик персонажа.

Сервер сделаете изменим в последнюю очередь, когда я добавлю инвентарь, чат и таблицу с квестами.

Inventory.php:
Код
<?
header("Cache-Control: no-store, no-cache"); //отключаем кеширование, кеш - плохо
set_time_limit(0); // скрипт работает бесконечно

include 'conf.php'; // вставляем конфигурацию в игру

$data_inventory = $inventory->findOne(array('login' => $_SESSION['login_player'])); //вытаскиваем инвентарь

if($server_work == 1 and $_SESSION['login_player'] != null){ //проверяем если сервер включён и пользователь авторизировался
?>
<!DOCTYPE html>
<html>
<head>
<title>THEBESTGAME</title>
<script src="inventory.js"></script> <!--Подключаем inventory.js-->
<link rel="stylesheet" href="style_game.css"/><!--Подключаем стили-->
</head>
<body>
<img src="images/backwindow.png"/><img src="images/backwindow.png"/><img src="images/backwindow.png"/><img src="images/backwindow.png"/><img src="images/backwindow.png"/><br/>
<img src="images/backwindow.png"/><img src="images/items/<?echo $data_inventory['1'];?>.png" onclick="equp('1', '<?echo $data_inventory['1'];?>'); document.location.href = document.location;" oncontextmenu="itemDrop('1'); return false; document.location.href = document.location;"/><img src="images/items/<?echo $data_inventory['2'];?>.png" onclick="equp('2', '<?echo $data_inventory['2'];?>'); document.location.href = document.location;" oncontextmenu="itemDrop('2'); return false; document.location.href = document.location;"/><img src="images/items/<?echo $data_inventory['3'];?>.png" onclick="equp('3', '<?echo $data_inventory['3'];?>'); document.location.href = document.location;" oncontextmenu="itemDrop('3'); return false; document.location.href = document.location;"/><img src="images/backwindow.png"/><br/>
<img src="images/backwindow.png"/><img src="images/items/<?echo $data_inventory['4'];?>.png" onclick="equp('4', '<?echo $data_inventory['4'];?>');" oncontextmenu="itemDrop('4'); return false;"/><img src="images/items/<?echo $data_inventory['5'];?>.png" onclick="equp('5', '<?echo $data_inventory['5'];?>'); document.location.href = document.location;" oncontextmenu="itemDrop('5'); return false; document.location.href = document.location;"/><img src="images/items/<?echo $data_inventory['6'];?>.png" onclick="equp('6', '<?echo $data_inventory['6'];?>'); document.location.href = document.location;" oncontextmenu="itemDrop('6'); return false; document.location.href = document.location;"/><img src="images/backwindow.png"/><br/>
<img src="images/backwindow.png"/><img src="images/items/<?echo $data_inventory['7'];?>.png" onclick="equp('7', '<?echo $data_inventory['7'];?>');" oncontextmenu="itemDrop('7'); return false;"/><img src="images/items/<?echo $data_inventory['8'];?>.png" onclick="equp('8', '<?echo $data_inventory['8'];?>'); document.location.href = document.location;" oncontextmenu="itemDrop('8'); return false; document.location.href = document.location;"/><img src="images/items/<?echo $data_inventory['9'];?>.png" onclick="equp('9', '<?echo $data_inventory['9'];?>'); document.location.href = document.location;" oncontextmenu="itemDrop('9'); return false; document.location.href = document.location;"/><img src="images/backwindow.png"/><br/>
<img src="images/backwindow.png"/><img src="images/backwindow.png"/><img src="images/items/<?echo $data_inventory['weapon'];?>.png" onclick="unequp('<?echo $data_inventory['weapon'];?>'); document.location.href = document.location;" oncontextmenu="itemDropweapon('weapon'); return false; document.location.href = document.location;"/><img src="images/backwindow.png"/><img src="images/backwindow.png"/>
<div id="test"></div>
</body>
</html>
<?        

}else if($_SESSION['login_player'] == null){ //если пользователь не авторизирован

echo 'Вы не авторизирвоались!'; // выводим строчку "Вы не авторизировались!"

}else if($server_work != 1){ //если сервер не включён

echo 'Сервер выключен.'; // выводим строчку "Сервер выключен."

}

?>


Тут я просто рисую картинки и отправляю запросы в Js файл если игрок нажал правой или левой кнопкой мыши(эти запросы разные, в зависимости от кнопки мыши).

Inventory.js:
Код
var xmlhttp; //переменная через которую будут многие функций протекать
if (window.XMLHttpRequest) // если наш браузер использует XMLHttpRequest
         {
         xmlhttp=new XMLHttpRequest(); //в переменную записываем новый экземляр класса XMLHttpRequest
         }
else if(window.ActiveXObject("Microsoft.XMLHTTP")) //иначе если у нас используется ActiveXObject("Microsoft.XMLHTTP")
         {
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); //записываем новый экземляр класса ActiveXObject("Microsoft.XMLHTTP")
         }else{ //иначе
           xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); //записываем новый экземляр класса ActiveXObject("Msxml2.XMLHTTP")
         }        
function newItem(name){
xmlhttp.onreadystatechange=function() //через xmlhttp.onreadystatechange постоянно смотрим за состоянием xmlhttp
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) //если запрос удачно отправлен(или принят, я не помню уже) и статус равен 200, а не 404 или чему то другому
           {
           }
         }
xmlhttp.open("POST","server.php",true); //открываем асинхронное соединение с адресом server.php методом POST
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //отправляем заголовок, таким образом имитируя форму, POST запрос всегда требует        
xmlhttp.send("nameitem=" + name); //отправляем запрос с данными которые записаны в скобках
}

function equp(id, iname){
xmlhttp.onreadystatechange=function() //через xmlhttp.onreadystatechange постоянно смотрим за состоянием xmlhttp
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) //если запрос удачно отправлен(или принят, я не помню уже) и статус равен 200, а не 404 или чему то другому
           {
         document.getElementById("test").innerHTML=xmlhttp.responseText;
           }
         }
xmlhttp.open("POST","server.php",true); //открываем асинхронное соединение с адресом server.php методом POST
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //отправляем заголовок, таким образом имитируя форму, POST запрос всегда требует        
xmlhttp.send("itemname=" + iname + "&cell_id=" + id); //отправляем запрос с данными которые записаны в скобках
}

function itemDrop(cell){
xmlhttp.onreadystatechange=function() //через xmlhttp.onreadystatechange постоянно смотрим за состоянием xmlhttp
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) //если запрос удачно отправлен(или принят, я не помню уже) и статус равен 200, а не 404 или чему то другому
           {
        document.getElementById("test").innerHTML=xmlhttp.responseText;
           }
         }
xmlhttp.open("POST","server.php",true); //открываем асинхронное соединение с адресом server.php методом POST
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //отправляем заголовок, таким образом имитируя форму, POST запрос всегда требует        
xmlhttp.send("cell=" + cell); //отправляем запрос с данными которые записаны в скобках(опять)
}

function itemDropweapon(cell2){
xmlhttp.onreadystatechange=function() //через xmlhttp.onreadystatechange постоянно смотрим за состоянием xmlhttp
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) //если запрос удачно отправлен(или принят, я не помню уже) и статус равен 200, а не 404 или чему то другому
           {
        document.getElementById("test").innerHTML=xmlhttp.responseText;
           }
         }
xmlhttp.open("POST","server.php",true); //открываем асинхронное соединение с адресом server.php методом POST
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //отправляем заголовок, таким образом имитируя форму, POST запрос всегда требует        
xmlhttp.send("cell2=" + cell2); //отправляем запрос с данными которые записаны в скобках(опять)
}

function unequp(itename){
xmlhttp.onreadystatechange=function() //через xmlhttp.onreadystatechange постоянно смотрим за состоянием xmlhttp
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200) //если запрос удачно отправлен(или принят, я не помню уже) и статус равен 200, а не 404 или чему то другому
           {
        document.getElementById("test").innerHTML=xmlhttp.responseText;
           }
         }
xmlhttp.open("POST","server.php",true); //открываем асинхронное соединение с адресом server.php методом POST
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //отправляем заголовок, таким образом имитируя форму, POST запрос всегда требует        
xmlhttp.send("itename=" + itename); //отправляем запрос с данными которые записаны в скобках(опять)
}


Тут у нас создаётся аякс запрос и в зависимости от функций у нас отправляется одна из команд: если появился новый предмет, если он экипирован, он его выкинули, если его сняли.

Часть 2 ->>


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Четверг, 21 Августа 2014, 14:30
-l33t-h4xx-Дата: Четверг, 21 Августа 2014, 09:11 | Сообщение # 2
участник
Сейчас нет на сайте
Броузер? Я в 98-ом году?

Как правильно задавать вопросы
last2424Дата: Четверг, 21 Августа 2014, 10:04 | Сообщение # 3
30 мл. блоков
Сейчас нет на сайте
-l33t-h4xx-, ну, для оригинальности я их так назвал. biggrin

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
FolleahДата: Четверг, 21 Августа 2014, 10:23 | Сообщение # 4
Архитектор
Сейчас нет на сайте
Цитата -l33t-h4xx- ()
Броузер? Я в 98-ом году?

Олдфаги оценят. А ньюфаги не тру.


last2424Дата: Четверг, 21 Августа 2014, 11:20 | Сообщение # 5
30 мл. блоков
Сейчас нет на сайте
Folleah, ну я не олдфаг, просто мне так и хочется через эту букву "О", в названий пройти. biggrin

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
nikanatorДата: Вторник, 02 Сентября 2014, 16:14 | Сообщение # 6
был не раз
Сейчас нет на сайте
Оффтоп
Цитата last2424 ()
ну я не олдфаг, просто мне так и хочется через эту букву "О", в названий пройти.

каверкать слова для оригинальности звучания чтобы сделать пост оригинальнее не делает автора поста оригинальнее, но на этот раз ты выиграл и угодил грамар ниции и oldfaggotам. bag
Форум игроделов » Движки для разработки игр и сложные системы разработки » Движки для браузерных игр » Новые уроки по создание броузерной игры – 7 - Часть 1 (О боже, мои глаза. Они хотят спать :D)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг