範例三 玩家離開資源分享

玩過3C這張非常有名的玩家PK地圖的人大概都有注意到,當有玩家中途離開的時候他的金錢會平分給在線的隊友,這樣做能夠減少失去隊友所產生的附面影響。

這例用到一個很有用的循環指令,"For each (Integer A) form x to y, do (Actions)",它的意思是:設A=x to y並且x < y,那麼它將循環執行(y-x)次,第一次循環A=x,之後每次循環A的值將遞增1,直到A=y。要注意,如果x > y,因為x是遞增的,所以永遠循環不到y,就會形成無限循環,為防止這種情況命令將會失效。

我們可以利用A的值每次遞增的這個特性,來循環判斷每一個玩家的狀態。那麼我們首先還是新建一個變量i,類型為Integer數值型的,用來儲存臨時數據。

觸發事件
 時間 - Periodic Event
 因為玩家離線是沒有觸發事件的,所以這裡定義為每5秒觸發一次。每次判斷的時間間隔沒有必要很短,這只會增加運算量,你甚至可以設置為20秒判斷一次。

動作
 For each (Integer A) form 1 to 2, do (Actions)
 假設只有總共只有兩個玩家,循環執行判斷語句,Integer A的值從1循環遞增到2。

 If/Then/Else, Multiple Function
 If/Then/Else(如果/那麼/否則)的意思是:如果If條件成立,那麼就執行Then的動作,如果If條件不成立,那麼就執行Else的動作。"Multiple Function"表示可以有多個函數,既是可執行多個條件和動作。

If - 環境
 Player Slot Status Comparison
 判斷每個玩家的連接狀態,(Integer A)取的是變量A的當前值。

Then - 動作
 Set Variable
 讀取離線玩家的金錢資源,用變量i儲存。

 Set Variable
 將變量i平分,(Number of players)表示統計在線的玩家數量。

 玩家組 - Pick Every Player In Player Group And Do Action
 選擇所有在線的玩家,並做動作。

點擊Action增加動作:

 玩家 - Add Property
 增加資源給玩家,(Picked player)表示所選擇的玩家。

Else - 動作
 Do nothing
 什麼也不做。

本例主要演示了以下幾點,需要注意:

  1. 選擇合適時間間隔可留下更多資源做其他必要的運算,如果你的地圖觸發器非常多的話這點尤為重要,這能使你的地圖運算速度更快。

  2. 循環雖然功能很簡單,就是循環執行命令,但是運用很廣泛,善加利用可減少大量重複的工作。

  3. If/Then/Else語句恐怕是計算機語言中最常見到的語句了,因為它只有兩種判斷,不為"True(真)"即為"False(假)",這就使得它可以用來控制一切意外情況的處理。

 

< 回到上一範例 - 英雄復活 回到第四天 觸發器的使用 | 回到七日教學首頁
綜合教學/七日教學/4.觸發器使用/例三玩家離開.txt · 上一次變更: 2007年11月09日 7:04 am 來自 tv580025
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0