이 요리책에는 시작하는 데 도움이 될 만한 간단한 스크립트 예시가 몇 가지 수록되어 있습니다. 마음껏 가져가서 여러분의 캠페인에 맞게 수정하여 사용하셔도 좋습니다. 또한 ‘모드 스크립트 포럼’이 마련되어 있어, 여기서 모드 스크립팅에 대해 토론하고 커뮤니티와 스크립트를 공유할 수 있습니다.
피 묻은 상태 및 사망 상태 표시기
(글: 켄 바우어)
이 스크립트는 체력이 절반 이하로 떨어진 모든 토큰에 피를 흘리는 상태를 나타내는 ‘빨간색 마커’를, 체력이 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);
});