SA-MP Forums Archive
[Ajuda] Possivel? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Possivel? (/showthread.php?tid=263443)



[Ajuda] Possivel? - Dr_Pawno - 21.06.2011

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


Re: [Ajuda] Possivel? - Falcon. - 21.06.2011

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.


Re: [Ajuda] Possivel? - TheGarfield - 21.06.2011

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


Re: [Ajuda] Possivel? - Dr_Pawno - 21.06.2011

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[])?


Re: [Ajuda] Possivel? - [BGL]jonas_OwNer - 22.06.2011

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!


Re: [Ajuda] Possivel? - RockFire - 22.06.2011

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;




Re: [Ajuda] Possivel? - Dr_Pawno - 22.06.2011

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


Re: [Ajuda] Possivel? - steki. - 22.06.2011

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 ****** (:


Re: [Ajuda] Possivel? - Dr_Pawno - 22.06.2011

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

Cria um valor hexadecimal


Re: [Ajuda] Possivel? - steki. - 22.06.2011

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.