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

sizeoftrickster

…And Megadeth For All?
Проверенный
129
457
Всем привет! Подскажите пожалуйста, есть ли способ узнать, была ли нажата клавиша без использования: wndproc hook -> uMsg -> wParam
Имеется одна функция(ниже), которая позволяет это узнать, но там ебануться какая задержка. Например: зажал клавишу D(Move Right) на +-400 мс, и только спустя это количество времени функция(ниже) выдала 128, т.е. клавиша была нажата.
Аналогично с хуком wndproc, там необходимо минимальное нажатие клавиши, а не зажатие
C++:
enum KeysNum
{
    Right = 0x0
}; // enum KeysNum

BYTE GetGameKey( KeysNum key ) {
    return *reinterpret_cast<BYTE*>( 0xB73458 + key );
}

if ( GetGameKey( KeysNum::Right ) == 0x000080 ) {
    // ...
}
 
D

deleted-user-486881

Гость
1. Мой вопрос: Как вывести в чат SAMP`a 0.3.7 R3 сообщение?
 

F0RQU1N and

Известный
1,310
495
Всем привет! Подскажите пожалуйста, есть ли способ узнать, была ли нажата клавиша без использования: wndproc hook -> uMsg -> wParam
Имеется одна функция(ниже), которая позволяет это узнать, но там ебануться какая задержка. Например: зажал клавишу D(Move Right) на +-400 мс, и только спустя это количество времени функция(ниже) выдала 128, т.е. клавиша была нажата.
Аналогично с хуком wndproc, там необходимо минимальное нажатие клавиши, а не зажатие
C++:
enum KeysNum
{
    Right = 0x0
}; // enum KeysNum

BYTE GetGameKey( KeysNum key ) {
    return *reinterpret_cast<BYTE*>( 0xB73458 + key );
}

if ( GetGameKey( KeysNum::Right ) == 0x000080 ) {
    // ...
}
а почему бы и не юзать хук? это же тебе не дота где каждый хук/патч лишний детект
 
  • Нравится
Реакции: Z3roKwq

fushiqX

Участник
30
8
Приветствую Вас дорогие форумчани.
Недавно начал изучать SF API, и столкнулся по написанию рендера на какой либо объект ( допустим даже ВХ на шахту АРЗ ).
Могли бы Вы предоставить какой либо пример кода, или хотя бы функцию которая рисует полоски к заданному объекту.
Заранее спасибо.
 

Z3roKwq

Известный
294
157
Приветствую Вас дорогие форумчани.
Недавно начал изучать SF API, и столкнулся по написанию рендера на какой либо объект ( допустим даже ВХ на шахту АРЗ ).
Могли бы Вы предоставить какой либо пример кода, или хотя бы функцию которая рисует полоски к заданному объекту.
Заранее спасибо.

https://www.blast.hk/threads/43800/
Код не лучший, но как пример пойдёт :)
 

zheluk!

Новичок
7
0
глупый вопрос но, как изменить центр тяжести для машины через plugin sdk
Если не сложно дайте пример : )
 

_doomsday_

Новичок
15
3
В тексте встречаются неопределённые символы:
1692274729551.png


Как удалить их из строки?
 

хуега)

РП игрок
Модератор
2,568
2,269
В тексте встречаются неопределённые символы:
Посмотреть вложение 212134

Как удалить их из строки?
не шарю, как это красиво оформить в C++, но в теории кастуй строку в int и отсеивай лишние байты, отталкиваясь от ASCII
C++:
#include <iostream>

int main()
{
    const char* str = "hello";
    int number = (*(int*)str);
    unsigned char* bytes = reinterpret_cast<unsigned char*>(&number);

    for (int i = 0; i < sizeof(number); i++) { // знаю, что дерьмо-код, но не помню, как правильно пройтись по массиву
        // тут проверяешь байт на валидность
        std::cout << static_cast<int>(bytes[i]) << " ";
    }  
}
1692277602449.png

C++:
#include <iostream>
#include <cstring>

int main()
{
    const std::string str = "hello";
    unsigned char bytes[str.size() + 1];

    std::memcpy(bytes, str.c_str(), str.size() + 1);

    for (std::size_t i = 0; i < str.size(); i++) {
        std::cout << static_cast<unsigned int>(bytes[i]) << " ";
    }

    return 0;
}
 
Последнее редактирование:
  • Нравится
Реакции: _doomsday_ и Digger Man

_doomsday_

Новичок
15
3
не шарю, как это красиво оформить в C++, но в теории кастуй строку в int и отсеивай лишние байты, отталкиваясь от ASCII
C++:
#include <iostream>

int main()
{
    const char* str = "hello";
    int number = (*(int*)str);
    unsigned char* bytes = reinterpret_cast<unsigned char*>(&number);

    for (int i = 0; i < sizeof(number); i++) { // знаю, что дерьмо-код, но не помню, как правильно пройтись по массиву
        // тут проверяешь байт на валидность
        std::cout << static_cast<int>(bytes[i]) << " ";
    }
}
Посмотреть вложение 212145
C++:
#include <iostream>
#include <cstring>

int main()
{
    const std::string str = "hello";
    unsigned char bytes[str.size() + 1];

    std::memcpy(bytes, str.c_str(), str.size() + 1);

    for (std::size_t i = 0; i < str.size(); i++) {
        std::cout << static_cast<unsigned int>(bytes[i]) << " ";
    }

    return 0;
}
С этим разобрался, но ща выяснил что гетлайн в принципе не читает всё, что после этого символа. Собственно в строку этот символ не попадает
 
Последнее редактирование:
  • Вау
Реакции: хуега)