Dota's water color, how does it work?

Nexor

...
Reaction score
74
I tried to create dota's water color system, but I failed. I could not save the rgb values of the entered chat string into a variable and the other thing was that when I changed the water's color, it had a strange color, much darker than it should be.
For those who dont know the system:

you type -water R G B (R,G and B stand for integer values from 0-255Ö and it will change the water's color locally to the typed value.
 

Nexor

...
Reaction score
74
Problem solved!

Here's the code for it I made:

JASS:
function if255 takes integer value returns boolean
    return value > 255
endfunction

function Trig_Water_Color_Actions takes nothing returns nothing
    local string start = GetEventPlayerChatString()
    local string s = ""
    local string stemp = ""
    local string array number
    local integer i = 0
    local integer l
    local integer skip = 0
    local integer array value
    
    
    loop
        exitwhen i > StringLength(start) or skip > 2
        set s = SubString(start, i, i+1)
        if s == " " then
            set l = i+1
            loop
                set stemp = SubString(start, l,l+1)
                exitwhen stemp == " " or stemp == null or stemp == ""
                if stemp != " " then
                    if skip == 0 then
                        set number[skip] = number[skip] + stemp
                    elseif skip == 1 then
                        set number[skip] = number[skip] + stemp
                    elseif skip == 2 then
                        set number[skip] = number[skip] + stemp
                    endif
                endif
                set l = l + 1
            endloop
            set skip = skip + 1
        endif
        set i = i + 1
    endloop
    
    set i = 0
    loop
        exitwhen i > 2
        set value<i> = S2I(number<i>)
        if if255(value<i>) then
            return
        endif
        set i = i + 1
    endloop
    if GetLocalPlayer() == GetTriggerPlayer() then
        call SetWaterBaseColor(value[0], value[1], value[2], 255)
    endif
endfunction</i></i></i>


It needs a function where you register the following: all players type -water as a substring
 

Kuberr24

Well-Known Member
Reaction score
28
That means you need help to do that or what? I don't understand.
no he meant that the code above doesn't have an event. in order for it too work you will need to add the event "player X types -water as a substring" at map init.

one question, in dota i type "-water red" or "-water green". Maybe you can add it so "if substring = red, then set auto number[1] = 255, number[2] = 0, number3= [0] etc. ?
 

Nexor

...
Reaction score
74
sure, I could but it was a call for help thread not a snippet thread, sorry :) anyway the color of the water is changing but it does not like the same as in dota. there the red water was red using this it disappears or is a bit black
dunno how'd they make it
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top