개인 자료란 (JE)

  서버 커뮤니티

Profile 행소 대표칭호 없음
Profile

질문하기 스크립트

커맨드블럭 @p이거 어떻게 써야하나요

2021.08.04 조회 수 134 추천 수 0
이해도 1.16 
게임버전 (JE) 페이퍼 
스크립트 버전 입문자(아무것도 몰라요) 
스크립트 애드온 Skript 2.6-beta2 

command /team [<player>]:

    trigger:

        execute console command "/t t A %arg 1%"

        이게 작동했으면 하는데 커맨드블럭에

/team @p해도 작동을안하네요ㅠ

4개의 댓글

스크립터브혼
2021.08.06

/team <player> 명령어 에서 <player>는 플레이어 이름을 입력해야 해요.

> /team vhone


기본값 세팅을 하려면 타입에 =%exrp%를 추가해주면 됩니다

command /team <player=%player%>:
    trigger:
        send "%arg-player%"

사용된 player는 event-player 익스프레션의 생략된 패턴입니다.

'/team' 명령을 하면 arg-player어는 기본값인 event-player를 받아 명령자 자신이 되고,

'/team vhone' 명령을 하면 arg-player는 입력한 vhone 이라는 플레이어가 됩니다.

HAN1110
2021.08.08
@스크립터브혼

또는 offlineplayer 도 되죠

행소
2021.08.09
@스크립터브혼

command /teamA :

trigger:

execute console command "/t t A %arg-player%"

커맨드블럭 @p는 작동이안되네요

 

일케 했는데 작동이 안되네요

스크립터브혼
2021.08.10
@행소

스크립트는 명령블록의 선택자를 자동으로 변환해주지 않습니다.

on command 이벤트에서 선택자에 맞는 플레이어를 찾아서 바꾸어주어야 합니다.


on command:
    sender is command block
    arguments contain "@p"
    set {_loc} to location of block
    set {_distance} to 5
    loop players in radius 5 of {_loc}:
        set {_dist} to distance between loop-player and {_loc}
        if {_dist} < {_distance}:
            set {_distance} to {_dist}
            set {_nearby} to loop-player
    {_nearby} is set
    set {_cmd::1} to command label
    set {_cmd::2} to arguments
    replace "@p" with name of {_nearby} in {_cmd::2}
    execute command join {_cmd::*} with " " by sender

@p 선택자는 가장 가까운 플레이어 한명을 대상으로 선택합니다. 이벤트가 발생한 곳으로부터 5블록 이내에 있는 플레이어 중 가장 가까운 플레이어의 이름으로 명령어를 생성해 다시 명령하는 코드입니다.


@p는 단순히 가까운 플레이어만 찾아서 변경하면 되므로 간단하지만,

대괄호[]를 사용해 데이터 테그를 사용하려한다면 모든 테그에 대응하도록 구현해야합니다.