找回密码
 点一下
查看: 1107|回复: 2

关于限制单位可建造数问题

[复制链接]
发表于 2010-3-13 15:20:05 | 显示全部楼层 |阅读模式
的确可以通过
call SetPlayerTechMaxAllowedSwap( 'h00S',1,Player(0))
限制从建筑训练的单位来限制单位数量.
但是从触发或者Jass创建的单位如何限制呢?
貌似限制不了, 求方法解决.
发表于 2010-3-13 16:08:13 | 显示全部楼层
的确这个对于直接创建的单位无效……
可以考虑的做法是用变量记录指定类型单位的数量, 创造时判断数量是否达到上限,达到的话就不创建了
回复

使用道具 举报

 楼主| 发表于 2010-3-13 17:04:37 | 显示全部楼层
还是没懂..求修改..

function EngineerTurretConditions takes nothing returns boolean
    return GetSpellAbilityId()=='A08S'
endfunction

function EngineerTurretActions takes nothing returns nothing
    local group g = GetUnitsOfTypeIdAll('h00S')
    local unit u  = FirstOfGroup(g)
    local real x = GetUnitX(u)
    local real y = GetUnitY(u)
    local player p = GetOwningPlayer(GetTriggerUnit())
    call DestroyGroup(g)
    call RemoveUnit(u)
    set u = null
    set g = null
    call PolledWait(0.1)
    if udg_TurretNumber>8 then
        call IssueImmediateOrder(GetTriggerUnit(),"stop")
    else
    set udg_LightTurret = CreateUnit(p,'h00S',x,y,0.0)
    endif
    set udg_soundpath = "war3mapImported\\\\AmmoLink.mp3"
    call ExecuteFunc("PlaySoundPath3D")
    call PolledWait(2.25)
    if GetWidgetLife(udg_Hero[GetConvertedPlayerId(p)])>0.405 then
        call ModifyHeroStat( bj_HEROSTAT_INT, udg_Hero[GetConvertedPlayerId(p)], bj_MODIFYMETHOD_SUB, 1 )
    endif
endfunction

//===========================================================================
function InitTrig_EngineerTurret takes nothing returns nothing
    set udg_EngineerTurret = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(udg_EngineerTurret, EVENT_PLAYER_UNIT_SPELL_FINISH)
    call TriggerAddCondition(udg_EngineerTurret, Condition( function EngineerTurretConditions))
    call TriggerAddAction(udg_EngineerTurret, function EngineerTurretActions)
endfunction
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 23:36 , Processed in 0.041822 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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