개인 자료란 (JE)

  서버 커뮤니티

Profile GameDeveloperMint_o 대표칭호 없음

Mint_o f86357f6ed4c4a6ea4a0535127a742c8

Profile

질문하기 스크립트

pvp 팀 스크립트 질문

2021.05.30 조회 수 1461 추천 수 0
이해도 1.16 
스크립트 버전 입문자(아무것도 몰라요) 
스크립트 애드온 2.5.1 이상 

pvp 팀끼리는 때려지지 않고 상대팀만 때려지는 스크립트 만드려고 하는데 가르쳐 주실 수 있나여?

1개의 댓글

스크립터브혼
2021.05.30

리스트 변수로 팀이 된 플레이어를 저장하고 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} 변수로 플레이어의 팀을 가져오고

{team::%{_team}%::*} 리스트에 공격자가 포함하는지를 확인합니다.

포함된다면 같은 팀이기 때문에 이벤트를 취소합니다.



뉴스 및 창작물
/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 5

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3