找回密码
 点一下
楼主: hackwaly

非常强大we helper&jasshelper [2007.5.1]wc3c

[复制链接]
发表于 2007-5-11 01:40:29 | 显示全部楼层
数组应该不容易作为参数.
数组的长度不是固定的.开始声明数组时是没有数组长度信息的.
对于一个struct,内部数据的数量是己知的,做为参数时,只须枚举出来,再生成一个函数就可以了.
比如:
  1. struct S
  2. integer a
  3. integer b
  4. endstruct
  5. function test takes S s returns nothing
  6. DoNothing()
  7. endfunction
复制代码
最后会变成:
  1. function test takes integer s_a,integer s_b returns nothing
  2. DoNothing()
  3. endfunction
复制代码
如果struct里面还有struct,也是再枚举一次就可以了.而对于数组,是不可行的.最大的问题就是长度是不知道的.因为初始化语句里有这样的东西:
  1. globals
  2. unit array a
  3. endglobals
  4. function InitGlobals takes nothing returns nothing
  5.     local integer i= 0
  6.     set i = 0
  7.     loop
  8.         exitwhen ( i > 210)
  9.         set udg_a[i]=false
  10.         set i = i + 1
  11.     endloop
  12. endfunction
  13. function main takes nothing returns nothing
  14.   //..............................................................
  15.       call InitGlobals()
  16. //................................................................
  17.   endfunction
复制代码
如此说来,至少在main函数执行时,才能知道数组的大小.而这个数组大小是不是可以改变,我没有研究过.
如果能改变的话,那么内存会是动态分配的,结果就是数组的地址都不是连续的,或是数组的首指针都是变化的.
回复

使用道具 举报

发表于 2007-5-11 13:05:01 | 显示全部楼层
数组在WAR3中原本就不是连续存放的。
而且数组的大小素不固定的。
所以要知道数组中到底存放多少个元素。需要自己另外定义一个最大索引号。嗯嗯。或者其它办法。
回复

使用道具 举报

发表于 2007-5-13 07:52:51 | 显示全部楼层
估计是C里面的
#define
回复

使用道具 举报

发表于 2007-5-13 07:56:21 | 显示全部楼层
传递数组么,理论上是做不到的,
可以用临时全局数组变量试试~~
回复

使用道具 举报

发表于 2007-5-17 07:40:44 | 显示全部楼层
好吧,1.8在地图数据编辑时挂的太平凡了...
回归1.7......
回复

使用道具 举报

发表于 2007-5-17 08:25:24 | 显示全部楼层
Quote:
    引用第10楼Red_Wolf于2007-05-05 15:29发表的  :
    很强大~~
    其实偶对VJass并不感冒,那是要牺牲函数效率做代价的
    倒是WEHelper里的define和globals功能很实用,我一直在用

define怎么用  define怎么用?  有没有例子?
回复

使用道具 举报

发表于 2007-5-18 10:08:37 | 显示全部楼层
。。。。。。帮助文件里说得很详细


宏定义
该功能定义的对象会在脚本中被直接作字符替换,所以用来做Jass技能的各项数据设置是最为理想的。
使用一下两种格式:
//! define identifier description
//! define  identifier(arg1,arg2,...,arg3) description

例:
//! define DEFPI 3.141567
//! define INC(a) set a=a+1
function DefineTest takes nothing returns nothing
    local real x=DEFPI
    INC(x)
endfunction

在脚本中将被转换为:

function DefineTest takes nothing returns nothing
    local real x=3.141567
    set x=x+1
endfunction
回复

使用道具 举报

发表于 2007-5-18 10:19:53 | 显示全部楼层
比如可以在jass技能前面加类似这样的一段:
globals里是该技能中才用到的全局变量,这些就没必要在GUI里定义,直接在技能触发中定义要直观的多
define则定义技能数据,这样以后要修改起来会方便很多,特别是给不懂Jass的人实在是方便之至阿。。。

globals
    integer udg_SalvationCount = 0
    unit array udg_Salvation_Unit
    integer array udg_Salvation_BuffLv_Cur
    integer array udg_Salvation_BuffLv_Next
endglobals

//! define DEF_Salvation_Value(u) GetUnitAbilityLevel(u,'AEmb')*50 + 50
//! define DEF_Salvation_Range 700
回复

使用道具 举报

发表于 2007-5-23 22:52:04 | 显示全部楼层
最近发现WEHelper总莫名其妙的死掉.
只好几分钟保存一次...............
回复

使用道具 举报

发表于 2007-5-24 09:50:50 | 显示全部楼层
引用第28楼hldzhuzhu于2007-05-23 22:52发表的  :
最近发现WEHelper总莫名其妙的死掉.
只好几分钟保存一次...............

1.8.1有问题,在设置数据的时候经常原本显示数字的地方会变成被白色被覆盖的样子,然后再点一次就会挂掉

So我才回归1.7了
回复

使用道具 举报

发表于 2007-6-20 10:33:23 | 显示全部楼层
强大 ,实在太强大了!!!不过我不会JASS啊
回复

使用道具 举报

发表于 2007-7-3 00:56:45 | 显示全部楼层
谢谢,如果有中英文翻译的就更好了.
回复

使用道具 举报

发表于 2007-7-4 08:13:29 | 显示全部楼层
......

这个还要翻译......
回复

使用道具 举报

发表于 2007-7-4 08:28:16 | 显示全部楼层
注释的翻译?
回复

使用道具 举报

发表于 2007-7-6 04:49:47 | 显示全部楼层
怎么用的 我怎么打不开的
回复

使用道具 举报

发表于 2007-7-18 22:32:35 | 显示全部楼层
漂移甩尾加速走人`````````````````````````````````````````````````````
回复

使用道具 举报

发表于 2007-7-21 11:10:31 | 显示全部楼层
引用第31楼掘藏师art@于2007-07-03 00:56发表的  :
谢谢,如果有中英文翻译的就更好了.
像你这样说,不如把用JASS写的那写语句也译成中文算了....
回复

使用道具 举报

发表于 2007-7-21 16:02:03 | 显示全部楼层
用那什么e语言算了
回复

使用道具 举报

发表于 2007-7-21 23:26:09 | 显示全部楼层
何必这么强大呢,>??
反正那么多人不用J.

   
回复

使用道具 举报

发表于 2007-7-21 23:26:22 | 显示全部楼层
ps,
包括我呢,!~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 10:15 , Processed in 0.141396 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表