# 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)也可以

雖然已經有beta版本,不過還是建議下載穩定版本,目前最新的穩定版是2.6.4
不過要注意,目前2.6.4是最後一版支援1.12.2版本的Skript
2. 接下來就要安裝到Minecraft伺服器上了,這裡用Pterodactyl面板做示範
伺服器版本 : Paper-1.20.1
將Skript插件放到 /plugins 這個位置裡面

如圖

3. 接下來重啟伺服器,並且在後台輸入 plugins 指令(後臺指令不需要/),確認是否安裝成功
如果沒有出現,或是在啟動過程報錯建議先去Skript官方Github查看支援的Minecraft版本

可以看到在插件列表裡面已經有Skript了
## 新增Skript程式
要新增Skript程式需要在 /plugins/Skript/scripts 新增一個.sk的檔案,編輯起來跟.txt檔一樣

注意!
1. 不要在檔案名稱前加上 - ,加上 - Skript會直接禁用該程式
2. Skript對於空格或是Tab、換行非常嚴格,需要統一用Tab或是空格
如果是空格也必須統一是空2、4或是8格,這就看個人習慣了
像是 :
```Skript=1
on disconnect:
send "%player's uuid%" to console
```
## 啟用Skript程式
假設你已經寫好一個Skript程式,你可以用指令 /skript reload <檔案名稱> 啟用他

如果你更改了程式檔案想要重新讀取可以使用 /skript reload <檔案名稱>

出現
:::success
Successfully reloaded
:::
就代表程式沒有任何問題 (其實也不一定,如過加了很多擴展Skript可能會認不出錯誤)
因為我還沒寫任何東西,所以顯示 'project1.sk is empty'
## 開始寫些東西吧!
**這裡我先寫一些簡單的示範**
1. 玩家加入時發送歡迎訊息
```Skript=1
#當玩家加入時
on join:
#向玩家發送訊息
#%player%是Skript自帶的佔位符,只能用在Skript程式裡
send "&bHi %player%" to player
```
成功運行!

2. 讓玩家跳不起來
```Skript=1
#當玩家起跳時
on jump:
#取消上面的事件
cancel event
```
## 進階一些的功能
1. **新指令**
用Skript在Minecraft中註冊新指令
```Skript=1
#註冊新指令
command /newcmd:
#執行這個指令後,會執行trigger以下的東西
trigger:
#向使用指令的玩家發送訊息
send "你使用了Newcmd指令" to player
```
可以看到,新指令已經被註冊進Minecraft伺服器了

執行指令後

2. **Loop迴圈**
使用Loop迴圈輸出所有在線玩家
```Skript=1
#註冊新指令
command /allplayer:
#執行這個指令後,會執行trigger以下的東西
trigger:
#循環所有在線玩家
loop all players:
#向使用指令的玩家/控制台發送循環到玩家的ID
send "%loop-player%"
```
輸出結果 :

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}`的東西

以上都是一些最基本的Skript程式,更詳細的Skript變量教學:point_right: [Skript教學 - 變量](/utHXJp9xQIuKUlusZ1khOA)
## Skript指令
**以下是Skript的指令說明**
|指令 |說明 |
|:-------- |:---------|
|/skript reload <程式檔案> |重新讀取指定程式檔案 |
|/skript enable <程式檔案> |啟用指定程式檔案 |
|/skript disable <程式檔案> |禁用指定程式檔案 |
|/skript info |查看Skript版本以及安裝的擴展 |
|/skript help |Skript指令列表 |
|/skript update |確認新版本、升級版本等
## Skript錯誤
- **錯誤語法**

這裡我把send打錯成sed,reload時Skript就會告訴我們哪個檔案出錯以及錯在第幾行
如果你是下載別人做的Skript出現此問題有可能是
1. Skript版本過舊
2. 這個Skript程式需要別的擴展
- **錯誤空格**

這裡Skript告訴我,我在第4行用了8個空格以及1個Tab,一個Tab雖然=4個空格,但不能混用
所以我必須改成所有都是Tab或是空格
如果你的錯誤很多,建議還是先查看[官方文檔](https://docs.skriptlang.org)確認你寫的語法是否錯誤
以上就是入門教學的一個成教程,如果有任何錯誤或問題都可以在底下留言提出,如果有錯誤我會盡快修正
## 我的聯絡資訊
- **Discord : aoter.dev** :speech_balloon:
- **Gmail : mail@aoter.net** :mailbox:
如果有關Skript的任何問題都可以聯絡我
Discord我是會比較快回覆,但請你表明你的目的