TeaM KingS
[center]Ola Convidado, seja bem vindo ao TeaM KingS !

Nós temos tutoriais sobre o WarCraft World Editor: se você tiver alguma duvida pode perguntar que os moderadores ou membros experientes vão lhe ajudar.

Para melhor utilizar nossos recursos é extremamente recomendado que esteja logado em nosso fórum e que leia o nosso regulamento oficial.

Também temos fóruns sobre DotA AllstarS, com guias, estratégias, e muito mais!



[System][vJass]RGB <-> Hexadecimal

Ir em baixo

[System][vJass]RGB <-> Hexadecimal

Mensagem por VicToR em 2012-01-16, 12:00

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/
avatar
VicToR

Número de Posts : 2002
Data de inscrição : 19/12/2010
Reputação : 243 Pontos : 16870

Warning Necropost
4 / 1004 / 100


Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por .Itap em 2012-01-16, 13:57

Quem vai amar isso é o Iky.

Very Good System.
avatar
.Itap

Número de Posts : 1351
Data de inscrição : 09/11/2009
Reputação : 78 Pontos : 18284

Warning Necropost
95 / 10095 / 100


Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por Iky em 2012-01-16, 17:28

no WE os limites dos numeros RBG é 255 ?
no caso set variavel = GetHex(255,255,255) retorna quanto?


avatar
Iky

Número de Posts : 2065
Data de inscrição : 06/04/2010
Reputação : 99 Pontos : 20469

Warning Necropost
10 / 10010 / 100


http://icaro.glauco

Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por VicToR em 2012-01-16, 17:39

Iky escreveu:no WE os limites dos numeros RBG é 255 ?
no caso set variavel = GetHex(255,255,255) retorna quanto?

ffffff
avatar
VicToR

Número de Posts : 2002
Data de inscrição : 19/12/2010
Reputação : 243 Pontos : 16870

Warning Necropost
4 / 1004 / 100


Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por Iky em 2012-01-16, 17:42

pq ff é 255 ?f é originalmente 15 ne? é um multiplicado pelo outro é?


avatar
Iky

Número de Posts : 2065
Data de inscrição : 06/04/2010
Reputação : 99 Pontos : 20469

Warning Necropost
10 / 10010 / 100


http://icaro.glauco

Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por VicToR em 2012-01-16, 17:51

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.
avatar
VicToR

Número de Posts : 2002
Data de inscrição : 19/12/2010
Reputação : 243 Pontos : 16870

Warning Necropost
4 / 1004 / 100


Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por Iky em 2012-01-16, 17:54

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.


avatar
Iky

Número de Posts : 2065
Data de inscrição : 06/04/2010
Reputação : 99 Pontos : 20469

Warning Necropost
10 / 10010 / 100


http://icaro.glauco

Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por VicToR em 2012-01-16, 17:57

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...
avatar
VicToR

Número de Posts : 2002
Data de inscrição : 19/12/2010
Reputação : 243 Pontos : 16870

Warning Necropost
4 / 1004 / 100


Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por Iky em 2012-01-16, 18:07

pq ce usou jnpg? suas funções nao usam nada de vjass õô


avatar
Iky

Número de Posts : 2065
Data de inscrição : 06/04/2010
Reputação : 99 Pontos : 20469

Warning Necropost
10 / 10010 / 100


http://icaro.glauco

Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por VicToR em 2012-01-16, 18:22

Iky escreveu:pq ce usou jnpg? suas funções nao usam nada de vjass õô

Tenta dar Save no Editor normal...
avatar
VicToR

Número de Posts : 2002
Data de inscrição : 19/12/2010
Reputação : 243 Pontos : 16870

Warning Necropost
4 / 1004 / 100


Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por Iky em 2012-01-16, 18:25

se tirar da library e criar as globals, da


avatar
Iky

Número de Posts : 2065
Data de inscrição : 06/04/2010
Reputação : 99 Pontos : 20469

Warning Necropost
10 / 10010 / 100


http://icaro.glauco

Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por Bills em 2012-01-20, 17:56

No jass normal, vc só pode criar um bloco de Globais. Então é bom ele deixar isso ainda dependendo do vJass.


Recomendo
Por que um jogo é bom? | Aprenda MUI | Mostre-se para nós!

avatar
Bills

Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 21094

Warning Necropost
35 / 10035 / 100


Voltar ao Topo Ir em baixo

Re: [System][vJass]RGB <-> Hexadecimal

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum