-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathparty.sk
360 lines (319 loc) · 18.9 KB
/
party.sk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
command /party [<text>] [<text>] [<text>]:
description: 파티를 생성하거나 관리합니다.
usage: /party create <파티 이름> | /party add <파티 이름> <유저 이름>
trigger:
#FIXME: 파티 데이터 전부 초기화 필요. / 테스트 용으로 한 게 많음
if arg 1 is "create":
if arg 2 is set:
#TODO: 전체 파티 리스트(서버)에 할당하는 기능, 만약 같은 이름의 파티가 있으면 생성 불가능
set {_party} to arg 2
set {_player} to uuid of player
if {party::%{_party}%} is not set:
set {party::%{_party}%} to {_party}
set {party::%{_party}%::owner} to {_player}
add {_player} to {party::%{_party}%::members::*}
add {_party} to {partylist::%{_player}%::*}
add {party::%{_party}%} to {YUMCpartylist::*}
add 1 to {partyIndex::%{_player}%}
message "파티 %{_party}%가 생성되었습니다!" to player
else:
message "%{_party}%의 이름을 가진 파티가 이미 존재합니다. 다른 이름으로 생성해주세요." to player
else:
message "사용법: /party create <파티 이름>" to player
else if arg 1 is "add":
if arg 3 is set:
set {_party} to arg 2
set {_player} to HangulToUUID(arg 3)
#TODO: 정상적으로 실행되는지 확인
if uuid of player is {party::%{_party}%::owner}:
if {_player} is set:
loop {party::%{_party}%::members::*}:
if {_player} is loop-value:
set {_addValue} to true
else:
set {_addValue} to false
if {_addValue} is false:
set {_username} to {_player} parsed as offline player
if {partyaccept::%{_username}%} is not set:
set {partyaccept::%{_username}%} to "none"
message "%{nick::%{_player}%}%(%{_username}%)에게 요청하였습니다. 상대방이 파티 초대를 수락할 때까지 기다려주세요." to player
message "%{nick::%uuid of player%}%(이)가 %{_party}%(으)로 파티 초대하였습니다. 수락 : /party accept, 거절 : /party deny" to {_username}
loop 10 times:
if {partyaccept::%{_username}%} is "true":
add {_player} to {party::%{_party}%::members::*}
add {_party} to {partylist::%{_player}%::*}
add 1 to {partyIndex::%{_player}%}
message "플레이어 %arg 3%(이)가 파티 %{_party}%에 추가되었습니다!" to player
message "당신은 파티 %{_party}%에 추가되었습니다!" to {_username}
delete {partyaccept::%{_username}%}
exit loop
else if {partyaccept::%{_username}%} is "false":
message "플레이어 %arg 3%(이)가 파티 초대를 거절하였습니다." to player
message "파티 초대를 거절하였습니다." to {_username}
delete {partyaccept::%{_username}%}
exit loop
wait 1 second
wait 2 ticks
if {partyaccept::%{_username}%} is true:
add {_player} to {party::%{_party}%::members::*}
add {_party} to {partylist::%{_player}%::*}
message "플레이어 %arg 3%(이)가 파티 %{_party}%에 추가되었습니다!" to player
message "당신은 파티 %{_party}%에 추가되었습니다!" to {_username}
delete {partyaccept::%{_username}%}
else if {partyaccept::%{_username}%} is false:
message "플레이어 %arg 3%(이)가 파티 초대를 거절하였습니다." to player
message "파티 초대를 거절하였습니다." to {_username}
delete {partyaccept::%{_username}%}
else if {partyaccept::%{_username}%} is set:
message "시간이 초과되었습니다." to player
message "시간이 초과되었습니다." to {_username}
delete {partyaccept::%{_username}%}
else:
message "이미 파티 초대가 진행중입니다!" to player
else:
message "해당 플레이어는 이미 파티에 소속되어 있습니다!" to player
else:
message "사용법: /party add <파티 이름> <유저 한글 이름>" to player
else:
message "당신은 파티장이 아닙니다!" to player
else:
message "사용법: /party add <파티 이름> <유저 한글 이름>" to player
else if arg 1 is "accept":
set {_player} to uuid of player
set {_username} to {_player} parsed as offline player
if {partyaccept::%{_username}%} is set:
set {partyaccept::%{_username}%} to "true"
else if arg 1 is "deny":
set {_player} to uuid of player
set {_username} to {_player} parsed as offline player
if {partyaccept::%{_username}%} is set:
set {partyaccept::%{_username}%} to "false"
#파티원 제거 /party expel [파티이름] [유저 한글 이름]
else if arg 1 is "expel":
if arg 3 is set:
set {_party} to arg 2
set {_player} to HangulToUUID(arg 3)
if uuid of player is {party::%{_party}%::owner}:
if {_player} is not {party::%{_party}%::owner}:
loop {party::%{_party}%::members::*}:
if {_player} is loop-value:
set {_key} to true
exit loop
else:
set {_key} to false
if {_key} is true:
remove {_player} from {party::%{_party}%::members::*}
remove {_party} from {partylist::%{_player}%::*}
message "%{nick::%{_player}%}%(이)가 파티에서 추방되었습니다." to player
else:
message "해당 플레이어는 파티에 존재하지 않습니다. 다시 입력해주세요." to player
else:
message "&e파티장&f을 추방할 수 없습니다!" to player
else:
message "당신은 파티장이 아닙니다!" to player
else:
message "사용법: /party expel <파티 이름> <유저 한글 이름>" to player
#파티 탈퇴: /party exit <파티 이름>
else if arg 1 is "exit":
if arg 2 is set:
set {_party} to arg 2
set {_player} to uuid of player
if {_player} is not {party::%{_party}%::owner}:
loop {party::%{_party}%::members::*}:
if {_player} is loop-value:
set {_key} to true
exit loop
else:
set {_key} to false
if {_key} is true:
remove {_player} from {party::%{_party}%::members::*}
remove {_party} from {partylist::%{_player}%::*}
message "파티 %{_party}%(을)를 탈퇴하였습니다." to player
else:
message "당신은 해당 파티에 존재하지 않습니다! 파티명을 다시 확인해주세요." to player
else:
message "당신은 &e파티장&f입니다. 파티장은 파티에서 나갈 수 없습니다." to player
else:
message "사용법: /party exit <파티 이름>" to player
#TODO: 파티 제거 /party delete [파티이름] //// 한 번 더 확인문구도 출력
#배열 제거는 어떻게 하는 거지?
else if arg 1 is "delete":
if arg 2 is set:
set {_party} to arg 2
set {_name} to uuid of player
if uuid of player is {party::%{_party}%::owner}:
if {resetValue::%player%} is not set:
message "&4(경고) 이 명령어는 파티를 지웁니다." to player
message "정말 지우겠습니까? (다음을 입력해주세요. /ptdelete Y)" to player
message "*만약 파티 삭제를 원치 않으시면 >> /ptdelete N << 를 입력해주십시오." to player
set {resetValue::%player%} to 1
set {resetValueParty::%player%} to {_party}
else if {resetValue::%player%} is set:
message "현재 파티 삭제가 진행중입니다! (해당 파티 : %{resetValueParty::%player%}%)" to player
message "삭제 진행 중지 : /ptdelete N" to player
else:
message "당신은 파티장이 아닙니다!" to player
else:
message "사용법: /party delete <파티 이름>" to player
#파티장 양도 /party handover [파티이름] [유저 한글 이름] /// 커맨드 실행 시 실행자가 파티장인지 확인해야 함
else if arg 1 is "handover":
if arg 3 is set:
# 만약에 파티 리스트 돌렸는데 자기 파티 아니면 안 되게
set {_party} to arg 2
set {_name} to HangulToUUID(arg 3)
loop {partylist::%{_name}%::*}:
if {_party} is loop-value:
set {_key} to true
exit loop
else:
set {_key} to false
if {_key} is true:
if uuid of player is {party::%{_party}%::owner}:
loop {party::%{_party}%::members::*}:
if {_name} is loop-value:
set {_key2} to true
exit loop
else:
set {_key2} to false
if {_key2} is true:
set {party::%{_party}%::owner} to {_name}
message "성공적으로 파티장 양도에 성공했습니다." to player
else:
message "파티에 존재하지 않는 유저입니다!."
else:
message "당신은 파티장이 아닙니다!" to player
else:
message "해당 파티의 소속이 아닙니다." to player
else:
message "사용법: /party handover <파티이름> <유저 한글 이름>" to player
else if arg 1 is "testdelList":
if player is op:
set {_party} to arg 2
set {_player} to HangulToUUID(arg 3)
subtract {_party} from {partylist::%{_player}%::*}
message "성공적" to player
else if arg 1 is "testmb":
if player is op:
#테스트 용 멤버 확인
set {_player} to HangulToUUID(arg 2)
set {_print} to ""
loop {partylist::%{_player}%::*}:
set {_print} to "%{_print}%%loop-value%, "
message "%{_print}%" to player
#message "%{party::}%
else if arg 1 is "testAllmb":
if player is op:
set {_party} to arg 2
message "%{party::%{_party}%::members::*}%" to player
loop {party::%{_party}%::members::*}:
set {_testMB} to loop-value
message "%{nick::%{_testMB}%}%" to player
else if arg 1 is "testowner":
if player is op:
set {_owner} to {party::%arg 2%::owner}
message "%{_owner}%" to player
message "%{nick::%{_owner}%}%" to player
else if arg 1 is "testdeletept":
if player is op:
set {_party} to arg 2
delete {party::%{_party}%}
delete {party::%{_party}%::members::*}
delete {party::%{_party}%::owner}
message "성공함" to player
else if arg 1 is "selectTestDelete":
if player is op:
set {_party} to arg 2
set {_player} to HangulToUUID(arg 3)
# 파티 초기화, 파티장 초기화, 파티 멤버 초기화
loop {party::%{_party}%::members::*}:
#FIXME: 리스트에서 제거가 안 됨. UUID 받은 거 맞나 모르겠음
#이유를 찾았다. 애초에 파티멤버가 초기화되어 있었네 ㅋㅋㅋㅋㅋㅋㅋㅋ 그러니까 제거가 안 됐지
set {_memberValue} to HangulToUUID(loop-value)
remove {_party} from {partylist::%{_memberValue}%::*}
remove loop-value from {party::%{_party}%::members::*}
remove {_party} from {partylist::%{_player}%::*}
delete {party::%{_party}%}
delete {party::%{_party}%::members::*}
delete {party::%{_party}%::owner}
message "성공적으로 제거되었습니다." to player
delete {resetValue::%player%}
delete {resetValueParty::%player%}
#csv 파일에 확인하고 변수명 그대로 복사해와서 arg 2에 넣으면 그 변수 제거
else if arg 1 is "opdel":
if player is op:
message "%{%arg 2%}%" to player
delete {%arg 2%}
#TODO: 파티 중복 이름 제거
else if arg 1 is "list":
set {_player} to uuid of player
#set {_party} to arg 2
set {_print} to ""
loop {partylist::%{_player}%::*}:
set {_print} to "%{_print}%%loop-value%, "
message "파티 리스트 : %{_print}%" to player
#message "%{nick::%{partylist::%{_party}%::owner}%}%"
else if arg 1 is "member":
if arg 2 is set:
set {_party} to arg 2
set {_name} to uuid of player
# 만약에 파티 리스트 돌렸는데 자기 파티 아니면 안 되게 하는 기능
loop {partylist::%{_name}%::*}:
if {_party} is loop-value:
set {_key} to true
exit loop
else:
set {_key} to false
if {_key} is true:
set {_party} to arg 2
set {_print} to ""
loop {party::%{_party}%::members::*}:
set {_name} to "%loop-value%"
set {_print} to "%{_print}%%{nick::%{_name}%}%, "
message "%{_party}%에 속한 멤버는 %{_print}%입니다."
else:
message "파티명을 잘못 입력했거나 자신이 속한 파티가 아닙니다!" to player
else:
message "사용법: /party member <파티 이름>" to player
else:
#파티생성, 파티원 추가, 파티원 제거, (파티제거), 파티 리스트, 파티 멤버
message "파티 생성: /party create <파티 이름>" to player
message "파티원 추가: /party add <파티 이름> <유저 한글 이름>" to player
message "파티원 추방: /party expel <파티 이름> <유저 한글 이름>" to player
message "파티 탈퇴: /party exit <파티 이름>" to player
message "파티장 양도: /party handover <파티 이름> <유저 한글 이름>" to player
message "파티 제거: /party delete <파티 이름>" to player
message "속한 파티 확인: /party list" to player
message "파티 멤버 확인: /party member <파티 이름>" to player
command /ptdelete [<text>]:
trigger:
if arg 1 is set:
if {resetValue::%player%} is set:
if arg 1 is "Y":
set {_party} to {resetValueParty::%player%}
set {_player} to uuid of player
# 파티 초기화, 파티장 초기화, 파티 멤버 초기화
loop {party::%{_party}%::members::*}:
set {_memberValue} to loop-value
remove {_party} from {partylist::%{_memberValue}%::*}
remove {_memberValue} from {party::%{_party}%::members::*}
remove loop-value from {party::%{_party}%::members::*}
remove {_party} from {partylist::%{_player}%::*}
delete {party::%{_party}%}
delete {party::%{_party}%::members::*}
delete {party::%{_party}%::owner}
message "성공적으로 제거되었습니다." to player
delete {resetValue::%player%}
delete {resetValueParty::%player%}
else if arg 1 is "N":
message "파티 삭제가 취소되었습니다." to player
delete {resetValue::%player%}
delete {resetValueParty::%player%}
# to = "=" / 정의
# set : 선언
# -> {} 안에있는거 무조건 어떤자료형이던 변수임
# -> formatting을 위해 message 같은 출력문에서 %사이에 넣어야댐
# -> 일반적으로 어떤 이벤트라던가 조건문을 활용할때는 % 필요없지
# Var::
# * : 배열 선언 (:: 이후)
# {a::{_b}::c::*}
# a : 변수명 b(위의 경우 UUID라는 고유값이 들어감. 지역변수 선언 및 정의), c : 하위 디렉토리 (계속 만들 수 있음)