오늘은 서버내 칭호를 개발해보겠습니다
칭호를 개발하기 앞서 하나의 플러그인을 적용해줍니다
CombatLog 플러그인입니다
이 플러그인은 전투 도중 서버에 나갈시 자동으로 킬처리 되는 기능이 있습니다
서버내 싸움 도중 공격자를 피하여 일부러 나갔다 들어오는 행위를 방지하기 위해서 추가해줬습니다
적용후 combatlog 콘피그를 열어봅니다
여기서 자주 사용하는 부분만 수정하겠습니다
Tag-Duration : 10 부분은
플레이어간 전투과 시작되고 10초 동안 전투과 지속되는 현상 입니다
이 10초 동안 명령어를 사용할 수 없고 전투 도중 서버를 나갈시 자동으로 킬처리가 됩니다
시간은 10초 그대로 두겠습니다
밑으로 더 내려보면
명령어 부분이 나옵니다 여기서 전투도중 금지 명령어를 밑으로 작성해주면 됩니다
필요하시면 전투 메시지도 한글로 수정하면 됩니다
서버내에서 확인해보면 전투도중 명령어 사용이 막히는걸 확인 할 수 있습니다
이제 칭호를 살펴보겠습니다
options:
r : &d&l[ &f&l칭호 &d&l] &f
on chat: #채팅을 했을때 이벤트
if {칭호::%uuid of player%} is not set:
set message format to "&7&l[ &f&l방랑자 &7&l]&r %player's display name%&f : %colored message%" # 현재 메세지 형태를 다음과 같이 보여줍니다
if {칭호::%uuid of player%} is "비숍":
set message format to "&e&l[ &f&l♝ Bishop ♝ &e&l]&r %player's display name%&f : %colored message%"
if {칭호::%uuid of player%} is "나이트":
set message format to "&c&l[ &f&l♞ Knight ♞ &c&l]&r %player's display name%&f : %colored message%"
if {칭호::%uuid of player%} is "퀸":
set message format to "&5&l[ &f&l♕ Queen ♕ &5&l]&r %player's display name%&f : %colored message%"
if {칭호::%uuid of player%} is "킹":
set message format to "&4&l[ &f&l♔ King ♔ &4&l]&r %player's display name%&f : %colored message%"
command /칭호:
trigger:
if player is op:
open chest with 3 rows named "&d&l[ &f&l칭호 &d&l]" to player
set slot 10 of current inventory of player to lime wool named "&e&l[ &f&l♝ Bishop ♝ &e&l]" with lore "&f" and "&c&l[+] &f우클릭시 해당 칭호를 구매합니다." and "&f" and "&e[+] &f혜택 : 전장 입장시 철검과 일정확률로 미러링 아이템 지급" and "&f" and "&c[!] &f가격 : &a10,000&f원"
set slot 12 of current inventory of player to light blue wool named "&c&l[ &f&l♞ Knight ♞ &c&l]" with lore "&f" and "&c&l[+] &f우클릭시 해당 칭호를 구매합니다." and "&f" and "&e[+] &f혜택 : 전장 입장시 철검과 랜덤박스 아이템 2개 지급" and "&f" and "&c[!] &f가격 : &a80,000&f원"
set slot 14 of current inventory of player to purple wool named "&5&l[ &f&l♕ Queen ♕ &5&l]" with lore "&f" and "&c&l[+] &f우클릭시 해당 칭호를 구매합니다." and "&f" and "&e[+] &f혜택 : 나이트랑 동일한 혜택과 다이아 신발 지급" and "&f" and "&c[!] &f가격 : &a300,000&f원"
set slot 16 of current inventory of player to red wool named "&4&l[ &f&l♔ King ♔ &4&l]" with lore "&f" and "&c&l[+] &f우클릭시 해당 칭호를 구매합니다." and "&f" and "&e[+] &f혜택 : 퀸이랑 동일한 혜택과 다이아 모자 + 활 지급" and "&f" and "&c[!] &f가격 : &a1,000,000&f원"
on inventory click:
if inventory name of current inventory of player contains "&d&l[ &f&l칭호 &d&l]":
cancel event
if name of clicked inventory contain "&d&l[ &f&l칭호 &d&l]":
if click slot is 10:
if player's money >= 10000: #플레이어 돈이 만원이상이라면
if {칭호::%uuid of player%} is not set:
remove 10000 from player's money
set {칭호::%uuid of player%} to "비숍" #해당 플레이어 배열은 비숍으로 설정한다
send "{@r} 해당 칭호를 구매하였습니다!"
send "{@r} &a혜택 &f: 전장 입장시 철검과 일정확률로 미러링 아이템 지급"
else:
send "{@r} 당신은 이미 해당 칭호를 구매하셨습니다"
else:
send "{@r} 당신은 %10000-player's money%원이 부족합니다!"
if click slot is 12:
if player's money >= 80000:
if {칭호::%uuid of player%} is "비숍":
remove 10000 from player's money
set {칭호::%uuid of player%} to "나이트"
send "{@r} 해당 칭호를 구매하였습니다!"
send "{@r} &a혜택 &f: 전장 입장시 철검과 랜덤박스 아이템 2개 지급"
else:
send "{@r} 칭호를 비숍->나이트->퀸->킹 순서로 구입해주세요"
else:
send "{@r} 당신은 %80000-player's money%원이 부족합니다!"
if click slot is 14:
if player's money >= 300000:
if {칭호::%uuid of player%} is "나이트":
remove 10000 from player's money
set {칭호::%uuid of player%} to "퀸"
send "{@r} 해당 칭호를 구매하였습니다!"
send "{@r} &a혜택 &f: 나이트랑 동일한 혜택과 다이아 신발 지급"
else:
send "{@r} 칭호를 비숍->나이트->퀸->킹 순서로 구입해주세요"
else:
send "{@r} 당신은 %300000-player's money%원이 부족합니다!"
if click slot is 16:
if player's money >= 1000000:
if {칭호::%uuid of player%} is "퀸":
remove 10000 from player's money
set {칭호::%uuid of player%} to "킹"
send "{@r} 해당 칭호를 구매하였습니다!"
send "{@r} &a혜택 &f: 퀸이랑 동일한 혜택과 다이아 모자 + 활 지급"
else:
send "{@r} 칭호를 비숍->나이트->퀸->킹 순서로 구입해주세요"
else:
send "{@r} 당신은 %1000000-player's money%원이 부족합니다!"
#칭호를 순서대로 구매할 수 있게 작성하였습니다
스크립트 파일을 새롭게 만들어주세요 ( 파일명 : 칭호 )
원래 서버내 칭호는 펄미션(PermissionsEx),럭펌(LuckPerms)을 많이 사용합니다
하지만 스크립트에 익숙해질겸 칭호도 스크립트로 구현했습니다
on chat: 구문에서
%player's display name% : %colored message% 이부분은 다 아실거라고 생각합니다
닉네임 : GM 이라면
서버내 GM : 안녕 이라고 채팅으로 확인할 수 있습니다
GM = player's display name
안녕 : colored message
상점에다가 npc를 생성후 칭호 명령어를 등록해주세요
명령어 등록은 밑에 주소를 참고해주세요
상점에 npc까지 등록이 끝났으면 각 칭호의 혜택부분들을 개발해봅시다
function iron_equip(p:player):
set {_a} to uuid of {_p} # 임시변수 a는 플레이어에 고유 식별자로 설정
if {칭호::%{_a}%} is "비숍": #해당 플레이어 칭호가 비숍이라면
give iron sword named "&b&l[ &f&l랜무서버 &b&l] &7&l철 검" to {_p}
chance of 1%: # 1퍼센트 확률로 밑에 아이템 지급
give iron bars named "&b&l[ &f&l미러링 &b&l]" with lore "&f" and "&e&l[&f&l설명&e&l] &f&l이 아이템을 소지 후 죽을시 상대방도 같이 죽습니다" to {_p}
else:#99퍼 확률로 밑에 stop 구문 실행
stop
if {칭호::%{_a}%} is "나이트":
give iron sword named "&b&l[ &f&l랜무서버 &b&l] &7&l철 검" to {_p}
give book named "&b&l[ &f&l무기 뽑기 &b&l]" with lore "&f" and "&c&l[+] &f우클릭시 랜덤으로 무기를 뽑습니다" to {_p}
if {칭호::%{_a}%} is "퀸":
give iron sword named "&b&l[ &f&l랜무서버 &b&l] &7&l철 검" to {_p}
give book named "&b&l[ &f&l무기 뽑기 &b&l]" with lore "&f" and "&c&l[+] &f우클릭시 랜덤으로 무기를 뽑습니다" to {_p}
if {칭호::%{_a}%} is "킹":
give iron sword named "&b&l[ &f&l랜무서버 &b&l] &7&l철 검" to {_p}
give book named "&b&l[ &f&l무기 뽑기 &b&l]" with lore "&f" and "&c&l[+] &f우클릭시 랜덤으로 무기를 뽑습니다" to {_p}
give bow to {_p}
give 64 of arrow to {_p}
if {_p}'s helmet is air:
if {칭호::%{_a}%} is "킹":
set {_p}'s helmet to diamond helmet named "&b&l[ &f&l랜무서버 &b&l] &b&l다이아 모자"
else:
set {_p}'s helmet to iron helmet named "&b&l[ &f&l랜무서버 &b&l] &7&l철 모자"
if {_p}'s chestplate is air:
set {_p}'s chestplate to iron chestplate named "&b&l[ &f&l랜무서버 &b&l] &7&l철 갑옷"
if {_p}'s leggings is air:
set {_p}'s leggings to iron leggings named "&b&l[ &f&l랜무서버 &b&l] &7&l철 레깅스"
if {_p}'s boots is air:
if {칭호::%{_a}%} is "퀸" or "킹":
set {_p}'s boots to diamond boots named "&b&l[ &f&l랜무서버 &b&l] &b&l다이아 부츠"
else:
set {_p}'s boots to iron boots named "&b&l[ &f&l랜무서버 &b&l] &7&l철 부츠"
on death:
loop all items in player's inventory:
if name of loop-item contains "&b&l[ &f&l랜무서버 &b&l] &7&l철" or "&b&l[ &f&l랜무서버 &b&l] &b&l다이아":
remove loop-item from drops
#contains 자체가 포함되다라는 뜻이여서 저렇게 2개만 설정해도 해당 문자열을 인식하여 바닥에 아이템이 삭제됩니다
메뉴 스크립트에서 iron_equip과 on death부분을 수정하시면 됩니다
on death of player:#플레이어가 죽을때
if victim is player: # 피해자가 플레이어라면
add 50 to attacker's money # 해당 공격자에게 돈 50원을 지급합니다
send "{@r} %victim%님을 죽여 50원을 벌었습니다" to attacker
추가로 사람을 죽이면 돈이 들어오는 구문을 추가해줍니다
이 구문은 돈과 관련이 있으니 돈 스크립트에 추가해주세요
여태까지 따라오시느라 고생하셨습니다
다음 시간이 랜덤무기전쟁 서버 마지막 강좌가 되겠습니다.