#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"
SAMPFUNCS *SF = new SAMPFUNCS();
int Score = 3;
stFontInfo *pFont;
char oldnick[4096] = { 0 };
char nick[4096]= { 0 };
bool bAct = false;
void CALLBACK cmd_show_info_player(std::string param)
{
bAct ^= true;
}
bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
CONST RGNDATA *pDirtyRegion)
{
if (SUCCEEDED(SF->getRender()->BeginRender())) // если рендерер готов к рисованию
{
// рисуем
if (bAct)
{
for (uint16_t it = 0; it < SAMP_MAX_PLAYERS; it++) // цикл игроков
{
SF->getSAMP()->getInfo()->UpdateScoreAndPing(); // обновляем таб
if (!SF->getSAMP()->getPlayers()->iIsListed[it]) continue; // проверяем подключен ли игрок
Score = SF->getSAMP()->getPlayers()->pRemotePlayer[it]->iScore; // Записываем в переменную лвл игрока
if (Score == 0) // Проверяем что игрок 0 лвл.
{
sprintf(oldnick, "%s [%i]", SF->getSAMP()->getPlayers()->GetPlayerName(it), it);
sprintf(nick, "%s \n %s", nick, oldnick);
// и так всё понятно.
}
}
pFont->Print(nick, D3DCOLOR_ARGB(170, 255, 255, 255), 500, 500, false);
// Рисуем список
sprintf(oldnick, "");
sprintf(nick, "");
// Очищаем переменные , что бы не было краша.
}
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->getSAMP()->getInfo()->UpdateScoreAndPing();
SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);
pFont = SF->getRender()->CreateNewFont("Consolas", 10, FCR_BORDER);
SF->getSAMP()->registerChatCommand("dauncheck", cmd_show_info_player);
SF->getSAMP()->getChat()->AddChatMessage( D3DCOLOR_XRGB( 0, 0xAA, 0 ), "SAMPFUNCS Plugin loaded." );
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;
}