War3 PTR 1.23B 到1.24A的变化
关于1.23a到1.23b的变化看这边http://bbs.islga.org/read-htm-tid-28544.html
再补充一条:
1.23b相比1.23a增加了一条
constant native GetTriggerDestructable takes nothing returns destructable
可以直接获得触发事件的可破坏物,不需要通过Widget了
然后1.23b到1.24a之间的变化,第一点wisp同学已经有说过了。就是增加了agent类型,把handle细分为agent和非agent 。如
type agent extends handle// all reference counted objects
type event extends agent// a reference to an event registration
type player extends agent// a single player reference
type widget extends agent// an interactive game object with life
type unit extends widget// a single unit reference
type destructable extends widget
type item extends widget
type ability extends agent
type buff extends ability
type force extends agent
type group extends agent
type trigger extends agent
type triggercondition extends agent
type triggeraction extends handle
//………………
type gamestate extends handle
即有实际指向对象(其实更标准的说法是一切需要计算变量连接数的对象)的变量类型,将继承自agent。然后agent再继承自handle。方便归类。以这里为例的话,trigger就属于agent的handle而gamestate则属于非agent,因为它其实只是拿来保存整数的变量而已,和integer的作用没有区别。
然后别的变化是增加了
constant native GetSpellTargetX takes nothing returns real
constant native GetSpellTargetY takes nothing returns real
可以直接获得技能目标点的X和Y坐标,这样就可以省去以前用GetSpellTargetLoc()时会创建一个点对象的麻烦了。
实际功能方面
nativeSaveAgentHandle takes hashtable table, integer parentKey, integer childKey, agent whichAgent returns boolean
nativeSaveHashtableHandle takes hashtable table, integer parentKey, integer childKey, hashtable whichHashtable returns boolean
nativeLoadHashtableHandle takes hashtable table, integer parentKey, integer childKey returns hashtable
前一条只是为了能把新类型也存入哈希表而已。后两条比较重要,现在1.24允许把哈希表自身作为元素来保存进哈希表,这样就可以非常方便地做出相链接的多重哈希表了。
另外Blizzard.j中除了把agent类型和表中表功能GUI化以外,还修正了1.23b中的一处非常土的BUG。
//1.23b中的HaveSavedValue()
function HaveSavedValue takes integer key, integer valueType, integer missionKey, hashtable table returns boolean
if (valueType == bj_HASHTABLE_BOOLEAN) then
return HaveSavedBoolean(table, missionKey, key)
elseif (valueType == bj_HASHTABLE_INTEGER) then
return HaveSavedInteger(table, missionKey, key)
elseif (valueType == bj_HASHTABLE_REAL) then
return HaveSavedReal(table, missionKey, key)
elseif (valueType == bj_HASHTABLE_STRING) then
return HaveSavedString(table, missionKey, key)
elseif (valueType == bj_HASHTABLE_STRING) then //竟然出现2处bj_HASHTABLE_STRING
return HaveSavedHandle(table, missionKey, key)
else
// Unrecognized value type - ignore the request.
return false
endif
endfunction
//1.24A中的HaveSavedValue()
function HaveSavedValue takes integer key, integer valueType, integer missionKey, hashtable table returns boolean
if (valueType == bj_HASHTABLE_BOOLEAN) then
return HaveSavedBoolean(table, missionKey, key)
elseif (valueType == bj_HASHTABLE_INTEGER) then
return HaveSavedInteger(table, missionKey, key)
elseif (valueType == bj_HASHTABLE_REAL) then
return HaveSavedReal(table, missionKey, key)
elseif (valueType == bj_HASHTABLE_STRING) then
return HaveSavedString(table, missionKey, key)
elseif (valueType == bj_HASHTABLE_HANDLE) then//修正为 bj_HASHTABLE_HANDLE了。
return HaveSavedHandle(table, missionKey, key)
else
// Unrecognized value type - ignore the request.
return false
endif
endfunction
Re:War3 PTR 1.23B 到1.24A的变化
总的来说~~功能上的改进是~~可以把哈希表本身当作哈希表元素了~~Re:War3 PTR 1.23B 到1.24A的变化
看完路过。Re:War3 PTR 1.23B 到1.24A的变化
所以说玻璃渣的工作人员也素喜欢copy&paste的。Re:War3 PTR 1.23B 到1.24A的变化
挺方便嘛这个版本。Re:War3 PTR 1.23B 到1.24A的变化
我只知道对我没有影响。。使用int __cdecl H2I(PVOID h){return h;}的路过。。。
Re:War3 PTR 1.23B 到1.24A的变化
能提供个cj bj么..我有用...1.24还是要游戏连bn才能下么
Re:War3 PTR 1.23B 到1.24A的变化
坚持使用1.20e =.=!Re:Re:War3 PTR 1.23B 到1.24A的变化
引用第7楼Boss于2009-07-12 17:22发表的 Re:War3 PTR 1.23B 到1.24A的变化 :坚持使用1.20e =.=! http://bbs.islga.org/images/back.gif
此类人需要BS……
Re:War3 PTR 1.23B 到1.24A的变化
nativeSaveAgentHandle takes hashtable table, integer parentKey, integer childKey, agent whichAgent returns boolean既然有这个。。
那类型仍不安全。。
比如存了个单位。
用LoadItemHandle取出来
或者子类型不能取?
那存那个有啥用。。。
有LoadAgentHandle 吗
Re:War3 PTR 1.23B 到1.24A的变化
1.20e什么时候才能被打破呢Re:Re:War3 PTR 1.23B 到1.24A的变化
引用第9楼linzefei于2009-07-12 17:36发表的 Re:War3 PTR 1.23B 到1.24A的变化 :nativeSaveAgentHandle takes hashtable table, integer parentKey, integer childKey, agent whichAgent returns boolean
既然有这个。。
那类型仍不安全。。
....... http://bbs.islga.org/images/back.gif
读不出来的,结果是null
Re:War3 PTR 1.23B 到1.24A的变化
没有loadAgentHandle~~那个SaveAgentHandle是这样运作的~~它会自动对其保存的handle进行判断~~来得知它到底是那种类型的对象~~
所以你存进去一个单位~~还是只能把它当作单位读出来~~当作物品读就不行~~
简单地说就是会自动判断对象类型的~~
Re:War3 PTR 1.23B 到1.24A的变化
估计效率很慢………………Re:Re:War3 PTR 1.23B 到1.24A的变化
引用第12楼Renee于2009-07-12 20:48发表的 Re:War3 PTR 1.23B 到1.24A的变化 :没有loadAgentHandle~~
那个SaveAgentHandle是这样运作的~~它会自动对其保存的handle进行判断~~来得知它到底是那种类型的对象~~
所以你存进去一个单位~~还是只能把它当作单位读出来~~当作物品读就不行~~
....... http://bbs.islga.org/images/back.gif
果然和我预想的一样(刚奔回来准备发帖…)
也就是说,原来简化使用gamecache的个人通用函数
function StoreHandle takes handle missionKey,string key,handle value returns nothing
call StoreInteger(udg_GameCache,H2S(missionKey),key,H2I(value))
endfunction
在1.24依然可以写成
function StoreAgent takes handle missionKey,integer key,agent value returns nothing
call StoreAgentHandle(udg_HashTable,GetHandleID(missionKey),key,value)
endfunction
而在之前的测试版中是做不到的
Re:War3 PTR 1.23B 到1.24A的变化
也就是可以 和缓存那样存任意handle然后对应读取..那修改缓存版 就很好改了..
Re:War3 PTR 1.23B 到1.24A的变化
地图重构进行中Re:War3 PTR 1.23B 到1.24A的变化
如果原来就用缓存,应该很好改吧…估计Ctrl H就能完成…Re:War3 PTR 1.23B 到1.24A的变化
只用H2I的飘过Re:War3 PTR 1.23B 到1.24A的变化
话说中国网吧更新1.23B都花了很长时间,1.24无法想象…
页:
[1]
2