[System][vJass]RGB <-> Hexadecimal
4 participantes
Página 1 de 1
[System][vJass]RGB <-> Hexadecimal
RGB <--> Hexadecimal System
Requerimentos:
Jass NewGen Pack ( Download -> http://www.wc3c.net/showthread.php?t=90999 )
Script:
- Spoiler:
- Código:
library Hex2RGB
/*
_____________________________________________________________________________________________________________________________________________
RGB to Hexadecimal
Hexadecimal to RGB v1.01
by: "VicToR ;D"
_____________________________________________________________________________________________________________________________________________
Requeriments:
Jass NewGen Pack (Download -> http://www.wc3c.net/showthread.php?t=90999)
_____________________________________________________________________________________________________________________________________________
API:
function GetHex takes integer R, integer G, integer B returns string
(Converte valores RGB para Hexadecimal)
(Exemplo: set variavel = GetHex(15,15,15)
(o valor retornado será 0f0f0f)
function GetR takes string s returns integer
(Reconhece o "Red" de um valor Hexadecimal)
(Exemplo: set variavel = GetR(0f0f0f)
(o valor retornado será 15)
function GetG takes string s returns integer
(Reconhece o "Green" de um valor Hexadecimal)
(Exemplo: set variavel = GetG(0f1b0f)
(o valor retornado será 27)
function GetB takes string s returns integer
(Reconhece o "Blue" de um valor Hexadecimal)
(Exemplo: set variavel = GetB(0f1b2d)
(o valor retornado será 45)
_____________________________________________________________________________________________________________________________________________
*/
globals
private integer array TempInteger
private string array HexaRetornado
endglobals
//________________________________________________________________________________________________________________________________________________
function Hex2RGB takes integer i, integer i2, string s returns integer
local integer array ValoresBase10
local integer array ValoresBase10Integer
local string array ValoresBase10String
local integer array ValoresBase1
local integer array ValoresBase1Integer
local string array ValoresBase1String
local integer array ValorRetornado
local integer LoopStart
local integer LoopEnd
set ValoresBase10[0] = 15
set ValoresBase10Integer[0] = 0
// ---
set ValoresBase10[1] = 31
set ValoresBase10Integer[1] = 1
// ---
set ValoresBase10[2] = 47
set ValoresBase10Integer[2] = 2
// ---
set ValoresBase10[3] = 63
set ValoresBase10Integer[3] = 3
// ---
set ValoresBase10[4] = 79
set ValoresBase10Integer[4] = 4
// ---
set ValoresBase10[5] = 95
set ValoresBase10Integer[5] = 5
// ---
set ValoresBase10[6] = 111
set ValoresBase10Integer[6] = 6
// ---
set ValoresBase10[7] = 127
set ValoresBase10Integer[7] = 7
// ---
set ValoresBase10[8] = 143
set ValoresBase10Integer[8] = 8
// ---
set ValoresBase10[9] = 159
set ValoresBase10Integer[9] = 9
// ---
set ValoresBase10[10] = 175
if SubStringBJ(s, i, i) == "a" then
set ValoresBase10String[10] = "a"
endif
if SubStringBJ(s, i, i) == "A" then
set ValoresBase10String[10] = "A"
endif
// ---
set ValoresBase10[11] = 191
if SubStringBJ(s, i, i) == "b" then
set ValoresBase10String[11] = "b"
endif
if SubStringBJ(s, i, i) == "B" then
set ValoresBase10String[11] = "B"
endif
// ---
set ValoresBase10[12] = 207
if SubStringBJ(s, i, i) == "c" then
set ValoresBase10String[12] = "c"
endif
if SubStringBJ(s, i, i) == "C" then
set ValoresBase10String[12] = "C"
endif
// ---
set ValoresBase10[13] = 223
if SubStringBJ(s, i, i) == "d" then
set ValoresBase10String[13] = "d"
endif
if SubStringBJ(s, i, i) == "D" then
set ValoresBase10String[13] = "D"
endif
// ---
set ValoresBase10[14] = 239
if SubStringBJ(s, i, i) == "e" then
set ValoresBase10String[14] = "e"
endif
if SubStringBJ(s, i, i) == "E" then
set ValoresBase10String[14] = "E"
endif
// ---
set ValoresBase10[15] = 255
if SubStringBJ(s, i, i) == "f" then
set ValoresBase10String[15] = "f"
endif
if SubStringBJ(s, i, i) == "F" then
set ValoresBase10String[15] = "F"
endif
// ---
// ---
set ValoresBase1[0] = 15
set ValoresBase1Integer[0] = 0
// ---
set ValoresBase1[1] = 14
set ValoresBase1Integer[1] = 1
// ---
set ValoresBase1[2] = 13
set ValoresBase1Integer[2] = 2
// ---
set ValoresBase1[3] = 12
set ValoresBase1Integer[3] = 3
// ---
set ValoresBase1[4] = 11
set ValoresBase1Integer[4] = 4
// ---
set ValoresBase1[5] = 10
set ValoresBase1Integer[5] = 5
// ---
set ValoresBase1[6] = 9
set ValoresBase1Integer[6] = 6
// ---
set ValoresBase1[7] = 8
set ValoresBase1Integer[7] = 7
// ---
set ValoresBase1[8] = 7
set ValoresBase1Integer[8] = 8
// ---
set ValoresBase1[9] = 6
set ValoresBase1Integer[9] = 9
// ---
set ValoresBase1[10] = 5
if SubStringBJ(s, i2, i2) == "a" then
set ValoresBase1String[10] = "a"
endif
if SubStringBJ(s, i2, i2) == "A" then
set ValoresBase1String[10] = "A"
endif
// ---
set ValoresBase1[11] = 4
if SubStringBJ(s, i2, i2) == "b" then
set ValoresBase1String[11] = "b"
endif
if SubStringBJ(s, i2, i2) == "B" then
set ValoresBase1String[11] = "B"
endif
// ---
set ValoresBase1[12] = 3
if SubStringBJ(s, i2, i2) == "c" then
set ValoresBase1String[12] = "c"
endif
if SubStringBJ(s, i2, i2) == "C" then
set ValoresBase1String[12] = "C"
endif
// ---
set ValoresBase1[13] = 2
if SubStringBJ(s, i2, i2) == "d" then
set ValoresBase1String[13] = "d"
endif
if SubStringBJ(s, i2, i2) == "D" then
set ValoresBase1String[13] = "D"
endif
// ---
set ValoresBase1[14] = 1
if SubStringBJ(s, i2, i2) == "e" then
set ValoresBase1String[14] = "e"
endif
if SubStringBJ(s, i2, i2) == "E" then
set ValoresBase1String[14] = "E"
endif
// ---
set ValoresBase1[15] = 0
if SubStringBJ(s, i2, i2) == "f" then
set ValoresBase1String[15] = "f"
endif
if SubStringBJ(s, i2, i2) == "F" then
set ValoresBase1String[15] = "F"
endif
// ---
// ---
set LoopStart = 0
set LoopEnd = 9
loop
exitwhen LoopStart > LoopEnd
if SubStringBJ(s, i, i) == I2S(ValoresBase10Integer[LoopStart]) then
set ValorRetornado[1] = ValoresBase10[LoopStart]
else
endif
set LoopStart = LoopStart + 1
endloop
set LoopStart = 10
set LoopEnd = 15
loop
exitwhen LoopStart > LoopEnd
if SubStringBJ(s, i, i) == ValoresBase10String[LoopStart] then
set ValorRetornado[1] = ValoresBase10[LoopStart]
else
endif
set LoopStart = LoopStart + 1
endloop
// ---
set LoopStart = 0
set LoopEnd = 9
loop
exitwhen LoopStart > LoopEnd
if SubStringBJ(s, i2, i2) == I2S(ValoresBase1Integer[LoopStart]) then
set ValorRetornado[2] = ValoresBase1[LoopStart]
else
endif
set LoopStart = LoopStart + 1
endloop
set LoopStart = 10
set LoopEnd = 15
loop
exitwhen LoopStart > LoopEnd
if SubStringBJ(s, i2, i2) == ValoresBase1String[LoopStart] then
set ValorRetornado[2] = ValoresBase1[LoopStart]
else
endif
set LoopStart = LoopStart + 1
endloop
// ---
set ValorRetornado[3] = ( ValorRetornado[1] - ValorRetornado[2] )
return ValorRetornado[3]
endfunction
//________________________________________________________________________________________________________________________________________________
function RGB2Hex takes integer i returns string
local integer array ValoresBase10
local integer array ValoresBase10Integer
local string array ValoresBase10String
local integer array ValoresBase1
local integer array ValoresBase1Integer
local string array ValoresBase1String
local string StringRetornada
local integer LoopStart
local integer LoopEnd
local integer LoopStart2
local integer LoopEnd2
set ValoresBase10[0] = 15
set ValoresBase10Integer[0] = 0
// ---
set ValoresBase10[1] = 31
set ValoresBase10Integer[1] = 1
// ---
set ValoresBase10[2] = 47
set ValoresBase10Integer[2] = 2
// ---
set ValoresBase10[3] = 63
set ValoresBase10Integer[3] = 3
// ---
set ValoresBase10[4] = 79
set ValoresBase10Integer[4] = 4
// ---
set ValoresBase10[5] = 95
set ValoresBase10Integer[5] = 5
// ---
set ValoresBase10[6] = 111
set ValoresBase10Integer[6] = 6
// ---
set ValoresBase10[7] = 127
set ValoresBase10Integer[7] = 7
// ---
set ValoresBase10[8] = 143
set ValoresBase10Integer[8] = 8
// ---
set ValoresBase10[9] = 159
set ValoresBase10Integer[9] = 9
// ---
set ValoresBase10[10] = 175
set ValoresBase10String[10] = "a"
// ---
set ValoresBase10[11] = 191
set ValoresBase10String[11] = "b"
// ---
set ValoresBase10[12] = 207
set ValoresBase10String[12] = "c"
// ---
set ValoresBase10[13] = 223
set ValoresBase10String[13] = "d"
// ---
set ValoresBase10[14] = 239
set ValoresBase10String[14] = "e"
// ---
set ValoresBase10[15] = 255
set ValoresBase10String[15] = "f"
// ---
// ---
set ValoresBase1[0] = 15
set ValoresBase1Integer[0] = 0
// ---
set ValoresBase1[1] = 14
set ValoresBase1Integer[1] = 1
// ---
set ValoresBase1[2] = 13
set ValoresBase1Integer[2] = 2
// ---
set ValoresBase1[3] = 12
set ValoresBase1Integer[3] = 3
// ---
set ValoresBase1[4] = 11
set ValoresBase1Integer[4] = 4
// ---
set ValoresBase1[5] = 10
set ValoresBase1Integer[5] = 5
// ---
set ValoresBase1[6] = 9
set ValoresBase1Integer[6] = 6
// ---
set ValoresBase1[7] = 8
set ValoresBase1Integer[7] = 7
// ---
set ValoresBase1[8] = 7
set ValoresBase1Integer[8] = 8
// ---
set ValoresBase1[9] = 6
set ValoresBase1Integer[9] = 9
// ---
set ValoresBase1[10] = 5
set ValoresBase1String[10] = "a"
// ---
set ValoresBase1[11] = 4
set ValoresBase1String[11] = "b"
// ---
set ValoresBase1[12] = 3
set ValoresBase1String[12] = "c"
// ---
set ValoresBase1[13] = 2
set ValoresBase1String[13] = "d"
// ---
set ValoresBase1[14] = 1
set ValoresBase1String[14] = "e"
// ---
set ValoresBase1[15] = 0
set ValoresBase1String[15] = "f"
set LoopStart = 0
set LoopEnd = 15
loop
exitwhen LoopStart > LoopEnd
set LoopStart2 = 0
set LoopEnd2 = 15
loop
exitwhen LoopStart2 > LoopEnd2
if ValoresBase10[LoopStart] - ValoresBase1[LoopStart2] == i then
if LoopStart > 9 then
if LoopStart2 > 9 then
set StringRetornada = ValoresBase10String[LoopStart] + ValoresBase1String[LoopStart2]
else
set StringRetornada = ValoresBase10String[LoopStart] + I2S(ValoresBase1Integer[LoopStart2])
endif
else
if LoopStart2 > 9 then
set StringRetornada = I2S(ValoresBase10Integer[LoopStart]) + ValoresBase1String[LoopStart2]
else
set StringRetornada = I2S(ValoresBase10Integer[LoopStart]) + I2S(ValoresBase1Integer[LoopStart2])
endif
endif
endif
set LoopStart2 = LoopStart2 + 1
endloop
set LoopStart = LoopStart + 1
endloop
return StringRetornada
endfunction
//________________________________________________________________________________________________________________________________________________
function GetR takes string s returns integer
set TempInteger[1] = 1
set TempInteger[2] = 2
set TempInteger[3] = Hex2RGB(TempInteger[1], TempInteger[2], s)
return TempInteger[3]
endfunction
function GetG takes string s returns integer
set TempInteger[1] = 3
set TempInteger[2] = 4
set TempInteger[3] = Hex2RGB(TempInteger[1], TempInteger[2], s)
return TempInteger[3]
endfunction
function GetB takes string s returns integer
set TempInteger[1] = 5
set TempInteger[2] = 6
set TempInteger[3] = Hex2RGB(TempInteger[1], TempInteger[2], s)
return TempInteger[3]
endfunction
function GetHex takes integer R, integer G, integer B returns string
set HexaRetornado[1] = RGB2Hex(R)
set HexaRetornado[2] = RGB2Hex(G)
set HexaRetornado[3] = RGB2Hex(B)
set HexaRetornado[4] = HexaRetornado[1] + HexaRetornado[2] + HexaRetornado[3]
return HexaRetornado[4]
endfunction
endlibrary
API:
- Código:
function GetHex takes integer R, integer G, integer B returns string
Converte valores RGB para Hexadecimal
Exemplo: set variavel = GetHex(15,15,15)
o valor retornado será 0f0f0f
- Código:
function GetR takes string s returns integer
Reconhece o "Red" de um valor Hexadecimal
Exemplo: set variavel = GetR(0f0f0f)
o valor retornado será 15
- Código:
function GetG takes string s returns integer
Reconhece o "Green" de um valor Hexadecimal
Exemplo: set variavel = GetG(0f1b0f)
o valor retornado será 27
- Código:
function GetB takes string s returns integer
Reconhece o "Blue" de um valor Hexadecimal
Exemplo: set variavel = GetB(0f1b2d)
o valor retornado será 45
Mapa com o System -> http://www.epicwar.com/maps/195089/
VicToR- Número de Posts : 2002
Data de inscrição : 19/12/2010
Reputação : 243 Pontos : 27865
Re: [System][vJass]RGB <-> Hexadecimal
Quem vai amar isso é o Iky.
Very Good System.
Very Good System.
.Itap- Número de Posts : 1351
Data de inscrição : 09/11/2009
Reputação : 78 Pontos : 29279
Re: [System][vJass]RGB <-> Hexadecimal
no WE os limites dos numeros RBG é 255 ?
no caso set variavel = GetHex(255,255,255) retorna quanto?
no caso set variavel = GetHex(255,255,255) retorna quanto?
Re: [System][vJass]RGB <-> Hexadecimal
Iky escreveu:no WE os limites dos numeros RBG é 255 ?
no caso set variavel = GetHex(255,255,255) retorna quanto?
ffffff
VicToR- Número de Posts : 2002
Data de inscrição : 19/12/2010
Reputação : 243 Pontos : 27865
Re: [System][vJass]RGB <-> Hexadecimal
pq ff é 255 ?f é originalmente 15 ne? é um multiplicado pelo outro é?
Re: [System][vJass]RGB <-> Hexadecimal
Iky escreveu:pq ff é 255 ?f é originalmente 15 ne? é um multiplicado pelo outro é?
0f é 15
ff é 255
o sistema hexadecimal funciona mais ou menos assim:
o f é como se fosse um ''9'', depois dele reseta a contagem, por exemplo...
0d = 13
0e = 14
0f = 15
10 = 16
11 = 17
da uma olhada no system que você vai entender como ele funciona.
VicToR- Número de Posts : 2002
Data de inscrição : 19/12/2010
Reputação : 243 Pontos : 27865
Re: [System][vJass]RGB <-> Hexadecimal
vc esqueceu na sua explicação que hexadecimal é de 1 ate 15, com os numeros
1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
Re: [System][vJass]RGB <-> Hexadecimal
Iky escreveu:vc esqueceu na sua explicação que hexadecimal é de 1 ate 15, com os numeros
1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
então, exatamente isso.
depois do ''0f'' ele reseta a contagem e começa em ''10'' quando chegar em ''1F'' reseta para ''20'' assim sucessivamente até o FF que é o ultimo numero da contagem...
VicToR- Número de Posts : 2002
Data de inscrição : 19/12/2010
Reputação : 243 Pontos : 27865
Re: [System][vJass]RGB <-> Hexadecimal
Iky escreveu:pq ce usou jnpg? suas funções nao usam nada de vjass õô
Tenta dar Save no Editor normal...
VicToR- Número de Posts : 2002
Data de inscrição : 19/12/2010
Reputação : 243 Pontos : 27865
Re: [System][vJass]RGB <-> Hexadecimal
No jass normal, vc só pode criar um bloco de Globais. Então é bom ele deixar isso ainda dependendo do vJass.
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 32089
Tópicos semelhantes
» [Duvida] Battle System / Combat System
» [System]WoW Hero Respawn System
» Poderes em VJass
» [Duvida] Problemas com vJASS
» [vJass, JESP] Time Stop 1.3.2
» [System]WoW Hero Respawn System
» Poderes em VJass
» [Duvida] Problemas com vJASS
» [vJass, JESP] Time Stop 1.3.2
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos