各位礦工們,本次的精華文章投票又來囉!12月11日~1月11日這些文章需要各位的支持與鼓勵。
LV. 12
GP 39

【La】PermissionsEx權限插件 使用白皮書 管理所有玩家的行為

樓主 Lakial erictfkc1220
GP78 BP-
一句話預覽"這個文再講什麼?" : 開伺服器的時候,設定玩家可以幹嘛不能幹嘛的插件!
首先我要聲明一件事:
其實權限設定並不難,假如你耐著性子看完文章,知道他的邏輯,你也可以把玩他

PermissionsEx這個插件是十分強大的權限管理插件
他搭配上Modifyworld 與ChatManager(已經附在PermissionsEx裡面 基本上是三胞胎了) 可以管理玩家的各種行為 舉凡 放置 破壞 拿取 甚至能不能跑步都可以限制
在加上ChatManagere管理聊天功能整個強大到不行
使用上也十分方便 也支援在線添增權限的功能
相信你看完這篇文章後 你可以更加完美的管理你的bukkit
基本上我會舉例子 來講解
首先我分成幾個章節  由於內容比較繁複  我分成幾個回覆 以方便大家瀏覽
終於打完了好開心哈哈 希望你們會了解更多
有錯誤的地方也麻煩請指教 我會改正
假如喜歡我的文章可以給我GP 或者 希望我寫什麼的攻略可以留言 要是我有時間的話就可以寫

然後我這邊推薦一個程式可以輕鬆寫出權限的格式 不過規則還是要看下面的說明啦
只是使用這個程式可以讓自己的權限設定格式不會出錯
我上傳一個我自己翻譯的版本
以下同意文




Time:
2013/2/27 02:57 發稿後確認目前無誤
2013/3/22 13:04 增加PexEdit的介紹
2013/3/23 01:38 上傳PexEdit中文版

紅色的章節代表我認為一定且必須要會的  綠色章節可以看你對伺服器的需求來決定
封面-安裝(這也算一章的話太坑爹了!!)
第一章- 基本的術語 權限結構


好了 廢話不多說 現在立馬進入封面了

§封面- 安裝
建議要修改yml檔案還是使用notepad++ 這邊我就不贅述了
PermissionsEx 的安裝和一般插件沒什麼兩樣 放進buukitplugin即可
PermissionsEx 下載下來會有3個檔案PermissionsEx.jar  Modifyworld.jar  ChatManager.jar
全部丟進去plugin就好了  重開一次buukit讓他去下載且生成必要的檔案
基本上資料夾的結構如下
Bukkit─plugin─PermissionsEx.jar
                       └Modifyworld.jar
                       └ChatManager.jar
                       └ChatManager─config.yml
                       └PermissionsEx─config.yml
                                                    └permissions.yml
                       └Modifyworld─config.yml
就這樣 封面結束了


§第一章- 基本的術語 權限結構
由於講解的時候會常常用到術語 我先把可能用到的術語在這邊說一下 都是很重要的術語
Global Permissions:可以被應用到整個世界的權限
World Specific Permissions:特別被應用到幾個世界的權限
Users:也就是玩家
Group:解釋成群組 ex:在同個群組裡面的人沒有特別定義的話權限是相同的 這種觀念使得權限不用對單獨玩家設定 造成資料處理與管理不便
Node:所謂的節點一行包括 指令 行為 或能力的文字 ex/give這個指令是被定義在bukkit的指令裡面寫成節點式就是bukkit.command.give
Inheritance:繼承的觀念,可以繼承已經存在的群組的權限在加以修改,使資料量不會重複太多。
再來是權限結構
以上就是權限的基本結構  不會寫沒關係 後面講解 只要知道基本上是這樣構造長這樣就好
users:                                                  個別玩家區域
    ABCD1234:                                     名稱
        group:                                          群組設定
        - default                                        所屬群組名
        permissions:                               玩家的特殊權限
        - permissions.*                            權限
        worlds:                                          特定世界設定如下
            world:                                       世界名稱
                permissions:                           特定世界權限
                - modifyworld.*                         玩家所屬世界所獲得的特殊權限
                group:                                      在這個世界所屬群組
                - testers                         
                prefix:'&5'                前綴
groups:                                             群組設定區
    default:                                        群組名
        default: true                            是否是預設群組(沒被定義群組的玩家屬於這個群組)
        permissions:                                   群組權限設定
        - -modifyworld.blocks.interact.1      反向權限(也就是不允許的意思)
        - modifyworld.*                                權限
    admins:
        inheritance:                                     群組的繼承設定
        - default                                            繼承什麼群組
        permissions:
        - bukkit.*
        options:                                     群組的額外設定
            test.test:'1234'
            rank:'1'                                 群組的級別
        worlds:
            nether:
                permissions:
                - nocheat.fly
                prefix:'&7'
worlds:                                                 世界群組設定
    nether:                                                 世界名稱
        inheritance:                                     世界繼承設定
        - world                                        繼承什麼世界

                                       
78
-
LV. 12
GP 39
2 樓 Lakial erictfkc1220
GP17 BP-
§第二章- 基本權限的設定
一開始安裝PermissionsEx 的時候他是沒有設定任何權限的
所以你可能進去遊戲什麼都做不了
所以必須加權限給自己
 
首先我先告訴你們節點式怎麼寫
節點的寫法是 “插件名.命令” 這樣講可能不清楚 直接舉個例子吧
例如essentials的balance指令的節點式寫法就是essentials.balance
依此類推你可以寫出一大堆節點式
 
不過這樣一一設定太過於麻煩 所以有了 ” * ” 這個設定廣域的符號
Ex: essentials.*  就包含了essentials所有的指令 不過使用這個符號的時候必須注意定義得順序  下面會講解
 
再來就是把這些一個個的節點式放進權限裡面使用了
注意:yml檔案對格式的要求非常的嚴謹 包含空格都不能出錯 請確定自己空白的地方不是tab而是空格

在這裡 我貼上一個範例
  Default:
   default: true
   permissions:  ←節點式放到這裡面
    - modifyworld.blocks.interact.*  ←正向節點  也就是增加權限給這個群組
    - -modifyworld.blocks.destroy.*  ←逆向節點 也就是不允許的意思
    - -modifyworld.items.have.1
    - modifyworld.*
由範例中可以知道 要增加權限的方式就是 “- 節點式” 像這樣
然後 要禁止使用某項權限就用 “- -節點式”
 
接下來這點很重要 (不要說你寫出來的權限沒有功能)
由於yml檔案的的判斷是由上而下,所以權限的順序是必須控制的,這種問題通常發生在使用 ”*” 符號的時候 直接舉例子比較容易懂
假如我現在要寫一個不能擁有石頭的權限
   permissions:
    - modifyworld.items.have.*     (modifyworld.items是允不允許擁有的節點)
    - -modifyworld.items.have.1   (1是石頭的id )
以這個例子來看 你猜猜看他能不能擁有石頭呢?答案是可以的
原因是因為PermissionsEx 在第一個節點modifyworld.items.*就已經判斷到石頭這樣東西是可以被允許 所以就不會在判斷下一行的-modifyworld.items.have.1
所以假如改成
   permissions:
    - -modifyworld.items.have.1
    - modifyworld.items.have.*
這樣子石頭就不能被擁有 因為在第一行的時候判斷石頭是不能被擁有的 第二行在定義石頭以外的items是可以被擁有的
 
 
接下來來講講前綴吧 前綴基本上就有點像是稱號系統吧!
就是這個階級的人 在遊戲中 聊天的時候名字前面會有什麼
例如
  Default:
    Prefix:‘&4[Fresh]&2’   ←這就是前綴
    default: true
    permissions
我這樣設定 我在遊戲裡面講話的話後就會是
[Fresh]ABC: Hello!
 
之後我要教你們怎麼知道這個插件有那些節點式可以用
其實你只要逛逛他個原文網站幾乎都會有 找關鍵字Permission
我隨便找個例子吧


進去後他就會告訴你這個插件有哪些權限可以設置!

 
基本上運用上面的這些技巧就可以寫出基本的權限了 至於你會問我怎麼知道權限要打哪些東西 其實不懂的話可以去那個插件的原文網站通常會附而常用的控制玩家的擺設權破壞權這些則是用modifyworld來管理 詳細在第五章會解釋
         
17
-
LV. 12
GP 39
3 樓 Lakial erictfkc1220
GP10 BP-
§第三章- 進階權限的設定
基本上會第二章的基本權限就可以控制很多事情了
不過要是你像要更有效率的管理的話這一章可能會給你帶來幫助
這邊要講的是繼承 多重指定
 
首先來講繼承的觀念
繼承的目的就是減少過多重複的節點
Ex:我給 一個群組A權限 他可以吃麵包 吃紅蘿蔔
然後群組B可以吃麵包 紅蘿蔔 牛排 烤雞
我就只要設定群組B繼承群組A 在加上 可以吃牛排和烤雞的權限就好
可以減少B群組還要設定吃麵包 和吃紅蘿蔔
這就是繼承的概念
 
然而繼承也和權限一樣是有順序的
基本上用上一章的觀念可以解決
下面給個例子
  A:
   permissions:
    - -modifyworld.items.have.1
    - modifyworld.items.*
  B:
   permissions:
    - modifyworld.items.pick.*
   inheritance:
    - A
  C:
   permissions:
    - modifyworld.items.have.1
   inheritance:
    - A
  D:
   permissions:
   inheritance:
    - B
    - C
  E:
   permissions:
   inheritance:
    - C
    - B
 
如此下來我們看D群組和E群組有什麼不同
 
D群組由於先繼承B所以間接的繼承到了A群組的-modifyworld.items.have.1
導致在繼承C群組的時候跳過了判斷modifyworld.items.have.1所以D群組是不能擁有石頭的
 
E群組先繼承C群組所以先判斷了modifyworld.items.have.1 所以在繼承B群組的時候就會判定跳過-modifyworld.items.have.1所以E群組可以擁有石頭
 
做個整理權限判斷的順序如下
自身前面的權限>自身的後面權限>前面的繼承>後面的繼承
以上就是繼承的觀念 到此
 
再來講多重指定
多重指定使用非常的方便,他可以使用( )來進行分組 “|”這個槓槓代表or ,”-”這個符號可以選取一個區間
舉個例子就懂了 這很簡單 例如我想禁止擁有 泥土(ID=3) 鵝卵石(ID=4) 木材(ID=5)
我可以這樣寫節點式-modifyworld.items.have.(3|4|5)
也可以這樣寫-modifyworld.items.have.(3-5)
當然進階應用就是例如我想要禁止這些東西被擺設還有被破壞我可以直接這樣寫
-modifyworld.blocks.(place|destroy).(3-5)
這就是多重指定啦! 簡單吧
    
10
-
LV. 12
GP 39
4 樓 Lakial erictfkc1220
GP8 BP-
§第四章- 權限層級
很多伺服器都會有層級的差別最明顯的可能就是玩RPG伺服器了,或者你想管理什麼層級升上去後就可以做更多事,權限層級就十分的好用
首先先講解一下在PermissionsEx裡面rank層級數字越高層級越低,所以1是最高級
注意:0也是一個等級,不過他不能被指定,也不能被升降級,你可以透過把它rank指定成0,來表示刪除一個階級或當做他不存在。
同常權限是這樣寫的
  A:
   permissions:
    - -modifyworld.items.have.1
    - modifyworld.items.*
   options:
        rank: '1'   ←階級
在遊戲中可以透過 /pex promote [user]來提昇等級
                               /pex demote [user] 來降低等級
當然你要有這個權限 permissions.user.promote.* 和 permissions.user.demote.*
 
還有也可以擁有多重排名系統 例如我有2個職位都是rank100 不過他們在不同城市所以是2個系統 可以這樣寫
groups:
   CityA-Major:
       options:
           rank: '100'
           rank-ladder: CityA
   CityB-Major:
       options:
           rank: '100'
           rank-ladder: CityB
引用自wiki
可以使用指令 /pex promote [user] [ladder] 來升級
                         /pex demote [user] [ladder]  來降級
也可以使用/pex group [group] rank [rank] [ladder] 直接指定聲道哪一階級
   
8
-
LV. 12
GP 39
5 樓 Lakial erictfkc1220
GP11 BP-
§第五章- Modifyworld的設定
這東西,乃神物也。他可以設定的東西絕對超乎想像的多,他提供了一些控制人物的權限,讓你可以很靈活的控制你的世界的人一舉一動。
首先講一下他的config檔吧
item-restrictions: true
inform-players: true
whitelist: false
use-material-names: false (物品id與名稱對照表我放附件)
drop-restricted-item: true
item-use-check: false
我一一解釋
item-restrictions 這個假如你把它調成true這樣物品在沒有定義可以被have的情況下就掉出來
inform-players 當玩家被調整群組的時候通知他
whitelist簡單易懂吧 白名單
use-material-names 這點很重要 他是說要不要使用物品本來的name來定義,假如你設false你才可以在設定權限的時候使用物品id,假如是true就必須打方塊本來的名稱,我附錄會附對照表
drop-restricted-item 物品掉落在地板上的情況 true的話會留在地板上,false的話會消失
item-use-check: 這點我實在沒有很清楚…
 
再來就是節點的介紹了
通用節點:
modifyworld.login 是否允許進入伺服器,這個選項只有在上面whitelist:true的時候才有用
modifyworld.chat  是否允許玩家在公共頻道聊天
modifyworld.sneak 是否允許蹲下
modifyworld.sprint 是否允許衝刺
modifyworld.chat.private 是否允許私頻
modifyworld.usebeds 可不可以使用床
modifyworld.bucket.empty 水桶可不可以是空的
modifyworld.bucket.fill 水桶可不可以裝東西(水.岩漿.牛奶)
modifyworld.digestion 飢餓會不會變
 
方塊節點:
modifyworld.blocks.destroy.[blockid] 是否允許破壞方塊
modifyworld.blocks.place.[blockid] 是否允許擺放方塊必須要modifyworld.blocks.interact.<blockid>才能正常運作
modifyworld.blocks.interact.[blockid]是否允許作用ex:機關類
 
物品節點:
modifyworld.items.craft.[itemid] 可否合成
modifyworld.items.drop.[itemid] 可否丟棄
modifyworld.items.enchant.[itemid] 可否附魔
modifyworld.items.have.[itemid] 可否擁有
modifyworld.items.hold.[itemid] 可否拿在手上
modifyworld.items.pickup.[itemid] 可否撿起
modifyworld.items.use.[itemid].on.block.[blockid]可否使用對方快使用物品,item-use-check必須是true才有作用
實體節點: (實體的列表我放在附件)
modifyworld.damage.deal.[entityName] 可否對<entityName>造成傷害
modifyworld.damage.take.[entityName] 可否從<entityName>接受傷害
modifyworld.mobtarget.[entityName] 怪物會不會針對你(苦力怕對你視而不見)
modifyworld.interact. [entityName] 有點難解釋 就類似與他發生關係
modifyworld.tame. [entityName] 可不可以馴服怪物
 
交通工具節點:(交通工具列表我放附件)
modifyworld.vehicle.destroy.[vehicleName]可不可以毀損交通工具
modifyworld.vehicle.enter.[vehicleName]可不可以乘坐交通工具
假如你要進入交通工具 例如礦車 還必須要使用modifyworld.interact
modifyworld.vehicle.collide.[vehicleName]是否和交通工具碰撞
    
11
-
LV. 12
GP 39
6 樓 Lakial erictfkc1220
GP8 BP-
§第六章- ChatManager的設定
這工具能幹嘛?看名字也大概可以猜個七八成了,就是跟聊天有關的,我覺得還蠻好用的,他支援彩字,聊天的前綴和後綴,聊天範圍的限制,還有多世界的支援。
 
首先我們先看看他的config.yml吧
enable: true
message-format:<%prefix%player%suffix> %message
global-message-format:<%prefix%player%suffix> &e%message
ranged-mode: false
chat-range: 100.0
ChatManager預設是關閉的 必須把enable:true才可以使用
message-format就是傳送訊息的模式現在看不懂下面會解釋
ranged-mode: false 這個就是是否限制聊天的範圍,有些RPG或者PVP服能只想讓附近的人看到聊天的內容就可以把這個選項改成true
chat-range: 100.0 這是限制聊天範圍的大小這個選項只有在ranged-mode:true的時候才有用
global-message-format 這是全頻聊天的格式
 
再來他可以設定特定群組或玩家是哪種形式
有以下4種設定
force-range-mode 特定用戶使用範圍聊天模式
chat-range 聊天範圍
message-format 聊天格式
global-message-format全頻聊天模式的格式
ex: /pex group abc setchat-range 500 之類的
 
當然當你啟動範圍聊天模式的時候,要是有chatmanager.chat.global的權限也可以全頻發言,發言方式是在最前面增加”!”
Ex: !早安
 
權限節點:
chatmanager.chat.global 當範圍聊天啟動時是否擁有全頻的使用權
chatmanager.chat.color 可否用彩字聊天
chatmanager.chat.magic 可不可以使用魔法特效文字&k
chatmanager.chat.bold 可不可以使用粗體字&l
chatmanager.chat.strikethrough 可不可以使用刪除線&m
chatmanager.chat.underline 可不可以使用底線&n
chatmanager.chat.italic 可不可以使用斜體字&o
chatmanager.override.ranged 是否忽略範圍聊天的設定,要是設定全局*的沒有禁止這一項的話,所有對話會被發到全頻
 
聊天格式的符號說明:
%message 是訊息內容
%player 是傳送者的名字
%displayname 當有允許/nick時這才有用
%prefix前綴也就是名字的前面 ex:我本來id是 ABC 前綴是 [Boss]這樣就聊天內容就會是 [Boss]ABC: ……
%suffix後綴 類似前綴 不多說了
%world 假如有啟動多世界 %world代表世界名稱
 
ChatManager很有趣的一點是他可以讓文字聊天前面有時間
時間文字符:
%H  24小時制的時,假如不滿10會添0 也就是00~23
%i  分鐘假如不滿10會添0 也就是00~59
%h  12小時制的時,假如不滿10會添0 也就是01~12
%s  秒假如不滿10會添0 也就是00~59
%G 24小時制不滿10不會添0 也就是0~23
%a  小寫顯示的am或者pm
%g 12小時制不滿10不會添0 也就是1~12
%A  大寫顯示的AM或者PM


    
8
-
LV. 2
GP 0
7 樓 酣小夜 yea7244277
GP0 BP-
groups:
  default:
    Prefix:'&4[遊客]&2'
    default: true
    permissions:
    - -modifyworld.blocks.destroy.*
    - -modifyworld.blocks.place.*
    - -modifyworld.digestion
    - -modifyworld.items.have.*
    - -modifyworld.mobtarget.*
    - -modifyworld.damage.take.*
    - -modifyworld.vehicle.destroy.*
    - -modifyworld.vehicle.collide.*
    - modifyworld.*
    - bukkit.command.tell
    - -bukkit.command.*
    - -essentials.*
    - commandsigns.use.*
  builder:
    Prefix:'&4[玩家]&2'
    permissions:
    - modifyworld.*
    - essentials.home
    - essentials.home.bed
    - essentials.sethome
    - essentials.sethome.bed
    - essentials.tp
    - essentials.tp.others
    - -essentials.*
    - bukkit.command.teleport
    - -bukkit.command.*
    - bukkit.command.weather
    - commandsigns.use.*
  admin:
    Prefix:'&4[管理員]&2'
    permissions:
    - bukkit.command.*
    - permissions.*
    - essentials.*
    - modifyworld.*
    - commandsigns.*
worlds:
    nether:
        inheritance:
        - world
    moon:
        inheritance:
        - world
    the_end:
        inheritance:
        - world
    twilightforest:
        inheritance:
        - world
大大  請問我這樣設定ok嗎 最下面的世界設定會有效嗎
0
-
LV. 10
GP 122
8 樓 低音バイフー(白狐) aass55120
GP0 BP-
嗯... 有再使用 craftbukkit#2788-1.5.2-R1.0推薦建設 開伺服器的玩家

PermissionsEx v1.20.2:
http://dev.bukkit.org/bukkit-plugins/permissionsex/files/22-permissions-ex-v1-20-2/

Modifyworld v1.19.7:
http://dev.bukkit.org/bukkit-plugins/modifyworld/

ChatManager v0.5:
http://dev.bukkit.org/bukkit-plugins/cm-chatmanager/files/3-chat-manager-v0-5/

都測試過 可以用 希望能有幫助



對不起樓主 留言這麼多...

另外這是我的設定
設定好後 輸入/pex promote 1

升不了admin的權限
還出現
User are not in this ladder

為什麼呢...
0
-
LV. 18
GP 506
9 樓 狡I戀星空 dd821030
GP0 BP-
大大我剛剛花了時間看你的文章

我先拿一個插件來試試看

我想要讓"小鋒"有爆頭插件的權限
請問我這樣打錯在哪裡?
還是缺了什麼?

因為我進去的時候他說他怎麼打都沒爆頭,可是我打就可以





我自己有爆頭是這樣


目前學會自己開伺服器,裝模組了。
後來發現還有插見這東西,但感覺學這個好複雜,可是學會了好像很厲害!!
請大大幫我解答一下好嗎,謝謝。
0
-
LV. 7
GP 7
10 樓 Ghz op911546
GP0 BP-
這可以限制玩家死亡回傳地方嗎?
0
-
LV. 5
GP 0
13 樓 員演窮貧 enouos
GP0 BP-
大大,PexEdit中文版放進plugins裡都沒反應呢,請問怎樣把3個檔案PermissionsEx.jar  Modifyworld.jar  ChatManager.jar全部丟進去plugin?
0
-
LV. 23
GP 2k
14 樓 路人喵 h0103661
GP0 BP-
古文
0
-
板務人員:

1270 筆精華,今天 更新
一個月內新增 2
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】