Параметр A в цвете уменьшайКак сделать постепенное исчезание ?
PHP:pFont->Print(arr[0], D3DCOLOR_ARGB(255, 255, 255, 0), 1454, 1000, false);
я шарю что его надо уменьшать , но не знаю как это реализовать.Параметр A в цвете уменьшай
например заменить его переменной, значение которой и будешь менятья шарю что его надо уменьшать , но не знаю как это реализовать.
Что бы после появления , через секунд 5 потихоньку исчезло .
например заменить его переменной, значение которой и будешь менять
#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();
stFontInfo *pFont;
bool bstarttext = false;
int iA;
DWORD dgoiA;
bool bgoiA;
bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
CONST RGNDATA *pDirtyRegion)
{
if (SUCCEEDED(SF->getRender()->BeginRender())) // если девайс готов к рисованию
{
if (!SF->getGame()->isGTAMenuActive())
{
if (bstarttext)
{
pFont->Print("{87CEFA}iAmerican text invisibleeeeeeeeeeeeeeeeee", D3DCOLOR_ARGB(iA, 255, 255, 255), 330, 330, false); // A = 0
}
}
SF->getRender()->EndRender(); // завершаем рисование
};
return true; // возвращаем положительный результат
};
void Timers() {
if (bgoiA)
{
if (GetTickCount() - dgoiA > 10)
{
iA = 0;
bgoiA = false;
}
}
}
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()->getChat()->AddChatMessage( D3DCOLOR_XRGB( 0, 0xAA, 0 ), "SAMPFUNCS Plugin loaded." );
SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);
pFont = SF->getRender()->CreateNewFont("Comic Sans MS", 12, FCR_BORDER);
init = true;
}
Timers();
if (SF->getGame()->isKeyPressed(VK_F2)) // Старт текста
{
if (bstarttext)
{
bstarttext = false;
}
else
{
bstarttext = true;
dgoiA = GetTickCount();
iA = 255;
bgoiA = 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;
}
Конечно , как бы вопрос я решил. Но все таки , как обойтись без этого ...10 милисекунд же.
void Timers() {
if (bgoiA)
{
if (GetTickCount() - dgoiA > 1000)
{
iA = 200;
}
if (GetTickCount() - dgoiA > 2000)
{
iA = 150;
}
if (GetTickCount() - dgoiA > 3000)
{
iA = 150;
}
if (GetTickCount() - dgoiA > 4000)
{
iA = 65;
}
if (GetTickCount() - dgoiA > 5000)
{
iA = 0;
bgoiA = false;
}
}
}
Заюзай в цикле SetTimer которые каждую 1 сек будет от А отнимать к примеру 50Конечно , как бы вопрос я решил. Но все таки , как обойтись без этого ...
И сделать более плавное исчезновение текста.
PHP:void Timers() { if (bgoiA) { if (GetTickCount() - dgoiA > 1000) { iA = 200; } if (GetTickCount() - dgoiA > 2000) { iA = 150; } if (GetTickCount() - dgoiA > 3000) { iA = 150; } if (GetTickCount() - dgoiA > 4000) { iA = 65; } if (GetTickCount() - dgoiA > 5000) { iA = 0; bgoiA = false; } } }
1 способ. Создай переменную типа float и в главном цикле отнимай от неё сколько-то десятых или сотых (методом подбора) и потом когда нужно рисовать округляй её до целого числа.Конечно , как бы вопрос я решил. Но все таки , как обойтись без этого ...
И сделать более плавное исчезновение текста.
DWORD tick = 0;
uint32 alpha = 255;
// mainloop
if(GetTickCount() >= tick)
{
alpha--;
tick = GetTickCount() + 100;
}
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()->getChat()->AddChatMessage( D3DCOLOR_XRGB( 0, 0xAA, 0 ), "SAMPFUNCS Plugin loaded." );
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC); // регистрируем callback
init = true;
}
if (SF->getGame()->isKeyPressed(VK_LMENU) && SF->getGame()->isKeyPressed(VK_UP))
{
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "SAMPFUNCS Plugin loaded.");
};
}