Date: 2017/02/23 22:21:05 UTC-08:00
Type: Denizen Script
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
purchaseItemRegister:
type: command
name: purchase
aliases:
- p
description: 수매 관련 퀘스트 세팅을 위한 명령어.
permission: purchase.moderator
allowed help:
- determine <player.is_op||<context.server>>
usage:
- /purchase add [price] [quantity] - 들고있는 아이템을 등록, 가격과 초기 수매량을 지정
- /purchase del [price] [quantity]- 들고있는 아이템 목록에서 삭제
- /purchase addall [price] [quantity]- 인벤토리 아이템 전체 일괄 등록, 가격과 초기 수매량을 지정
- /purchase addall ranmod - 인벤토리 아이템 전체, 랜덤 가격,수매량으로 등록
- /purchase delall [price] - 인벤토리 아이템 전체 일괄 삭제
- /purchase display - 대상 위치에 구매중인 아이템 전시
- /purchase start - 강제로 구매 시작 이벤트 발생
- /purchase end - 강제로 구매 이벤트 종료
- /purchase reset - 셋업 초기화
script:
## 초기화
- if <server.has_files[<s@purchasequestdefaultsetup.yaml_key[configpath]>]> {
- narrate "yml loading..."
- yaml load:<s@purchasequestdefaultsetup.yaml_key[configpath]> id:purchase }
else {
## 디폴트 파일 생성
- run PurchaseQuestDefaultYmlCreation
}
## 아이템을 등록함 add
- if <context.args.get[1]||null> == add {
- if <player.item_in_hand> == i@air {
- narrate "<&6><player.item_in_hand>는 등록할 수 없습니다."
- queue clear
}
- define item <player.item_in_hand>
- if <context.args.get[2]||null> == null {
- narrate "가격을 정하지 않았습니다. 기본값(<yaml[purchase].read[default.price.initial]>)으로 저장됩니다."
- define price <yaml[purchase].read[default.price.initial]>
}
else {
- define price <context.args.get[2]>
}
- if <context.args.get[3]||null> == null {
- narrate "초기 수매량을 정하지 않았습니다. 기본값(<yaml[purchase].read[default.quantity.initial]>)으로 저장됩니다."
- define quantity <yaml[purchase].read[default.quantity.initial]>
}
else {
- define quantity <context.args.get[3]>
}
- ~run PurchaseQuestItemRegistor def:<def[item]>|<def[price]>|<def[quantity]> instantly
}
## 일괄등록
else if <context.args.get[1]||null> == addall && <context.args.get[2]||null> != random {
- narrate "<&6>인벤토리의 모든 아이템을 등록합니다."
- if <context.args.get[2]||null> == null {
- narrate "<&c>가격을 정하지 않았습니다. 기본값(<yaml[purchase].read[default.price.initial]>)으로 저장됩니다."
- define price <yaml[purchase].read[default.price.initial]>
}
else {
- define price <context.args.get[2]>
}
- if <context.args.get[3]||null> == null {
- narrate "<&c>초기 수매량을 정하지 않았습니다. 기본값(<yaml[purchase].read[default.quantity.initial]>)으로 저장됩니다."
- define quantity <yaml[purchase].read[default.quantity.initial]>
}
else {
- define quantity <context.args.get[3]>
}
- foreach <player.inventory.list_contents> {
- if <def[value]> != i@air {
- define item <def[value]>
- ~run PurchaseQuestItemRegistor def:<def[item]>|<def[price]>|<def[quantity]> instantly
}
}
}
## 일괄등록 랜덤화
else if <context.args.get[1]||null> == addall && <context.args.get[2]||null> == random {
- narrate "<&6>인벤토리의 모든 아이템을 등록합니다."
- narrate "<&c>가격과 수량은 랜덤하게 지정됩니다."
- foreach <player.inventory.list_contents> {
- define gauss <util.random.decimal[0].to[2]>
- define price <yaml[purchase].read[default.price.initial].mul[<def[gauss]>].round_to[2]>
- define quantity <yaml[purchase].read[default.quantity.initial].mul[<def[gauss]>].round>
- if <def[value]> != i@air {
- define item <def[value]>
- ~run PurchaseQuestItemRegistor def:<def[item]>|<def[price]>|<def[quantity]> instantly
}
}
}
## 물건 삭제
else if <context.args.get[1]||null> == del {
- if <yaml[purchase].read[purchase_list.<player.item_in_hand.material.name>]||null> != null {
- narrate "<player.item_in_hand.material.name>을 목록에서 삭제합니다."
- yaml id:purchase set purchase_list.<player.item_in_hand.material.name>:!
}
else {
- narrate "<player.item_in_hand.material.name> 그런 물품은 없습니다."
}
}
## 물건 일괄 삭제
else if <context.args.get[1]||null> == delall {
- narrate "<&6>인벤토리의 모든 아이템을 구매목록에서 삭제합니다."
- foreach <player.inventory.list_contents> {
- if <def[value]> != i@air {
- yaml id:purchase set purchase_list.<def[value].material.name>:!
- narrate "<def[value].material.name>삭제됨"
}
}
}
## 수매품목 디스플레이 위치 지정
else if <context.args.get[1]||null> == display {
- narrate "<player.location.cursor_on> 위치를 물건 전시 위치로 지정합니다."
- showfake m@diamond_block <player.location.cursor_on> d:2s
- yaml id:purchase set default.setting.display_location:<player.location.cursor_on>
}
## 헬프
else if <context.args.get[1]||null> == help {
- foreach <s@purchaseItemRegister.yaml_key[usage]> {
- narrate <def[value]>
}
}
## 리셋
else if <context.args.get[1]||null> == reset {
- ~run warehouse_Purchase_end instantly
- run PurchaseQuestDefaultYmlCreation
}
## 수매 이벤트 강제 시작
else if <context.args.get[1]||null> == start {
- ~run warehouse_Purchase_start instantly
}
## 수매 이벤트 강제 종료
else if <context.args.get[1]||null> == end {
- ~run warehouse_Purchase_end
}
## 예외처리
else if <context.args.get[1]||null> == null {
- foreach <s@purchaseItemRegister.yaml_key[usage]> {
- narrate <def[value]>
}
}
else {
- narrate "<red><context.args.get[1]>은 알 수 없는 요소입니다. 정확히 입력해 주십시오."
}
## yaml 저장하고 마침
- yaml savefile:<s@purchasequestdefaultsetup.yaml_key[configpath]> id:purchase
purchase_yaml_save:
type: task
speed: 1t
script:
- yaml savefile:<s@purchasequestdefaultsetup.yaml_key[configpath]> id:purchase
PurchaseQuestItemRegistor:
type: task
speed: 1t
definitions: item|price|quantity
script:
- yaml id:purchase set purchase_list.<def[item].material.name>.current.price:<def[price]>
- yaml id:purchase set purchase_list.<def[item].material.name>.name:<def[item].material.name>
- yaml id:purchase set purchase_list.<def[item].material.name>.current.quantity:<def[quantity].mul_int[10].div_int[10].round>
- yaml id:purchase set purchase_list.<def[item].material.name>.history.total.procurement:0
- yaml id:purchase set purchase_list.<def[item].material.name>.history.total.purchased_quantity:<el@0.round>
- yaml id:purchase set purchase_list.<def[item].material.name>.history.total.purchased_expenditure:0
- yaml id:purchase set purchase_list.<def[item].material.name>.history.average.price:<def[price]>
- yaml id:purchase set purchase_list.<def[item].material.name>.history.average.quantity:<def[quantity].round>
- narrate "<aqua><def[item].material.name>등록됨. 가격 <yaml[purchase].read[purchase_list.<def[item].material.name>.current.price]> 수량 <yaml[purchase].read[purchase_list.<def[item].material.name>.current.quantity]>"
PurchaseQuestDefaultYmlCreation:
type: task
speed: 1t
script:
## purchase yml 생성
- narrate "PurchaseQuest Install - yml 파일 생성"
- narrate "완료될 때까지 잠시 기다려 주십시오."
- yaml unload id:purchase
- yaml create id:purchase
- yaml id:purchase set default.setting.display_location:null
- yaml id:purchase set default.setting.npc:<player.target||null>
# - yaml id:purchase set purchase_list:!
- yaml id:purchase set default.setting.time_limit:50m
- yaml id:purchase set default.setting.minium_player:3
- yaml id:purchase set default.quantity.initial:2034
- yaml id:purchase set default.quantity.delta:0.1
- yaml id:purchase set default.quantity.max:20340
- yaml id:purchase set default.quantity.min:8
- yaml id:purchase set default.price.initial:10
- yaml id:purchase set default.price.delta:0.1
- yaml id:purchase set default.price.max:10000
- yaml id:purchase set default.price.min:0.01
- yaml id:purchase set default.price.option_ratio:0.1
- ~run PurchaseQuestItemRegistor def:i@rotten_flesh|<yaml[purchase].read[default.price.initial]>|<yaml[purchase].read[default.quantity.initial]> instantly
- yaml savefile:<s@purchasequestdefaultsetup.yaml_key[configpath]> id:purchase
- yaml unload id:purchase
- narrate "초기 파일 생성함, 썩은 고기가 기본적으로 등록됩니다. 최소한 하나 이상의 아이템이 리스트에 존재해야 합니다."
## seller list yml 생성