Другое SAMPFUNCS | API C++

Dark_Knight

Me, me and me.
Друг
4,062
2,077
VK_LBUTTON == true. Вот и срабатывает всегда.
VK_LBUTTON это макрос и ВС тебя нахуй пошлет с такой переменной. Если ты хочешь булевую переменную проверять, то его проверка тоже подойдет, а вообще надо эму проверять зажатость клавиш(IsDown) или нажатость(IsPressed) в классe CGame
 

Tray228

Новичок
218
27
VK_LBUTTON это макрос и ВС тебя нахуй пошлет с такой переменной. Если ты хочешь булевую переменную проверять, то его проверка тоже подойдет, а вообще надо эму проверять зажатость клавиш(IsDown) или нажатость(IsPressed) в классe CGame
то есть мне лучше ispreseed? Чем VK_LBUTTON
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
то есть мне лучше ispreseed? Чем VK_LBUTTON
mart_108712173_orig_.jpg
 
  • Нравится
Реакции: mac и Tray228

Woofing Giraffe

Активный
402
49
Код:
bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrSetPlayerColor)
    {
        WORD i;
        DWORD Color;
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(i);
        params->bitStream->Read(Color);
        params->bitStream->ResetReadPointer();
        if (Color == 0xFFFFFF01)
        {
            params->bitStream->ResetWritePointer();
            params->bitStream->Write(i);
            params->bitStream->Write(0xFF000001);
        }
    };
    return true;
};
Проблема в том что цвет ника меняет только в табе, а в игре цвет остается тем же.
Бля, ну помогите(
 

AWRage

Активный
642
141
Можно ли получить клавишу, которая зажата. Пробовал getch(), GetKeyState(), без результата.
 

ЯedЯuM

Malware Maker
244
304
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как отправить урон с кулака, дилдо и т.д
Если чисто на синхре то шли онфут пакет с позицией в метре от жертвы и разворачивай себя точно в её сторону(там это на кватернионах по этому прийдеться высчитывать) Ставишь ид анимки удара и соотвествующий флаг к ней. И лучше после этого послать GiveDamageRPC сам знаешь зачем. (Ид гана нулевой, урон от одного до трёх). Но можно обойтись и без манипуляций с кватернионами, разворачивай у себя в клиенте.
Например так. Только рпц на выдачу дамага лучше под GetTickCount на 220 мс поставить.
C++:
#pragma warning(disable:4409)
float GetZRot(uint32_t enemy)
{
    if (enemy == 65535) return -0.0f;
    float x1 = PEDSELF->GetPosition()->fX;
    float y1 = PEDSELF->GetPosition()->fY;
    float x2 = SF->getSAMP()->getPlayers()->pRemotePlayer[enemy]->pPlayerData->fOnFootPos[0];
    float y2 = SF->getSAMP()->getPlayers()->pRemotePlayer[enemy]->pPlayerData->fOnFootPos[1];
    float kx, ky;
    float t, a;
    kx = x2 - x1;
    ky = y2 - y1;
    if (kx == 0) kx = 0.00001f;
    t = kx / ky;
    if (t < 0) t = -t;
    a = (float)(180 * atan((float)t) / M_PI);
    if ((kx <= 0) && (ky <= 0)) a = 180 - a;
    else if ((kx >= 0) && (ky >= 0)) a = 359.99999f - a;
    else if ((kx >= 0) && (ky <= 0)) a = -(180 - a);
    a = (a * M_PI) / 180.0f;
    return a;
}
inline float GetDistance3D(float x1, float y1, float z1, float x2, float y2, float z2)
{
    return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1) + (z2 - z1) * (z2 - z1));
}
inline void SendTakeDamageRPC(uint32_t TargetID, unsigned int weapon_id, int damage)
{
    BitStream bs;
    bs.Write(true);
    bs.Write(TargetID);
    bs.Write((float)damage);
    bs.Write(weapon_id);
    bs.Write(3);
    SF->getRakNet()->SendRPC(RPCEnumeration::RPC_GiveTakeDamage, &bs);
}
// переменная targetId должна содержать ид твоей жертвы
uint32_t targetId;
bool __stdcall HackMySync(stRakNetHookParams *hook)
{
    if (hook->packetId == ID_PLAYER_SYNC && Enabled == true)
    {
        stOnFootData foot; byte packetID;
        memset(&foot, 0, sizeof(stOnFootData));
        hook->bitStream->ResetReadPointer();
        hook->bitStream->Read((BYTE)packetID);
        hook->bitStream->Read((PCHAR)&foot, sizeof(stOnFootData));
        hook->bitStream->ResetReadPointer();
        if (!SF->getSAMP()->getPlayers()->iIsListed[targetId]) return true;
        if (!SF->getSAMP()->getPlayers()->IsPlayerDefined(targetId, true)) return true;
        if (SF->getSAMP()->getPlayers()->pRemotePlayer[targetId]->pPlayerData->iAFKState == 2) return true;
        if (SF->getSAMP()->getPlayers()->pRemotePlayer[targetId]->pPlayerData->bytePlayerState != PLAYER_STATE_ONFOOT) return true;
        float dist[3], mdist[3];
        for (short x = 0; x < 3; x++)
        {
            dist[x] = SF->getSAMP()->getPlayers()->pRemotePlayer[targetId]->pPlayerData->fOnFootPos[x];
            mdist[x] = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData.fPosition[x];
        }
        if (GetDistance3D(dist[0], dist[1], dist[2], mdist[0], mdist[1], mdist[2]) > 30.0f) return true;
        PEDSELF->SetTargetRotation(GetZRot(targetId));
        for (short x = 0; x < 3; x++)
        foot.fPosition[x] = SF->getSAMP()->getPlayers()->pRemotePlayer[targetId]->pPlayerData->fOnFootPos[x];
        foot.fPosition[1] += 0.5f;
        hook->bitStream->ResetWritePointer();
        hook->bitStream->Write((BYTE)packetID);
        hook->bitStream->Write((PCHAR)&foot, sizeof(stOnFootData));
        SendTakeDamageRPC(targetId, 0, rand() % 3 + 1);
    }
    return true;
}
 
Последнее редактирование:

Tray228

Новичок
218
27
как отправить сообщение на сервер без RPC
з.ы в клео можно было как-то.
 

AWRage

Активный
642
141
Можно как-то узнать высоту форматированного текста? *pFont->Height не подойдет, так как оно возвращает высоту одной строки, а у меня текст форматированный, с переходом на новую строку.