减掉3个全局
Water.w3x (16.2 KB)
[jass]
function H2I takes handle H returns integer
return H
return 0
endfunction
function SaveInteger takes handle WantToSave,string SaveName,integer SaveData returns nothing
call StoreInteger(udg_GameCache_GC,I2S(H2I(WantToSave)),SaveName,SaveData)
endfunction
function LoadInteger takes handle WantToLoad,string LoadName returns integer
return GetStoredInteger(udg_GameCache_GC,I2S(H2I(WantToLoad)),LoadName)
endfunction
function KillTimer takes timer t returns nothing
call PauseTimer(t)
call DestroyTimer(t)
endfunction
function WaterColorTimer takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer X = LoadInteger(t,"X")
local integer R
local integer G
local integer B
local string S
if(X < 52) then
set R = 255
set G = (X - 1) * 5
set B = 0
else
if(X < 103) then
set R = 515 - X * 5
set G = 255
set B = 0
else
if(X < 154) then
set R = 0
set G = 255
set B = (X - 103) * 5
else
if(X < 205) then
set R = 0
set G = 1025 - X * 5
set B = 255
else
if(X < 256) then
set R = (X - 205) * 5
set G = 0
set B = 255
else
if(X < 307) then
set R = 255
set G = 0
set B = 1535 - X * 5
else
set X = 0
endif
endif
endif
endif
endif
endif
call SaveInteger(t,"X",X + 1)
if(udg_Boolean_WaterColorStop == true) then
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"X RGB")
call SetWaterBaseColor(R,G,B,255)
else
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"End")
call SetWaterBaseColor(255,255,255,255)
call FlushStoredMission(udg_GameCache_GC,I2S(H2I(t)))
call KillTimer(t)
endif
set S = I2S(X)+"!"+I2S(R)+"!"+I2S(G)+"!"+I2S(B)
call DisplayTextToPlayer(GetLocalPlayer(),0,0,S)
set t = null
endfunction
function WaterColorStart takes nothing returns nothing
local timer t = CreateTimer()
set udg_Boolean_WaterColorStop = true
call SaveInteger(t,"X",1)
call TimerStart(t,.01,true,function WaterColorTimer)
set t = null
endfunction
function WaterColorStop takes nothing returns nothing
set udg_Boolean_WaterColorStop = false
endfunction
[/jass]