Assasin | Дата: Понедельник, 31 Декабря 2012, 19:08 | Сообщение # 1 |
web-coder
Сейчас нет на сайте
| Глава 3. Магазин. Карты и бонусы для игрока В магазине продаются карты и свитки. С картами ясно, они нужны для боя. А вот свитки нужны для увеличения жизненной энергии игрока. Чем она выше, тем больший шанс продержаться в бою как можно дольше и возможно выиграть. Код магазина module/shop.php. Код <?php $User = mysql_fetch_array($db->q("SELECT * FROM `user` WHERE `id`='".$_SESSION['user_id']."'"));
if (!empty($_POST['buy'])) { # Покупка if (!empty($_POST['map_id'])) { # Покупка карты # Фильтрация данных $id = preg_replace("/[^0-9]/","",$_POST['map_id']); if ($id == '') go2page("game.php"); # Проверка на существование карты $map = $db->q("SELECT * FROM `map` WHERE `id`='".$id."'"); if (mysql_num_rows($map) == 1) { $row_map = mysql_fetch_array($map); if ($row_map['cost'] <= $User['money']) { # Если хватает денег, то добавляем игроку карту, отнимаем деньги $db->q("INSERT INTO `user_map` (`user_id`,`map_id`,`att`,`abi`,`skill`,`type`) VALUES ('".$_SESSION['user_id']."','".$row_map['id']."','".$row_map['att']."','".$row_map['abi']."','".$row_map['skill']."','1')"); $db->q("UPDATE `user` SET `money`=`money`-'".$row_map['cost']."' WHERE `id`='".$_SESSION['user_id']."'"); $User['money'] -= $row_map['cost']; # Изменяем количество монет у игрока, т.к. количество монет мы получили раньше (строка 2), затем изменили их (строка 15), но данные полученные раньше не изменились, поэтому изменяются в данной строке echo "<div style='text-align: center;color: green;'>Спасибо за покупку</div>"; } else { echo "<div style='text-align: center;color: red;'>Не хватает денег</div>"; } } } elseif (!empty($_POST['item_id'])) { # Покупка "таблетки" # Фильтрация данных $id = preg_replace("/[^0-9]/","",$_POST['item_id']); if ($id == '') go2page("game.php"); # Проверка на существование "таблетки" $map = $db->q("SELECT * FROM `shop` WHERE `id`='".$id."'"); if (mysql_num_rows($map) == 1) { $row_item = mysql_fetch_array($map); if ($row_item['cost'] <= $User['money']) { # Если хватает денег, то увеличиваем количество жизненной энергии и отнимаем деньги if ($row_item['type'] == 1) { $action = json_decode($row_item['action']); $extra_sql = ''; if (!empty($action->life)) { $extra_sql = ", `life`=`life`+'".$action->life."', `mlife`=`mlife`+'".$action->life."'"; } $db->q("UPDATE `user` SET `money`=`money`-'".$row_item['cost']."' ".$extra_sql." WHERE `id`='".$_SESSION['user_id']."'"); } $User['money'] -= $row_item['cost']; echo "<div style='text-align: center;color: green;'>Спасибо за покупку</div>"; } else { echo "<div style='text-align: center;color: red;'>Не хватает денег</div>"; } } } } ?> <div style='text-align: center;'> <a href="?a=shop">Карты</a> | <a href="?a=shop&type=1">Свитки</a> </div> <table><tr> <?php if (empty($_GET['type'])) { # Список карт $sql = $db->q("SELECT * FROM `map` ORDER BY `id` ASC"); $i=1; while($row = mysql_fetch_array($sql)) { echo "<td style='padding:4px;'> <table style='width:180px;display:block;border:1px solid black;'> <tr> <td style='text-align:center;width:180px;' colspan='2'><b>".$row['name']."</b></td> </tr> <tr> <td colspan='2'><div style='width:170px;height:120px;overflow:auto;display:block;border-bottom:1px solid black;'>".$row['desc']."</div></td> </tr> <tr> <td>Атака</td> <td>".$row['att']."</td> </tr> <tr> <td>Ловкость</td> <td>".$row['abi']."</td> </tr> <tr> <td>Мастерство</td> <td>".$row['skill']."</td> </tr> <tr> <td>Цена</td> <td>".$row['cost']."</td> </tr>"; if ($User['money'] >= $row['cost']) { # Хватает денег? echo "<tr> <td style='text-align:center;width:180px;' colspan='2'> <form method='post'> <input type='hidden' value='".$row['id']."' name='map_id'> <input type='submit' value='Купить' name='buy'> </form> </td> </tr>"; } echo " </table> </td>"; if (($i%5)==0) echo "</tr><tr>"; # По 5 штук в строку $i++; } } else { # Список "таблеток" $type = preg_replace("/[^0-9]/","",$_GET['type']); if ($type == '') go2page("game.php"); $sql = $db->q("SELECT * FROM `shop` WHERE `ptype`='".$type."' ORDER BY `id` ASC"); $i=1; while($row = mysql_fetch_array($sql)) { echo "<td style='padding:4px;'> <table style='width:180px;display:block;border:1px solid black;'> <tr> <td style='text-align:center;width:180px;' colspan='2'><b>".$row['name']."</b></td> </tr> <tr> <td colspan='2'><div style='width:170px;height:120px;overflow:auto;display:block;border-bottom:1px solid black;'>".$row['desc']."</div></td> </tr> <tr> <td>Использовать на</td> <td>".($row['type'] == 1 ? 'Игрока' : 'Карту')."</td> </tr> <tr> <td>Цена</td> <td>".$row['cost']."</td> </tr>"; if ($User['money'] >= $row['cost']) { # Хватает денег? echo "<tr> <td style='text-align:center;width:180px;' colspan='2'> <form method='post'> <input type='hidden' value='".$row['id']."' name='item_id'> <input type='submit' value='Использовать' name='buy'> </form> </td> </tr>"; } echo " </table> </td>"; if (($i%5)==0) echo "</tr><tr>"; # По 5 штук в строку $i++; } } ?> </tr></table>
Как добавлять карты в магазин, Вы уже знаете. А вот как добавить свитки? Для этого откройте файл adm/shop.php. Код <?php include('../inc/db.php'); # Подключается класс БД if (!empty($_POST['create'])) { # Создание "таблетки" $db = new db; if (!empty($_GET['id'])) { # Если существует id "таблетки", то "таблетка" редактируется $sql = $db->q("SELECT * FROM `shop` WHERE `id`='".$_GET['id']."'"); if (mysql_num_rows($sql) == 1) { $_POST['desc'] = str_replace("\n","<br>",$_POST['desc']); $hp = array( 'life'=>'+'.$_POST['life'] ); $hp = json_encode($hp); $sql = $db->q("UPDATE `shop` SET `name`='".$_POST['name']."',`desc`='".$_POST['desc']."',`action`='".$hp."',`cost`='".$_POST['cost']."' WHERE `id`='".$_GET['id']."'"); if ($sql) echo '<div style="color:green;">Товар изменен</div>'; else echo "<div style='color:red;'>Ошибка<br>".mysql_error()."</div>"; } } else { # Если не существует, то создается новая "таблетка" $_POST['desc'] = str_replace("\n","<br>",$_POST['desc']); $hp = array( 'life'=>'+'.$_POST['life'] ); $hp = json_encode($hp); $sql = $db->q("INSERT INTO `shop` (`name`,`desc`,`type`,`ptype`,`action`,`cost`) VALUES ('".$_POST['name']."','".$_POST['desc']."','1','1','".$hp."','".$_POST['cost']."')"); if ($sql) echo '<div style="color:green;">Товар добавлен <a href="?id='.mysql_insert_id().'">Просмотреть</a></div>'; else echo "<div style='color:red;'>Ошибка<br>".mysql_error()."</div>"; } }
if (!empty($_GET['id'])) { # Просмотр "таблетки" $db = new db; $sql = $db->q("SELECT * FROM `map` WHERE `id`='".$_GET['id']."'"); if (mysql_num_rows($sql) == 1) { $row = mysql_fetch_array($sql); $row['desc'] = str_replace("<br>","\n",$row['desc']); $name = $row['name']; $desc = $row['desc']; $hp = json_decode($row['action']); $life = $hp->life; $cost = $row['cost']; } else { echo "<div style='color:red;'>Товар не найден</div>"; } } ?> <form method="post"> <table style="width:400px;"> <tr><td style="width:110px;">Наименование</td><td><input style="width:100%;" type="text" name="name" value="<?php echo $name; ?>" /></td></tr> <tr><td colspan="2"><textarea name="desc" style="width:400px;height:150px;"><?php echo $desc; ?></textarea></td></tr> <tr><td style="width:110px;">Цена</td><td><input style="width:100%;" type="text" name="cost" value="<?php echo $cost; ?>" /></td></tr> <tr><td style="width:110px;">Здоровье+</td><td><input style="width:100%;" type="text" name="life" value="<?php echo $life; ?>" /></td></tr> <tr><td colspan="2"><input type="submit" value="<?php if (empty($name)) { echo 'Создать'; } else { echo 'Изменить'; } ?>" name="create" /></td></tr> </table> </form>
В этом файле можно указать описание, стоимость и сколько жизненной энергии повысится.
Таблица shop - id - уникальный идентификатор - name – имя свитка - desc – описание свитка - ptype – на какой «полке» находятся свитки (1 – «полка» Свитки, зависит от параметра $_GET[‘type’]) - type – на кого применить: 1 – игрок (дальше полет вашей фантазии) - action действие свитка (в нашем случаем повышение жизненной энергии) - cost – стоимость свитка
Создайте карты по адрессу http://tgame.lovalhost/adm/map.php. Теперь можно перейти в магазин и купить созданные карты, затем добавить их в список карт для боя, т.к. в следующей главе будет сам бой!
При копировании материала ссылка на источник обязательна!
|
|
| |