[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 = m*16;
depth++;
}
depth--;
new str[255];
for (new i = depth; i >= 0; i--)
{
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.