本篇教學會教各位腳本所有構成跟詳細寫法,會有詳細的圖文教學, 在教學的過程中,會跟大家介紹每個區段與函數在做什麼
先給大家看看實際抽獎的效果
這裡不直接貼給大家完整寫法,我用別種腳本,透過改寫,寫出我要的功能, 這邊會教大家整個改寫過程。
請各位先下載教學檔
楓葉兌換.rar
(1.63 KB, 下載次數: 1765)
【教學開始】
首先我們先確定這個腳本要做什麼 NPC會有簡單的介紹 → 介紹看完後直接抽獎並顯示抽到的內容。
知道腳本方向後,就能開始改寫了。
紅框處是用不到的地方,先砍掉。
接著看到陣列內容,綠色的地方名稱可以自訂,並沒有規定要叫什麼名字。 而這邊有個ˊ觀念,每一種開始括號 "「 " 一定會有結束括號 " 」",不曉得什麼意思的話, 請滑鼠點擊括號位置,軟體會告訴你該括號與哪個括號有關聯。
看到紅線處,這就代表這個區段內的所有東西,都屬於這個括號在跑的。
接著我們繼續看到陣列內容,紅框處的地方,是每個陣列內參數要有的數值," 兌換物 " 這個已經被砍掉了, 所以等等要刪除,我們現在要思考抽獎的內容要達到什麼功能 1. 要有道具代碼 2. 要有物品數量 3. 要有物品天數 這代表每個陣列內要有三種數值,結合以上改出來會長這樣。
定義的名稱我修改了,陣列內容我也改掉了。 接著我們要寫出隨機抽獎的功能。
這邊請看紅框處,在兌換腳本中,有一個奇怪的方法,這段方法的整體架構請不用理解太多, 但這邊教大家如何粗略理解,在 getRandom 這個方法中,他會要一個最小值 " min "跟一個最大值 " max " 這個方法會在這之間抽出一個數字。
那該抽出哪個區間的數字呢?我們要寫出來告訴程式,這就是綠框處在做的事。
var ItemRandom = getRandom(1, 10);
ItemRandom = 自訂的名稱 getRandom(1, 10) = 調用方法,其中最小值是 1 最大值是 10,會抽出這之間的數字。
了解這方法的用法後,我們就可以開始改了,但只需要改綠框處。
這邊綠框處我們改成抽 0 ~ 4 這區間的數字,但為什麼會這樣抽? 原因在於紅框處的陣列數目。在介紹之前,要跟大家講一個觀念,程式是從0為開頭,並不是從1開始。 因此我們看到紅框處的陣列數目並不是1、2、3、4、5個,而是0、1、2、3、4,總數一樣是5種, 但起始的計算數字不一樣。
然後我們看到方法 start 通常腳本開頭都會有這個,而這邊為什麼要這樣寫不多介紹, 請大略知道這個方法是告訴 action 他的起始參數是多少就行。
接著就要開始刪減了,由於我們的腳本只是簡單的對話+抽獎,所以有很多不必要的需要砍掉。
每個腳本幾乎都一樣 if (status == 0) 都是腳本的開頭,他會跑的內容就是他括弧的內容, 與陣列括弧邏輯相同,一個左起始一定會有一個右結束,就如下圖一樣。
至於括弧的種類,這就是JAVA既定的寫法,請死背。
我們在看到綠線處,因為是腳本的開頭,因此我們知道他是顯示對話的,而為什麼遊戲會知道這邊該顯示對話, 也是因為有調用函數 sendNext 。網站有很多函數用法,可以參考這篇 大部分服務端通用的函數作用大全 當然,網站還有很多篇函數介紹,都可以參考。
我們將綠線處的文字改成我們要的後就像這樣
然後紫框處是用不到的,我們先砍掉。 至於砍的範圍,就是那個括弧的範圍連同括弧都要刪掉。
else if (status == 2) 這裡面的內容是有關指定陣列內容的部分,我們要用到這裡的東西, 但有些是不必要的。 紅線處 if (store) = 這裡要判斷 store 裡面的內容,如果單寫 store 本身並沒有意義,是在上一段中有寫出 store 他是什麼。 但那一段已經被砍掉了,所以這邊用不到因此砍掉。
綠線處 switch (selection) 是另一種寫法,仔細看這邊指定了很多原先陣列有的東西,但那些陣列大多沒用了,所以這邊也用不到。
粉紅線處 selection2 = selection; selection2 被指定了 selection 裡面的值,如果 selection 是 2 那 selection2 就等於 2 此處也用不到,砍掉。
咖啡色處 if (storeInfo.length == 0) = 會判斷 storeInfo.length 這是不是空值。這段用不到砍掉。
深咖啡色處 for (var i = 0; i < storeInfo.length; ++i) 這是一種迴圈寫法,詳細我也不會解釋,但請看到 storeInfo.length , 他會一直印出 storeInfo.length 裡面的東西,而 storeInfo 如果有印象的話,可以看到綠線處,他被指定的內容就是那些陣列內容。
綠框處 = 這邊請留下,這裡是指定陣列內容的地方。
改完後會長這樣。
這裡請注意到紅線處,刪減完後,else if (status == 2) 的括號內容,應該是正確的保住裡面的程式碼,而不會包到其他內容。
上面所有畫線的地方,都是用不到的,請全部按照他括弧的範圍刪除。
這邊是整個刪減完的初步模型。 我們下一步就要開始告訴腳本,玩家抽獎該怎麼抽與怎麼拿獎品
紅線處是定義名稱,可以自己取自己好記的名字。 綠線處是這個定義裡面會有什麼,我們看到他代表 storeInfo[0] , 首先 storeInfo 我們已經知道他會被指定某個陣列內容, 因此我們可以將他改寫成 " 被抽的寶物 "
為什麼會叫做 " 被抽的寶物 " 因為原先陣列就是這樣命名
我們再來看到綠線處的 裡面的 i 他會是一個值,告訴程式要挑第幾個種類的陣列內容。 但由於 i 原先的迴圈被刪除了,我們要重新告訴程式他該怎麼挑選道具, 這邊就要用到開頭寫的 ItemRandom 功能,他會隨機從 0~4 中挑選一格值, 改寫完會長這樣
我們再看到紅線處旁邊的 [0] ,這邊是說明我們要找到這個參數中的第幾項, 透過白話文解釋的話就會是,「請程式幫我抓取,被抽的寶物中的第 ? 項的第 0 個內容物」 這邊假設 ItemRandom 是 0 ,那就會是 「請程式幫我抓取,被抽的寶物中的第 0 項的第 0 個內容物」 為了更好方便各位理解,我做成一個圖做介紹。
紅色是大類,也就是 ItemRandom 會抓到的值,綠色則是大類中每個小類的順序。 因此 「請程式幫我抓取,被抽的寶物中的第 0 項的第 0 個內容物」 = 4460007
瞭解這個觀念後,我們就能改寫成我們要的樣子
現在已經指定好隨機數了,我們就能開始實現給道具的功用
我們要使用函數 gainItem 這個功能,這個函數在源碼中的功能解釋是這樣 gainItem(代碼、數量、天數) 至於你的端口有沒有這樣的方法,就要各位自己翻源碼了,這邊假定你的端口有這功能,那麼就能這樣寫。
接下來,我們再給予一些文字介紹點綴一下。
在介紹前給各位一篇文章,能幫助各位大概理解 java 一些基礎語言。 JAVA 基礎運算子分享 快來創造更豐富有趣的腳本
上面的一些用法例如 += 或 = 都有詳細解釋。
紅線與綠線處都是一個區間,但為什麼會這樣使用,就要參考端口腳本寫法公式 在上方的 大部分服務端通用的函數作用大全 就有解釋到那些#配合字母會有什麼效果。 理解後我們就可以改成我們要的樣子,裡面的 wepId 跟 wepIdcost 已經被我們改名賦予了不同名字,
而我們還想顯示天數,但有些天數是 -1 如果顯示 -1 會很醜,因此我們要使用一個 java 語言寫法 ?: = 條件選擇
寫完會長這樣
這裡告訴程式,如果 抽到的道具數量天數的值 大於 0 ,就跑 ()括弧內「 : 」 的左邊內容,也就是紅線處。 如果不是就跑「 : 」右邊的內容,右邊我沒寫任何東西。
接著紅線處的 storeText 所有 += 內容,會累積起來統一被綠線處的對話函數 sendSimple 顯示出來。
效果長這樣
這樣就完成了整篇透過陣列去抽獎的腳本,如有問題再提出。
|