# Skript 入門教學 Skript是一個能讓你在Minecraft伺服器上直接寫程式的插件,你不需要學習複雜的Java語法,也不需要編譯就可以在伺服器上達到跟插件一樣的功能,當然這也取決於你的程度。 相關連結 : - [Skript官方Github](https://github.com/SkriptLang/Skript/releases) - [官方文檔](https://docs.skriptlang.org/) ## 安裝Skript 1. 先到 [Skript官方Github](https://github.com/SkriptLang/Skript/releases) 下載Skript,直接點[下載2.6.4版](https://github.com/SkriptLang/Skript/releases/download/2.6.4/Skript-2.6.4.jar)也可以 ![](https://hackmd.io/_uploads/r1t-XW3tn.png) 雖然已經有beta版本,不過還是建議下載穩定版本,目前最新的穩定版是2.6.4 不過要注意,目前2.6.4是最後一版支援1.12.2版本的Skript 2. 接下來就要安裝到Minecraft伺服器上了,這裡用Pterodactyl面板做示範 伺服器版本 : Paper-1.20.1 將Skript插件放到 /plugins 這個位置裡面 ![](https://hackmd.io/_uploads/r1xM-iiFn.png) 如圖 ![](https://hackmd.io/_uploads/HJkEZioK2.png) 3. 接下來重啟伺服器,並且在後台輸入 plugins 指令(後臺指令不需要/),確認是否安裝成功 如果沒有出現,或是在啟動過程報錯建議先去Skript官方Github查看支援的Minecraft版本 ![](https://hackmd.io/_uploads/HJ2tzooKh.png) 可以看到在插件列表裡面已經有Skript了 ## 新增Skript程式 要新增Skript程式需要在 /plugins/Skript/scripts 新增一個.sk的檔案,編輯起來跟.txt檔一樣 ![](https://hackmd.io/_uploads/SkPHBijY2.png) 注意! 1. 不要在檔案名稱前加上 - ,加上 - Skript會直接禁用該程式 2. Skript對於空格或是Tab、換行非常嚴格,需要統一用Tab或是空格 如果是空格也必須統一是空2、4或是8格,這就看個人習慣了 像是 : ```Skript=1 on disconnect: send "%player's uuid%" to console ``` ## 啟用Skript程式 假設你已經寫好一個Skript程式,你可以用指令 /skript reload <檔案名稱> 啟用他 ![](https://hackmd.io/_uploads/HJ4ZwjjKn.png) 如果你更改了程式檔案想要重新讀取可以使用 /skript reload <檔案名稱> ![](https://hackmd.io/_uploads/rJsmPioth.png) 出現 :::success Successfully reloaded ::: 就代表程式沒有任何問題 (其實也不一定,如過加了很多擴展Skript可能會認不出錯誤) 因為我還沒寫任何東西,所以顯示 'project1.sk is empty' ## 開始寫些東西吧! **這裡我先寫一些簡單的示範** 1. 玩家加入時發送歡迎訊息 ```Skript=1 #當玩家加入時 on join: #向玩家發送訊息 #%player%是Skript自帶的佔位符,只能用在Skript程式裡 send "&bHi %player%" to player ``` 成功運行! ![](https://hackmd.io/_uploads/By0fioiKn.png) 2. 讓玩家跳不起來 ```Skript=1 #當玩家起跳時 on jump: #取消上面的事件 cancel event ``` ## 進階一些的功能 1. **新指令** 用Skript在Minecraft中註冊新指令 ```Skript=1 #註冊新指令 command /newcmd: #執行這個指令後,會執行trigger以下的東西 trigger: #向使用指令的玩家發送訊息 send "你使用了Newcmd指令" to player ``` 可以看到,新指令已經被註冊進Minecraft伺服器了 ![](https://hackmd.io/_uploads/HkOy8hiF2.png) 執行指令後 ![](https://hackmd.io/_uploads/HkQNL2otn.png) 2. **Loop迴圈** 使用Loop迴圈輸出所有在線玩家 ```Skript=1 #註冊新指令 command /allplayer: #執行這個指令後,會執行trigger以下的東西 trigger: #循環所有在線玩家 loop all players: #向使用指令的玩家/控制台發送循環到玩家的ID send "%loop-player%" ``` 輸出結果 : ![](https://hackmd.io/_uploads/S1XU7-2Yn.png) 3. **If判斷** 使用if語法進行一些判斷 ```Skript=1 #註冊新指令 command /test: #執行這個指令後,會執行trigger以下的東西 trigger: #判斷使用指令的玩家是不是ROBOT_TW #如果是 if player's name is "ROBOT_TW": #如果是,就向玩家發送訊息 "&a你好&f,%player%" send "&a你好&f,%player #如果不是 if player's name is not "ROBOT_TW": #如果不是,就向玩家發送訊息 "&c你沒有權限" send "&c你沒有權限" ``` if後面也可以加上一堆or,像是 : ```Skript=1 #註冊新指令 command /test: #執行這個指令後,會執行trigger以下的東西 trigger: #判斷使用指令的玩家是不是ROBOT_TW或是Hi或是Player01或是Player02 #如果是 if player's name is "ROBOT_TW" or "Hi" or "Player01" or "Player02": #如果是,就向玩家發送訊息 "&a你好&f,%player%" send "&a你好&f,%player%" #如果不是 if player's name is not "ROBOT_TW" or "Hi" or "Player01" or "Player02": #如果不是,就向玩家發送訊息 "&c你沒有權限" send "&c你沒有權限" ``` 4. **Skript變量** Skript的變量語法是`{var}`裡面的名稱可以是數字、英文或_-,作用是把東西存進該變量內 變量有分全局變量以及局部變量,分別是`{var}`、`{_var}`,局部變量跟全局的變量在於名稱前面多了`_` 基本用法 : ```Skript=1 #註冊新指令 command /var: #執行這個指令後,會執行trigger以下的東西 trigger: #將hi存進{_var}這個局部變量 set {_var} to "hi" #向玩家發送訊息{_var} send {_var} ``` 執行指令後,可以看到確實輸出了我們存進`{_var}`的東西 ![](https://hackmd.io/_uploads/BJe2sZ3t2.png) 以上都是一些最基本的Skript程式,更詳細的Skript變量教學:point_right: [Skript教學 - 變量](/utHXJp9xQIuKUlusZ1khOA) ## Skript指令 **以下是Skript的指令說明** |指令 |說明 | |:-------- |:---------| |/skript reload <程式檔案> |重新讀取指定程式檔案 | |/skript enable <程式檔案> |啟用指定程式檔案 | |/skript disable <程式檔案> |禁用指定程式檔案 | |/skript info |查看Skript版本以及安裝的擴展 | |/skript help |Skript指令列表 | |/skript update |確認新版本、升級版本等 ## Skript錯誤 - **錯誤語法** ![](https://hackmd.io/_uploads/SJ_e6ZhKh.png) 這裡我把send打錯成sed,reload時Skript就會告訴我們哪個檔案出錯以及錯在第幾行 如果你是下載別人做的Skript出現此問題有可能是 1. Skript版本過舊 2. 這個Skript程式需要別的擴展 - **錯誤空格** ![](https://hackmd.io/_uploads/r1khCZ2K2.png) 這裡Skript告訴我,我在第4行用了8個空格以及1個Tab,一個Tab雖然=4個空格,但不能混用 所以我必須改成所有都是Tab或是空格 如果你的錯誤很多,建議還是先查看[官方文檔](https://docs.skriptlang.org)確認你寫的語法是否錯誤 以上就是入門教學的一個成教程,如果有任何錯誤或問題都可以在底下留言提出,如果有錯誤我會盡快修正 ## 我的聯絡資訊 - **Discord : aoter.dev** :speech_balloon: - **Gmail : mail@aoter.net** :mailbox: 如果有關Skript的任何問題都可以聯絡我 Discord我是會比較快回覆,但請你表明你的目的