Другое С/С++ Вопрос - Ответ

Тема в разделе "C, C++", создана пользователем Jesik, 10 май 2013.

  1. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    Как читаешь? После упрочнения надо записывать ноль в конце строки.
    char text[123];
    auto len = strlen(text);
    text[len] = '\0';
     
  2. p1cador

    p1cador tvoy ded
    Проверенный

    Регистрация:
    19.03.2014
    Сообщения:
    164
    Симпатии:
    158
    Репутация:
    53
    Хочу собрать в .asi все свои наработки. По /командам все раскидывать уже не вариант, хочу сделать простую менюшку.
    Начал делать

    Но почему-то кажется, что у меня адский говнокод, размер файла растет пиздец как быстро, хотелось бы подглядывать куда-нибудь. Дайте пож. ссылки на соурсы каких-нибудь ПРОСТЫХ менюшек, чтобы можно было изучить, как там все устроено, классы там, всякое такое.
     
    iAmerican нравится это.
  3. FYP

    FYP админ какой-то

    Регистрация:
    09.03.2013
    Сообщения:
    1.113
    Симпатии:
    1.959
    Репутация:
    736
    никогда не видел каких-то идеальных интерфейсов в опенсорсных читах, у всех всегда всё по-своему. думал, знаю один такой вариант, хотел предложить, но сейчас глянул - тоже дерьмо. в общем, либо делать тоже как умеешь, либо использовать готовые универсальные gui - они уж точно подойдут под любые нужды. но если всё же найдёшь что-то годное - поделись, если не затруднит.
     
    iAmerican нравится это.
  4. iAmerican

    Проверенный

    Регистрация:
    17.02.2014
    Сообщения:
    350
    Симпатии:
    70
    Репутация:
    15
    https://zhyk.ru/forum/showthread.php?t=840968
    Мне вот эта статья когда-то помогла. Делал тоже самое что и ты.
     
    p1cador нравится это.
  5. p1cador

    p1cador tvoy ded
    Проверенный

    Регистрация:
    19.03.2014
    Сообщения:
    164
    Симпатии:
    158
    Репутация:
    53
    да-да, давно видел этот гайд на жуке, спасибо что напомнил
    получается пока как-то так
    это не столько сложно, сколько скучно и однообразно, столько всякого дерьма нужно учесть
     
    iAmerican нравится это.
  6. p1cador

    p1cador tvoy ded
    Проверенный

    Регистрация:
    19.03.2014
    Сообщения:
    164
    Симпатии:
    158
    Репутация:
    53
    Жопа полыхает.
    
    samp_dll = (uint32_t)LoadLibrary("samp.dll");
    kek = (stScoreboardInfo *)(samp_dll + 0x21A0B4); //SAMP_SCOREBOARD_INFO 0x21A0B4
    
    дебаг вывод (вдруг ошибка в получении):
    sa-mp-345.png
    (предпоследнее samp_dll, последнее kek->iIsEnabled )
    проверка:
    Безымянный2.png
    все правильно. Идем дальше. Адрес 1b505d0, смотрим, ставим брекпоинт на запись
    Безымянный4.png
    разворачиваем, жмем tab, брекпоинт срабатывает
    Безымянный5.png
    Нубовопросы:
    1) какого хуя в углу на 1 скрине рендерится адрес, а не само значение
    2) является ли адрес структуры адресом первого поля? Просто тогда не добавлял бы целую структуру ради одного значения
     
    #1246 p1cador, 11 окт 2016
    Последнее редактирование: 11 окт 2016
  7. FYP

    FYP админ какой-то

    Регистрация:
    09.03.2013
    Сообщения:
    1.113
    Симпатии:
    1.959
    Репутация:
    736
    по этому адресу находится указатель на структуру, соответственно, его нужно разыменовать перед обращением к структуре.
    kek = *(stScoreboardInfo **)(samp_dll + 0x21A0B4); //SAMP_SCOREBOARD_INFO 0x21A0B4
     
  8. Skadi

    Skadi Активный пользователь

    Регистрация:
    03.11.2014
    Сообщения:
    43
    Симпатии:
    8
    Репутация:
    8
  9. iAmerican

    Проверенный

    Регистрация:
    17.02.2014
    Сообщения:
    350
    Симпатии:
    70
    Репутация:
    15
  10. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.2013
    Сообщения:
    2.668
    Симпатии:
    1.660
    Репутация:
    438
  11. Skadi

    Skadi Активный пользователь

    Регистрация:
    03.11.2014
    Сообщения:
    43
    Симпатии:
    8
    Репутация:
    8
    где она там?
     
  12. return

    return Известный пользователь

    Регистрация:
    29.07.2015
    Сообщения:
    80
    Симпатии:
    4
    Репутация:
    2
    как привести pPresentParam.BackBufferWidth / 2 и pPresentParam.BackBufferHeight / 2 в обычное число ?
     
  13. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    Всмысле в обычное?
     
  14. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.2013
    Сообщения:
    2.668
    Симпатии:
    1.660
    Репутация:
    438
    не делить на 2
     
  15. return

    return Известный пользователь

    Регистрация:
    29.07.2015
    Сообщения:
    80
    Симпатии:
    4
    Репутация:
    2
    нет, я имею ввиду, что я получаю этим центр экрана, а как его получить в цифрах?
    что бы можно было записывать не так - pPresentParam.BackBufferWidth / 2 и pPresentParam.BackBufferHeight / 2, а допустим 640 на 512
    я конечно могу сделать под свой экран, но он ведь у всех разный, вот и вопрос возник, как получить центр экрана, без этого - pPresentParam.BackBufferWidth / 2 и pPresentParam.BackBufferHeight / 2 ?
     
  16. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    int a = pPresentParam.BackBufferWidth / 2;
     
  17. return

    return Известный пользователь

    Регистрация:
    29.07.2015
    Сообщения:
    80
    Симпатии:
    4
    Репутация:
    2
    если использовать pPresentParam.BackBufferWidth, то я не могу его изменять.
    мне нужно получать число, которое я в дальнейшем буду изменять на своё.

    есть альтернатива pPresentParam.BackBufferWidth и pPresentParam.BackBufferHeight ?
     
  18. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.2013
    Сообщения:
    2.668
    Симпатии:
    1.660
    Репутация:
    438
    ты чо идиот? в чем проблема его изменения?
     
  19. NarutoUA

    NarutoUA C++ Hokage developer
    BH Team

    Регистрация:
    26.05.2013
    Сообщения:
    599
    Симпатии:
    684
    Репутация:
    311
    ты чо хочешь разрешение экрана менять? так просто не получится
     
  20. iAmerican

    Проверенный

    Регистрация:
    17.02.2014
    Сообщения:
    350
    Симпатии:
    70
    Репутация:
    15
    iX = GetSystemMetrics(SM_CXSCREEN) / 2;
                iY = GetSystemMetrics(SM_CYSCREEN) / 2;
     
  21. Rapt0r6113

    Rapt0r6113 Известный пользователь

    Регистрация:
    10.07.2015
    Сообщения:
    101
    Симпатии:
    10
    Репутация:
    1
    Киньте ссылку на норм учебник или видосик по C++, буду благодарен
     
  22. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    Страуструп с++ 4 издание
     
  23. Rapt0r6113

    Rapt0r6113 Известный пользователь

    Регистрация:
    10.07.2015
    Сообщения:
    101
    Симпатии:
    10
    Репутация:
    1
    спс, почитаю
     
  24. iAmerican

    Проверенный

    Регистрация:
    17.02.2014
    Сообщения:
    350
    Симпатии:
    70
    Репутация:
    15
    youtube С++ уроки.
    http://cppstudio.com - лучший сайт , ИМХО
     
  25. Rapt0r6113

    Rapt0r6113 Известный пользователь

    Регистрация:
    10.07.2015
    Сообщения:
    101
    Симпатии:
    10
    Репутация:
    1
    Как редактировать адреса памяти? например надо 0xB7CEE4 (бесконечный бег) сделать включённым, если спросите, почему в клео не сделать, отвечу, что для ГВ нужно(exe формат)
     
  26. AWRage

    Проверенный

    Регистрация:
    10.07.2015
    Сообщения:
    645
    Симпатии:
    118
    Репутация:
    57
    bool b = *(bool *)0xB7CEE4; // read
    *(bool *)0xB7CEE4 = true; // write
     
    Rapt0r6113 нравится это.
  27. Rapt0r6113

    Rapt0r6113 Известный пользователь

    Регистрация:
    10.07.2015
    Сообщения:
    101
    Симпатии:
    10
    Репутация:
    1
    благодарю
     
  28. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    То там по другому делать надо.
     
  29. AWRage

    Проверенный

    Регистрация:
    10.07.2015
    Сообщения:
    645
    Симпатии:
    118
    Репутация:
    57
    Он спросил как редачить адреса памяти. Я ответил.
     
  30. Woofing Giraffe

    Woofing Giraffe Известный пользователь

    Регистрация:
    14.06.2015
    Сообщения:
    379
    Симпатии:
    45
    Репутация:
    14
    Нужно зарандомить число от x до y включительно. Как реализовать? Пробовал так: rand() % (Count[1] - Count[0]) + Count[0];
    На числах от 1 до 9 работает, дальше бред выдает
     
  31. FYP

    FYP админ какой-то

    Регистрация:
    09.03.2013
    Сообщения:
    1.113
    Симпатии:
    1.959
    Репутация:
    736
    rand() - прошлый век, не надо его юзать.
    
    #include <random>
    
    int randomInteger(int min, int max)
    {
       static std::random_device rd;
       static std::default_random_engine e1(rd());
       std::uniform_int_distribution<int> uniform_dist(min, max);
       return uniform_dist(e1);
    }
    
     
    Woofing Giraffe нравится это.
  32. p1cador

    p1cador tvoy ded
    Проверенный

    Регистрация:
    19.03.2014
    Сообщения:
    164
    Симпатии:
    158
    Репутация:
    53
    Несколько вопросов, не касаемых гта:
    1)Steam. HL2: DM. На сервере использвуется VAC. Если сразу после включения игры заинжектить простую .dll, которая хукает directx, то при заходе на сервер прилетает VAC бан, или кикает, или еще че, но если заинжектить ее после подключения к серверу - все работает прекрасно. Неужели в CS:GO будет так же? dZFHfvybigc.jpg
    2)Может есть какие-нибудь хитрости в поиске различных структур в играх? Поделитесь ссылками на статьи/гайды пож. Потому что у меня, кроме как пригласить 2-3 человек на сервер и искать в памяти их хп, позицию и т.п., искать закономерности, разницу между адресами этих значений у игроков (по идее должна быть равна размеру стр-ры), других идей пока что нет.
    3)Или, может, по HL2: DM (движок Source) выкладывали хоть какие-нибудь адреса? Искать всё с нуля впадлу пзедц. Нашел исходники движка, но они старые и хер знает, сколько потерпели изменений.
     
  33. FYP

    FYP админ какой-то

    Регистрация:
    09.03.2013
    Сообщения:
    1.113
    Симпатии:
    1.959
    Репутация:
    736
    @Picador
    1. насколько мне известно, инжектить dll туда, где есть встроенный античит - это плохая практика. спустя время такие дллки начинают палится, если не будут замечены античитом сразу же. почему? точно сказать не могу, но можно предположить, что неизвестные библиотеки отправляются на сервера античита для анализа, возможно даже ручного. альтернатива - внешние (external) читы, но и у них есть хуева гора нюансов.
    2. трюки есть, но они все не универсальные. например, в CE есть немало инструментов для автоматического анализа структур, в IDA Pro можно составить структуру из обращения к полям, есть даже отдельная программа ReClass, которая предназначена лишь для одной цели - разбора структур в запущенном процессе, но любые автоматические методы никак не могут гарантировать правильность распознавания, и чаще всего разбор любых структур требует ручного вмешательства.
    3. можно поискать читы с открытыми исходниками. начни с unknowncheats.me, там немало такого контента.
     
    Последние данные очков репутации:
    Devil1606: 2 Очки (побольше подобных ответов на подобные вопросы. надеюсь, не трудно) 26 ноя 2016
    Devil1606, AWRage и p1cador нравится это.
  34. Sire

    Sire vk.com/sire_lol
    Друг

    Регистрация:
    20.10.2014
    Сообщения:
    407
    Симпатии:
    265
    Репутация:
    39
    int x = rand() % (B - A + 1) + A;
    я так делал

    Pawn, как пример.
    stock FractionName(playerid)
    {
        new fractionname[40];
        switch(pInfo[playerid][pMember])
        {
            case 1: { fractionname = "38"; }
            case 2: { fractionname = "64"; }
            case 3: { fractionname = "208+"; }
             case 4: { fractionname = "++102"; }
            case 5: { fractionname = "283"; }
        }
        return fractionname;
    }
    И потом хуярим например так:
    new dialog[24 + 40 + 40]; format(dialog, sizeof(dialog), "%s приглашает Вас присоединиться к %s", pInfo[playerid][pName], FractionName(playerid));
    Kak захуярить на C++ такое? Ну сток создать
     
    #1274 Sire, 15 ноя 2016
    Последнее редактирование модератором: 17 ноя 2016
  35. Woofing Giraffe

    Woofing Giraffe Известный пользователь

    Регистрация:
    14.06.2015
    Сообщения:
    379
    Симпатии:
    45
    Репутация:
    14
    char же обычный
     
  36. BlackKnigga

    Проверенный

    Регистрация:
    10.01.2016
    Сообщения:
    616
    Симпатии:
    140
    Репутация:
    66
    Есть две строки, одна указатель, другая массив:
    char *pstr = "string",
            str[] = "string";
    Как их сравнить?
     
  37. p1cador

    p1cador tvoy ded
    Проверенный

    Регистрация:
    19.03.2014
    Сообщения:
    164
    Симпатии:
    158
    Репутация:
    53
    @BlackKnigga, название массива(str) это адрес его первого элемента.
    Передай их в соответствующую функцию/напиши сам
     
    #1277 p1cador, 22 ноя 2016
    Последнее редактирование: 22 ноя 2016
  38. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
  39. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.2013
    Сообщения:
    2.668
    Симпатии:
    1.660
    Репутация:
    438
    strcmp
     
    RanGoo нравится это.
  40. BlackKnigga

    Проверенный

    Регистрация:
    10.01.2016
    Сообщения:
    616
    Симпатии:
    140
    Репутация:
    66
    Разобрался уже. Оказалось что если строки равны, strcmp вернет NULL:monkey:
     
    RanGoo нравится это.