找回密码
 点一下
查看: 2969|回复: 3

[转自己的贴] 关于T中 ◆数组尺寸◆ 的研究及设置须知

[复制链接]
发表于 2006-4-3 20:37:56 | 显示全部楼层 |阅读模式
见很多朋友都会问如下的问题
实在搞不清楚这个“尺寸”是干什么用的,
“尺寸”和“最大组数”之间到底是什么关系,
有些变量类型中 尺寸=最大组数
而有些则未必相等。
或者简单的说哪些变量的尺寸可以设置为1,而那些必须 尺寸=最大组数 ?


下面提供一种比较苯地分析: (我学jass不到一星期 一些词语用的不恰当还请多指教:))

最下面的一大段code 为保存地图后将GUI翻译为jass 的文本中关于全局变量的声明和设置的部分(我将所有变量的尺寸都设置为9)

从中可以看出 尺寸只是决定了初始化全局变量后循环设置初始值时的循环次数
也就是说如果你设尺寸为9它就按你设定的初始值给该数组的0-9号元素赋值 如果你想要1-9号元素的初始值为100 而你只设置了尺寸为1 那么就只有0号和1号元素的初始为100  其他号的元素仍然为默认0或null

因此 你需要设置的初始值不等于默认值的时候 就要把尺寸设置为等于你游戏里用到的最大尺寸
如果你需要的初始值就是他给的默认值 那尺寸设置多少都无所谓 因为数组的最大尺寸是事先定义好的常数 和GUI里的尺寸无关 GUI里的尺寸只是一种功能 它不会影响数组的性质

但以上原则也有一些特例 如果你细心的话你会发现这样的语句
function InitGlobals takes nothing returns nothing
    local integer i = 0
    set i = 0
    loop
        exitwhen (i > 9)
        set udg_dialog[i ] = DialogCreate()
        set i = i + 1
    endloop
这段jass的意思是对“对话”型变量初始赋值 注意这个DialogCreate()!!! 这个初始赋值是一个新的创建的东西!!!而不像其他变量赋值那样用的是已存在或设定好了的 也就是说实际起作用的东西还“套了一层”  所以即使该数组你使用的是默认初始值 如果你设置了尺寸为9 而在游戏中引用了[10]的话 这个[10]就更本没效果 就像不存在一样 因为和[10]对应的那个实际起作用的 DialogCreate()更本就不存在(它没在初始化中被创建) 尽管这个变量[10]是存在的。  而其他类型的变量比如说点 实际起作用的就是它本身 不用新创建一个与其对应  所以如果是尺寸为9的 location[10]的话就可以被有效的使用了

根据下面的jass将GUI中所有类似“对话”型的“特殊”变量整理如下:
dialog (对话)
timer (计时器)
group (单位组)
force (玩家组)



最后总结如下
1.dialog timer group force这几种变量设置尺寸时一定不能小于你游戏中要用到的最大尺寸
2.对于其他类型变量 如果你需要设置的初始值不等于默认值的时候 就要把尺寸设置为不小于你游戏中要用到的最大尺寸 如果你需要的初始值就是其默认值 那么尺寸就可以设置为1


其实你要是实在记不住这些的话就通通设置到你用到的最大尺寸就好了 也没什么大不了的拉...那~..我研究这个有什么用?...没什么用拉~~~纯属研究解惑恩....:lol:P
终于写完拉~累恩~第一次写文章...:victory:


  1. globals
  2.     // User-defined
  3.     dialog array            udg_dialog
  4.     location array          udg_location
  5.     integer array           udg_ability
  6.     boolean array           udg_boolean
  7.     integer array           udg_magiceffect
  8.     camerasetup array       udg_cameraobject
  9.     attacktype array        udg_attacktype1
  10.     weapontype array        udg_combatsound
  11.     damagetype array        udg_attacktype2
  12.     destructable array      udg_destructable
  13.     integer array           udg_destructable_type
  14.     defeatcondition array   udg_defeatcondition
  15.     button array            udg_dialogbotton
  16.     effecttype array        udg_effect_type
  17.     texttag array           udg_floatingtext
  18.     gamecache array         udg_gamecathem
  19.     gamespeed array         udg_gamespeed
  20.     image array             udg_image
  21.     integer array           udg_image_type
  22.     integer array           udg_integer
  23.     item array              udg_item
  24.     itemtype array          udg_item_type
  25.     leaderboard array       udg_leadboard
  26.     lightning array         udg_lighting
  27.     string array            udg_lighting_type
  28.     multiboard array        udg_multiboard
  29.     integer array           udg_order
  30.     player array            udg_player
  31.     playercolor array       udg_playercolor
  32.     force array             udg_playergroup
  33.     pathingtype array       udg_daolu_type
  34.     quest array             udg_mission
  35.     questitem array         udg_requestofmission
  36.     race array              udg_race
  37.     real array              udg_real
  38.     rect array              udg_region
  39.     sound array             udg_sound
  40.     soundtype array         udg_sound_type
  41.     effect array            udg_specialeffect
  42.     string array            udg_string
  43.     integer array           udg_tech_type
  44.     terraindeformation array udg_terrainchange
  45.     integer array           udg_terrainfigure
  46.     integer array           udg_terraintype
  47.     timer array             udg_timer
  48.     timerdialog array       udg_timewindow
  49.     trigger array           udg_trigger
  50.     ubersplat array         udg_interval
  51.     string array            udg_intervaltype
  52.     unit array              udg_unit
  53.     group array             udg_unitgroup
  54.     fogmodifier array       udg_modification
  55.     weathereffect array     udg_weathereffect
  56.     integer array           udg_unit_type

  57.     // Generated
  58.     rect                    gg_rct________000          = null
  59.     rect                    gg_rct________001          = null
  60.     rect                    gg_rct________002          = null
  61.     rect                    gg_rct_SellA               = null
  62.     unit                    gg_unit_Hmkg_0000          = null
  63.     unit                    gg_unit_Hmkg_0001          = null
  64.     trigger                 gg_trg_test                = null
  65. endglobals

  66. function InitGlobals takes nothing returns nothing
  67.     local integer i = 0
  68.     set i = 0
  69.     loop
  70.         exitwhen (i > 9)
  71.         set udg_dialog[i ] = DialogCreate()
  72.         set i = i + 1
  73.     endloop

  74.     set i = 0
  75.     loop
  76.         exitwhen (i > 9)
  77.         set udg_ability[i ] = 'AHca'
  78.         set i = i + 1
  79.     endloop

  80.     set i = 0
  81.     loop
  82.         exitwhen (i > 9)
  83.         set udg_boolean[i ] = false
  84.         set i = i + 1
  85.     endloop

  86.     set i = 0
  87.     loop
  88.         exitwhen (i > 9)
  89.         set udg_magiceffect[i ] = 'BHad'
  90.         set i = i + 1
  91.     endloop

  92.     set i = 0
  93.     loop
  94.         exitwhen (i > 9)
  95.         set udg_attacktype1[i ] = ATTACK_TYPE_NORMAL
  96.         set i = i + 1
  97.     endloop

  98.     set i = 0
  99.     loop
  100.         exitwhen (i > 9)
  101.         set udg_combatsound[i ] = WEAPON_TYPE_METAL_LIGHT_CHOP
  102.         set i = i + 1
  103.     endloop

  104.     set i = 0
  105.     loop
  106.         exitwhen (i > 9)
  107.         set udg_attacktype2[i ] = DAMAGE_TYPE_NORMAL
  108.         set i = i + 1
  109.     endloop

  110.     set i = 0
  111.     loop
  112.         exitwhen (i > 9)
  113.         set udg_destructable[i ] = null
  114.         set i = i + 1
  115.     endloop

  116.     set i = 0
  117.     loop
  118.         exitwhen (i > 9)
  119.         set udg_destructable_type[i ] = 'ATtr'
  120.         set i = i + 1
  121.     endloop

  122.     set i = 0
  123.     loop
  124.         exitwhen (i > 9)
  125.         set udg_effect_type[i ] = EFFECT_TYPE_EFFECT
  126.         set i = i + 1
  127.     endloop

  128.     set i = 0
  129.     loop
  130.         exitwhen (i > 9)
  131.         set udg_gamespeed[i ] = MAP_SPEED_SLOWEST
  132.         set i = i + 1
  133.     endloop

  134.     set i = 0
  135.     loop
  136.         exitwhen (i > 9)
  137.         set udg_image_type[i ] = 0
  138.         set i = i + 1
  139.     endloop

  140.     set i = 0
  141.     loop
  142.         exitwhen (i > 9)
  143.         set udg_integer[i ] = 0
  144.         set i = i + 1
  145.     endloop

  146.     set i = 0
  147.     loop
  148.         exitwhen (i > 9)
  149.         set udg_item[i ] = null
  150.         set i = i + 1
  151.     endloop

  152.     set i = 0
  153.     loop
  154.         exitwhen (i > 9)
  155.         set udg_item_type[i ] = ITEM_TYPE_ANY
  156.         set i = i + 1
  157.     endloop

  158.     set i = 0
  159.     loop
  160.         exitwhen (i > 9)
  161.         set udg_lighting_type[i ] = "CLPB"
  162.         set i = i + 1
  163.     endloop

  164.     set i = 0
  165.     loop
  166.         exitwhen (i > 9)
  167.         set udg_player[i ] = Player(0)
  168.         set i = i + 1
  169.     endloop

  170.     set i = 0
  171.     loop
  172.         exitwhen (i > 9)
  173.         set udg_playercolor[i ] = PLAYER_COLOR_RED
  174.         set i = i + 1
  175.     endloop

  176.     set i = 0
  177.     loop
  178.         exitwhen (i > 9)
  179.         set udg_playergroup[i ] = CreateForce()
  180.         set i = i + 1
  181.     endloop

  182.     set i = 0
  183.     loop
  184.         exitwhen (i > 9)
  185.         set udg_daolu_type[i ] = PATHING_TYPE_WALKABILITY
  186.         set i = i + 1
  187.     endloop

  188.     set i = 0
  189.     loop
  190.         exitwhen (i > 9)
  191.         set udg_race[i ] = RACE_HUMAN
  192.         set i = i + 1
  193.     endloop

  194.     set i = 0
  195.     loop
  196.         exitwhen (i > 9)
  197.         set udg_real[i ] = 0.00
  198.         set i = i + 1
  199.     endloop

  200.     set i = 0
  201.     loop
  202.         exitwhen (i > 9)
  203.         set udg_region[i ] = null
  204.         set i = i + 1
  205.     endloop

  206.     set i = 0
  207.     loop
  208.         exitwhen (i > 9)
  209.         set udg_sound[i ] = null
  210.         set i = i + 1
  211.     endloop

  212.     set i = 0
  213.     loop
  214.         exitwhen (i > 9)
  215.         set udg_sound_type[i ] = SOUND_TYPE_EFFECT
  216.         set i = i + 1
  217.     endloop

  218.     set i = 0
  219.     loop
  220.         exitwhen (i > 9)
  221.         set udg_string[i ] = ""
  222.         set i = i + 1
  223.     endloop

  224.     set i = 0
  225.     loop
  226.         exitwhen (i > 9)
  227.         set udg_tech_type[i ] = 'Rhme'
  228.         set i = i + 1
  229.     endloop

  230.     set i = 0
  231.     loop
  232.         exitwhen (i > 9)
  233.         set udg_terrainfigure[ i] = 0
  234.         set i = i + 1
  235.     endloop

  236.     set i = 0
  237.     loop
  238.         exitwhen (i > 9)
  239.         set udg_terraintype[i ] = 'Ldrt'
  240.         set i = i + 1
  241.     endloop

  242.     set i = 0
  243.     loop
  244.         exitwhen (i > 9)
  245.         set udg_timer[i ] = CreateTimer()
  246.         set i = i + 1
  247.     endloop

  248.     set i = 0
  249.     loop
  250.         exitwhen (i > 9)
  251.         set udg_intervaltype[i ] = "TEST"
  252.         set i = i + 1
  253.     endloop

  254.     set i = 0
  255.     loop
  256.         exitwhen (i > 9)
  257.         set udg_unit[i ] = null
  258.         set i = i + 1
  259.     endloop

  260.     set i = 0
  261.     loop
  262.         exitwhen (i > 9)
  263.         set udg_unitgroup[i ] = CreateGroup()
  264.         set i = i + 1
  265.     endloop

  266. endfunction
复制代码

[ 本帖最后由 illlusion 于 2006-4-3 20:47 编辑 ]
发表于 2006-4-3 21:03:30 | 显示全部楼层
我汗,明明是在水区啊,忽然看见这个帖子,正打算转了,再一看,怎么会是在综合区啊?鬼啊~~
回复

使用道具 举报

发表于 2006-4-3 21:29:10 | 显示全部楼层
原来这个帖子也被转过来啦
支持一下
回复

使用道具 举报

发表于 2006-4-4 10:24:43 | 显示全部楼层
GA怎么老出这种灵异事件
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 03:02 , Processed in 0.103930 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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