|
做这个东西又把我郁闷鸟
原因是这个思路是我最开始学jass的时候就想出来的
直到现在才写了出来
哎~做人还是踏实点好
[jass]
globals
integer array udg_dataV
integer array udg_linkV
endglobals
//===下面是功能代码===
function S2H takes string s returns handle
return s
return null
endfunction
function H2S takes handle h returns string
return h
return null
endfunction
function I2H takes integer i returns handle
return i
return null
endfunction
function H2I takes handle h returns integer
return h
return 0
endfunction
function InitV takes nothing returns nothing
set udg_dataV[0] = 0
set udg_linkV[0] = 0
endfunction
function SH2VH takes handle s returns handle
local integer i = udg_dataV[0]
local integer shi = H2I(s)
if udg_dataV[0] >= 8192 then
return null
endif
loop
exitwhen i <= 0
if shi == udg_linkV then
return i
endif
if udg_linkV == 0 then
set udg_linkV[0] = i
endif
set i = i - 1
endloop
if udg_linkV[0] == 0 then
set udg_dataV[0] = udg_dataV[0] + 1
set i = udg_dataV[0]
else
set i = udg_linkV[0]
endif
set udg_linkV = shi
set udg_dataV = 0
return i
return null
endfunction
function SetV takes string s, handle h returns nothing
local integer i = H2I(SH2VH(S2H(s)))
if i == 0 then
return
else
set udg_dataV = H2I(h)
endif
return
endfunction
function GetV takes string s returns handle
local integer i = H2I(SH2VH(S2H(s)))
if i == 0 then
return null
endif
return udg_dataV
return null
endfunction
function FreeV takes string s returns nothing
local integer i = H2I(SH2VH(S2H(s)))
if i == 0 then
return
else
set udg_linkV[0] = i
set udg_linkV = 0
set udg_dataV = 0
endif
return
endfunction
[/jass]
在WE中新建整数数组变量dataV和linkV,数量为1,初始化为0。
然后把代码拷进自定义脚本区就行了。
如果你直接编辑Jass的话,使用之前请调用InitV()函数。
里面的某些函数可能会有与你的函数有重复的,如H2I()等等,保留一个就行
用法
handle GetV(string s)
取得动态变量的值,s为动态变量的名字。
SetV(string s,handle h)
设置动态变量的值,注意需要转化为handle类型
FreeV(string s)
销毁一个动态变量。
注意:如果你的动态变量名是新的,则会创建新的动态变量。
已经通过测试,绝对没有问题 |
|