반응형
어느덧 10번째 강좌입니다
여태까지 따라오느라 고생 많으셨습니다
이제 절반만 더 구현하고 시스템 부분을 개발하겠습니다
소스 코드입니다
#랜덤카드
on damage of player:
if "%lore of attacker's tool%" contains "&e&l[&f&l설명&e&l] &f&l상대방 타격시 1~5데미지를 랜덤으로 줍니다":
set {_랜카} to random integer between 1 and 5 #임시변수에 1~5사이에 숫자를 랜덤으로 설정합니다
set damage to {_랜카}/2 #현재 데미지를 임시변수에서 랜덤으로 뽑힌 숫자에/2 만큼 데미지를 설정합니다
if {_랜카} is 5: #만약 임시변수에서 뽑힌 숫자가 5라면
send "{@r} 5 데미지가 들어갔습니다!" to attacker #공격자에게 문구를 보여줍니다
send "{@r} 랜덤카드의 5 데미지가 들어왔습니다" to victim #피해자에게도 문구를 보여줍니다
#기자
on rightclick on player: #상대 플레이어를 우클릭 할때
if "%lore of player's tool%" contains "&e&l[&f&l설명&e&l] &f&l상대방 우클릭시 인벤토리를 훔쳐봅니다":
make player run cmd "/invsee %clicked player%" as op #클릭한 상대 플레이어에 인벤토리르 봅니다 (invsee라는 에센셜 명령어를 이용했습니다)
#광전사
on rightclick:
if name of player's tool contains "&c&l[ &f&l광전사 &c&l]": #플레이어 도구에 이름이 해당 문자열이라면
if player's health <= 3: #플레이어 체력이 3칸이하 라면
set {_cooldown} to difference between {광전사.%player%} and now
if {_cooldown} is less than 2 minute:
set {_text} to "%difference between 2 minute and {_cooldown}%"
replace all " seconds" and " second" with "초" in {_text}
replace all " minute" with "분 " in {_text}
replace all " and " with "" in {_text}
send "{@r} &f&l재사용 까지 &e&l%{_text}% &f&l남았습니다."
exit
set {광전사.%player%} to now
apply speed 3 to player for 30 seconds #효과를 부여합니다
apply strength 2 to player for 30 seconds
apply resistance 1 to player for 30 seconds
send "{@r} 광전사 능력이 부여됩니다"
else:
send "{@r} 당신의 체력이 3칸 이하가 아닙니다" #3칸이하가 아니라면 해당 문구를 보여줍니다
랜덤카드와 기자 무기에 대해 추가 설명하겠습니다
첫번째 랜덤카드 무기에 대해 설명하겠습니다
랜덤카드 무기에서 왜 데미지를 반으로 나눴냐면
현재 플레이어 체력이 20칸입니다 여기서 반으로 안나눠주고 설정한다면 현재 데미지에서 x2배씩 들어갑니다
즉 1=2 , 5=10씩 들어갑니다
현재 체력이 20인데 5데미지가 10씩 들어가면 체력이 바로 10이됩니다
그래서 20체력에 맞추기위해 나누기 2를 해서 데미지를 절반으로 설정하였습니다
데미지를 나눴을때
( 2데미지는 하트한칸 , 1데미지는 반칸 )
두번째 기자 무기는 월드가드 때문에 상대방을 우클릭해도 인벤토리를 열어볼 수 가 없습니다
그래서 월드가드 명령어에 interact 상호작용 부분을 allow 해줍니다
(월드가드는 랜덤무기 전쟁 구축3 강좌를 참고하시면 됩니다)
그러면 정상적으로 인벤토리를 훔쳐볼 수 있습니다
이번 무기는 총류의 무기입니다
#로빈 후드
on rightclick:
if name of player's held item contains "&b&l[ &f&l로빈 후드 &b&l]":
if {arcount.%player%} >= 10: #arcount변수가 10 이상이라면
set {_cooldown} to difference between {로후.%player%} and now
if {_cooldown} is less than 30 seconds:
set {_text} to "%difference between 30 seconds and {_cooldown}%"
replace all " seconds" and " second" with "초" in {_text}
replace all " and " with " " in {_text}
send "{@r} &f&l재사용 까지 &e&l%{_text}% &f&l남았습니다."
exit
set {로후.%player%} to now
delete {arcount.%player%} #arcount변수를 제거합니다
else:
make the player shoot an arrow at speed 3 #플레이어가 화살을 3에 속도로 발사합니다
wait 1 ticks # 1 tick을 기다립니다 (20틱은 1초, 즉 1틱은 50밀리초(0.05초)입니다)
make the player shoot an arrow at speed 3 #또다시 플레이어가 화살을 3에 속도로 발사합니다
add 1 to {arcount.%player%} #arrcount 변수를 1 증가시킵니다
#플레이어가 스킬 사용시 화살이 2발씩 발사됩니다 총 10번씩 2발을 쏘면 쿨타임이 걸립니다
#데이다라
on rightclick:
if name of player's held item contains "&c&l[ &f&l데이다라 &c&l]":
if {dayda.%player%} >= 10:
set {_cooldown} to difference between {데다.%player%} and now
if {_cooldown} is less than 40 seconds:
set {_text} to "%difference between 40 seconds and {_cooldown}%"
replace all " seconds" and " second" with "초" in {_text}
replace all " and " with " " in {_text}
send "{@r} &f&l재사용 까지 &e&l%{_text}% &f&l남았습니다."
exit
set {데다.%player%} to now
delete {dayda.%player%}
else:
make the player shoot an tnt at speed 3 #tnt를 3에 속도로 발사합니다
wait 1 ticks
make the player shoot an tnt at speed 3
add 1 to {dayda.%player%}
#위에랑 동일하며 발사체를 tnt로 변경하였습니다
여기서 tick은 마인크래프트의 시간 단위입니다
틱 | 시간 |
1 tick | 0.05초 |
2 tick | 0.1초 |
3 tick | 0.15초 |
4 tick | 0.2초 |
5 tick | 0.25초 |
6 tick | 0.3초 |
7 tick | 0.35초 |
8 tick | 0.4초 |
9 tick | 0.45초 |
10 tick | 0.5초 |
20틱은 1초, 1틱 마다 50밀리초(0.05초) 입니다
데이다라 같은 무기는 tnt를 발사하므로
월드가드를 꼭 해주셔야 합니다
/rg f __global__ tnt deny
#불꽃주먹
on rightclick:
if name of player's held item contains "&c&l[ &f&l불꽃 주먹 &c&l]":
if {fireda.%player%} >= 10:
set {_cooldown} to difference between {불다.%player%} and now
if {_cooldown} is less than 30 seconds:
set {_text} to "%difference between 30 seconds and {_cooldown}%"
replace all " seconds" and " second" with "초" in {_text}
replace all " and " with " " in {_text}
send "{@r} &f&l재사용 까지 &e&l%{_text}% &f&l남았습니다."
exit
set {불다.%player%} to now
delete {fireda.%player%}
else:
make the player shoot an fireball at speed 3 #화염구를 속도 3으로 발사합니다
wait 1 ticks
make the player shoot an fireball at speed 3
add 1 to {fireda.%player%}
#이번에도 발사체만 화염구로 변경하였습니다
이것도 마찬가지로 월드가드를 해주셔야 합니다
/rg f __global__ ghast-fireball deny
21개째 무기를 완성하였습니다
반응형