找回密码
 点一下
查看: 2210|回复: 8

地图初始化的问题!!!

[复制链接]
发表于 2011-2-12 20:02:31 | 显示全部楼层 |阅读模式
为什么触发里地图初始化转换成代码看不到代码?和空触发一样


function Trig_xxx__________001_Actions takes nothing returns nothing
endfunction
//===========================================================================
function InitTrig_xxx__________001 takes nothing returns nothing
    set gg_trg_xxx__________001 = CreateTrigger(  )
    call TriggerAddAction( gg_trg_xxx__________001, function Trig_xxx__________001_Actions )
endfunction
发表于 2011-2-12 20:04:58 | 显示全部楼层
[jass]
function Trig________________u_Actions takes nothing returns nothing
    call MeleeStartingVisibility(  )
    call MeleeStartingHeroLimit(  )
    call MeleeGrantHeroItems(  )
    call MeleeStartingResources(  )
    call MeleeClearExcessUnits(  )
    call MeleeStartingUnits(  )
    call MeleeStartingAI(  )
    call MeleeInitVictoryDefeat(  )
endfunction

//===========================================================================
function InitTrig________________u takes nothing returns nothing
    set gg_trg________________u = CreateTrigger(  )
    call TriggerAddAction( gg_trg________________u, function Trig________________u_Actions )
endfunction
[/jass]
明明就有嘛……你用“重置触发器”试试。
回复

使用道具 举报

 楼主| 发表于 2011-2-12 22:22:19 | 显示全部楼层
我说的是事件部分啊,你试试把时间里的地图初始化事件删除掉。然后转换成代码。是不是和没删除这个事件得到的代码是一样的?
//===========================================================================
function InitTrig_xxx__________001 takes nothing returns nothing
    set gg_trg_xxx__________001 = CreateTrigger(  )
    call TriggerAddAction( gg_trg_xxx__________001, function Trig_xxx__________001_Actions )
endfunction
回复

使用道具 举报

发表于 2011-2-12 23:47:24 | 显示全部楼层
哦,原来你说的是这个啊……
“地图初始化”本来就不是一个真正的“事件”
只是在触发编辑器里面使用了“地图初始化”的触发会在RunInitializationTriggers函数被调用一遍而已
function RunInitializationTriggers takes nothing returns nothing
    call ConditionalTriggerExecute( gg_trg________________u )
endfunction
//Run(运行)Initialization(地图初始化)Triggers(触发器)

如果你是自己写war3map.j文件的话,就必须要自己将“地图初始化”的函数写进main函数里面了。
回复

使用道具 举报

 楼主| 发表于 2011-2-13 01:24:33 | 显示全部楼层
如果我要写地图初始化的代码的话。要自己写这些吗?还是只要把带有地图初始化事件的T转换成代码就行了?
回复

使用道具 举报

 楼主| 发表于 2011-2-13 10:47:04 | 显示全部楼层
我就是想知道要怎么写地图初始化这个事件...
回复

使用道具 举报

发表于 2011-2-13 11:34:20 | 显示全部楼层
想要函数能在地图初始化的时候运行,可以把有“地图初始化”事件的触发转换为自定义代码,然后把函数写在TriggerAction里面。
比如:
[trigger]HelloWorld
    事件
        地图初始化
    条件
    动作
        注释:把你想要在地图初始化时运行的语句写在这里
[/trigger]
[jass]
function Trig_HelloWorld_Actions takes nothing returns nothing
注释:把你想要在地图初始化时运行的语句写在这里
endfunction
//===========================================================================
function InitTrig_HelloWorld takes nothing returns nothing
    set gg_trg_HelloWorld = CreateTrigger(  )
    call TriggerAddAction( gg_trg_HelloWorld, function Trig_HelloWorld_Actions )
endfunction
[/jass]

也可以直接写在创建触发的语句里面,这样就不需要“地图初始化”了:
[trigger]HelloWorld
    事件
    条件
    动作
[/trigger]
[jass]
function InitTrig_HelloWorld takes nothing returns nothing
可以直接将代码写在这个创建触发的函数里面,比如这个名为HelloWorld的触发,创建它的函数名为InitTrig_HelloWorld。
写在这里的代码也会在“地图初始化”的时候运行,而且此方法更加简单实用,所以应该来说大部分人都是这样使用的。
endfunction
[/jass]
回复

使用道具 举报

 楼主| 发表于 2011-2-13 13:15:55 | 显示全部楼层

4种情况的触发1

4种情况的触发1

4种情况的触发2

4种情况的触发2
   
四种触发转换成代码后得到的确是两种。
难道是WE的作用。会自动在保存的时候记住有地图初始化事件的触发?
回复

使用道具 举报

 楼主| 发表于 2011-2-13 13:24:07 | 显示全部楼层
呃......忽然茅厕顿开了。 只要把要在地图初始化事件种做的动作添加到
function InitTrig_ini takes nothing returns nothing
    set gg_trg_ini = CreateTrigger(  )
    call CreateNUnitsAtLoc( 1, 'hfoo', Player(0), GetRectCenter(GetPlayableMapRect()), bj_UNIT_FACING )
    call TriggerAddAction( gg_trg_ini, function Trig_ini_Actions )
endfunction
里面就行了。愚昧了,一直按固定的思路转!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 00:24 , Processed in 0.183029 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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