Новый модуль

  • Автор темы revofenomen
  • Дата начала
revofenomen
Участник
Сообщения
121
Реакции
3
Всем привет
Увж. пользователи )
На одном из подобных проектов увидел модуль который ограничивает покупки деревьев
С самого начала вы можете купить максимально 15 деревьев
что б купить больше вам нужно докупить землю для посадки дерева
так же само и на складе
ограниченное количество фруктов он хранит
и его можно расширять только покупая больше места
а если фрукты не продать со склада и склад будет полный то больше фруктов не растет
и + они могут гныть
если кто то может написать что то на подобии то очень прошу
так как сам в этом ничего не понимаю )
 
wh1skas
wildcake
Участник
Сообщения
1.023
Реакции
438
ICQ
564739604 564739604
Предположим, в начале можно купить не более 15 деревьев. Купив расширение, сколько можно еще докупить к уже имеющимся? Тоже 15?
 
kvozimir
Участник
Сообщения
1.943
Реакции
409
ICQ
734713 734713
Skype
Скорей всего все будет зависть от размеров расширения грядки ну т.е есть выбор расширить на 10 деревьев или больше 15 а может и меньше 5 я думаю так
 
wh1skas
wildcake
Участник
Сообщения
1.023
Реакции
438
ICQ
564739604 564739604
Тогда будет сложнее сделать. Либо необходимо произвести хитрую формулу. На работу приеду, опишу примерный ход решения этой задачи.
 
revofenomen
Участник
Сообщения
121
Реакции
3
также нужно придумать сколько времени должны хранится фрукты что б не портились думаю 24 часа будет норм
также количество мест на складе как то нужно посчитать
ведь под фрукты не даш 1 место нужно больше там примерно 1000
как то так
 
wh1skas
wildcake
Участник
Сообщения
1.023
Реакции
438
ICQ
564739604 564739604
И так!
Я предлагаю для решения этой задачи ввести следующий функционал:
1. В игре будет присутствовать такой показатель как уровень склада. Отсюда будем отталкиваться и ограничивать объем купленных деревьев для каждого уровня! Например на каждый последующий уровень мы будем добавлять по 15 деревьев для доступности покупки.
2. Назовем его lv_store и внесем в таблицу db_users_b с типом данных INT и значением по умолчанию 1.
3. В файле _farm.php установим после:
PHP:
$db->Query("SELECT * FROM db_users_b WHERE id = '$usid' LIMIT 1");
$user_data = $db->FetchArray();
Вот эту строку:
PHP:
$abcde_t = $user_data["a_t"] + $user_data["b_t"] + $user_data["c_t"] + $user_data["d_t"] + $user_data["e_t"];
/// Сумма всех деревьев
$canbuy = $user_data["lv_store"] * 15; ///15 - это число доступных деревьев для уровня склада. Если уровень склада = 3, то деревьев можно купить 45 штук.
4. Мы установили переменную, которая считает все фрукты, которые есть на текущий момент у пользователя. Для проверки, можно вывести инфо об этом строчкой ниже:
PHP:
echo $abcde_t;
5. Переходим к покупке деревьев. Нам необходимо установить проверку, не превышает ли наше кол-во деревьев норму, исходя из уровня склада. Для этого идем в форму:
PHP:
if(isset($_POST["item"])){
и после:
PHP:
if($need_money <= $user_data["money_b"]){
вставляем:
PHP:
 if ($abcde_t < $canbuy ) {
Далее перед строчкой:
PHP:
}else echo "<center><font color = '8C0508'><b>Недостаточно серебра для покупки</b></font></center><BR />";
вставляем:
PHP:
}else echo "<center><font color = '8C0508'><b>Недостаточно места на складе для покупки</b></font></center><BR />";

На этом этапе не все завершается, необходимо дописать кнопку покупки расширения склада.
Киньте идеи, стоимость расширения. Я доделаю. Или доделайте самостоятельно.

Примечание: По условиям того кода, что я написал, у нас склад 1 ур., и позволяет хранить не более 15 деревьев. Если Вы будете внедрять эту систему в существующую ферму с теми данными, что есть, то могут возникнуть трудности. А какие именно, прошу написать, если будете это внедрять. Я на работе, и в ближайшие два дн не смогу сделать проверку.
 
Последнее редактирование:
kvozimir
Участник
Сообщения
1.943
Реакции
409
ICQ
734713 734713
Skype
После работы попробуй поставить..многого не обещаю

Насчёт кнопки скажу что можно ещё сделать такую же как и у обычных фруктов стоимость и на сколько можно расширить ..в принципе похожее делал для обменника фруктов на скринах должен был видеть
 
revofenomen
Участник
Сообщения
121
Реакции
3
такую же фигню нужно на количество фрукт на складе
и ограничить их время хранения
что б люди чаще заходили
 
kvozimir
Участник
Сообщения
1.943
Реакции
409
ICQ
734713 734713
Skype
  • #10
Нужно сначало это проверить а потом остальное делать...прежде чем писать что то проверь то что есть ))
 
revofenomen
Участник
Сообщения
121
Реакции
3
  • #11
;) я вам полностью доверяю
 
kvozimir
Участник
Сообщения
1.943
Реакции
409
ICQ
734713 734713
Skype
  • #12
правильно ли я выполнил запрос ALTER TABLE `db_users_b` ADD `lv_store` INT( 1 )
и подскажи как проверить все?!
если я правильно понимаю мне надо купить 15 деревьев и попытаться купить 16ое дерево и отписать что у меня получилось???
 
wh1skas
wildcake
Участник
Сообщения
1.023
Реакции
438
ICQ
564739604 564739604
  • #13
Ага, давай пока на этом остановимся, попробуй купить 16 дерево и отпишись плиз. Проверь таблицу db_users_b на наличие нового столбца.
А потом сделаю кнопку покупки расширения. Там в принципе очень просто. Создать запрос, который будет забирать у user N-денег и увеличивать lv_store на 1. По формуле появится возможность приобретать до 30 деревьев.
 
kvozimir
Участник
Сообщения
1.943
Реакции
409
ICQ
734713 734713
Skype
  • #14
да кстати правильно ли все сделал?

PHP:
<div class="s-bk-lf">
    <div class="acc-title">Фруктовая Ферма</div>
</div>
<div class="silver-bk"><div class="clr"></div>
<p>В этом магазине Вы можете приобрести саженцы различных растений. Каждое растение приносит особые плоды которые можно потом продать на рынке и обменять на реальные деньги. Каждое растение даёт разное количество плодов, чем дороже оно тем больше плодоносит. Вы можете покупать любое их количество, растения не засыхают, не исчезают и будут плодоносить всегда. </p><p><font color="#808e04">Перед тем как докупить саженцы следует собрать урожай на складе!</font></p>
</div>
<?PHP
$_OPTIMIZATION["title"] = "Фруктовая Ферма";
$usid = $_SESSION["user_id"];
$refid = $_SESSION["referer_id"];
$usname = $_SESSION["user"];

$db->Query("SELECT * FROM db_users_b WHERE id = '$usid' LIMIT 1");
$user_data = $db->FetchArray();

$abcde_t = $user_data["a_t"] + $user_data["b_t"] + $user_data["c_t"] + $user_data["d_t"] + $user_data["e_t"]
/// Сумма всех деревьев
$canbuy = $user_data["lv_store"] * 15; ///15 - это число доступных деревьев для уровня склада. Если уровень склада = 3, то деревьев можно купить 45 штук.

$db->Query("SELECT * FROM db_config WHERE id = '1' LIMIT 1");
$sonfig_site = $db->FetchArray();

# Покупка нового дерева
if(isset($_POST["item"])){

$array_items = array(1 => "a_t", 2 => "b_t", 3 => "c_t", 4 => "d_t", 5 => "e_t");
$array_name = array(1 => "Лайм", 2 => "Вишня", 3 => "Клубника", 4 => "Киви", 5 => "Апельсин");
$item = intval($_POST["item"]);
$citem = $array_items[$item];

    if(strlen($citem) >= 3){

        # Проверяем средства пользователя
        $need_money = $sonfig_site["amount_".$citem];
        if($need_money <= $user_data["money_b"]){
          if ($abcde_t < $canbuy ) {

            if($user_data["last_sbor"] == 0 OR $user_data["last_sbor"] > ( time() - 60*20) ){

                $to_referer = $need_money * 0.1;
                # Добавляем дерево и списываем деньги
                $db->Query("UPDATE db_users_b SET money_b = money_b - $need_money, $citem = $citem + 1,
                last_sbor = IF(last_sbor > 0, last_sbor, '".time()."') WHERE id = '$usid'");

                # Вносим запись о покупке
                $db->Query("INSERT INTO db_stats_btree (user_id, user, tree_name, amount, date_add, date_del)
                VALUES ('$usid','$usname','".$array_name[$item]."','$need_money','".time()."','".(time()+60*60*24*15)."')");

                echo "<center><font color = 'green'><b>Вы успешно посадили саженец</b></font></center><BR />";

                $db->Query("SELECT * FROM db_users_b WHERE id = '$usid' LIMIT 1");
                $user_data = $db->FetchArray();

            }else echo "<center><font color = 'red'><b>Перед тем как докупить саженцы следует собрать урожай на складе!</b></font></center><BR />";
          }else echo "<center><font color = '8C0508'><b>Недостаточно места на складе для покупки</b></font></center><BR />";
        }else echo "<center><font color = 'red'><b>Недостаточно серебра для покупки</b></font></center><BR />";

    }else echo 222;

}

?>



<div class="fr-block">
    <form action="" method="post">
    <div class="cl-fr-lf">
        <img src="/img/fruit/lime.jpg" />
    </div>

    <div class="cl-fr-rg" style="padding-left:20px;">
        <div class="fr-te-gr-title"><b>Лайм</b></div>
        <div class="fr-te-gr"><b>Плодовитость: </b><font color="#000000"><?=$sonfig_site["a_in_h"]; ?> в час</font></div>
        <div class="fr-te-gr"><b>Стоимость: </b><font color="#000000"><?=$sonfig_site["amount_a_t"]; ?> серебра</font></div>
        <div class="fr-te-gr"><b>Куплено Вами: </b><font color="#000000"><?=$user_data["a_t"]; ?> шт.</font></div>
        <input type="hidden" name="item" value="1" />
        <input type="submit" value="Посадить" style="height: 30px; margin-top:10px;" />
    </div>
    </form>
</div>

<div class="fr-block">
    <form action="" method="post">
    <div class="cl-fr-lf">
        <img src="/img/fruit/cherry.jpg" />
    </div>

    <div class="cl-fr-rg" style="padding-left:20px;">
        <div class="fr-te-gr-title"><b>Вишня</b></div>
        <div class="fr-te-gr"><b>Плодовитость: </b><font color="#000000"><?=$sonfig_site["b_in_h"]; ?> в час</font></div>
        <div class="fr-te-gr"><b>Стоимость: </b><font color="#000000"><?=$sonfig_site["amount_b_t"]; ?> серебра</font></div>
        <div class="fr-te-gr"><b>Куплено Вами: </b><font color="#000000"><?=$user_data["b_t"]; ?> шт.</font></div>
        <input type="hidden" name="item" value="2" />
        <input type="submit" value="Посадить" style="height: 30px; margin-top:10px;">
    </div>
    </form>
</div>

<div class="fr-block">
    <form action="" method="post">
    <div class="cl-fr-lf">
        <img src="/img/fruit/strawberries.jpg" />
    </div>

    <div class="cl-fr-rg" style="padding-left:20px;">
        <div class="fr-te-gr-title"><b>Клубника</b></div>
        <div class="fr-te-gr"><b>Плодовитость:</b> <font color="#000000"><?=$sonfig_site["c_in_h"]; ?> в час</font></div>
        <div class="fr-te-gr"><b>Стоимость: </b><font color="#000000"><?=$sonfig_site["amount_c_t"]; ?> серебра</font></div>
        <div class="fr-te-gr"><b>Куплено Вами:</b> <font color="#000000"><?=$user_data["c_t"]; ?> шт.</font></div>
        <input type="hidden" name="item" value="3" />
        <input type="submit" value="Посадить" style="height: 30px; margin-top:10px;">
    </div>
    </form>
</div>

<div class="fr-block">
    <form action="" method="post">
    <div class="cl-fr-lf">
        <img src="/img/fruit/kiwi.jpg" />
    </div>

    <div class="cl-fr-rg" style="padding-left:20px;">
        <div class="fr-te-gr-title"><b>Киви</b></div>
        <div class="fr-te-gr"><b>Плодовитость: </b><font color="#000000"><?=$sonfig_site["d_in_h"]; ?> в час</font></div>
        <div class="fr-te-gr"><b>Стоимость: </b><font color="#000000"><?=$sonfig_site["amount_d_t"]; ?> серебра</font></div>
        <div class="fr-te-gr"><b>Куплено Вами: </b><font color="#000000"><?=$user_data["d_t"]; ?> шт.</font></div>
        <input type="hidden" name="item" value="4" />
        <input type="submit" value="Посадить" style="height: 30px; margin-top:10px;">
    </div>
    </form>
</div>

<div class="fr-block">
    <form action="" method="post">
    <div class="cl-fr-lf">
        <img src="/img/fruit/orange.jpg" />
    </div>

    <div class="cl-fr-rg" style="padding-left:20px;">
        <div class="fr-te-gr-title"><b>Апельсин</b></div>
        <div class="fr-te-gr"><b>Плодовитость: </b><font color="#000000"><?=$sonfig_site["e_in_h"]; ?> в час</font></div>
        <div class="fr-te-gr"><b>Стоимость:</b> <font color="#000000"><?=$sonfig_site["amount_e_t"]; ?> серебра</font></div>
        <div class="fr-te-gr"><b>Куплено Вами: </b><font color="#000000"><?=$user_data["e_t"]; ?> шт.</font></div>
        <input type="hidden" name="item" value="5" />
        <input type="submit" value="Посадить" style="height: 30px; margin-top:10px;">
    </div>
    </form>
</div>
<div class="clr"></div>
 
wh1skas
wildcake
Участник
Сообщения
1.023
Реакции
438
ICQ
564739604 564739604
  • #15
На первый взгляд, правильно ) Тестируй, и отпишись ))
 
kvozimir
Участник
Сообщения
1.943
Реакции
409
ICQ
734713 734713
Skype
  • #16
что то я не так сделал у меня страница пустая вылазил,в базе столбей появился
 
wh1skas
wildcake
Участник
Сообщения
1.023
Реакции
438
ICQ
564739604 564739604
  • #17
PHP:
$abcde_t = $user_data["a_t"] + $user_data["b_t"] + $user_data["c_t"] + $user_data["d_t"] + $user_data["e_t"]
поменяй на
PHP:
$abcde_t = $user_data["a_t"] + $user_data["b_t"] + $user_data["c_t"] + $user_data["d_t"] + $user_data["e_t"];
Ну проще говоря в конце этой строчки добавь точку с запятой : D
 
kvozimir
Участник
Сообщения
1.943
Реакции
409
ICQ
734713 734713
Skype
  • #18
хех не заметит знак ; не стоял

теперь все работает,но появилась вот что у меня

выходит что не могу купить типа из за того что не хватает места
 
ksander
Участник
Сообщения
102
Реакции
16
  • #19
Тут как я понял сперва все суммируется ?
Проверь остальные деревья пустые ?
 
wh1skas
wildcake
Участник
Сообщения
1.023
Реакции
438
ICQ
564739604 564739604
  • #20
Эта запись появляется, если у тебя больше 14 построек всего. Неважно каких. Сумма больше 14. Это на первый уровень склада.
 
Сверху