Renee 发表于 2009-7-11 23:29:22

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

Renee 发表于 2009-7-11 23:30:55

Re:War3 PTR 1.23B 到1.24A的变化

总的来说~~功能上的改进是~~可以把哈希表本身当作哈希表元素了~~

该用户已删除 发表于 2009-7-11 23:36:50

Re:War3 PTR 1.23B 到1.24A的变化

看完路过。

白银の式神 发表于 2009-7-11 23:38:12

Re:War3 PTR 1.23B 到1.24A的变化

所以说玻璃渣的工作人员也素喜欢copy&paste的。

alexries 发表于 2009-7-11 23:39:14

Re:War3 PTR 1.23B 到1.24A的变化

挺方便嘛这个版本。

thewisp1 发表于 2009-7-12 06:02:37

Re:War3 PTR 1.23B 到1.24A的变化

我只知道对我没有影响。。

使用int __cdecl H2I(PVOID h){return h;}的路过。。。

linzefei 发表于 2009-7-12 17:16:32

Re:War3 PTR 1.23B 到1.24A的变化

能提供个cj bj么..我有用...

1.24还是要游戏连bn才能下么

Boss 发表于 2009-7-12 17:22:12

Re:War3 PTR 1.23B 到1.24A的变化

坚持使用1.20e =.=!

zhuzeitou 发表于 2009-7-12 17:23:40

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……

linzefei 发表于 2009-7-12 17:36:53

Re:War3 PTR 1.23B 到1.24A的变化

nativeSaveAgentHandle   takes hashtable table, integer parentKey, integer childKey, agent whichAgent returns boolean

既然有这个。。

那类型仍不安全。。

比如存了个单位。

用LoadItemHandle取出来


或者子类型不能取?
那存那个有啥用。。。
有LoadAgentHandle 吗

nikki 发表于 2009-7-12 18:02:02

Re:War3 PTR 1.23B 到1.24A的变化

1.20e什么时候才能被打破呢

Renee 发表于 2009-7-12 20:24:40

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

Renee 发表于 2009-7-12 20:48:36

Re:War3 PTR 1.23B 到1.24A的变化

没有loadAgentHandle~~

那个SaveAgentHandle是这样运作的~~它会自动对其保存的handle进行判断~~来得知它到底是那种类型的对象~~

所以你存进去一个单位~~还是只能把它当作单位读出来~~当作物品读就不行~~

简单地说就是会自动判断对象类型的~~

血戮魔动冰 发表于 2009-7-12 20:51:16

Re:War3 PTR 1.23B 到1.24A的变化

估计效率很慢………………

westwood 发表于 2009-7-12 21:35:01

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

而在之前的测试版中是做不到的

linzefei 发表于 2009-7-12 21:37:05

Re:War3 PTR 1.23B 到1.24A的变化

也就是可以 和缓存那样存任意handle
然后对应读取..那修改缓存版 就很好改了..

緋桜 发表于 2009-7-12 21:39:43

Re:War3 PTR 1.23B 到1.24A的变化

地图重构进行中

westwood 发表于 2009-7-12 21:45:54

Re:War3 PTR 1.23B 到1.24A的变化

如果原来就用缓存,应该很好改吧…估计Ctrl H就能完成…

eff 发表于 2009-7-13 17:44:17

Re:War3 PTR 1.23B 到1.24A的变化

只用H2I的飘过

jpg 发表于 2009-7-13 19:55:00

Re:War3 PTR 1.23B 到1.24A的变化

话说中国网吧更新1.23B都花了很长时间,1.24无法想象…
页: [1] 2
查看完整版本: War3 PTR  1.23B 到1.24A的变化