TextDrawImage("/scriptfiles/imagem.bmp", QUALIDADE, POSICAO X, POSICAO Y)
TextDrawImage("/scriptfiles/imagem.bmp", RUIM)
// -----------------------------------------------------------------------------
enum {
BOA = 1,
MEDIA,
RUIM
}
native ConstroyTextDrawImage(s[], qualidade = MEDIA, posInicialX = 0, posInicialY = 0);
#define TextDrawImage ConstroyTextDrawImage
forward gCall@TextDrawCreate(x, y, cor);
public gCall@TextDrawCreate(x, y, cor) {
static Text:textID;
textID = TextDrawCreate(float(x), float(y), ".");
TextDrawColor(textID, cor);
TextDrawShowForAll(textID);
return true;
}
// -----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
//
//
// #### ######## ###### ######## ######## ### ## ##
// ## ## ## ## ## ## ## ## ## ### ###
// ## ## ## ## ## ## ## ## #### ####
// ## ######## ###### ## ###### ## ## ## ### ##
// ## ## ## ## ## ######### ## ##
// ## ## ## ## ## ## ## ## ## ##
// #### ## ###### ## ######## ## ## ## ##
//
//
// Criado por Bruno da Silva (iPs DraKiNs)
//
// Acesse meu blog sobre programaзгo http://www.brunodasilva.com.br
//
// Seja membro da melhor equipe de programaзгo
// http://ips-team.forumeiros.com/t2-informacao-inscricao-na-ips
// [iPs]TeaM soluзхes de programaзгo em geral
//
//
// TextDrawImage - Imagem em TextDraw
//
//
/////////////////////////////////////////////////////////////////////////////////
#include "main.h"
#include "malloc.h"
logprintf_t logprintf;
void **ppPluginData;
extern void *pAMXFunctions;
PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports()
{
return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES;
}
PLUGIN_EXPORT bool PLUGIN_CALL Load(void **ppData)
{
pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];
logprintf("Plugin TextDrawImage Carregado | Por Bruno da Silva", PLUGIN_VERSION);
return true;
}
PLUGIN_EXPORT void PLUGIN_CALL Unload()
{
logprintf("Plugin TextDrawImage Descarregado | Por Bruno da Silva");
}
/********************************************************************************/
AMX * data;
int qualidade;
int xs, ys ;
void WINAPI processoAlternativo(void * file);
void WINAPI processoAlternativo(void * file) {
AMX* amx = data;
HDC img;
SIZE size;
HDC hMemDC = CreateCompatibleDC(NULL);
char *ss;
amx_StrParam(amx, (cell)file, ss);
HBITMAP hBitmap = (HBITMAP) LoadImage (NULL, ss, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
if(!hBitmap) {
logprintf("[Erro] Imagem inexistente");
}
else {
BITMAP bm = {0};
GetObject( hBitmap, sizeof(bm), &bm );
LONG cx = bm.bmWidth;
LONG cy = bm.bmHeight;
if (!cx || !cy) {
logprintf("[Erro] Imagem com tamanhos invalidos");
}
else {
int
idx,
x,y;
SelectObject(hMemDC, hBitmap);
for(x = 0; x < cx; x+=qualidade) {
for(y = 0; y < cy; y+=qualidade) {
if(!amx_FindPublic(amx, "gCall@TextDrawCreate", &idx))
{
COLORREF cor = GetPixel(hMemDC, x, y);
BYTE
redValue,
greenValue,
blueValue;
redValue = GetRValue(cor);
greenValue = GetGValue(cor);
blueValue = GetBValue(cor);
amx_Push(amx, ((redValue << 0x18)|(greenValue << 0x10)|(blueValue << 0x8)|(100)));
amx_Push(amx, y+ys);
amx_Push(amx, x+xs);
amx_Exec(amx, NULL, idx);
}
}
}
}
}
}
static cell AMX_NATIVE_CALL n_ConstroyTextDrawImage(AMX *amx, cell *params)
{
//char * file ;
DWORD dwXuxaTHR;
data = amx;
qualidade = params[2];
xs = params[3];
ys = params[4];
HANDLE hThread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)processoAlternativo, (void*)params[1], 0,&dwXuxaTHR);
return 1;
}
AMX_NATIVE_INFO nvoNatives[] =
{
{ "ConstroyTextDrawImage", n_ConstroyTextDrawImage },
{ 0, 0 }
};
PLUGIN_EXPORT int PLUGIN_CALL AmxLoad(AMX *amx)
{
return amx_Register(amx, nvoNatives, -1);
}
PLUGIN_EXPORT int PLUGIN_CALL AmxUnload(AMX *amx)
{
return AMX_ERR_NONE;
}
Nota: A imagem й carregada e mostrada para todos jogadores online. Imagens com resoluзгo MUITO ALTA poderгo ocasionar em ser cortadas, devido ao limite da SA:MP. Portando use umas imagens que fiquem em torno de 150x150 pixels !! O sistema apenas lк imagens no formato BMP Isto dб LAG AO SERVIDOR? Definitivamente nгo, pode deixar por alguns segundos o computador lento. Mas nгo o servidor nгo sofrerб de lags, estou utilizando um processo alternativo (threads) para processar as imagens. Mas tambйm nгo coloque isto em um loop que pode ferrar mesmo com seu servidor, atй porque seria impossнvel o servidor aguentar mais que umas 3 imagens. |
Very good.
@Off Nossa cara, tu й feio demais, tem certeza que se chama Bruno? |