心魔网 - 挥洒由笔,创意随心's Archiver

啖红 发表于 2008-5-11 22:48

啖红滴第一个函数=. =有删节,合成物品用的说

调用的时候就是
Exchange ( '触发单位','返回金钱','换取物品类型','合成物1的类型(若没就写0)','合成物2的类型(若没就写0)','合成物3的类型(若没就写0)','合成物4的类型(若没就写0)','合成物5的类型(若没就写0)','合成物6的类型(若没就写0)')
第一次用J:tk_38 笨拙之处请见谅
[jass]//===========================================================================
//检查是否满足交换条件
function Change_Check takes unit who , integer item1 , integer item2 , integer item3 , integer item4 , integer item5 , integer item6  returns boolean
   
    //================================初始化开始
   
    local boolean array bool//记录数组
   
    local integer array allItem//记录条件物品
   
    local item array rightItem //记录拿来交换的物品
   
    local integer max_num //记录交换物品数
   
    local integer i = 1 //循环变量
   
    local integer j = 1 //循环变量
   
    local integer k = 1 //循环变量
   
    set allItem[1] = item1
   
    set allItem[2] = item2
   
    set allItem[3] = item3
   
    set allItem[4] = item4
   
    set allItem[5] = item5
   
    set allItem[6] = item6
   
    set max_num = 0
   
    loop
   
        exitwhen i > 6
        
        if ( 0 == allItem[i] ) then
        
            set bool[i] = true
            
        else
        
            set bool[i] = false
            
            set max_num = max_num + 1
            
        endif
        
        set i = i + 1
        
    endloop
   
   
    //================================判断初始化完成
   
    set i = 1
   
    set k = 1
   
    loop
   
        exitwhen i > 6
        
        set j = 1
        
        loop
        
            exitwhen j > 6
            
            if ( bool[j] ) then
            
            else
            
                if ( allItem[j] == GetItemTypeId(UnitItemInSlotBJ(who, i)) ) then
               
                    set bool[j] = true
                    
                    set rightItem[k] = UnitItemInSlotBJ(who, i)
                    
                    set k = k + 1
                    
                    set j = 6
               
                endif
               
            endif
        
            set j = j + 1
        
        endloop
        
        set i = i + 1
   
    endloop
   
   
    //输出结果
   
    set i = 1
     
    loop
   
        exitwhen i > 6
        
        if ( bool[i] ) then
        
        else
        
            return false
            
        endif
        
        set i = i + 1
        
    endloop
   
    //删除交换用物
    set i = 1
   
    loop
   
        exitwhen i > max_num
        
        call RemoveItem ( rightItem[i] )
        
        set i = i + 1
        
    endloop
   
    return true
   
endfunction
//===========================================================================

//===========================================================================
//运行合成函数
function Exchange takes unit who , integer back_money , integer get_item , integer item1 , integer item2 , integer item3 , integer item4 , integer item5 , integer item6  returns nothing
    local player whos_owner = GetOwningPlayer ( who )//触发玩家
   
    local effect show//临时特效
    if ( Change_Check ( who , item1, item2, item3, item4, item5, item6) ) then
        
        call UnitAddItemByIdSwapped ( get_item , who )
        
        set show = AddSpecialEffectTarget("Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl", who, "overhead")
   
        call DestroyEffect( show )
        
    else
   
        call DisplayTextToPlayer ( whos_owner , 0 , 0 , "|cFFFF0000交换条件不满足!|r" )
        
        call AdjustPlayerStateBJ ( back_money , whos_owner, PLAYER_STATE_RESOURCE_GOLD ) //返回金钱
        
    endif
        
endfunction
//===========================================================================[/jass]

这样看要醒目得多吧-by thody

everguo 发表于 2008-5-11 23:43

怎么不用JASS高亮

啖红 发表于 2008-5-12 01:01

怎么用.............

everguo 发表于 2008-5-12 10:19

看这里  [url=http://bbs.tbswe.com/redirect.php?tid=31288&goto=lastpost#lastpost]http://bbs.tbswe.com/redirect.php?tid=31288&goto=lastpost#lastpost[/url]

狡猾的兔子 发表于 2008-5-13 10:32

支持一下师弟。:tk_00

saiop 发表于 2008-5-31 23:42

最近刚刚在接触这方面的东西
看的我眼花花

看看大大写的研究一下

谢谢

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.