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

Любая версия Как прибавить голды пакетом? Через ADDCASH не работает

Тема в разделе 'PW Web', создана пользователем Vorobey, 23 фев 2018.

  1. TopicStarter Overlay

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

    Сообщения:
    13
    Лайки:
    0
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Albania Albania
    Пытаюсь прибавить голды, но получается только пакетом: DEBUGADDCASH , но при добавлении через этот пакет - перезаписывается вся информация о голде на аккаунте, и она не прибавляется - а просто устанавливается в то значение которое я установлю.

    В логе сервера при использовании DEBUGADDCASH , вот что:
    PHP:
    $DebugAddCash = new WritePacket();
    $DebugAddCash -> getresponse false// without response
    $DebugAddCash -> WriteUInt32(1024); // userid
    $DebugAddCash -> WriteUInt32(100); // cash
    $DebugAddCash -> Pack(0x209); // opcode
    $DebugAddCash -> Send("localhost"29400); // send to gamedbd
    Нашел пакет: ADDCASH, но при попытке его использовать - голда не прибавляется.
    PHP:
    $AddCash = new WritePacket();
    $AddCash -> WriteUInt32(1024); // userid
    $AddCash -> WriteUInt32(1); // zoneid
    $AddCash -> WriteUInt32(65536); // sn (установил такое значение, ибо похоже на конфиг [so_sndbuf = 65536] )
    $AddCash -> WriteUInt32(100); // cash
    $AddCash -> Pack(0x203); // opcode
    $AddCash -> Send("localhost"29400); // send to gamedbd

    $Re_AddCash = new ReadPacket($AddCash);
    $Re_AddCash -> ReadPacketInfo();

    $res = [];

    $res['retcode'] = $Re_AddCash -> ReadUInt32();
    $res['userid']    = $Re_AddCash -> ReadUInt32();
    $res['zoneid']    = $Re_AddCash -> ReadUInt32();
    $res['sn']        = $Re_AddCash -> ReadUInt32();
    /*
    Результат:
    array(4) {
      ["retcode"]=> int(0)
      ["userid"]=> int(1024)
      ["zoneid"]=> int(1)
      ["sn"]=> int(65536)
    }
    */
    Но голда не прибавляется.
    В логе сервера при использовании AddCash, вот что:
    Может что-то не так делаю? Спасибо
  2. Mr.Fleks Модератор Команда форума Модератор Old school Пользователи

    Сообщения:
    722
    Лайки:
    368
    Пол:
    Мужской
    Репутация:
    11
    PHP:
    <?php
    Function Cuint($Data) {
        if(
    $Data 64)
                return 
    strrev(pack("C"$Data));
        else if(
    $Data 16384)
                return 
    strrev(pack("S", ($Data 0x8000)));
        else if(
    $Data 536870912)
                return 
    strrev(pack("I", ($Data 0xC0000000)));
        return 
    strrev(pack("c", -32) . pack("I"$Data));
    }

    if (isset(
    $_POST['Send'])) {
        
    $data pack('N*'$_POST['acc_id'], $_POST['gold_num']);
        
    $send Cuint(521).Cuint(strlen($data)).$data;
        
    $sock socket_create(AF_INETSOCK_STREAMSOL_TCP);
        
    socket_connect($sock"127.0.0.1"29400);
        
    socket_set_block($sock);
        
    socket_send($sock$send81920);
        
    socket_set_nonblock($sock);
        
    socket_close($sock);
    }

    ?>
    HTML:
    <center>
    <form method="POST">
    ID аккаунта <input type="text" name="acc_id"><br>
    Кол-во голды <input type="text" name="gold_num"><br>
    <input type="submit" value="Отправить" name="Send">
    </center>
    --- добавлено: 23 фев 2018 в 13:57 ---
    Так-же можете забрать голд отправив отрицательное количество
    Последнее редактирование модератором: 14 апр 2018
    Vorobey нравится это.
  3. TopicStarter Overlay

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

    Сообщения:
    13
    Лайки:
    0
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Albania Albania
    Но этот пакет не прибавляет, а просто устанавливает кол-во голды. Было 5, дал еще 10 = в итоге на аккаунте 10, и общее кол-во тоже 10.
    Ваш код взял
    Последнее редактирование модератором: 14 апр 2018
  4. lukacho B L A C K    L I S T Пользователи

    Сообщения:
    537
    Лайки:
    156
    Пол:
    Мужской
    Репутация:
    -1
    Команда:
    XXXX
    Страна:
    Georgia Georgia
    А в чем проблема использовать другой пакет,который получает кол-во голде на акке(вроде такой есть)?Прибавить свое количество,и отправить на аккаунт.
  5. TopicStarter Overlay

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

    Сообщения:
    13
    Лайки:
    0
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Albania Albania
    В том, что этот метод полностью очищает историю голды на аккаунте. Если было за всю историю аккаунта 100 голды, и этим пакетом поставить 10, то в истории будет всего 10 уже.
    Можно так-же через mysql, но там интервал вроде какой-то идет
  6. Penelope Пользователи

    Сообщения:
    124
    Лайки:
    74
    Репутация:
    1
    Отловите пакет authd, который голд начисляет и им пополняйте, раз не устраивает mysql. Интервал есть: 5 мин. Можно его изменить в java классе authd.
    Vorobey нравится это.
  7. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Она перезаписывается эти пакетом только в том случае, когда cash_used > 2000000000 чтобы избежать переполнения инта.
    sn в данном пакете это add_serial (скорее всего счетчики операций начислений), но никак не so_sndbuf, соотв. его нужно делать на 1 больше предыдущего значения при выдаче.
    Последнее редактирование: 26 фев 2018
    Penelope, Unix и Vorobey нравится это.
Черновик сохранён Черновик удалён
Similar Threads
  1. Besaba
    Ответов:
    1
    Просмотров:
    1.609
  2. Besaba
    Ответов:
    1
    Просмотров:
    1.232
  3. Albanec
    Ответов:
    3
    Просмотров:
    1.076
  4. Sm0ke
    Ответов:
    11
    Просмотров:
    2.778
  5. Neron
    Ответов:
    2
    Просмотров:
    1.150
Загрузка...

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