Аплод за голос на TopTracker + пост благодарности

S

Saint

Гость
Странно, я весь файл не могу загрузить, но тогда сделаю в коде.
PHP:
<?php
 
// *********************************************************************************************************
// ******************************************* Настройки стрипта *******************************************
// *********************************************************************************************************
// ID вашего трекера (http://www.toptracker.ru/details.php?id=xxx)
$trackerid = 3906 ;
 
// Генерируем ключ в админке и вставляем в кавычки
$key = "Ну тут естественно ключ";
 
// Вознаграждение в мегабайтах
$MB = 1024; // 100 МБ
 
// Возногражение в seedbonus
//$bonus = 5;
 
// Пишем ID топика, куда боту писать спасибы
$topic_id = 351;
// *********************************************************************************************************
// ******************************************* Настройки стрипта *******************************************
// *********************************************************************************************************
 
 
$MB = $MB*1024*1024;
$ratio = (int) $_POST["ratio"];
$userid = (int) $_POST["userid"];
 
 
// Проверка на реферер
if(!preg_match("/^http:\/\/(www\.)?(toptracker\.ru)\/details.php\?id=".$trackerid."&userid=([^\/]+)/i", $_SERVER['HTTP_REFERER']))
{
    die("<b>Bad link :(</b>");
}
// Проверяем на сущестование пост данных + дополнительная проверка по уникальному ключу
if($userid && $ratio && $_POST["key"] == $key)
{
    define('IN_PHPBB', true);
    define('BB_SCRIPT', 'toptracker');
    define('BB_ROOT', './');
    require(BB_ROOT ."common.php");
    require(INC_DIR .'bbcode.php');
    require(INC_DIR .'functions_post.php');
 
    // Плавное начисление. Если оценка 5 - начислится полное количество Мб. Если оценка 1 - начисления не будет
    $MB = ($MB * ($ratio - 1)) / 4;
 
    // Добавляем юзеру аплоад. Можно так же добавить проверку по IP, в данном примере проверка идет по ID юзера
    $sql = "UPDATE bb_bt_users SET u_up_total = u_up_total + '".$MB."', user_votetime = CURDATE() WHERE user_id = '".$userid."' AND user_votetime < CURDATE()";
    DB()->sql_query($sql);
 
    // Необходимые данные для благодарственного поста
    $mode = 'reply';
    $topic_type = POST_NORMAL;
    $user_id = -746;
    $user_ip = encode_ip('127.0.0.1');
    $post_username = 'bot';
    $current_time = TIMENOW;
    $post_message = '';
    $post_message = htmlCHR($post_message, false, ENT_NOQUOTES);
    $post_message = bbcode2html($post_message);
 
    if ($ratio > 3)
    {
        // $post_MB = $MB / (1024 * 1024);
        // $post_message .= 'Начислен upload в размере ' . (string) $post_MB . 'Mb';
        // Постим благодарность
        $post_MB = 1024*1024*1024;
        $post_message = 'Спасибо за оценку [b]' . (string) $ratio . '[/b] на [b]TopTracker[/b] пользователю [url=http://' . $bb_cfg['server_name'] . '/profile.php?mode=viewprofile&u=' . $userid. '][b]' . get_username($userid) . '[/b][/url]. ';
        $post_message .= 'Начислен upload в размере ' . humn_size($post_MB);
        $post_message = prepare_message($post_message);
        $sql = "SELECT forum_id FROM " . BB_TOPICS . " WHERE topic_id = $topic_id";
        if ( !($result = DB()->sql_query($sql)) )
        {
            message_die(GENERAL_ERROR, "Could not read information.", '', __LINE__, __FILE__, $sql);
        }
        while ($row = DB()->sql_fetchrow($result))
        {
            $forum_id = $row['forum_id'];
        }
        if ( !(isset($forum_id)) )
        {
            message_die(GENERAL_ERROR, "Could not read information.", '', __LINE__, __FILE__, $sql);
        }
 
 
        $sql = "INSERT INTO " . BB_POSTS . " (topic_id, forum_id, poster_id, post_username, post_time, poster_ip) VALUES ($topic_id, $forum_id, " . $user_id . ", '$post_username', $current_time, '". $user_ip ."')";
        if (!DB()->sql_query($sql))
        {
            message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
        }
        $post_id = DB()->sql_nextid();
        $sql = "INSERT INTO " . BB_POSTS_TEXT . " (post_id, post_text) VALUES ($post_id, '$post_message')";
        if (!DB()->sql_query($sql))
        {
            message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
        }
        update_post_html(array(
            'post_id'        => $post_id,
            'post_text'      => $post_message,
        ));
        $topic_update_sql = "topic_last_post_id = $post_id, topic_last_post_time = ". TIMENOW .", topic_replies = topic_replies + 1";
        $sql = "UPDATE " . BB_TOPICS . " SET
                $topic_update_sql
            WHERE topic_id = $topic_id";
        if (!DB()->sql_query($sql))
        {
            message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
        }
        $forum_update_sql = "forum_last_post_id = $post_id, forum_posts = forum_posts + 1";
        $sql = "UPDATE " . BB_FORUMS . " SET
                $forum_update_sql
            WHERE forum_id = $forum_id";
        if (!DB()->sql_query($sql))
        {
            message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
        }
    }
}
?>
Вот весь файл. только спрятал ключ и место бота у меня другой юзер стоит. А остальное все так же. Но в принципе начисления у меня стандартные идут.
 
G

Gemini_13

Гость
Saint, ёпть.. ну так что ж ты хочешь чтобы что-то другое писалось?:)
PHP:
 // Постим благодарность
        $post_MB = 1024*1024*1024;
        $post_message = 'Спасибо за оценку [b]' . (string) $ratio . '[/b] на [b]TopTracker[/b] пользователю [url=http://' . $bb_cfg['server_name'] . '/profile.php?mode=viewprofile&u=' . $userid. '][b]' . get_username($userid) . '[/b][/url]. ';
        $post_message .= 'Начислен upload в размере ' . humn_size($post_MB);
поменяй на
PHP:
$post_MB = $MB;
 
G

Gemini_13

Гость
недосмотрел, сорре
просто раскоментируй эту строку, а старую удали
PHP:
// $post_MB = $MB / (1024 * 1024);
 
S

Saint

Гость
Я эту и поставил которая сейчас стоит, т.к. со старой писалось 1024 мб а так хотя бы в 1 гиг пишется
 
G

Gemini_13

Гость
жаль нету смайлика с пистолетом, я бы застрелился.....
ну тогда обьясните как связана между собой формула для подсчета трафика и и переменной для вывода в пост :)
 
S

Saint

Гость
Тут уже вопрос к залу :) Каким раком это все работает. Но у меня сообщения пишет, и начисляет. Но минус один когда ставишь оценку ниже 5 все ровно начисляет 1 гиг как за оценку 5
 

dimka3210

Легенда
Тут уже вопрос к залу :) Каким раком это все работает. Но у меня сообщения пишет, и начисляет. Но минус один когда ставишь оценку ниже 5 все ровно начисляет 1 гиг как за оценку 5
Начисляет у тебя всё правильно
а в пост пищет херню из-за банального отсутствия в твоей голове бизнес-логики скрипта.
 
S

Saint

Гость
Тут походу не ты dimka3210, не Gemini_13, так и не поняли суть вопроса. Постараюсь объяснить по понятнее для всех.... Суть вопроса такая. Как можно не меняя часть кода который отвечает за вывод обозначения (GB (приз 1 GB)), но что бы сумма приза за оценку 5 при условии поставленной оценки ниже сумма приза была меньше (768 MB) и чем ниже оценка то ниже приз.
У меня получается так что или выводится все в (MB) или в (GB), а что бы выводилось в зависимости от оценки GB или MB обозначение, вот что мне нужно, а то что Gemini_13, предлагает я писал выше, если не понимаешь то застрелись сам. Если я поставлю так как ты предлагает, у меня будет все выводиться в (MB) и место 1 GB будет выводиться 1024 MB.
 
Сверху