API: 유틸리티 함수

유틸리티 함수는 Roll20 게임 공간을 일관되게 작동할 수 있도록 도와주는 기능을 제공합니다. 유틸리티 함수는 어디에서나 호출할 수 있습니다 (예: 이벤트 콜백 내에서).


Underscore.js

Underscore.js 라이브러리에 액세스할 수 있습니다 (전역 객체인_을 통해 작업을 보다 쉽게 할 수 있습니다). Underscore는_.each와 같은 도우미 함수를 제공합니다 (객체 배열을 반복하는 데 사용됨). 더 많은 정보를 위해 Underscore 문서를 확인하세요.


로그 기록

log(message)

이 함수를 사용하여 스크립트 편집기 페이지의 API 콘솔에 출력을 기록할 수 있습니다. 스크립트 디버깅 및 API 샌드박스 내에서 무슨 일이 일어나고 있는지 파악하기 위해 유용합니다.

on("change:graphic", function(obj) {    
  log("Heard change for object ID: " + obj.id);
});

객체 정렬

toFront(obj)andtoBack(obj)

이 두 가지 기능은 현재 레이어에서 객체를 앞으로(또는 뒤로) 이동시킵니다. 참고로, 이벤트 콜백에서 받은 객체나 getObj 또는 findObjs등을 실제 객체로 전달해야 합니다.


랜덤 숫자

randomInteger(max)

주사위에 사용하는 함수입니다! 이 함수는 모듈로 편향 없이 결과적인 무작위 숫자가 1부터 MAX 사이에서 균등하게 분포되도록 합니다.

1부터 가장 큰 값은 max인 무작위 정수를 반환합니다. 이는 Roll20이 주사위를 굴릴 때 사용하는 기능과 동일하며, 이 숫자들은 통계적으로 엄격하게 무작위임이 증명되었습니다.

Math.random()

API 스크립트에서 Math.random()을 일반적으로 호출할 수 있으며, 결과가 무작위로 나오는 것을 믿을 수 있습니다. 왜냐하면 자바스크립트의 "기본" Math.random()이 롤20을 구동하는 암호화된 보안 유사난수 생성기로 대체되었기 때문입니다. 기존에 Math.random()을 사용하는 스크립트는 컴퓨터에서 가능한 한 무작위에 가까운 결과를 얻을 수 있다는 것을 알고 사용할 수 있습니다.

범위 내 숫자의 고르게 분포가 필요한 경우 Math.random()을 사용하지 마십시오. Math.random()은 가능한 한 좋은 난수를 제공하지만, 그 난수를 주사위 굴림과 같은 고르게 분포된 범위로 변환하는 것은 곱셈 또는 floor 호출과 같이 간단하지 않습니다. 이러한 경우에는randomInteger(max)을 사용하십시오.


플레이어가 GM인지 확인

playerIsGM(playerid)

Player Is GM 함수는 게임에서 플레이어가 GM인지 아닌지에 대한 부울 응답을 반환합니다. 이 함수는 항상 현재 시점에 따라 올바른 답변을 반환하므로 GM이 플레이어로 다시 참여하거나 플레이어가 게임 중에 GM으로 승격되더라도 playerIsGM()은 캐시를 지우거나 API 샌드박스를 다시 시작할 필요없이 적절히 응답합니다.


캐릭터

setDefaultTokenForCharacter( character, token )

공급된 Character Object의 기본 토큰을 공급된 Token Object의 세부 정보로 설정합니다. 두 객체는 이미 존재해야 합니다. 이는 현재 캐릭터와 관련된 기본 토큰을 덮어씁니다.


특수 효과 (FX)

spawnFx(x, y, type, pageid)

x, y 위치에 지정된 유형의 짧은 효과를 생성합니다. pageid를 생략하거나 'undefined'를 전달하면 플레이어가 현재 있는 페이지 ('Campaign 객체의 playerpageid')가 기본값으로 사용됩니다.

내장 효과의 유형은 문자열이어야 하며 다음 중 하나여야 합니다:빔-색상폭탄-색상숨-색상거품-색상태우기-색상폭발-색상폭발-색상빛-색상미사일-색상노바-색상튀김-색상

위의 "color"는 다음 중 하나입니다:산성,혈액,매혹,죽음,,서리,신성,마법,점액,연기,

사용자 정의 효과의 경우, 타입은 사용자 정의 효과의 custfx 객체의 ID여야 합니다.

spawnFxBetweenPoints(point1, point2, type, pageid)

spawnFx와 동일하게 작동하지만 단일 지점 대신 두 지점을 {x: 100, y: 100}형식으로 전달합니다. 예를 들어: spawnFxBetweenPoints({x: 100, y: 100}, {x: 400, y: 400}, "beam-acid"); 효과는 두 지점 사이를 이동합니다 (클라이언트 측에서 에이전시를 허용하는 동일한 효과).

다음 효과 유형은 항상 spawnFx 대신 spawnFxBetweenPoints를 사용해야합니다:beam-color,breath-color,splatter-color

spawnFxWithDefinition(x, y, definitionJSON, pageid)

위치 x, y에서 일회성 사용자 정의 효과를 생성합니다. 일부 효과 정의에 대한 JSON을 사용합니다. pageid를 생략하거나 'undefined'를 전달하면 플레이어가 현재 있는 페이지(캠페인 개체의 'playerpageid')가 기본값으로 사용됩니다.

definitionJSON은 JSON 사양을 따르는 자바스크립트 객체입니다.사용자 정의 FX에 대한 정의입니다.


주크박스 재생목록

playJukeboxPlaylist(playlistid)

play 함수는 재생목록의 폴더 ID를 사용하며 (캠페인 개체의 "_jukeboxfolder" 속성에서 가져옵니다), 해당 재생목록을 게임의 모든 플레이어에 대해 재생합니다.

stopJukeboxPlaylist()

stop 함수는 인수가 필요하지 않으며 현재 재생 중인 재생목록을 중지합니다.


기타

sendPing(left, top, pageid, (optional) playerid, (optional) moveAll, (optional) visibleTo)

테이블탑에 "핑"을 보냅니다 (플레이어가 마우스 버튼을 누른 것과 동일). 상단/왼쪽 좌표와 핑을 보낼 페이지의 pageid를 지정해야 합니다. 핑을 수행한 플레이어의 ID를 선택적으로 지정할 수 있습니다. 선택하지 않으면 "api"로 가정되며 핑은 노란색으로 표시됩니다.

players' views를 해당 위치로 이동시키려면 moveAll 옵션에 "true"를 전달할 수 있습니다.

ping을 볼 수 있는 플레이어 또는 ping에 의해 이동될 수 있는 플레이어의 visibleTo에 플레이어 ID를 설정할 수 있습니다. 플레이어 ID를 단일 ID, 배열 또는 쉼표로 구분된 문자열로 제공합니다.

on("chat:message", function(msg) {
  // 채팅에 "!pingtest"를 입력하여 테스트 실행
  if(msg.type == "api" && msg.content.indexOf("!pingtest") !== -1) {
 
    // 특정 플레이어를 얻으려면 null 대신 findObjs({_type: "player"})[i].id를 사용하세요
    players = findObjs({_type: "player"});
    player1 = players[1].id;
    player2 = players[2].id;
 
    // 모든 플레이어의 ID 배열 만들기
    var allPlayerIDs = players.map(function(player) {
      return player['id'];
    });
 
    // 이 페이지의 모든 사람에게 동일한 위치로 핑 보내기.
    sendPing(300, 300, Campaign().get('playerpageid'), null, true);
    setTimeout(function() {
        // 이 페이지의 모든 플레이어에게 동일한 위치로 핑 보내기
        sendPing(1500, 500, Campaign().get('playerpageid'), msg.playerid, true, "");
    }, 1000);
    setTimeout(function() {
        // 지정된 플레이어에게만 이 위치로 핑 보내기
        sendPing(1200, 500, Campaign().get('playerpageid'), null, true, player1);
    }, 2000);
    setTimeout(function() {
        // 플레이어 ID 배열(플레이어 1과 2)을 이 위치로 핑 보내기
        sendPing(900, 100, Campaign().get('playerpageid'), player2, true, [player1, player2]);
    }, 3000);
    setTimeout(function() {
        // 쉼표로 구분된 문자열 목록을 이 위치로 핑 보내기
        sendPing(300, 300, Campaign().get('playerpageid'), player1, true, allPlayerIDs.join());
    }, 4000);
 
  }
})
 

Roll20에서 거리와 그리드에 대한 참고 사항

Roll20에서 "단위"는 항상 화면에서 70픽셀입니다. "단위"는 거리와 그리드의 기본 구성 요소입니다. 기본값:

  • 1 단위 = 5 ft
  • 1 단위 = 1 그리드 사각형
  • 따라서, 5 ft = 1 단위 = 1 사각형

그러나, 게임 마스터는 그리드의 크기뿐만 아니라 거리의 비율도 변경할 수 있습니다. 1 단위는 항상 70 픽셀입니다. 그러나 게임 마스터는 설정을 변경하여 1 단위가 이제 10ft인 경우(즉, 70 픽셀 = 10ft) 또는 각 그리드 공간이 2 단위인 경우(즉, 각 그리드 공간이 이제 140 픽셀입니다).

도움이 되었습니까?
19명 중 12명이 도움이 되었다고 했습니다.