느으너앍
대표칭호 없음
Soul_MC 394e8b058b494a24be42a0a304207c31
이해도 | 1.16 |
---|---|
게임버전 (JE) | 페이퍼 |
게임버전 (BE) | SkQuery / Skellett / Misk |
스크립트 애드온 | 2.5.3 |
특정 아이템을 우클릭 하면 플레이어의 에임에 위치한 엔티티와 플레이어의 위치가 바뀌는 스크립트를 짰는데
몇가지 궁금한 점이 있어서 질문 드립니다.
<소스코드>
on rightclick: if name of player's tool is "&e&lTEST" : if {SWAP::횟수::%uuid of player%} is not 0: set {_loc} to the location at targeted entity if targeted entity is not a player: message "{@s} 플레이어에게만 사용 가능합니다."#else if targeted entity is npc:# 이 부분은 오류# message "{@s} npc는 타겟으로 지정할 수 없습니다."#else if targeted entity is block:# 이 부분은 미작동# message "{@s} 플레이어를 찾을 수 없습니다."else: if the distance between the player and {_loc} is smaller than 10: set {SWAP::횟수::%uuid of player%} to {SWAP::횟수::%uuid of player%} - 1 teleport the targeted entity to player teleport the player to {_loc} else: message "{@s} &e거리가 너무 멉니다!" else: message "{@s} &c사용 가능한 횟수가 없습니다."
Q1.위치 교환 시 상대 플레이어는 저를 바라보는데 저는 상대 플레이어가 바라보는 곳을 보게 됩니다.
혹시 특정 좌표값을 바라보게 할 수 있을까요??
set {_loc} to the location at player if targeted entity is not a player: message "{@s} 플레이어에게만 사용 가능합니다." else: if the distance between the targeted entity and {_loc} is smaller than 10: play sound "entity.enderman.teleport" with volume 5 and pitch 1 for player teleport the player to targeted entity teleport the targeted entity to {_loc} else: broadcast "{@s} &e거리가 너무 멉니다!"
위와 같이 반대의 경우로도 해봤는데 타겟은 이동이 되지 않더라구요..
Q2. 시티즌 플러그인으로 생성한 NPC가 타겟이 되는 문제가 있습니다.
혹시 NPC의 이름 말고 플러그인으로 생성한 NPC 자체를 막는 방법은 없을까요??
Q3. 타겟 설정이 벽 뒤의 엔티티도 가능합니다.
불가능하게 하려면 어떻게 해야할까요?
스크립터브혼
2021.03.05A1. Location의 성분은 x, y, z, world, pitch, yaw로 6개 입니다.
이 중 pitch, yaw가 바라보는 방향값입니다. pitch는 편각(좌우), yaw를 사각(상하)를 의미합니다.
명령자의 방향은 대상을 바라보고 있기 때문에 그대로 적용되나,
대상은 명령자를 바라보고 있지 않기 때문에 pitch, yaw를 조정해주어야 합니다.
힘과 방향을 가진 데이터로 벡터[Vector]가 있습니다.
> set {_v} to vector between {_loc1} and {_loc2}
이렇게 두 좌표를 가지고 벡터를 생성 할 수 있습니다. 방향은 loc1에서 loc2를 가르킵니다.
이 벡터의 pitch와 yaw를 이동할 좌표의 성분에 적용하면됩니다.
A2. [skRayFall] 애드온의 [Citizen is]컨디션을 사용하세요.
가상의 플레이어도 어쨋든 플레이어 데이터이기 때문에 스크립트에서는 구분할 수 없어요.
시티즌을 지원하는 애드온을 사용해야합니다.
A3. [Targeted Block]익스프레션으로 블록을 받아 올 수 있습니다.
[Distance]익스프레션으로 엔티티와 플레이어의 거리, 블록과 플레이어의 거리를 구해서 비교해보세요.
블록이 더 짧으면 블록이 가리고 있는 것이고, 엔티티가 더 짧으면 가리지 않고 있는 거에요.
느으너앍
2021.03.05감사합니다. 1번은 조금 더 해본 뒤 아무리 봐도 모르겠다면 질문하겠습니다 ㅠㅠㅠ