색 설정이 가능한 Broadcast 명령어 > 트리거 공유

본문 바로가기
사이트 내 전체검색


트리거 공유

색 설정이 가능한 Broadcast 명령어

페이지 정보

작성자 Pro_snape 작성일19-05-25 11:45 조회252회 댓글0건

첨부파일

본문

이번 구문은 CommandTrigger만 사용하는 구문으로써, 구조가 복잡하지 않고 매우 간단한 구문입니다.


두개의 구문파일이 있습니다.


▷ bc.trg : 서버에 있는 모든 플레이어에게 메시지를 전달하는 명령어로써, 기능의 주된 역할을 합니다.

   ㄴ 펄미션 노드: bc.use

▷ bcprefix.trg : Broadcast의 색을 설정하는 명령어입니다.

   ㄴ펄미션 노드: bc.setprefix



​먼저 ​bc.trg ​부터 살펴보겠습니다.

prefix = "&f&l[ &6&lYourSVName &f&l] &7"

systemPrefix = "&f&l[ &b&lSystem &f&l] "

IF !player.hasPermission("bc.use")

    #MESSAGE systemPrefix+"&c이 명령어를 사용할 권한이 없습니다."

    #STOP

ENDIF

IF args.length < 1

    #MESSAGE systemPrefix+"&cUsage: /bc 메시지"

    #STOP 

ENDIF

IF args.length >= 1

    IMPORT org.bukkit.ChatColor

    IF {"bc.chatcolor"} == null

        #MESSAGE systemPrefix+""+ChatColor.RED+"색 설정이 완료되지 않았습니다. "+ChatColor.GOLD+"/bcprefix"+ChatColor.RED+" 를 입력하여 사용가능한 색 정보를 확인하시고 색을 설정하여 주시기 바랍니다."

        #STOP

    ENDIF

    color = ChatColor.valueOf({"bc.chatcolor"})

    FOR p = getPlayers()

        p.sendMessage(color(prefix+""+$playername+" &6:: "+color+""+mergeArguments(args)))

    ENDFOR

ENDIF

전체구문은 위와 같습니다.

각각의 기능들을 알아보도록 하겠습니다.


1. 

prefix = "&f&l[ &6&lYourSVName &f&l] &7"

  ㄴ ​서버 전체 메시지를 띄울 때, 맨 앞에 위치할 키워드입니다. 보시는 바와 같이 YourSVName​ 에 본인의 서버 이름을 입력하는게 일반적입니다.

  ㄴ ex)   [ PS서버 ] :: ~~~~



2. 

systemPrefix = "&f&l[ &b&lSystem &f&l] "

   서버 전체 메시지를 띄우는 도중 오류가 발생해 예외처리 과정을 거쳤다면, 오류메시지의 맨 앞에 위치할 키워드입니다. 이 역시 임의로 수정해도 무방합니다.

  ㄴ ex)   [ System ] :: 오류가 발생했습니다.



3. 

IF !player.hasPermission("bc.use")

    #MESSAGE systemPrefix+"&c이 명령어를 사용할 권한이 없습니다."

    #STOP

ENDIF

  ​ 서버 전체 메시지를 띄우는 권한(펄미션)이 있는지 확인하는 조건문입니다. #MESSAGE ​부분은 임의로 수정할 수 있습니다.



4. 

IF args.length < 1

    #MESSAGE systemPrefix+"&cUsage: /bc 메시지"

    #STOP 

ENDIF

  ㄴ ​/bc 명령어를 입력했을 때, 메시지를 입력했는지 확인하는 조건문입니다. 즉, /bc "메시지" 명령어에서 "할말"에 무언가 입력됐는지 확인합니다.



[ 5번은 하나의 큰 조건문으로 묶여있습니다. ]


5. 

IF args.length >= 1

   IMPORT org.bukkit.ChatColor

  ​/bc 명령어를 입력했을 때, 명령어 뒤에 메시지를 입력했는지 확인한 후, ChatColor Enum을 IMPORT하는 과정입니다.


5-1.

IF {"bc.chatcolor"} == null

        #MESSAGE systemPrefix+""+ChatColor.RED+"색 설정이 완료되지 않았습니다. "+ChatColor.GOLD+"/bcprefix"+ChatColor.RED+" 를 입력하여 사용가능한 색 정보를 확인하시고 색을 설정하여 주시기 바랍니다."

        #STOP

ENDIF

  앞에서 ChatColor Enum을 IMPORT한 후,  bc에서 사용할 색이 지정되어있는지 확인하는 과정입니다.



5-2.  color = ChatColor.valueOf({"bc.chatcolor"})

  ㄴ ​bc.chatcolor 변수에 있는 색 이름 값을 이용하여 ChatColor 형식의 값을 구해 color 로컬변수에 저장하는 과정입니다.



5-3.  

    FOR p = getPlayers()

        p.sendMessage(color(prefix+""+$playername+" &6:: "+color+""+mergeArguments(args)))

    ENDFOR

ENDIF

  ㄴ ​서버에 있는 모든 플레이어에게 메시지를 전달하고, 5번의 큰 조건문을 종료하는 과정입니다.






그리고 bcprefix.trg의 전체 구문입니다.

prefix = "&f&l[ &b&lSystem &f&l] "

IF !player.hasPermission("bc.setprefix")

    #MESSAGE !prefix+"&c이 명령어를 사용할 권한이 없습니다."

    #STOP

ENDIF

IF args.length < 1

    #MESSAGE prefix+"&cUsage: /bcprefix 색깔"

    cls = ""

    FOR i = 0:colors.length - 6

        color = colors[i]

        colorName = colors[i].name()

        cls = color(cls+""+color+""+colorName+"  ")    

    ENDFOR

    #MESSAGE prefix+" 사용가능한 색: "+cls

    #STOP 

ENDIF

IMPORT org.bukkit.ChatColor

colors = ChatColor.values()

content = args[0]

FOR i = 0:colors.length - 1

    IF colors[i].name() == content.toUpperCase()

        {"bc.chatcolor"} = content.toUpperCase()

        color = ChatColor.valueOf(content.toUpperCase())

        #MESSAGE prefix+""+ color + "" + content.toUpperCase()+" &6으로 색지정이 완료되었습니다."

        #STOP

    ELSEIF colors[i].name() != content.toUpperCase()

        #CONTINUE

    ENDIF

ENDFOR

#MESSAGE prefix+""+ChatColor.RED+"알수없는 색입니다." 

cls = ""

FOR i = 0:colors.length - 6

    color = colors[i]

    colorName = colors[i].name()

    cls = color(cls+""+color+""+colorName+"  ")    

ENDFOR

#MESSAGE prefix+" 사용가능한 색: "+cls

#STOP 

이 전체구문은 제가 설명드리지는 않습니다. 애초에 유저가 임의로 수정하는 구문이 아닙니다.

궁금한 부분이 있다면 댓글에 연락처를 남기시기 바랍니다.

댓글목록

등록된 댓글이 없습니다.

상단으로


모바일 버전으로 보기