Вопрос по API | Не прходи мимо

Статус
В этой теме нельзя размещать новые ответы.

sxpurp

Известный
Автор темы
126
41
Вообщем я решил попробывать написать SF плагин а именно типо инфа о нас на экране.
Я посмотрел урок с Рендером сделал всё как нужно тект появился на экране далее я решил преукрасить текст вспомнил что C++ похож с pawn я раскарсил текст HTML цвета {}
Вообщем не ссуть.
Далее мне нужно узнать Наш ник, сколько у нас денег и какой у нас лвл и тут я столкнулся с проблемой.
Если посмотреть в уроке то там через команду узнаёться ид игрока и далее через параметр узнаёться информация но как сделать что бы эта информация считывалась в нас если судить по павно то достаточно написать playerid.
После всего этого раскажите к примеру как узнать количество денег и почему лагает игра при заходе в неё.

Прикрепляю весь код там есть ошибки я знаю.
C++:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
    CONST RGNDATA *pDirtyRegion)
{
    if (SUCCEEDED(SF->getRender()->BeginRender())) // если девайс готов к рисованию
    {
        stFontInfo *pFont;
        stRemotePlayer *pPlayer = SF->getSAMP();
        pFont = SF->getRender()->CreateNewFont("Arial", 12, FCR_BORDER);
        pFont->Print("{D7D038}N{B9B9B9}ame: {D7D038}%s\n{D7D038}M{B9B9B9}oney: {41BA64}${B9B9B9}99\n{D7D038}S{B9B9B9}core: {D7D038}%d", pPlayer->szPlayerName, pPlayer->iMoney, pPlayer->iScore, D3DCOLOR_ARGB(255, 255, 255, 0), 500, 500, false);
        SF->getRender()->EndRender(); // завершаем рисование
    };

    return 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->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;
}
 

nikita_cheater

Новичок
13
3

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
SF->getSAMP()->getPlayers()->GetPlayerName(id);
GAME->GetPlayerInfo()->GetPlayerMoney();

C++:
int getPlayerScore(int iPlayerId)
{
    stPlayerPool *playersPool = SF->getSAMP()->getPlayers();
    if (playersPool->sLocalPlayerID == iPlayerId)
        return playersPool->iLocalPlayerScore;

    stRemotePlayer *remotePlayer = playersPool->pRemotePlayer[iPlayerId];
    if (!playersPool->IsPlayerDefined(iPlayerId, false) || remotePlayer == nullptr)
        return 0;

    return remotePlayer->iScore;
}
 
Статус
В этой теме нельзя размещать новые ответы.