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

Sire Like

Blanche Bier
Друг
487
234
1) Как проверить что у мну дигл в руке?
2) Как проверить что я выстрелил\стреляю ?
 

0pc0d3R

Потрачен
550
270
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
  • Нравится
Реакции: Sire Like

0pc0d3R

Потрачен
550
270
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
  • Нравится
Реакции: Tray228

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,262
1,752
Не конектиться к серверу из-за плагина
PHP:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
bool STATUS;
stFontInfo *pFont;
char buf[512];
static bool INIT = false;

SAMPFUNCS *SF = new SAMPFUNCS();

bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
CONST RGNDATA *pDirtyRegion)
{
if (SUCCEEDED(SF->getRender()->BeginRender()) && STATUS == true)
{
SYSTEMTIME lt; GetLocalTime(&lt);
float FPS = GAME->GetFPS();

sprintf(buf, "Дата: День: %d | Месяц: %d | Год: %d ", lt.wDay, lt.wMonth, lt.wYear);
pFont->Print(buf, D3DCOLOR_ARGB(255, 255, 255, 255), 10, 300, false);

sprintf(buf, "Время: %02d | %02d | %02d ", lt.wHour, lt.wMinute, lt.wSecond);
pFont->Print(buf, D3DCOLOR_ARGB(255, 255, 255, 255), 10, 280, false);

sprintf(buf, "FPS: %f ", FPS);
pFont->Print(buf, D3DCOLOR_ARGB(255, 0, 255, 0), 10, 260, false);

SF->getRender()->EndRender();
}

return true;
};

void CALLBACK cmdd(std::string param)
{
if (!param.empty()) return;
STATUS ^= true;
}

void CALLBACK cmdds(std::string param)
{
SF->getSAMP()->getPlayers()->pLocalPlayer->SetSpecialAction(68);
};

bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
if (params->packetId == ScriptRPCEnumeration::RPC_ScrApplyAnimation && STATUS == true)
{
short int pID;
char animlib[10];
char animname[14];
float fDelta;
bool loop, x, y, fr;
int time;
byte nameLen;
int iid = SF->getSAMP()->getPlayers()->sLocalPlayerID;

params->bitStream->ResetReadPointer();
params->bitStream->Read(pID);
params->bitStream->Read(nameLen);
params->bitStream->Read(animlib, nameLen);
animlib[nameLen] = '\0';
params->bitStream->Read(nameLen);
params->bitStream->Read(animname, nameLen);
animname[nameLen] = '\0';
params->bitStream->Read(fDelta);
params->bitStream->Read(loop);
params->bitStream->Read(x);
params->bitStream->Read(y);
params->bitStream->Read(fr);
params->bitStream->Read(time);
params->bitStream->ResetReadPointer();
if (iid == pID && !strcmp("COLT45", animlib) && !strcmp("colt45_reload", animname))
return false;

};

};

void CALLBACK cmda(std::string param)
{

SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "{0000FF}Command: {FFFFFF}/kuk - мача, /sbiv - сбив анимки перезарядки /times ");
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "{0000FF}/times - показатель {FFFFFF}FPS, Время, Даты. ");
};

void CALLBACK cmd(std::string param)
{
STATUS ^= true;
};

void CALLBACK mainloop()
{
static bool init = false;
if (!init)
{
if (GAME == nullptr)
return;
if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
return;

if (!SF->getSAMP()->IsInitialized())
return;

SF->getSAMP()->registerChatCommand("sfhelp", cmda);
SF->getSAMP()->registerChatCommand("kuk", cmd);
SF->getSAMP()->registerChatCommand("sbiv", cmdd);
SF->getSAMP()->registerChatCommand("times", cmdds);
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "{0000FF}[SFPlugin] {FFFFFF}Loaded by {FF0000}Tray228 {FF0000}Info: /sfhelp");
SF->LogConsole("{FF0000}[SFPlugin] {FFFFFF}загужен by Tray228");
pFont = SF->getRender()->CreateNewFont("Arial", 11, FCR_BORDER);
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);

init = true;
}
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
switch (dwReasonForCall)
{
case DLL_PROCESS_ATTACH:
SF->initPlugin(mainloop, hModule);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
в функции
Код:
bool CALLBACK incomingRPC(stRakNetHookParams *params)
в самый конец добавь return true;

между
9e69a54b9e.png


и у первой } убери ;
 
  • Нравится
Реакции: Tray228

Woofing Giraffe

Активный
402
49
Код:
char storka[128] = "Текст лолол яяЯЯя ы"
Как получить строку начиная с "лолол"? Я пытался через sscanf, он эту блядскую букву "я" считает как разделитель строки. Через regex я чёт не понял как делать. Объясните пожалуйста)
Пытался с помощью sscanf(storka, "%[a-zA-Zа-яА-Я]", kek); Но бля, записывает только "Текст лолол ", дальше строка обрывается
 
Последнее редактирование:

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,262
1,752
Код:
char storka[128] = "Текст лолол яяЯЯя ы"
Как получить строку начиная с "лолол"? Я пытался через sscanf, он эту блядскую букву "я" считает как разделитель строки. Через regex я чёт не понял как делать. Объясните пожалуйста)
Пытался с помощью sscanf(storka, "%[a-zA-Zа-яА-Я]", kek); Но бля, записывает только "Текст лолол ", дальше строка обрывается
Код:
char* result = strstr(storka, "лолол");
в result будет указатель на то, где начинается "лолол"
 

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,262
1,752
в проблема в том что я ввожу /times и у меня отключается /sbiv
и так же наоборот
PHP:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

int STATUS;
stFontInfo *pFont;
char buf[512];
static bool INIT = false;

SAMPFUNCS *SF = new SAMPFUNCS();

bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
    CONST RGNDATA *pDirtyRegion)
{
    if (SUCCEEDED(SF->getRender()->BeginRender()) && STATUS == 2)
    {
        SYSTEMTIME lt; GetLocalTime(&lt);
        float FPS = GAME->GetFPS();

        sprintf(buf, "Дата: День: %d | Месяц: %d | Год: %d ", lt.wDay, lt.wMonth, lt.wYear);
        pFont->Print(buf, D3DCOLOR_ARGB(255, 255, 255, 255), 10, 300, false);

        sprintf(buf, "Время: %02d | %02d | %02d ", lt.wHour, lt.wMinute, lt.wSecond);
        pFont->Print(buf, D3DCOLOR_ARGB(255, 255, 255, 255), 10, 280, false);

        sprintf(buf, "FPS: %.f ", FPS);
        pFont->Print(buf, D3DCOLOR_ARGB(255, 0, 255, 0), 10, 260, false);

        SF->getRender()->EndRender();
    }

    return true;
};

void CALLBACK cmdd(std::string param)
{
    if (!param.empty()) return;
    STATUS = 2;
}

void CALLBACK cmdds(std::string param)
{
    SF->getSAMP()->getPlayers()->pLocalPlayer->SetSpecialAction(68);
};

bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrApplyAnimation && STATUS == 1)
    {
        short int pID;
        char animlib[10];
        char animname[14];
        float fDelta;
        bool loop, x, y, fr;
        int time;
        byte nameLen;
        int iid = SF->getSAMP()->getPlayers()->sLocalPlayerID;

        params->bitStream->ResetReadPointer();
        params->bitStream->Read(pID);
        params->bitStream->Read(nameLen);
        params->bitStream->Read(animlib, nameLen);
        animlib[nameLen] = '\0';
        params->bitStream->Read(nameLen);
        params->bitStream->Read(animname, nameLen);
        animname[nameLen] = '\0';
        params->bitStream->Read(fDelta);
        params->bitStream->Read(loop);
        params->bitStream->Read(x);
        params->bitStream->Read(y);
        params->bitStream->Read(fr);
        params->bitStream->Read(time);
        params->bitStream->ResetReadPointer();
        if (iid == pID && !strcmp("COLT45", animlib) && !strcmp("colt45_reload", animname))
            return false;

    }
    return true;

};

void CALLBACK cmda(std::string param )
{

    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "{0000FF}Command: {FFFFFF}/kuk - мача, /sbiv - сбив анимки перезарядки /times ");
    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "{0000FF}/times - показатель {FFFFFF}FPS, Время, Даты, /fspawn - заспавниться ");
    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "{0000FF}/recconect - {FFFFFF}переподключение на сервер. ");
};
    

void CALLBACK cmd(std::string param)
{
    STATUS = 1;
};





void CALLBACK telo(std::string param)
{
    SF->getSAMP()->disconnect(100);
    SF->getSAMP()->getInfo()->RestartGame();
    SF->getSAMP()->getInfo()->iGameState = GAMESTATE_WAIT_CONNECT;
};


void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;

        if (!SF->getSAMP()->IsInitialized())
            return;
        SF->getSAMP()->registerChatCommand("recconect", telo);
        SF->getSAMP()->registerChatCommand("sfhelp", cmda);
        SF->getSAMP()->registerChatCommand("sbiv", cmd);
        SF->getSAMP()->registerChatCommand("times", cmdd);
        SF->getSAMP()->registerChatCommand("kuk", cmdds);
        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "{FFFFFF}[{0000FF}SFPlugin]{FFFFFF} {FFFFFF}Loaded{FFFFFF}] by {FF0000}Tray228 {FF0000}Info: /sfhelp");
        SF->LogConsole("{FF0000}[SFPlugin] {FFFFFF}загужен by Tray228");
        pFont = SF->getRender()->CreateNewFont("Arial", 11, FCR_BORDER);
        SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
       SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);

        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
    case DLL_PROCESS_ATTACH:
        SF->initPlugin(mainloop, hModule);
        break;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
ну так у тебя одна переменная на две функции, нахуя? сделай на обе функции две разные переменные
 
  • Нравится
Реакции: Tray228

Woofing Giraffe

Активный
402
49
Как поставить проверку на ввод команды /q? Чтоб вовремя завершить цикл в потоке, дабы игру не крашило.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Как поставить проверку на ввод команды /q? Чтоб вовремя завершить цикл в потоке, дабы игру не крашило.
Установить кэллбэк при деструкторе игры.
C++:
void CALLBACK callbackDestructor()
{
    //
}

SF->getGame()->registerGameDestructorCallback(callbackDestructor);
 
  • Нравится
Реакции: Woofing Giraffe