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