1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

1.4.5 (69) Голд за лвл.

Тема в разделе 'PW Web', создана пользователем Fituchini, 20 июл 2014.

  1. TopicStarter Overlay

    Fituchini Пользователи

    Сообщения:
    339
    Лайки:
    71
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    PWAA
    Страна:
    Russian Federation Russian Federation
    Установил скрипт пополнение голда за определённый лвл.
    Но вот беда беда беда.
    PHP:
    <?php //Скрипт автоматического пополнения голда игрокам достигшим определенного уровня by 911

    $gold "1500000"//сколько золота выдаем
    $level "105"//при достижении этого уровня
    $DBHost "127.0.0.1";  //localhost
    $DBUser "root";  //database user
    $DBPassword "password";  //database password
    $DBName "pw";  //database name

    function dbconnect ()
    {
        global 
    $DBHost,$DBUser,$DBPassword,$DBName;
        
    $openConndb mysql_connect$DBHost$DBUser$DBPassword );
        
    $dbSelected mysql_select_db$DBName$openConndb );
        
    setlocale(LC_ALL'ru_RU.utf-8');
        
    mysql_query("SET character_set_results='utf8'");
        
    mysql_query("SET NAMES 'utf8'");
        return 
    $openConndb;
    }

    $src fopen("/home/gold/roles.txt"'r'); //открываем файл экспортированный из базы
    $num = -1//последняя строка в файле лишняя
    while(!feof($src)) //пока не достигнут конец файла
    {
        
    $line[] = fgets($src); //создаем массив строк
        
    $line++;
        
    $num++;
    }
    fclose($src); //закрываем файл

    for ($i=1;$i<$num;$i++) //пропускаем первую строку
    {
      
    $array explode(",",$line[$i]); //разбираем каждую строку на элементы
      
    $roleid trim($array[0]);
      
    $userid trim($array[1]);
      
    $lvl trim($array[4]);
      
    $time trim(date('Y-m-d H:i:s')); //добавляем дату

      
    $query1 "SELECT * FROM users WHERE id = ".$userid//добавляем имя аккаунта персонажа
      
    $result1 mysql_query($query1dbconnect());
      
    $row1=mysql_fetch_row($result1);

    if (
    $lvl<=($level -1)) //проверяем на соответствие уровню (-1 потому что, считается от нуля, а нулевого уровня, как известно нет)
          
    continue;

      
    $query2 "SELECT roleid FROM gold WHERE roleid = ".$roleid//делаем проверку на присутствие ид персонажа в таблице
      
    $result2 mysql_query($query2dbconnect());
      
    $row2=mysql_fetch_row($result2);
      if(
    $row2[0]) //если ид нет значит персонаж новый, продолжаем
          
    continue;

      
    $query2 "INSERT INTO gold (roleid,userid,name,time) VALUES ('".$roleid."','".$userid."','".$row1[1]."','".$time."')"//добавляем персонажа которому выдадим голд в базу
      
    $result2 mysql_query($query2dbconnect());
        
    MySQL_Query("call usecash('$userid',1,0,1,0,'$gold',1,@[USER=11152]Error[/USER])"dbconnect()) or die ("usecash failed!"); //и даем ему голд
    }
    //Скрипт автоматического пополнения голда игрокам достигшим определенного уровня by 911
    ?>
    Поменял только коннект ну количество голда и лвл
    и создал я таких 10 файлов, то есть говоря языком русским, каждые 10 лвл должно приходить определённое количество голда
    Но вот не задача, после того как Голд пришёл, и прошёл всё 10 файлов, он начинает процедуру заново.
    и вообще пополнение голда как то взбесилось, вместо положеных 30 золотых на старте приходит 180
    перепроверил 1000001 раз сколько золота должно даваться, написано 30, выдается больше
    скрипт прикрепил, как прекратить цикл?

    что такое может быть с голдом? почему приходит больше?
    только что проверил
    при достижении 70 лвл суммарно должно прийти 240 золота, а пришло 250 что за??
    в скрипте прописывал в сервербре

    Подскажите пожалуйста, может у кого была такая проблема?


    P.S. заметил что всё началось когда заюзал данный скрипт
    PHP:
    <?php
    include "header.php";
    if(isset(
    $_POST['GoldWhoOnline'])) {
        
    $Mysql mysql_query("select * from `point` where `zoneid`=1") or die(mysql_error());
        do {
            
    $Acc $Row['uid'];
            
    mysql_query("call usecash($Acc,1,0,1,0,$_POST[AllGold],1,@[USER=11152]Error[/USER])") or die(mysql_error());
        } while(
    $Row mysql_fetch_array($Mysql));
    echo 
    "<script>alert('Аккаунтам онлайн был выдан голд!')</script>";
    AddLog($_SERVER['REMOTE_ADDR'], "Всем аккаунтам онлайн был выдан голд");
    }
    if(isset(
    $_POST['GiveGold'])) {
        
    mysql_query("call usecash($_POST[GoldID],1,0,1,0,$_POST[GoldNum],1,@[USER=11152]Error[/USER])") or die(mysql_error());
        echo 
    "<script>alert('Аккаунту {$_POST[GoldID]} было выдано {$_POST[GoldNum]} голда!')</script>";
        
    AddLog($_SERVER['REMOTE_ADDR'], "Аккаунту {$_POST[GoldID]} было выдано {$_POST[GoldNum]} голда");
    }

    if(isset(
    $_POST['GoldOnline'])) {
        
    $Query mysql_query("SELECT * FROM users") or die(mysql_error());
        
    $Row mysql_fetch_array($Query);
        do {
            
    $Acc $Row['ID'];
            
    mysql_query("call usecash($Acc,1,0,1,0,$_POST[AllGolds],1,@[USER=11152]Error[/USER])") or die(mysql_error());
        } while(
    $Row mysql_fetch_array($Query));
        echo 
    "<script>alert('Всем аккаунтам был выдан голд!')</script>";
        
    AddLog($_SERVER['REMOTE_ADDR'], "Всем аккаунтам был выдан голд");
    }
    ?>
    <div class="row">
    <div class="col-lg-4 text-center">
    <div class="panel panel-default">
    <div class="panel-body">
    <b>Дать голд</b>
    <form method="POST" >
    ИД АККАУНТА<input class="form-control" type="text" name="GoldID"><br />
    КОЛ-ВО ГОЛДА<input class="form-control" type="text" name="GoldNum"><br />
    <input type="submit" value="ВЫДАТЬ ГОЛД" name="GiveGold" class="btn btn-success">
    </form>
    </div>
    </div>         
    </div>
    <div class="col-lg-4 text-center">
    <div class="panel panel-default">
    <div class="panel-body">
    <b>Дать голд всем кто онлайн</b>
    <form method="POST" >
    Кол-во голда<input class="form-control" type="text" name="AllGold"><br />
    <input type="submit" value="ВЫДАТЬ ГОЛД ВСЕ КТО ОНЛАЙН" name="GoldWhoOnline" class="btn btn-success">
    </form>
    </div>
    </div>         
    </div>
    <div class="col-lg-4 text-center">
    <div class="panel panel-default">
    <div class="panel-body">
    <b>Дать голд всем</b>
    <form method="POST" >
    Кол-во голда<input class="form-control" type="text" name="AllGolds"><br />
    <input type="submit" value="ВЫДАТЬ ГОЛД ВСЕМ" name="GoldOnline" class="btn btn-success">
    </form>
    </div>
    </div>         
    </div>
    </div>
    </center>
    <?php
    include "footer.php";
    ?>
    Но автор программы где встречается этот скрипт, говорит что у 10 пользователей юзующих этот скрипт всё нормально
    Последнее редактирование модератором: 20 июл 2014
  2. Merfy Пользователи

    Сообщения:
    367
    Лайки:
    189
    Пол:
    Мужской
    Репутация:
    -1
    Команда:
    mmo-dev.com
    а ты не думал, что ещё и рега у тебя голд накидывает, ну или за голосование приходит я х.з что там у тебя ещё висит
  3. TopicStarter Overlay

    Fituchini Пользователи

    Сообщения:
    339
    Лайки:
    71
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    PWAA
    Страна:
    Russian Federation Russian Federation
    как рега голд накидывает?
    при регистрации всё было норм, да и стоит там 30 начального
    и при достижении лвл только
    всё больше никак. Дебаг отключен
    iweb'а нет
    да ну никак.
    решил протестить
    сам зашёл в игру, даже персонажем не перезаходил, голд как на дрожжах вырос
    цикл замкнулся и выдавал 100 и 150 голда не зависимо от лвл каждые 20 минут как и заложено в cron
    но в скрипте только при достижении определённого лвл.
    но вот строка мне кажется не работает
    $query1 = "SELECT * FROM users WHERE id = ".$userid; //добавляем имя аккаунта персонажа
    вот только почему то он не записывает персонажа в таблицу, таблица пуста

    --- добавлено: 20 июл 2014 в 01:22 ---
    а вот и сам sql
    Код:
    SET FOREIGN_KEY_CHECKS=0;
    -- ----------------------------
    -- Table structure for gold1
    -- ----------------------------
    DROP TABLE IF EXISTS `gold1`;
    CREATE TABLE `gold1` (
      `roleid` int(11) unsigned NOT NULL DEFAULT '0',
      `userid` int(11) unsigned NOT NULL DEFAULT '0',
      `name` text NOT NULL,
      `time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
      PRIMARY KEY (`roleid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records
    -- ----------------------------
    
    Последнее редактирование модератором: 27 июл 2014
  4. Merfy Пользователи

    Сообщения:
    367
    Лайки:
    189
    Пол:
    Мужской
    Репутация:
    -1
    Команда:
    mmo-dev.com
    погоди. а ты сам смотрел код что скинул?
    он накидывает голд всем кто онли. какой левл ап тут может быть :D
  5. TopicStarter Overlay

    Fituchini Пользователи

    Сообщения:
    339
    Лайки:
    71
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    PWAA
    Страна:
    Russian Federation Russian Federation
    я же говорю, что заметил рост голда когда заюзал этот скрипт "Голд всем онлайн"
    я один раз всего заюзал его

    а в кроне стоит этот
    Код:
    <?php //Скрипт автоматического пополнения голда игрокам достигшим определенного уровня by 911
    
    $gold = "1500000"; //сколько золота выдаем
    $level = "105"; //при достижении этого уровня
    $DBHost = "127.0.0.1";  //localhost
    $DBUser = "root";  //database user
    $DBPassword = "password";  //database password
    $DBName = "pw";  //database name
    
    function dbconnect ()
    {
        global $DBHost,$DBUser,$DBPassword,$DBName;   
        $openConndb = mysql_connect( $DBHost, $DBUser, $DBPassword );
        $dbSelected = mysql_select_db( $DBName, $openConndb );
        setlocale(LC_ALL, 'ru_RU.utf-8');
        mysql_query("SET character_set_results='utf8'");
    бла бла бла
    самый первый пост который

    Перезапуск сервера не решил проблему.
    да и в скрипте я не вижу чтобы он к таблице подклбчался
    Таблица по умолчанию стоит gold1
  6. Merfy Пользователи

    Сообщения:
    367
    Лайки:
    189
    Пол:
    Мужской
    Репутация:
    -1
    Команда:
    mmo-dev.com
    мб ты его на крон и повесил :D
  7. TopicStarter Overlay

    Fituchini Пользователи

    Сообщения:
    339
    Лайки:
    71
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    PWAA
    Страна:
    Russian Federation Russian Federation
    нет нет. Скрипт всем кто онлайн в минипанельке IWP
    [​IMG]
    от сюда я его и юзал. просто код скинул
    никак я его не мог повесить на cron только что проверил кстати
    почему я только не могу найти обращение к таблице? ведь по умолчанию она называется gold1
    --- добавлено: 20 июл 2014 в 01:50 ---
    не могу понять почему скрипт обращается к таблице users и gold? может в этом и есть его ошибка.
    Он якобы записывает Имя, но строки такой нет, он соответственно не пишет, а тупо даёт голд, а раз записей нет для него это каждый раз новый перс.
    Да и не может записать его лвл
    получается он каждый раз обращаясь к таблице users просто давал всем голды???
    но почему тогда только по 100 и по 150 каждый раз? ведь есть и другие количества
    500 и 200, почему он только 2 скрипта обрабатывает?
    Последнее редактирование модератором: 27 июл 2014
  8. Merfy Пользователи

    Сообщения:
    367
    Лайки:
    189
    Пол:
    Мужской
    Репутация:
    -1
    Команда:
    mmo-dev.com
    я бы не стал доверять панельке от какого-то говнокодера
    --- добавлено: 20 июл 2014 в 01:55 ---
    на счет запроса смотри, запрос с реги на выдачу голда и все поймешь
    Последнее редактирование модератором: 27 июл 2014
    Joslian нравится это.
  9. TopicStarter Overlay

    Fituchini Пользователи

    Сообщения:
    339
    Лайки:
    71
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    PWAA
    Страна:
    Russian Federation Russian Federation
    Вопрос решил. Дело было не в реге.
    А в запросе скрипта, который почему то хоть и дефолтный, а корявый.
    как я и предпологал скрипт обращался к другой таблице
  10. pilad Команда форума Модератор Пользователи

    Сообщения:
    1.740
    Лайки:
    480
    Пол:
    Мужской
    Репутация:
    1
    Команда:
    Freeman
    Распиши решение.
  11. TopicStarter Overlay

    Fituchini Пользователи

    Сообщения:
    339
    Лайки:
    71
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    PWAA
    Страна:
    Russian Federation Russian Federation
    Поменять обращение к таблице
    Код:
    $Query = mysql_query("SELECT * FROM users") or die(mysql_error());
    $Query = mysql_query("SELECT * FROM gold") or die(mysql_error());
    По скрипту сразу и не заметил что обращение идёт к таблицам users и gold, но когда начал разбирать скрипт по полочкам обнаружил ошибку
    просто поменять (если по-умолчанию) на gold1 и будет всё работать корректно
Черновик сохранён Черновик удалён
Similar Threads
  1. zerg900
    Ответов:
    9
    Просмотров:
    1.763
  2. rdsmedia

    голд

    rdsmedia, 7 мар 2013, в разделе: Архив
    Ответов:
    6
    Просмотров:
    1.707
  3. darkworld
    Ответов:
    2
    Просмотров:
    1.520
  4. New-X
    Ответов:
    1
    Просмотров:
    1.003
  5. killer100345
    Ответов:
    12
    Просмотров:
    2.883
Загрузка...

Поделиться этой страницей