Магазин

ISQUAD

Новичок
Репутация
10 / 175
Здрасьте! :)

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

Код:
if ($player["БАБЛО"]<$ВЕЩЬ["БАБЛО"]*$КОЛ-ВО вещей) {
echo ('[b]Не хватает БАБЛА.[/b]');
elseif ($player["ВРЕМЯ ПОСЛЕДНЕЙ ПОКУПКИ"]>time())
echo ("Ещё не прошло 2х минут с момента последней покупки");
else {
echo "УРА, вещь куплена!";
mysql_query("UPDATE таблица юзера SET ячейка=".(time()+120)." WHERE id=айди юзера LIMIT 1");
// Добавляем запрос в новую ячейку 
}
}
 
Вот как-то так получается:
Код:
if ($user["money"]<$itmId["price1"]*$count) {
echo ('[b]Не хватает БАБЛА.[/b]');
} elseif (($user->data['time']>time()) && $user->admin<1) {
echo ("Ещё не прошло 2х минут с момента последней покупки");
} else {
echo "УРА, вещь куплена!";
mysql_query('UPDATE `users` SET `time`=".(time()+120)." WHERE `id`="'.$user->id.'" LIMIT 1');
}
}

ошибка после попытки купить вещь
Fatal error: Cannot use object of type User as array in /home/o/oopswarru/public_html/inc/location/shop_t.php on line 65

в этой строчке что не правильно прописал:
if ($user["money"]<$itmId["money"]*$count) {
 
Опять кода мало показываешь.

Код:
$itmId
// и
$count

покажи, по всей видимости ошибка оттуда)
 
Из-за глюка сообщение отправил повторно - прошу удалить.
 
соврал(.. :))

выходит у меня только сообщение типа раз в 6 часов покупка.. а покупать покупает хоть каждую секунду ))

вот такой код покупки

Код:
    /*покупка*/
    if(isset($_GET['del']) && isset($_GET['set']) && $user->admin==1) 
        {
        mysql_query("DELETE FROM `shop_t` WHERE `itmId`='".$_GET['set']."'");
        print"удалено";
        }
    if($useInv==1 && (isset($_GET['buy']) && isset($_GET['set'])) || (isset($_POST['count']) && isset($_POST['set'])))
    {
    
        if(isset($_GET['buy']) && isset($_GET['set'])) 
        {
        $set = $_GET['set'];
        } elseif (isset($_POST['count'])) 
        {
        $set = $_POST['set'];
        }
        $itmInf = mysql_fetch_array(mysql_query('SELECT itm.*,sh.* FROM `items_main` AS `itm` LEFT JOIN `shop_t` AS `sh` ON (itm.id=sh.itmId) WHERE itm.id="'.mysql_real_escape_string($set).'" LIMIT 1'));
        if(isset($itmInf['id']))
        {
            if($user->money < $itmInf['price1']) {
            $user->error = 'У вас недостаточно денег';
            } elseif ($itmInf['kolvo']<1) 
            {
            $user->error = 'Товар закончился';
            } else {
                if(isset($_POST['count'])) 
                {
                    $_POST['count'] = (int)$_POST['count'];
                    if(($_POST['count']*$itmInf['price1']) > $user->money) 
                    {
                    $user->error = 'У вас недостаточно денег';
                    } elseif(($_POST['count']>1 || $_POST['count'] <= 0) || !is_int($_POST['count']) || $itmInf['kolvo']+$_POST['count']<0) 
                    {
                    $user->error = 'Что-то тут не так...';
                    
                    
                    } else {
                        $user->money -= $itmInf['price1']*$_POST['count'];
                        $user->error ='Вы купили &quot;'.$itmInf['name'].'&quot; ('.$_POST['count'].' шт.)';
                        $log = '&quot;'.$user->login.'&quot;['.$user->level.'] купил в Лавке Темных товар: &quot;'.$itmInf['name'].' ('.$_POST['count'].' шт.)&quot; за '.($itmInf['price1']*$_POST['count']).' зол. ('.$user->city.')';
                        $user->add_trf($user->id,$user->id,$log,$user->ip,$user->ip);
                        $user->data['time']>time() && $user->admin<1;
                        echo ("Ещё не прошло 6-ти часов с момента последней покупки");
                        mysql_query('START TRANSACTION');
                        mysql_query('UPDATE `users` set `money`="'.$user->money.'" WHERE `id`="'.$user->id.'"');
                        $itmInf['kolvo'] -= 1*$_POST['count'];
                        mysql_query('UPDATE `shop_t` SET `kolvo`="'.$itmInf['kolvo'].'" WHERE `id`="'.$itmInf['id'].'"');                            
                        $i = 1;
                        while($i<=(int)$_POST['count'])
                        {
                        mysql_query('UPDATE `users` set `time`=".(time()+21600)." WHERE `id`="'.$user->id.'" LIMIT 1');
                        
                        mysql_query('INSERT INTO `items_users` (`itmId`,`uid`,`name`,`img`,`type`,`inSlot`,`2h`,`iznosMax`,`inRazdelInv`,`price1`,`price2`,`magic_chance`,`noTransfer`,`inv`,`group`,`info`,`madein`,`noremont`,`massa`,`odet`,`used`,`magicUse`,`inOtdel`,`gift`,`complect`,`newstats`,`timeAdd`,`srok`,`tr`,`adds`,`props`,`atacks`) VALUES ("'.$itmInf['id'].'","'.$user->id.'","'.$itmInf['name'].'","'.$itmInf['img'].'","'.$itmInf['type'].'","'.$itmInf['inSlot'].'","'.$itmInf['2h'].'","'.$itmInf['iznosMax'].'","'.$itmInf['inRazdelInv'].'","'.$itmInf['price1'].'","'.$itmInf['price2'].'","'.$itmInf['magic_chance'].'","'.$itmInf['noTransfer'].'","1","0","'.$itmInf['info'].'","'.$itmInf['madein'].'","'.$itmInf['noremont'].'","'.$itmInf['massa'].'","'.$itmInf['odet'].'","'.$itmInf['used'].'","'.$itmInf['magicUse'].'","'.$itmInf['inOtdel'].'","'.$itmInf['gift'].'","'.$itmInf['complect'].'","'.$itmInf['newstats'].'","'.time().'","'.$itmInf['srok'].'","'.$itmInf['tr'].'","'.$itmInf['adds'].'","'.$itmInf['props'].'","'.$itmInf['atacks'].'")');
                        $i++;         
                        }
                        mysql_query('COMMIT');
                    }            
                } else {
                    if($itmInf['price1'] > $user->money) {
                    $user->error = 'У вас недостаточно денег';
                    } else {
                    $user->money -= $itmInf['price1'];
                    $user->error ='Вы купили &quot;'.$itmInf['name'].'&quot;.';
                    $log = '&quot;'.$user->login.'&quot;['.$user->level.'] купил в Лавке Темных товар: &quot;'.$itmInf['name'].' &quot; за '.$itmInf['price1'].' зол. ('.$user->city.')';
                    $user->add_trf($user->id,$user->id,$log,$user->ip,$user->ip);
                    $user->data['time']>time() && $user->admin<1;
                    echo ("Ещё не прошло 6-ти часов с момента последней покупки");
                    mysql_query('START TRANSACTION');
                    mysql_query('UPDATE `users` set `money`="'.$user->money.'" WHERE `id`="'.$user->id.'"');
                    $itmInf['kolvo'] -= 1;
                    mysql_query('UPDATE `users` set `time`=".(time()+21600)." WHERE `id`="'.$user->id.'" LIMIT 1');
                        
                    mysql_query('UPDATE `shop_t` SET `kolvo`="'.$itmInf['kolvo'].'" WHERE `id`="'.$itmInf['id'].'"');
                    mysql_query('INSERT INTO `items_users` (`itmId`,`uid`,`name`,`img`,`type`,`inSlot`,`2h`,`iznosMax`,`inRazdelInv`,`price1`,`price2`,`magic_chance`,`noTransfer`,`inv`,`group`,`info`,`madein`,`noremont`,`massa`,`odet`,`used`,`magicUse`,`inOtdel`,`gift`,`complect`,`newstats`,`timeAdd`,`srok`,`tr`,`adds`,`props`,`atacks`) VALUES ("'.$itmInf['id'].'","'.$user->id.'","'.$itmInf['name'].'","'.$itmInf['img'].'","'.$itmInf['type'].'","'.$itmInf['inSlot'].'","'.$itmInf['2h'].'","'.$itmInf['iznosMax'].'","'.$itmInf['inRazdelInv'].'","'.$itmInf['price1'].'","'.$itmInf['price2'].'","'.$itmInf['magic_chance'].'","'.$itmInf['noTransfer'].'","1","0","'.$itmInf['info'].'","'.$itmInf['madein'].'","'.$itmInf['noremont'].'","'.$itmInf['massa'].'","'.$itmInf['odet'].'","'.$itmInf['used'].'","'.$itmInf['magicUse'].'","'.$itmInf['inOtdel'].'","'.$itmInf['gift'].'","'.$itmInf['complect'].'","'.$itmInf['newstats'].'","'.time().'","'.$itmInf['srok'].'","'.$itmInf['tr'].'","'.$itmInf['adds'].'","'.$itmInf['props'].'","'.$itmInf['atacks'].'")');
                    mysql_query('COMMIT');
 
1 )О боже. Ты программируешь в блокноте?
Скачай phpexperteditor - в нём есть подсветка, да в прочем очень удобен.

2) ты засунул запрос после while , что огромная ошибка.
Выйдет при покупке 100 предметов - юзеру пошлет 100 апдейтов в ячейку time .



Код:
   ## Удаление
    if(isset($_GET['del']) && isset($_GET['set']) && $user->admin==1)
        {
        mysql_query("DELETE FROM `shop_t` WHERE `itmId`='".$_GET['set']."'");
        print"удалено";
        }
     ## Покупка
    if($useInv==1 && (isset($_GET['buy']) && isset($_GET['set'])) || (isset($_POST['count']) && isset($_POST['set'])))
    {

        if(isset($_GET['buy']) && isset($_GET['set']))
        {
        $set = $_GET['set'];
        }
        elseif (isset($_POST['count']))
        {
        $set = $_POST['set'];
        }

        $itmInf = mysql_fetch_array(mysql_query('SELECT itm.*,sh.* FROM `items_main` AS `itm` LEFT JOIN `shop_t` AS `sh` ON (itm.id=sh.itmId) WHERE itm.id="'.mysql_real_escape_string($set).'" LIMIT 1'));
        if(isset($itmInf['id']))
        {
            if($user->money < $itmInf['price1']) {
            $user->error = 'У вас недостаточно денег';
            }
            elseif ($itmInf['kolvo']<1)
            {
            $user->error = 'Товар закончился';
            }
            elseif ($user->data['time']>time())
            {
            $user->error = 'Не прошло двух минут после предыдущей покупке. Обождите.';
            }

            else {
                if(isset($_POST['count']))
                {
                    $_POST['count'] = (int)$_POST['count'];
                    if(($_POST['count']*$itmInf['price1']) > $user->money)
                    {
                    $user->error = 'У вас недостаточно денег';
                    }
                    elseif(($_POST['count']>1 || $_POST['count'] <= 0) || !is_int($_POST['count']) || $itmInf['kolvo']+$_POST['count']<0)
                    {
                    $user->error = 'Что-то тут не так...';


                    } else {
                        $user->money -= $itmInf['price1']*$_POST['count'];
                        $user->error ='Вы купили &quot;'.$itmInf['name'].'&quot; ('.$_POST['count'].' шт.)';
                        $log = '&quot;'.$user->login.'&quot;['.$user->level.'] купил в Лавке Темных товар: &quot;'.$itmInf['name'].' ('.$_POST['count'].' шт.)&quot; за '.($itmInf['price1']*$_POST['count']).' зол. ('.$user->city.')';
                        $user->add_trf($user->id,$user->id,$log,$user->ip,$user->ip);
                        $user->data['time']>time() && $user->admin<1;
                        //echo ("Ещё не прошло 2х минут с момента последней покупки");
                        mysql_query('START TRANSACTION');
                        mysql_query('UPDATE `users` set `money`="'.$user->money.'",`time`="'.(time()+120).'" WHERE `id`="'.$user->id.'"');
                        $itmInf['kolvo'] -= 1*$_POST['count'];
                        mysql_query('UPDATE `shop_t` SET `kolvo`="'.$itmInf['kolvo'].'" WHERE `id`="'.$itmInf['id'].'"');
                        $i = 1;
                        while($i<=(int)$_POST['count'])
                        {
                        //mysql_query('UPDATE `users` set `time`=".(time()+120)." WHERE `id`="'.$user->id.'" LIMIT 1');

                        mysql_query('INSERT INTO `items_users` (`itmId`,`uid`,`name`,`img`,`type`,`inSlot`,`2h`,`iznosMax`,`inRazdelInv`,`price1`,`price2`,`magic_chance`,`noTransfer`,`inv`,`group`,`info`,`madein`,`noremont`,`massa`,`odet`,`used`,`magicUse`,`inOtdel`,`gift`,`complect`,`newstats`,`timeAdd`,`srok`,`tr`,`adds`,`props`,`atacks`) VALUES ("'.$itmInf['id'].'","'.$user->id.'","'.$itmInf['name'].'","'.$itmInf['img'].'","'.$itmInf['type'].'","'.$itmInf['inSlot'].'","'.$itmInf['2h'].'","'.$itmInf['iznosMax'].'","'.$itmInf['inRazdelInv'].'","'.$itmInf['price1'].'","'.$itmInf['price2'].'","'.$itmInf['magic_chance'].'","'.$itmInf['noTransfer'].'","1","0","'.$itmInf['info'].'","'.$itmInf['madein'].'","'.$itmInf['noremont'].'","'.$itmInf['massa'].'","'.$itmInf['odet'].'","'.$itmInf['used'].'","'.$itmInf['magicUse'].'","'.$itmInf['inOtdel'].'","'.$itmInf['gift'].'","'.$itmInf['complect'].'","'.$itmInf['newstats'].'","'.time().'","'.$itmInf['srok'].'","'.$itmInf['tr'].'","'.$itmInf['adds'].'","'.$itmInf['props'].'","'.$itmInf['atacks'].'")');
                        $i++;
                        }
                        mysql_query('COMMIT');
                    }
                } else {
                    if($itmInf['price1'] > $user->money) {
                    $user->error = 'У вас недостаточно денег';
                    } 
                    elseif ($user->data['time']>time()) 
                    {
                    $user->error = 'Не прошло двух минут после предыдущей покупке. Обождите.';
                    }                    
                    else {
                    $user->money -= $itmInf['price1'];
                    $user->error ='Вы купили &quot;'.$itmInf['name'].'&quot;.';
                    $log = '&quot;'.$user->login.'&quot;['.$user->level.'] купил в Лавке Темных товар: &quot;'.$itmInf['name'].' &quot; за '.$itmInf['price1'].' зол. ('.$user->city.')';
                    $user->add_trf($user->id,$user->id,$log,$user->ip,$user->ip);
                    $user->data['time']>time() && $user->admin<1;
                    echo ("Ещё не прошло 2х минут с момента последней покупки");
                    mysql_query('START TRANSACTION');
                   // mysql_query('UPDATE `users` set `money`="'.$user->money.'" WHERE `id`="'.$user->id.'"');
                    mysql_query('UPDATE `users` set `money`="'.$user->money.'",`time`="'.(time()+120).'" WHERE `id`="'.$user->id.'"');
                    $itmInf['kolvo'] -= 1;
                   //mysql_query('UPDATE `users` set `time`=".(time()+120)." WHERE `id`="'.$user->id.'" LIMIT 1');
                    mysql_query('UPDATE `shop_t` SET `kolvo`="'.$itmInf['kolvo'].'" WHERE `id`="'.$itmInf['id'].'"');
                    mysql_query('INSERT INTO `items_users` (`itmId`,`uid`,`name`,`img`,`type`,`inSlot`,`2h`,`iznosMax`,`inRazdelInv`,`price1`,`price2`,`magic_chance`,`noTransfer`,`inv`,`group`,`info`,`madein`,`noremont`,`massa`,`odet`,`used`,`magicUse`,`inOtdel`,`gift`,`complect`,`newstats`,`timeAdd`,`srok`,`tr`,`adds`,`props`,`atacks`) VALUES ("'.$itmInf['id'].'","'.$user->id.'","'.$itmInf['name'].'","'.$itmInf['img'].'","'.$itmInf['type'].'","'.$itmInf['inSlot'].'","'.$itmInf['2h'].'","'.$itmInf['iznosMax'].'","'.$itmInf['inRazdelInv'].'","'.$itmInf['price1'].'","'.$itmInf['price2'].'","'.$itmInf['magic_chance'].'","'.$itmInf['noTransfer'].'","1","0","'.$itmInf['info'].'","'.$itmInf['madein'].'","'.$itmInf['noremont'].'","'.$itmInf['massa'].'","'.$itmInf['odet'].'","'.$itmInf['used'].'","'.$itmInf['magicUse'].'","'.$itmInf['inOtdel'].'","'.$itmInf['gift'].'","'.$itmInf['complect'].'","'.$itmInf['newstats'].'","'.time().'","'.$itmInf['srok'].'","'.$itmInf['tr'].'","'.$itmInf['adds'].'","'.$itmInf['props'].'","'.$itmInf['atacks'].'")');
                    mysql_query('COMMIT');

Замени на это, должно работать.
 
спс, работает все :)

да в блокноте чаще, иногда notepad++ ))
щас качну прогу, спс за совет
 
Сверху