[Ajuda] Possivel?
#1

Estou tentando fazer um geito de colocar uma cor realmente RANDOMIZADA.

Eu fiz o codigo:

new string[126];
format(string, 256, "0x%x%x%xFF", random(255), random(255), random(255));

Que resulta em um codigo de cor, por exemplo:

0x27AA10FF

Queria seber se tem como eu converter o codigo para colocar em um SetPlayerColor(playerid,color).

Se souberem avisem ae
Reply
#2

Acho bem possivel que nгo hб como fazer isto, pois os parametros de SetPlayerColor nгo aceita string.
a nгo ser que vocк crie um nova funзгo para isto, mбs tambйm acredito que nгo adiantaria pois ao menos da forma que pensei voce teria que utilizar algumas cores jб definidas, entгo jб se tornaria inъtil.

Atenciosamente,
Falcon.
Reply
#3

pawn Код:
new string[126];
format(string, 256, "0x%x%x%xFF", random(255), random(255), random(255));
SetPlayerColor(playerid, strval(string));
tente.
Reply
#4

Eu tentei:

new string[20], st[256];
format(string, 20, "0x%x%x%xFF", random(255), random(255), random(255));
format(st, 256, "%d", strval(string));
SendClientMessage(playerid, 0xFFFFFFFF, st);

Resultado: 0

@EDIT:

Eu lembrei de uma coisa que um kra me falou:

Quote:
Originally Posted by SmallMoke
Посмотреть сообщение
@Dr_Pawno

Esse se a cor no caso ser decimal?

Para poder executar o proceso de tirar o '0x' e o 'FF', vocк precisarб converter tudo para string, logo que converter para string isto serб passado para value, tornando-se a operaзгo impossнvel, assim tendo que fazer

pawn Код:
#define MinhaCor "0xFF0000FF" //Vermelho
O que mudaria totalmente as coisas

Pensando nisto, olhe esta funзгo que publiquei na comunidade Pawno Scripting
Uma funзгo que executa este processo:

pawn Код:
setBackgroundColour(iColour,sMsg[])
{
    new
        sStr[22],
        iLoop = 0x0;

    while(sMsg[iLoop]) {
        if( sMsg[iLoop] == 0x7B && sMsg[iLoop + 0x1] == 0x2F && sMsg[iLoop + 0x2] == 0x7D) {
            format(sStr, sizeof (sStr), "{%06x}",iColour);
            strdel(sMsg, iLoop, iLoop + 3);
            strins(sMsg, sStr, iLoop);
        }
        iLoop += 0x3;
    }
    return sMsg;
}
Nesta funзгo vocк simplesmente coloca a mensagem

"Olб {FFFFFF}usuбrio{/} como vai"

Simplesmente elб irб converter {/} para a cor de fundo definida na mensagem (no caso em SendClientMessage)

Bem, o que isto tem haver?

Muito simples, para poder passar as cores desta forma {FFFFFF} devemos utilizar format:

pawn Код:
stock returnHexColour(cor)
{
    static str[24];
    format(str, sizeof (str), "{%06x}",cor);
    return str;
}
Esta funзгo jб retorna a cor feita .
Nгo teria como converter o returnHexColour(cor) para returnHexColour(string[])?
Reply
#5

humm legal isso,posta pra sugestгo para proxima verзгo do SA-MP seria maneiro isso.
obs: tentei de 4 maneiros aqui em casa todas derгo erro!
Reply
#6

PHP код:
stock IntToHex(number// Dutils.inc
{
    new 
m=1;
    new 
depth=0;
    while (
number>=m) {
        
m*16;
        
depth++;
    }
    
depth--;
    new 
str[255];
    for (new 
depth>= 0i--)
    {
        
str[i] = ( number 0x0F) + 0x30;
        
str[i] += (str[i] > '9') ? 0x07 0x00;
        
number >>= 4;
    }
    
str[8] = '\0';
    return 
str;
}
public 
OnPlayerConnect(playerid)
{
    new 
string[100];
    
format(string,sizeof(string),"%x%x%x"random(255), random(255), random(255));
    
SetPlayerColor(playerid,IntToHex(strval(string)));
    return 
true;

Reply
#7

Nгo adianta. Este codigo retorna em string. Tem que retornar em variavel
Reply
#8

R: 255
G: 255
B: 255

Resultado 255255255. (:

Eu nгo sei ao certo se o compilador interpreta hex como hex, seilб. Sу sei que quando vocк faz new i = 0xFFFFFFFF; Isso seria uma vбriavel INT, mas vocк esta colocando um valor hex.

Basta tirar as conclusхes, acho. Ou manda uma PM pro ****** (:
Reply
#9

format(string,sizeof(string),"0x%x%x%xFF", random(255), random(255), random(255));

Cria um valor hexadecimal
Reply
#10

Nгo, mano. Tipo. Isso nгo vai funcionar.

Eu printei uns bagui aqui e o hex vira decimal na compilaзгo como um numero absurdo.

Salvar, parece atй que dб convertendo hex pra decimal na calculadore e colocando na database, mas gerar random eu nгo sei nгo.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)