Skip to content

Commit 84ac01f

Browse files
committed
직업 추가
- 직업 명령어 - 직업 기능 제어 함수
1 parent c379f03 commit 84ac01f

File tree

4 files changed

+260
-0
lines changed

4 files changed

+260
-0
lines changed
File renamed without changes.

stat-cmd.sk

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,13 @@ command /rpp.debug.FirstJoin:
9494
trigger:
9595
send "&e최초 접속 기록을 삭제하였습니다."
9696
rpp_RemoveFirstJoin(player)
97+
98+
#플레이어의 직업이 정상적으로 설정되어있는지 확인하고 비 정상적이라면 해당 플레이어의 직업을 기본 직업으로 초기화
99+
command /rpp.debug.UpdatePlayerJob:
100+
permission: rpp.command.debug
101+
trigger:
102+
send "&e모든 플레이어의 직업을 점검합니다. 자세한 결과는 콘솔을 확인해주세요"
103+
rpp_updateAllPlayersJob()
97104

98105
#========================================================================================================
99106

@@ -105,6 +112,14 @@ command /rpp.user.PlayerStat:
105112
set {_inv} to rpp_GetStatGUI(player)
106113
open {_inv} to player
107114

115+
#플레이어의 현재 직업을 확인합니다.
116+
command /rpp.user.PlayerJob:
117+
permission: rpp.command.user
118+
aliases: 직업, wlrdjq, job
119+
trigger:
120+
set {_job} to rpp_GetPlayerJob(arg 1)
121+
send "&f당신의 현재 직업은 &6%{_job}%&f입니다."
122+
108123
#========================================================================================================
109124

110125
#경험치북을 생성합니다.
@@ -115,6 +130,118 @@ command /rpp.util.expbook [<number>]:
115130
set line 1 of lore of {_book} to "%arg 1%"
116131
add {_book} to inventory of player
117132

133+
#직업을 추가합니다.
134+
command /rpp.util.addJob [<string>]:
135+
permission: rpp.command.util
136+
trigger:
137+
if arg 1 is not set:
138+
send "&c추가할 직업을 입력해주세요. /rpp.util.addJob <직업 이름>"
139+
stop
140+
141+
if rpp_IsJobRegisted(arg 1):
142+
send "&c이미 등록된 직업입니다."
143+
stop
144+
145+
rpp_AddJob(arg 1)
146+
send "&e직업 &6%arg 1%&e을(를) &a등록&e하였습니다."
147+
stop
148+
149+
#직업을 삭제합니다.
150+
command /rpp.util.removeJob [<string>]:
151+
permission: rpp.command.util
152+
trigger:
153+
if arg 1 is not set:
154+
send "&c제거할 직업을 입력해주세요. /rpp.util.removeJob <직업 이름>"
155+
stop
156+
157+
if rpp_IsJobRegisted(arg 1) is false:
158+
send "&c등록되지 않은 직업입니다."
159+
stop
160+
161+
rpp_RemoveJob(arg 1)
162+
send "&e직업 &6%arg 1%&e을(를) &c삭제&e하였습니다."
163+
stop
164+
165+
#직업 목록 출력
166+
command /rpp.util.jobList:
167+
permission: rpp.command.util
168+
trigger:
169+
set {_job::*} to rpp_GetJob()
170+
if {_job::*} is not set:
171+
send "&c등록된 직업이 존재하지 않습니다."
172+
stop
173+
174+
send " "
175+
send "&e직업 목록"
176+
loop {_job::*}:
177+
send " &e- %loop-value%"
178+
send " "
179+
180+
# 기본 직업 설정
181+
command /rpp.util.setDefaultJob [<string>]:
182+
permission: rpp.command.util
183+
trigger:
184+
if arg 1 is not set:
185+
send "&c기본 직업으로 설정할 직업을 입력해주세요"
186+
stop
187+
188+
if rpp_IsJobRegisted(arg 1) is false:
189+
send "&c등록되지 않은 직업입니다."
190+
stop
191+
192+
rpp_SetDefaultJob(arg 1)
193+
send "&e직업 &6%arg 1%&e을(를) 기본 직업으로 설정하였습니다."
194+
stop
195+
196+
# 플레이어의 직업 설정
197+
command /rpp.util.SetPlayerJob [<offlineplayer>] [<string>]:
198+
permission: rpp.command.util
199+
trigger:
200+
if arg 1 is not set:
201+
send "&c직업을 설정할 플레이어를 입력해주세요"
202+
stop
203+
204+
if arg 2 is not set:
205+
send "&c플레이어에게 설정할 직업을 입력해주세요"
206+
stop
207+
208+
if rpp_IsPlayed(arg 1) is false:
209+
send "&c존재하지 않는 플레이어입니다."
210+
stop
211+
212+
if rpp_IsJobRegisted(arg 2) is false:
213+
send "&c등록되지 않은 직업입니다."
214+
stop
215+
216+
rpp_SetPlayerJob(arg 1, arg 2)
217+
send "&e플레이어 &6%arg 1%&e의 직업을 &6%arg 2%&e로 설정하였습니다."
218+
stop
219+
220+
221+
# 플레이어의 직업 확인
222+
command /rpp.util.GetPlayerJob [<offlineplayer>]:
223+
permission: rpp.command.util
224+
trigger:
225+
if arg 1 is not set:
226+
send "&c직업을 확인할 플레이어를 입력해주세요"
227+
stop
228+
229+
if rpp_IsPlayed(arg 1) is false:
230+
send "&c존재하지 않는 플레이어입니다."
231+
stop
232+
233+
set {_job} to rpp_GetPlayerJob(arg 1)
234+
send "&e플레이어 &6%arg 1%&e의 직업은 &6%{_job}%&e입니다."
235+
236+
#직업 변경권 생성
237+
command /rpp.util.ChangeJobTicket [<string>]:
238+
permission: rpp.command.util
239+
trigger:
240+
give 1 of rpp_changeJobTicket(arg 1) to player
241+
send "&e아이템 지급 완료."
242+
stop
243+
244+
118245
#========================================================================================================
119246
command /rpp.emiji.ez:
120247
permission: rpp.command.emoji

stat-events.sk

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ on join:
3838

3939
#최초 접속 시 플레이어 스텟 초기화
4040
rpp_ResetPlayerStat(player)
41+
42+
#플레이어의 직업을 기본 직업으로 설정
43+
rpp_SetPlayerJobToDefault(player)
4144

4245
#=============================================================
4346

@@ -115,6 +118,17 @@ on right click:
115118
remove 1 from item amount of tool of player
116119
rpp_RunExp(player, {_exp}) # 경험치 지급
117120
rpp_UpdatePlayerStatPoint(player) # 스텟포인트 업데이트
121+
122+
#직업 변경권 사용
123+
else if name of {_tool} contains "직업 변경권":
124+
set {_name::*} to uncolored name of {_tool} split by ":"
125+
replace all " " with "" in {_name::2}
126+
if rpp_SetPlayerJob(player, {_name::2}):
127+
remove 1 from item amount of tool of player
128+
send "&e이제 당신은 &6%{_name::2}%&e입니다."
129+
stop
130+
send "&c전직할 수 없는 직업입니다."
131+
stop
118132

119133
#=============================================================
120134

stat-job.sk

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
2+
#직업 추가
3+
function rpp_AddJob(job:string):
4+
set {_id} to rpp_GetID_S()
5+
add {_job} to {%{_id}%.JobList::*}
6+
7+
#직업 삭제
8+
function rpp_RemoveJob(job:string):
9+
set {_id} to rpp_GetID_S()
10+
remove {_job} from {%{_id}%.JobList::*}
11+
12+
#직업이 등록되어있는지 확인
13+
function rpp_IsJobRegisted(job:string) :: boolean:
14+
set {_id} to rpp_GetID_S()
15+
if {%{_id}%.JobList::*} contains {_job}:
16+
return true
17+
return false
18+
19+
#직업 리스트를 반환
20+
function rpp_GetJob() :: strings:
21+
set {_id} to rpp_GetID_S()
22+
return {%{_id}%.JobList::*}
23+
24+
#서버의 기본 직업을 설정
25+
#서버에 처음 입장하는 플레이어의 직업으로 설정할 직업을 결정합니다.
26+
function rpp_SetDefaultJob(job:string):
27+
set {_id} to rpp_GetID_S()
28+
set {%{_id}%.DefaultJob} to {_job}
29+
30+
#서버의 기본 직업을 반환
31+
function rpp_GetDefaultJob() :: string:
32+
set {_id} to rpp_GetID_S()
33+
return {%{_id}%.DefaultJob}
34+
35+
#플레이어의 직업을 기본 직업으로 설정
36+
function rpp_SetPlayerJobToDefault(p:offlineplayer):
37+
set {_job} to rpp_GetDefaultJob()
38+
set {_id} to rpp_GetID()
39+
set {_uuid} to uuid of {_p}
40+
set {%{_id}%.PlayerJob::%{_uuid}%} to {_job}
41+
42+
#플레이어의 직업을 설정
43+
#서버에 존재하는 직업일 경우에만 직업 설정 가능
44+
#존재하지 않는 직업일 경우 직업 설정 실패
45+
#직업 설정 실패 시 false 값 반환
46+
#성공 시 true 반환
47+
function rpp_SetPlayerJob(p:offlineplayer, job:string) :: boolean:
48+
if rpp_IsJobRegisted({_job}) is false:
49+
return false
50+
set {_id} to rpp_GetID()
51+
set {_uuid} to uuid of {_p}
52+
set {%{_id}%.PlayerJob::%{_uuid}%} to {_job}
53+
return true
54+
55+
#플레이어의 직업을 반환
56+
function rpp_GetPlayerJob(p:offlineplayer) :: string:
57+
set {_id} to rpp_GetID()
58+
set {_uuid} to uuid of {_p}
59+
return {%{_id}%.PlayerJob::%{_uuid}%}
60+
61+
#직업이 정해져있지 않거나 직업 목록에 포함되어있지 않은 직업을 보유하고 있는 모든 플레이어의 직업을 기본 직업으로 업데이트
62+
function rpp_updateAllPlayersJob():
63+
set {_players::*} to rpp_GetPlayerList()
64+
set {_jobs::*} to rpp_GetJob()
65+
set {_defaultJob} to rpp_GetDefaultJob()
66+
67+
if {_defaultJob} is not set: # 서버의 기본 직업이 설정되어있지 않다면 종료
68+
send "&c서버의 기본 직업이 설정되어있지 않아 직업 업데이트가 불가능합니다." to console
69+
stop
70+
71+
loop {_players::*}: # 서버에 접속한적 있는 모든 플레이어의 목록을 반환
72+
set {_job} to rpp_GetPlayerJob(loop-value)
73+
74+
send "&e플레이어 &6%loop-value%&e의 직업을 점검합니다.." to console
75+
76+
if {_job} is not set: # 플레이어의 직업이 존재하지 않는다면 재설정
77+
rpp_SetPlayerJobToDefault(loop-value)
78+
send " &c- 기본 직업으로 재설정합니다." to console
79+
send " " to console
80+
add 1 to {_count}
81+
82+
else if {_jobs::*} do not contain {_job}: # 플레이어의 직업이 직업 목록에 존재하지 않는다면 재설정
83+
rpp_SetPlayerJobToDefault(loop-value)
84+
send " &c- 기본 직업으로 재설정합니다." to console
85+
send " " to console
86+
add 1 to {_count}
87+
88+
else:
89+
send " &a- 이상없음" to console
90+
send " " to console
91+
92+
set {_size} to size of {_players::*}
93+
send "&e플레이어 &6%{_size}%&e명 중 &6%{_count}%&e명의 직업을 기본 직업으로 설정하였습니다." to console
94+
95+
#직업 변경권 생성
96+
function rpp_changeJobTicket(job:string) :: item:
97+
return enchanted book named "&f직업 변경권 : &6%{_job}%" with lore "&f아이템을 손에 들고 우클릭하여 직업을 변경합니다."
98+
99+
100+
101+
102+
103+
104+
105+
106+
107+
108+
109+
110+
111+
112+
113+
114+
115+
116+
117+
118+
119+

0 commit comments

Comments
 (0)