《閃點行動2 龍之崛起》任務編輯器教程

原文:點擊

感想:本人玩過的三角洲系列,毀滅戰士系列,地震系列,反恐系列,霹靂系列,彩虹系列,榮譽勛章系列,cod系列。

說實話我已厭倦了巷戰,厭倦了按規定線路沖鋒的的第一人稱射擊遊戲。

給我感覺最好的好是閃點行動和三角洲,開闊的地圖,真實的戰爭,1公里開外匍匐在草叢中,抬個狙,聽着風吹過草地的聲音,等待着目標的出現!!!

任務編輯器感想:該編輯還是比較傻瓜容易懂的。連我這種對腳本語言一巧不通的人也摸出了點門道。

教程一:初識界面,放置單位,單位屬性。

可以看到圖片所示。界面很簡單。

《閃點行動2 龍之崛起》任務編輯器教程

要做個最最簡單的地圖就是把解放軍,和美軍拖到地圖上,然後選中一個單位在屬性界面里把AI換成player就可以了。
下面圖片的屬性的簡單介紹 如圖

《閃點行動2 龍之崛起》任務編輯器教程

沒什麼難點隨便選擇了玩玩就可以了。

教程二: 路徑點

因為路徑設置已經有人寫過比較好的文章,我復制如下(感謝原作者vid190):
很多人都要問道怎麼讓AI自動走路,下面簡單介紹下,會了這個你也就差不多能做個極為簡單的防禦地圖了

舉例做一個讓AI一開始就自己移動一段距離的任務

1.首先加入AI,在Create面板里的USMC跟PLA下的,Fireteams 火線小組 Soldiers 單兵 Squads 一個班 ,這些就不多介紹了,自己選擇個小隊加入。然後在設置自己,這里要注意了,如果讓AI自己移動那麼這個移動的隊伍里不能有你自己。不然系統會自己默認讓你自己發號施令指揮隊友。自己在Soldiers選擇個自己喜歡的加上,讓後在地圖上在自己加入的這個人物圖標上單擊右鍵選擇Set Control Mode Of This Character – Player 就設置為自己了,但是如果設置的為敵方那就不用考慮自己了。

2.然後是設置路徑點。在Create面板里的Systems下的,Mission里選擇 Waypoint 路徑點。然後在地圖上畫出路徑點,這里要注意,每到一個路徑點隊長都會報告下一個路徑點,所以不要點太多,不然每走幾步隊長就得烏拉烏拉的。然後選擇AI,不包括你自己,這里可以全選也可以點擊小隊的盾牌,也可以單選。怎麼都可以。選擇後在他們的圖標上點右鍵選擇Pick Waypoint 這時圖標會變灰但是路徑點還是亮着的,選擇你剛才設置的第一個起始路徑點就可以了。

技巧一.關於怎麼樣設置迂迴,同理只要在終點路徑點上右鍵單擊並選擇Pick Next Waypoint 然後點擊起始路徑點即可。這時會看見路徑線的兩個箭頭會重合相對,意思就是AI會在這兩點上來回遊走。當然你也可以畫個圈,反正怎麼畫隨你。

技巧二.如果你想讓AI跑步以最快的速度行進,那隻要點擊路徑點然後選擇右邊Modify-Waypoint下的Rapid Move,把它點亮就可以了。然後你會看見路徑線變成多箭頭,既是成功。

技巧三.當然這時你可能看到Rapid Move下的Stance選項,它是設置到這個路徑點用什麼樣的姿態,依次為正常直立行進,蹲着行進,還有匍匐前進。

技巧四.然後你會看到Stance下面的Doctrine選項,雖然這個單詞很難理解,但也是跟姿態有關。依次說下你們就明白了。第一個命令後的姿態,就是說隊長命令AI什麼樣AI就保持什麼樣的姿態,然後第二個是巡邏姿態,就是心不在焉的那種。第三個事正常姿態。第四個也是個巡邏姿態,但是是非常警覺的那種,也可以理解成搜尋姿態。第五個就是戰鬥姿態了。然後這里下面的Formation我們簡單介紹下,就是行進隊形。明白了吧,什麼代表什麼隊形遊戲中熟悉這里就不做多介紹了。

技巧五.然後是Delay選項,顧名思義就是延遲,就是到達次路徑點後等待多長時間再移動到下個路徑點。單位是毫秒,注意不是秒。1000毫秒=1秒。要是設置60分鍾就得是 3600000

感謝原作者vid190

教程三:部隊編組

因為部隊編組已經有人寫過比較好的文章,我復制如下(感謝原作者vid190):
1.我們先在Soldiers重選擇5個單兵,放到地圖上去,因為一個小隊最多5個人,你選6個也編不到一塊去。
然後我們在看Create-Systems-AI-下的Echelon圖標。這個事我們以後編輯任務的常用圖標,就是小隊圖標。
我們在地圖上加一個。

2.然後我們就可以把這5個人編輯成一小組,我們可以在Echelon圖標上點擊右鍵選擇Pick Parent Echelon單個選擇單兵,
也可以在單兵圖標上點擊右鍵選擇Pick Parent Echelon指向Echelon圖標。在就可以用鼠標全選,或者按住Ctrl挑選。

3.這時我們看到五個單兵都用線指向Echelon圖標,並且Echelon圖標被點亮了。然後我們看到這五個單兵中有一個帶有白色黑點小盾牌圖標的,這個就是隊長了。怎麼樣設置隊長呢,我們來說下。首先選擇你那個要設置隊長的單兵,然後在右下角Modify面板中找到Hierarchy面板中的Leadership選項,我們看到數值有100,200,300這樣的,說到這有的人明白了吧,數越大級別越高。小隊中級別最高的就是隊長。
而後面的Reset就是還原成默認,還有就是什麼樣的級別對應什麼樣軍銜,在下一課中Rank屬性中有介紹,不然一個小兵命令一個將軍就糗大了,(400為小隊長,800為大隊長。)

4.小隊任務說完了,然後我們再說編輯班級隊伍,就是把編輯好的幾個小隊組成一個大隊。
把剛才編輯好的Ctrl+c Ctrl+v再復制出4個來。然後再加入一個Echelon圖標,聰明人到這個都應該明白再怎麼設置了吧,
在每個小隊的Echelon圖標上點擊右鍵選擇Pick Parent Echelon指向新加入的Echelon圖標。這時你會看到。新加入的圖標變成兩個黑點。
這就是一個大隊的標志。5個小隊都選擇完畢後你會看到這25人其中有一個人有兩點白色盾牌標記,那個就是大隊長了。關於怎麼設置大隊長,同上面的第3節,這里就不囉嗦了。

要點:加入軍官時要小心,只要一個就夠了,不要重復加入,系統不支持多軍官。
      還有就是你最多隻能控制9個單位,就是說最多隻能命令24個人,1到9,1是你自己,2到5是你小隊的人,6.7.8.9是另外4個小隊。

教程四:初識lua腳本

編寫level.lua是此編輯器的靈魂核心。
請不要看見代碼就犯暈,其實都很簡單。
我之前對腳本語言一竅不通,不對之處多多指教。
首先我們點到右上角界面中system然後拖動

《閃點行動2 龍之崛起》任務編輯器教程

圖標在地圖上。地圖上選中該圖標,在標簽欄就會出現level.lua標簽。如圖所示。

《閃點行動2 龍之崛起》任務編輯器教程

二我們打開標簽level.lua,在輸入界面里輸入:
function onMissionStart()
OFP:showLetterBoxOsd(true);
end
請不要暈,我們慢慢的一行行的解釋。
首先第一行:
function onMissionStart() 意思可以這麼理解「當遊戲開始的時候」這段代碼就是這個意思。看到function就是「當什麼什麼的時候」。onMissionStart()意思是遊戲開始。
再看第二行OFP:showLetterBoxOsd(true);
OFP:觸發。showLetterBoxOsd(true)意識是給出信框。
end為結束,記得end要和function連用。
很簡單把.整段代碼的作用是:

當遊戲開始的時候
觸發:出現信框。                 –要滿足function onMissionStart()否則不觸發。
效果:
就是我們在玩任務的時候一開始,屏幕上下的黑幕。

再看個例子:
function onDeath_huang(victim, killer)
OFP:missionFailed();
end
看到function就是「當」,
第一行意為「當huang這個單位死了」
第二行:觸發:任務失敗;       –要滿足function onDeath_huang(victim, killer)否則無法觸發。
效果:只要huang這個名稱的兵死了任務將失敗。

總結下:寫level.lua不外乎就是當什麼什麼的時候,觸發什麼什麼。很簡單吧。

教程五:如何顯示小黃棋

《閃點行動2 龍之崛起》任務編輯器教程

這個圖標在遊戲中起到指南的作用,讓玩家一步步順者提示走。(該圖標只有指南作用,沒有完成任務的作用,也就是說這個圖標配合任務圖標才能完美任務)
用法很簡單就是點擊system里的把

《閃點行動2 龍之崛起》任務編輯器教程

拖動到地圖上就可以了,如果拖動多個

《閃點行動2 龍之崛起》任務編輯器教程

就要將他們之間互相連接起來,類似路徑點。屬性里設置下名稱大小等就可以了。
但是很多朋友可能遇到這樣個問題,明明把

《閃點行動2 龍之崛起》任務編輯器教程

放在了地圖上。但是測試遊戲里面就是不見!!!!!!!
其實關鍵是我們沒有觸發。
好,一一來實現。
首先拖動

《閃點行動2 龍之崛起》任務編輯器教程

圖標到地圖上,然後再拖動

《閃點行動2 龍之崛起》任務編輯器教程

到地圖上,並且在

《閃點行動2 龍之崛起》任務編輯器教程

的屬性name命名為point1,讓後點擊level.lua標簽
輸入:
function onMissionStart()
OFP:activateRVChain(“point1”);
End
這樣看來就很簡單了把:
當遊戲開始的時
觸發:point1這個旗。
效果:
進入遊戲後我們就能看到這個小黃棋在坐標上啦。
備註:如果有多個00並且之間相連,那麼在level.lua里只要觸發第一個棋子的名字就可以了,其他後面的棋子都可見到了。
休息下,抽根煙,喝點茶。
待編。。。。。。。。。。。。

教程六:如何製作任務

要製作好的任務必須配合上一章的內容。根據小黃棋的提示來完成任務。(當然你不用小黃旗也是可以的)
我們先來做個最簡單的任務。
首先在右上角的界面里擊system標簽然後把

《閃點行動2 龍之崛起》任務編輯器教程

拖到地圖上,然後點擊

《閃點行動2 龍之崛起》任務編輯器教程

把屬性里把name寫成objective,後在把type里面選擇成primary objictive 1.意思是這個是主要任務一,再把army設置成PLA,意思是PLA的任務。如圖所示:

《閃點行動2 龍之崛起》任務編輯器教程

這樣任務就能顯示了。
不過現在還沒有任務的實際內容,所以我們還要寫level.lua
再拖一個

《閃點行動2 龍之崛起》任務編輯器教程

到地圖上,再隨便拖一輛坦克在地圖上並且在name里設置為tank1.然後後打開.lua
輸入以下代碼:
function onDeath_tank1(victim, killer)
OFP:setObjectiveState(“objective”,” COMPLETE “);
End
這個代碼很容易懂。
意思是:
當tank1被摧毀
觸發:任務objective完成。

效果:把坦克打爆,則任務完成
哈哈 是不是超級簡單
當然這里你要把

《閃點行動2 龍之崛起》任務編輯器教程

和坦克放在一起,或者在

《閃點行動2 龍之崛起》任務編輯器教程

的屬性欄里面的linked to里面選擇tank1。這樣才能准確的定位坦克的位置,不然任務和內容就不匹配了。

這樣一個簡單的任務就製作完成了。
還可以對該代碼改進一下,如:
function onDeath_tank1(victim, killer)
OFP:setObjectiveState(“objective”,” COMPLETE “);
OFP:missionCompleted();
end
意思是該任務完成並且所有任務完成退出遊戲。
下面介紹下復雜一點的任務編輯。

我們怎樣來製作2個或3任務呢?
那就很簡單了直接放兩個

《閃點行動2 龍之崛起》任務編輯器教程

分別命名為objective1和objective2,設置好陣營,分別設置primary objictive 1和primary objictive 2
然後拖

《閃點行動2 龍之崛起》任務編輯器教程

到地圖上。再分別拖一輛坦克命名為但tank1個一個兵命名為bin1,如圖所示:

《閃點行動2 龍之崛起》任務編輯器教程

代碼為:
function onDeath_tank1(victim, killer)
OFP:setObjectiveState(“objective1″,” COMPLETE “);
end
function onDeath_bin1(victim, killer)
OFP:setObjectiveState(“objective2″,” COMPLETE “);
end
很好理解:
意思為:
當tank1爆炸則任務1完成
當bin1死亡則任務2完成
2個任務製作很簡單吧!!!哈哈

不過細心的同學發現了,以上代碼是無論你先完成哪個任務都可以,但如果想完成了任務1才能完成任務2那怎麼辦?
我們必須加入個判斷:
代碼修改如下:
function onMissionStart()
ob=0;
end

function onDeath_tank1(victim, killer)
OFP:setObjectiveState(“objective1″,” COMPLETE “);
ob=1;
end

function onDeath_bin1(victim, killer)
if ob==1 then
OFP:setObjectiveState(“objective2″,” COMPLETE “);
OFP:missionCompleted();
end
end

我們詳細講解下:
首先看到function onMissionStart()就知道是「當遊戲開始時”
下面ob=0;則是設定了個變量!!且把0(為假)賦值給ob

再看下一段
function onDeath_tank1(victim, killer)
OFP:setObjectiveState(“objective1″,” COMPLETE “);
ob=1;           —這里多了個ob=1,意思是當objective1這個任務完成後讓1(真)賦值給ob
end

接着看最後段
function onDeath_bin1(victim, killer)
if ob==1 then     —這里是如果 ob等於1則觸發objective2任務完成,達到了完成任務1後才能完成任務2的效果。注意下語法結構。
OFP:setObjectiveState(“objective2″,” COMPLETE “);
OFP:missionCompleted();
end  – -這里注意凡有if必須有end結束
end  – -這里的end對function

超級簡單吧!! 哈哈
其實不外乎多1個變量讓他完成任務1時ob變成1,任務判斷ob是否等於1才觸發第二個任務!
那麼三個任務就不多講了!
此章介紹到這里。
任務完成可以是多樣性的,可以是某單位被殺,或者進入某區域,或者某段時間內。
學到這里應該可以製作「1公里開外匍匐在草叢中,抬個狙,聽着風吹過草地的聲音,等待着目標的出現!!!狙殺!!!!!!!「
大家靈活應用可以做出絢麗的任務來!

教程七:如何刷兵,如何刪除出來的刷兵

此遊戲只能同時擁有64個單位,確實少了點。以上內容是能編輯小規模戰爭mod。
但是學了此章後,你能把場面放大無數倍,可以製作出面對成百上千敵人的超級大場面。
可以製作絢麗的海灘登陸。
可以率領25輛99式坦克面對200輛M1坦克的超級坦克大對轟。
還可製作數十輛武裝直升機飛過頭頂的震撼效果!!!
可以製作出絢麗的橋頭保衛戰,村莊保衛戰等等

在學習此章之前,我們先來了解下地區:

《閃點行動2 龍之崛起》任務編輯器教程

,位置在右上角的system里面可以找到。
如圖:

《閃點行動2 龍之崛起》任務編輯器教程

這個東西主要是用於:某單位進入該地區時發生什麼事。
多用於刷兵,刪除刷兵,觸發任務完成等。
代碼為:function onEnter(zoneName, unitName)
來個例子:
首先拖動

《閃點行動2 龍之崛起》任務編輯器教程

《閃點行動2 龍之崛起》任務編輯器教程

在地圖上,把

《閃點行動2 龍之崛起》任務編輯器教程

的name命名為zone然後再拖一個兵並把該兵的name命名為han並設置為player.
放好後,點擊標題欄的level.lua
輸入以下代碼:
function onEnter_zone_han(zoneName, unitName)
OFP:missionFailed();
end
意思是:當han這個單位進入zone這個地區時
觸發總任務完成
效果:
當玩家操作han這個單位進去zone這個區域則彈出任務完成菜單,遊戲勝利。
很簡單吧。
好了現在我們對地區已經了解了。
現在我們就利用地區這個工具來製作刷兵。
在此之前我們先了解為什麼要刷兵。
這里在羅嗦下這個編輯器只能支持64個單位在地圖上,這明顯限制的遊戲的規模,但是我們可以在64個單位死後,再刷出新的兵,這樣我就能把戰鬥做到無限大!不過注意一個地圖上同一時間只能有64個單位,不然刷不新的兵來。
刷兵語句:OFP:activateEntitySet();
好我們來例子:
例1:
首先點擊 右側Create欄右邊的Explorer
在 Entety Sey View 目錄下面空白處點一下(防止建在根目錄里) 再選擇+ ADD Entity Set
增加一個Entity Set 我們這里他命名為E1.單擊E1灰色目錄圖標打勾,
然後再右鍵E1選Exportable 最後圖標就是一個黃色打勾的目錄.
這樣我們就建立了個實體。
然後拖動一組兵到地圖上在屬性界面里的modify里的Entity Set 里選擇剛
才創建的E1。命名為bin1
現在這組兵事E1這個實體里的單位。
那麼我們要實現刷兵就必須觸發這個實體(E1這個實體里的單位在遊戲一開始是不會出現的)
在地圖上拖一個地區

《閃點行動2 龍之崛起》任務編輯器教程

命名為:zone,再拖一個

《閃點行動2 龍之崛起》任務編輯器教程

,再拖一個兵命名為han設置成player。點擊level.lua輸入以下代碼:
function onEnter_zone_han(zoneName, unitName)
OFP:activateEntitySet(“E1”);
end意思是:
當han這個單位進入zone這個區域時
觸發刷實體E1
那麼我們知道剛才的bin1是在實體E1中,那麼觸發E1也就實現了bin1的出現。
效果:
當han進入zone這個地區時,bin1刷出來!
哈哈哈哈哈哈是不是超級簡單。不過要注意刷出來的兵或者說實體E1里面的單位必須要有小隊隊長。不然會出錯。
好了我們再來學習刪除刷兵。
代碼為:OFP:destroyEntitySet();
為什麼要刪除刷兵?
那麼一隊敵人遠離你1公里,這隊敵人也沒辦法追上你,那麼我就可以把這個小隊刪除,釋放出記憶體給其他的單位!真正實現大規模的戰鬥。
我們繼續以例1來講解。
再拖動一個地區到地圖上00命名為shanbingzone
現在地圖上有兩個地區00分別為zone和shanbingzone,一個han兵,一個bin1,和一個level.lua
我們點擊level.lua
輸入以下代碼:
function onEnter_zone_han(zoneName, unitName)
shuabin1=OFP:activateEntitySet(“E1”);
end
function onEnter_shanbingzone_han(zoneName, unitName)
OFP:destroyEntitySet(shuabin1);
end
代碼的意思是:
當han這個單位進入zone這個區域時
shuabin1=觸發刷兵E1實體

當han這個單位進入shanbingzone這個地區時
觸發刪除shuabin1這個變量。

我們來講解下:
shuabin1=OFP:activateEntitySet(“E1”);這段代碼和例1有所不同,這里必須把OFP:activateEntitySet(“E1”)賦值給shuabin1才能執行後面的消除刷兵。Shuabin1這個變量可以取自己容易記的名字。
再看下面:
OFP:destroyEntitySet(shuabin1);為觸發刪除刷出來的兵。
看到了把後面括號里是(shuabin1)而不是E1。如果是E1的話則代碼不能出現效果,切記.那麼這里刪除了shuabin1也就刪除了E1這個實體也就刪除了bin1這組兵。(注意格式(shuabin1)沒有雙引號)
效果:
當han進入zone時刷兵,當han進入shanbingzone時刪除剛才所刷的兵.
呵呵 也很簡單把
不外乎把刷兵的觸發效果給他賦值個變量,在刪除刷兵的時候只要刪除這個變量就可以了。
休息下繼續。。。。。。。。。。。。。。。。。。。。
但是細心的同學又發現了
上面這個例子,當han單位進入zone這個地區刷兵,然後進去shanbingzone這個地區刪除刷出來的兵,但是當han再進入zone這個區域時又刷兵了,這明顯不是我們設計的本意。
那麼我們該如何只讓zone這個區域只刷一次兵,以後再進入zone地區時不再刷兵呢。
我們就必須加入判斷。
例3
來看代碼:
function onMissionStart()
panduan1=0;
end

function onEnter_zone_han(zoneName, unitName)
if panduan1==0 then
shuabin1=OFP:activateEntitySet(“E1”);
panduan1=1;
end
end

function onEnter_shanbingzone_han(zoneName, unitName)
OFP:destroyEntitySet(shuabin1);
end

很好理解把
在遊戲開始的時候設置個變量panduan1=0。
當han進入zone時,先判斷panduan1是不是0後才刷兵。
當觸發刷兵後讓panduan=1,則以後再進入zone地區時因為panduan=1所以不會再刷兵了。
當然對於例3的功能還有更簡單的辦法:
function onEnter_zone_han(zoneName, unitName)
shuabin1=OFP:activateEntitySet(“E1”);
OFP:disableEvent(“onEnter_zone_han”) ;   –消除該觸發器,也可以達到例3的效果,且更簡單方便,不需要變量來判斷。
end

function onEnter_shanbingzone_han(zoneName, unitName)
OFP:destroyEntitySet(shuabin1);
end

我們來個牛的例子
例4:
假設我們有實體E1和E2還有兵若干,地區4個分別為zone,zone1和shanbingzone,shanbingzong1玩家han.
代碼為
function onMissionStart()
panduan1=0;
panduan2=0;
end

function onEnter_zone_han(zoneName, unitName)
if panduan1==0 then
shuabin1=OFP:activateEntitySet(“E1”);
panduan1=1;
end
end
function onEnter_zone1_han(zoneName, unitName)
if panduan2==0 then
shuabin2=OFP:activateEntitySet(“E2”);
panduan2=1;
end
end
function onEnter_shanbingzone_han(zoneName, unitName)
OFP:destroyEntitySet(shuabin1);
end
function onEnter_shanbingzone1_han(zoneName, unitName)
OFP:destroyEntitySet(shuabin2);
end
意思是:
當han進入zone時
觸發刷E1
當han進入zone時
觸發刷E2
當han進shanbingzone時
觸發刪除E1
當han進入shanbingzone1時
觸發刪除E2
以上代碼刷兵區域只能刷1次兵
效果:略
值得注意的是一次刷兵判斷時,變量只能用一次
function onEnter_zone_han(zoneName, unitName)
if panduan1==0 then
shuabin1=OFP:activateEntitySet(“E1”);
panduan1=1;
end
end
function onEnter_zone1_han(zoneName, unitName)
if panduan1==1 then ――用了同一個變量,錯誤
shuabin2=OFP:activateEntitySet(“E2”);
panduan1=2;――錯誤end
這樣寫是錯誤的,所以我們必須有panduan1=0;和panduan2=0;兩個變量來判斷刷兵。切記!!!!!

要做大規模戰鬥例4必須要學會。
本章說到這里結束了,希望大家多多練習,作出超級大戰場來給我玩^_^
這章稍微有點難度,有什麼困難可以聯系我,大家一起討論。

教程八:路徑點高級應用
在教程二中已經認識了路徑點,那麼這里我們對路徑點的功能拓展一下
此章我們用三個部分來給大家講解:

一:如何讓刷出來的兵安路徑點移動
二:如何讓AI防守路徑點
三:當達到路徑點觸發事件

一:我們在學習完教程七的後已經學會刷兵,但是如果喜歡鑽研的同學發現,刷出來的兵不會按路徑點走,無論你怎麼設置路徑,他們只是呆呆的站在原地,或者是發現敵人就一擁而上。
現在我們解決這個問題:
例1:
首先我們設置好事體E1(見教程七),拖動一組兵命名為bing1選擇實體E1,拖2個地區分別命名為:shuabingzone和yidongzone.在拖3個路徑分別命名為:way1,way2,way。並把3個路徑相連。拖一個level.lua再來一組兵命名為han選擇為player.
現在我們的任務是進入shuabingzone時,觸發刷bing1,進入yidongzone時讓bing1按路徑移動。(哈哈明白了吧,要讓刷出來的兵按路徑移動,就必須去觸發)。
好我們輸入以下代碼:
function onEnter_shuabingzone_han(zoneName, unitName)
OFP:activateEntitySet(“E1”); – -刷兵
end

function onEnter_yidongzone_han(zoneName, unitName)
OFP:move(「bing1」,」way1p」)
End
我們講解下:第一段沒問題,看第二段:當進入yidongzone時觸發移動move(「兵的名字」,」路徑點名稱+p」):
呵呵是不是很簡單。
但是請注意OFP:move(「bing1」,」way1p」)這里必須是way1+p而不是way1,這里一定要在路徑點名稱後面加個P,才能讓bing1沿着way1到way2到way3,如果不加p,兵1隻會到達way1就不動了。
二:如何讓AI防守路徑點。
我們要讓刷出來的敵人,防守某個路徑點,而不是亂跑,或者原地不動
例2:在例1的基礎上再加一個路徑點命名為fangshouway和一個地區命名為fangshouzone,且該路徑點不能和其他路徑相連.
我們要讓刷出來的兵防守路徑點fangshouway.
代碼如下:
function onEnter_shuabingzone_han(zoneName, unitName)
OFP:activateEntitySet(“E1”); – -刷兵
end
function onEnter_fangshouzone_han(zoneName, unitName)
OFP:defendPos(“bing1″,”fangshouway”,10);
end
也很簡單
當han進入shuabing地區時觸發刷兵,再觸發防守。
OFP:defendPos(“bing1″,”fangshouway”,10);這里時(「兵名稱」,」路徑點」,范圍/米)
三:當達到路徑點觸發事件
例如我們有一輛卡車,上面裝滿了兵,當到達某個路徑時觸發所有兵下車。
我們再拖一輛卡車命名為kache1,拖一組兵命名為bing2,讓bing2裝上卡車。在把bing2和路徑way1相連。
代碼如下:
function onArriveAtWaypoint_kache1_way1(entityName, waypointName)
OFP:move(“bin1″,”way1″,”OVERRIDE”);
end
function onArriveAtWaypoint_kache1_way1(entityName, waypointName)
OFP:land(“bing2”);
end
第一段觸發移動。
第二段觸發下卡車。
嚴重注意:一個地區zone只能對應一類OFP,
例如:
function onEnter_shuabingzone_han(zoneName, unitName)
OFP:activateEntitySet(“E1”); – -刷兵
OFP:activateEntitySet(“E2”); – -刷兵
OFP:activateEntitySet(“E3”); – -刷兵
end
這個是正確的,因為一個為地區只對應了觸發刷兵,雖然有多個但是是屬於同一類。
而:
function onEnter_shuabingzone_han(zoneName, unitName)
OFP:activateEntitySet(“E1”); – -刷兵
OFP:move(“bin1″,”way1″,”OVERRIDE”);
end
這樣是錯誤的:一個地區不能對應兩種類型觸發。
再看
function onEnter_zone_han(zoneName, unitName)
shuabin1=OFP:activateEntitySet(“E1”);
OFP:disableEvent(“onEnter_zone_han”) ;  
end
這樣情況例外!這個是正確的shuabin1=OFP:activateEntitySet(“E1”);和OFP:disableEvent(“onEnter_zone_han”) 屬於同一類觸發,
好第八章就講到這里。

教程九:實例應用

一:什麼是虛擬單位
二:存盤點的製作
三:實例下載
一:什麼是虛擬單位
我們知道一輛坦克需要配上一個駕駛員,一個指揮,和一個炮手,連上坦克本身就需要4個單位。
我們知道地圖只能有64個單位,那麼是不是只能有16輛坦克同時在地圖上,答案是否定的。
我們可以把一輛坦克配置上虛擬駕駛員虛擬指揮和虛擬炮手,那麼1輛完整的坦克只占用1個單位
方法:
拖一輛坦克到地圖上,並在屬性欄里面選擇has virtual crew就可以了
二存盤點製作
這個很簡單
在地圖上拖一個Mission progress checkpoint就是圓圈里有個勾勾那個圖標,
命名為save1。(在右上角的system里面找到),再拖一個地區命名為zone1,
再拖一個兵到地圖上明命名為han,設置成player,再來一個level.lua
(save1和zone1最好在一起。)
輸入代碼:
function onEnter_zone1_han(zoneName, unitName)
OFP:enableCheckpoint(“save1”)
end
這樣就可以了。
意思是當han進入zone1這個區域時觸發存盤點save1,並且恢復體能,AI彈藥得到補充。
三:實例下載
這里有個本人製作的例子供大家參考:
t6解壓到游目錄data_win>missions>Mission Editor>下,進入遊戲玩。
介紹:
任務目標1:攻占山頭,擊斃美軍軍官。
任務目標2:埋伏在小道兩側,突襲M1主戰坦克。
任務目標3:占領村莊。
敵人單位:步兵若干(100+),30+輛M1主戰坦克,兩輛運兵車。
解放軍單位:20+輛99式主戰坦克,玩家帶領17人小隊,援兵若干。
戰線長度:4公里。
功略:
順着指南小旗走就可以了。不要硬拼,多用戰術。
全文完(^.^)
祝大家戰鬥愉快!

《閃點行動2 龍之崛起》任務編輯器教程

更多相關內容請訪問:閃點行動2專區

來源:遊民星空