Jass 技能模型定义(—):半人马酋长的反击光环
Jass是什么?
 先闡釋一下什么是jass吧,百度:JASS(正確地說是JASS 2)是魔獸3的程序語言,用于控制游戲和地圖的進行,也是魔獸游戲和地圖的基礎。 地圖編輯器中擺放的單位(Unit),區域(Region) ,觸發(Trigger)……等,最終都會被翻譯成JASS語言存在地圖文件里,在游戲時被使用。JASS在語法結構上比較接近Basic,同時也引用了許多C語言的東西。
語法結構:
//jass語法結構
function Trig_functions_Conditions takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetTrainedUnit()) == 'N000' ) ) then
        return false
    endif
    return true
endfunction
function Trig_functions_Actions takes nothing returns nothing
    call CreateItemLoc( 'modt', GetUnitLoc(GetTriggerUnit()) )
    call UnitAddItemSwapped( GetLastCreatedItem(), GetTrainedUnit() )
endfunction
//c語言的結構
/*
其中
GetTrainedUnit()返回觸發器事件中創建的單位(類型:Unit)   
GetUnitTypeId( Unit )  返回某一個單位對應的Id(String)
以上的兩個來自游戲函數庫,第一個函數的大致意思是 : 如果觸發器事件中創建的單位對應的Id等于'N000'返回true,否則返回false
*/
public bool Trig_functions_Conditions()
{
    return GetUnitTypeId(GetTrainedUnit()) == 'N000'
}
/*
GetTriggerUnit()返回觸發器事件中的單位(開啟觸發器的單位,類型:Unit)
GetUnitLoc( Unit ) 返回某一個單位所在的位置
'modt'是吸血面罩的Id
CreateItemLoc( ItemId , Position )  在某個位置創建一個物品
以上的全部解釋是:在觸發器單位所處的位置,創建一個吸血面罩。(汗。。。還沒完)
GetLastCreatedItem() 地圖編輯器上一個創建物品
UnitAddItemSwapped( Item   ,   Unit )   把物品Item 移到 Unit 物品欄里(如果物品欄已滿,操作無效)
以上的全部解釋是:把地圖編輯器上一個創建物品移到上一個創建單位的物品欄中
合并在一起:在觸發器單位A所在位置創建一個吸血面罩,然后把吸血面罩移動到A的物品欄里。
注:問:為什么不直接在英雄欄里創建一個吸血面罩呢?呵呵,函數庫里沒有這個功能,這個功能只能間接實現。
除非能改寫這個游戲使用的函數庫,我覺得我沒這個能力- -|||
*/
public void Trig_functions_Actions()
{
    CreateItemLoc( 'modt', GetUnitLoc(GetTriggerUnit()) ) ;
    UnitAddItemSwapped( GetLastCreatedItem(), GetTrainedUnit() );
}
其實扯淡這么久,我今天為什么突然說起Jass語言了。說明下原因吧,其實這門古老的語言,我很久沒有使用過了,幾天,我想做兵棋,但是自己又沒有這種經驗。之前大學里,我是很喜歡冰封王座這款游戲的,而且自己邊玩邊做,慢慢的就學會了Jass,Jass可是我真正精修的第一門語言,對WorldEditor很熟悉。這樣我就想在自己做的兵棋游戲里加入WorldEditor的元素,比如地圖編輯模式,分為地表、單位、可破壞(森林、樹木、酒桶、箱子)、不可破壞(石頭、塑像、效果)、路徑阻斷。我在自己的兵棋地圖中,大致也會分這么幾個層,這么做有一個好處,我要做一個兵棋地圖編輯器(不是我瘋了,而是必須有,如果兵棋地圖,都由代碼來完成,未免開發量有點大),這么做,可以分別做地表、單位、路徑阻斷、可破壞、不可破壞等等的功能,將這幾個層重合,部署到最基層的六邊形陣列上,當我需要開發某一項功能,可以將其他層搬開,只留下需要開發的功能層即可。并且WorldEditor中的單位模型,也是很好的借鑒,實在是太棒了,憑空很難想象的出來的(有個好靠山,自己就貼上去吧),甚至包括WorldEditor中的Trigger模式,我估計也會做一下,游戲中要隨機出現新事件、或者彈個片、或者過個畫,這點用Trigger模式非常好。
真正玩過war3、或者dota的人,或多或少的都用過WorldEditor,只是熟練程度不一樣而已。今天就小試牛刀,跟大家一起做一個dota中半人馬酋長的被動技能吧,呵呵。灰常簡單,就用編輯器中的功能就行了,不用額外寫jass腳本。
1、首先,打開地圖編輯器,在技能類里新創建一個英雄技能
2、打開Trigger編輯器,新建一個觸發器事件
事件:當一個單位被攻擊時
條件:被攻擊單位反擊光環等級大于0
動作:
如果反擊光環等級等于1 那么被攻擊單位給予攻擊單位10點基礎傷害+被攻擊者力量*0.2的英雄傷害
如果反擊光環等級等于2 那么被攻擊單位給予攻擊單位20點基礎傷害+被攻擊者力量*0.3的英雄傷害
如果反擊光環等級等于3 那么被攻擊單位給予攻擊單位30點基礎傷害+被攻擊者力量*0.4的英雄傷害
怎么樣,簡單吧,動動小手,反擊光環就做出來了。(穴居惡魔的尖刺和先知的荊棘光環不能實現反擊光環的效果,可詳細對比下就知道為什么這個技能不得不借助觸發器來做了)
總結
以上是生活随笔為你收集整理的Jass 技能模型定义(—):半人马酋长的反击光环的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 中国合伙人
- 下一篇: 业余时间如何赚钱(手机打字赚钱一单一结)
