개인 자료란 (JE)

  서버 커뮤니티

Profile 스크립트내놔라 대표칭호 없음
Profile

질문하기 스크립트

배열변수 & 개인변수 관련

2024.01.21 조회 수 74 추천 수 0
이해도 초보자 
게임버전 (JE) 1.20.1 
게임버전 (BE) 관련없음 
스크립트 버전 sk 2.73 

제가 도망자라는 배열 변수에 3명이 들어가도록 해 놨는데요 그 배열 변수에 2명 이 들어가도 그냥 3번은 "" 이렇게 해 놨고요

이제 술래가 모든 도망자를 잡아서 죽이면 이기게 할려고 했는데 

every 1 second:

    if {관전.%{도망::*}%} is true:

        message "테스트 완료" to all players

초보라서 이런 식으로 짰는데 관전(개인) 이라는 게  죽으면 true가 되는 거고 도망이 배열 변수 에요.

모든 사람의 관전이 true가 되면 저 메시지를 보내도록 한 걸로 아는데 작동이 안되어서 여쭈어 봅니다





2개의 댓글

꿈틀
2024.01.21

every 1 second:

    if {게임중} is not true:

        exit

    set {_playerLeft} to false

    loop all players:

        if {관전.%{도망::%loop-player%}%} is false:

            set {_playerLeft} to true

            exit loop

    if {_playerLeft} is false:

        message "테스트 완료" to all players

        clear {게임중}

 

게임중임을 확인하는 변수 하나를 만드셔서 위와 같은 형식으로 만드시면 될 것 같네요. 없어도 기능상으로는 문제가 되지는 않지만, every n seconds 이벤트문이 많이 사용했을 때 서버에 그리 좋지는 않기에 게임중일 때에만 작동되도록 하는것이 서버에 부하가 덜 갈겁니다


skript에서는 배열변수 전체({변수명::*})를 이용하는 것은 clear하는 것 외에는 할 수 없습니다. 따라서 루프를 돌려서 처리해주어야 합니다

슈퍼레몬
2024.01.21

{도망::*} 는 개인의 이름 하나하나가 아닌 이름1,이름2 로 출력됩니다
질문자님이 원하시는 스크립트를 만드시려면


every 1 second:
    loop {도망::*}:
        if {관전.%loop-value%} is true:
            add 1 to {deathpl}
        if {deathpl} is 2:
            send "모든 도망자가 사망했습니다!" to all players
            delete {deathpl}

이게 별로 효율적이지는 않습니다만, 지금 생각나는게 이것밖에 없어 적어봅니다. 도망자도 2명이여서 크게 상관은 없을듯 합니다...