리스트 변수로 팀이 된 플레이어를 저장하고 on damage에서 같은 팀인 경우 캔슬하면 됩니다.
# 팀 세팅
command /set.team <text>:
trigger:
set {_team} to arg-text
# 플레이어의 팀 세팅
set {user::%player%.team} to {_team}
# 팀 목록에 플레이어 세팅 (한번만 저장되도록 조건문 추가)
if {team::%{_team}%::*} don't contain player:
add player to {team::%{_team}%::*}
send "{user::%player%.team} = %{user::%player%.team}%"
# 공격 제어
on damage:
# 공격자의 팀 세팅
set {_team} to {user::%attacker%.team}
{_team} is set
# 공격자의 팀 목록에 피격자가 있음 (같은 팀)
{team::%{_team}%::*} contain victim
cancel event
send "팀원 공격 방지" to attacker
두 플레이어가 서로 공유하는 팀이라는 정보가 필요합니다.
다르게 표현하면 두 플레이어의 상호작용을 팀이 통제한다고 생각하면됩니다.
그렇기 때문에...
첫번째로 플레이어는 어떤 팀인지 알 수 있어야 합니다.
먼저 어떤 팀인지 확인할 수 있는 키가 필요합니다. 예문에서는 {_team} 변수입니다.
그리고 플레이어의 정보로 이 변수값에 접근 할 수 있게 구성해야 합니다.
그래서 플레이어의 이름을 사용하여 {user::%player%.team} 변수에 {_team}을 저장합니다.
두번째로 팀은 플레이어가 자신의 일원임을 알아야 합니다.
그래서 {team::%{_team}%::*} 리스트에 플레이어를 추가합니다.
조건문을 통해서 팀이 아닌 경우에만 추가 할 수 있도록 합니다.
이렇게 플레이어와 팀의 데이터가 준비가 되면 이것을 토대로 on damage 이벤트를 통제하면됩니다.
공격자가 공격을 했을때 저장해둔 {user::%attacker%.team} 변수로 플레이어의 팀을 가져오고
스크립터브혼
2021.05.30리스트 변수로 팀이 된 플레이어를 저장하고 on damage에서 같은 팀인 경우 캔슬하면 됩니다.
두 플레이어가 서로 공유하는 팀이라는 정보가 필요합니다.
다르게 표현하면 두 플레이어의 상호작용을 팀이 통제한다고 생각하면됩니다.
그렇기 때문에...
첫번째로 플레이어는 어떤 팀인지 알 수 있어야 합니다.
먼저 어떤 팀인지 확인할 수 있는 키가 필요합니다. 예문에서는 {_team} 변수입니다.
그리고 플레이어의 정보로 이 변수값에 접근 할 수 있게 구성해야 합니다.
그래서 플레이어의 이름을 사용하여 {user::%player%.team} 변수에 {_team}을 저장합니다.
두번째로 팀은 플레이어가 자신의 일원임을 알아야 합니다.
그래서 {team::%{_team}%::*} 리스트에 플레이어를 추가합니다.
조건문을 통해서 팀이 아닌 경우에만 추가 할 수 있도록 합니다.
이렇게 플레이어와 팀의 데이터가 준비가 되면 이것을 토대로 on damage 이벤트를 통제하면됩니다.
공격자가 공격을 했을때 저장해둔 {user::%attacker%.team} 변수로 플레이어의 팀을 가져오고
{team::%{_team}%::*} 리스트에 공격자가 포함하는지를 확인합니다.
포함된다면 같은 팀이기 때문에 이벤트를 취소합니다.