모드 스크립트: 기본 예제

이 요리책에는 시작하는 데 도움이 될 만한 간단한 스크립트 예시가 몇 가지 수록되어 있습니다. 마음껏 가져가서 여러분의 캠페인에 맞게 수정하여 사용하셔도 좋습니다. 또한 ‘모드 스크립트 포럼’이 마련되어 있어, 여기서 모드 스크립팅에 대해 토론하고 커뮤니티와 스크립트를 공유할 수 있습니다.

피 묻은 상태 및 사망 상태 표시기

(글: 켄 바우어)

이 스크립트는 체력이 절반 이하로 떨어진 모든 토큰에 피를 흘리는 상태를 나타내는 ‘빨간색 마커’를, 체력이 0 이하로 떨어진 토큰에는 ‘죽음 마커’를 자동으로 추가합니다. 건강 수치는 1번 바에 저장되어 있는 것으로 가정합니다.

on("change:graphic", function(obj) {
  if(obj.get("bar1_max") === "") return;

  if(obj.get("bar1_value") <= obj.get("bar1_max") / 2) {
    obj.set({
      status_redmarker: true
    });
  }
  else {
    obj.set({
      status_redmarker: false
    });
  }

  if(obj.get("bar1_value") <= 0) {
    obj.set({
      status_dead: true
    });
  }
  else {
    obj.set({
      status_dead: false
    });
  }
});

어둠이 다가오고 있다…

이 스크립트는 토큰이 이동할 때마다 해당 토큰의 빛 반경을 10%씩 줄입니다. “등유이 바닥나는 램프”나 이와 유사한 극한 상황을 시뮬레이션하는 데 안성맞춤입니다.

on("change:token", function(obj, prev) {
  //실제로 이동한 경우에만 이 작업을 수행합니다.
  if(obj.get("left") == prev["left"] && obj.get("top") == prev["top"]) return;

  obj.set({
    light_radius: Math.floor(obj.get("light_radius") * 0.90)
  });
});

플레이어 또는 캐릭터로서 sendChat 사용하기

(브라이언 쉴즈 기고)

이 스크립트는 ‘채팅:message’ 이벤트 스크립트에서 사용할 수 있는 몇 줄의 코드를 제공하며, 이를 통해 이벤트를 트리거한 주체가 플레이어인지 캐릭터인지에 따라 ‘sendChat’을 정확하게 사용하여 메시지를 전송할 수 있도록 해줍니다.

on("chat:message", function(msg) {
  var message = '';
  // `message`의 내용을 파악합니다
  var characters = findObjs({_type: 'character'});
  var speaking;
  characters.forEach(function(chr) { if(chr.get('name') == msg.who) speaking = chr; });

  if(speaking) sendChat('character|'+speaking.id, message);
  else sendChat('player|'+msg.playerid, message);
});
도움이 되었습니까?
89명 중 72명이 도움이 되었다고 했습니다.