SHOW:
|
|
- or go back to the newest paste.
| 1 | # Конец разработки 25.06.19 | |
| 2 | # на | |
| 3 | # options: | |
| 4 | # file: /home/Airdrop/config.yml | |
| 5 | aliases: | |
| 6 | ordinary airdrop = minecraft:white_shulker_box {Damage: 1}
| |
| 7 | rare airdrop = minecraft:lime_shulker_box {Damage: 1}
| |
| 8 | very rare airdrop = minecraft:light_blue_shulker_box {Damage: 1}
| |
| 9 | mythic airdrop = minecraft:magenta_shulker_box {Damage: 1}
| |
| 10 | ||
| 11 | on join: | |
| 12 | delete {temp::%player%::deleteAll}
| |
| 13 | ||
| 14 | every 45 minutes: | |
| 15 | if size of all players >= 2: | |
| 16 | execute console command "/airdrop s" | |
| 17 | ||
| 18 | command airdrop [<text>] [<number>]: | |
| 19 | aliases: a, air | |
| 20 | trigger: | |
| 21 | if executor is op or console: | |
| 22 | # if arg 1 is "d" or "delete": | |
| 23 | # if {airdrop::data::blocks::*} is set:
| |
| 24 | # if {temp::%player%::deleteAll} is set:
| |
| 25 | # delete {airdrop::data::blocks::*}
| |
| 26 | # delete {temp::%player%::deleteAll}
| |
| 27 | # send "&a✔ &fВы успешно удалили все блоки!" | |
| 28 | # stop | |
| 29 | # else: | |
| 30 | # send "&e⚠ &fВы собираетесь удалить все блоки для аирдропа. Напишите эту команду ещё раз, что бы удалить!" | |
| 31 | # add 1 to {temp::%player%::deleteAll}
| |
| 32 | # wait 15 minutes | |
| 33 | # delete {temp::%player%::deleteAll}
| |
| 34 | # else: | |
| 35 | # send "&c⚠ &fМассив с блоками для аирдропа не был обнаружен." | |
| 36 | if arg 1 is "forcecancel" or "fc": | |
| 37 | if {worker::airdrop::*} is not set:
| |
| 38 | send "&e⚠ &fНи одного работающего Airdrop-Worker не было обнаруженого." | |
| 39 | stop | |
| 40 | else: | |
| 41 | delete {worker::airdrop::*}
| |
| 42 | send "&a✔ &fВы успешно удалили все аирдропы." | |
| 43 | stop | |
| 44 | if arg 1 is "c" or "cancel": | |
| 45 | if {worker::airdrop::*} is not set:
| |
| 46 | send "&e⚠ &fНи одного работающего Airdrop-Worker не было обнаруженого." | |
| 47 | stop | |
| 48 | else: | |
| 49 | # loop {worker::airdrop::*}:
| |
| 50 | loop {worker::airdrop::*}:
| |
| 51 | set {worker::airdrop::%loop-value%} to "canceled"
| |
| 52 | # delete {worker::airdrop::*}
| |
| 53 | # set {worker::airdrop::*} to "canceled"
| |
| 54 | send "&a✔ &fСигнал об отмене был успешно отправлен всем аирдропам." | |
| 55 | stop | |
| 56 | if arg 1 is "s" or "start": | |
| 57 | set {_location::1} to 1
| |
| 58 | set {_location::2} to 2
| |
| 59 | ||
| 60 | if {_location::1} or {_location::2} is not set:
| |
| 61 | send "&c⚠ &fКакая-то из позиций не была установленна." | |
| 62 | else: | |
| 63 | replace all " " in {_location::1} and {_location::2} with ""
| |
| 64 | set {_locations::1::*} to {_location::1} split at ","
| |
| 65 | set {_locations::2::*} to {_location::2} split at ","
| |
| 66 | ||
| 67 | # broadcast "&e⚐ &fРассчитываем позицию для аирдропа... Возможны небольшие лаги." | |
| 68 | set {_code} to random integer between 0 and 100000
| |
| 69 | ||
| 70 | # Аирдропы. Типы и бла-бла-бла | |
| 71 | # Расчитываем... | |
| 72 | # | |
| 73 | if arg-2 is set: | |
| 74 | set {_number} to "%arg-2%"
| |
| 75 | ||
| 76 | if {_number} contains "9":
| |
| 77 | set {_location} to location of player
| |
| 78 | ||
| 79 | replace all "9" in {_number} with ""
| |
| 80 | set {_number} to {_number} parsed as number
| |
| 81 | else: | |
| 82 | set {_number} to "%arg-2%" parsed as number
| |
| 83 | ||
| 84 | ||
| 85 | if {airdrop::data::blocks::*} is not set:
| |
| 86 | broadcast "&c⚠ &fБлижайший аирдроп был отменён потому, что в системе не был найдён список всех блоков." | |
| 87 | delete {worker::airdrop::%{_code}%}
| |
| 88 | stop | |
| 89 | set {_finding} to true
| |
| 90 | while {_finding} is true:
| |
| 91 | set {_location} to random element of {airdrop::data::blocks::*}
| |
| 92 | if {_location} is within border:
| |
| 93 | set {_finding} to false
| |
| 94 | else: | |
| 95 | set {_location} to random element of {airdrop::data::blocks::*}
| |
| 96 | ||
| 97 | - | if {_number} is 1:
|
| 97 | + | set {_airdrop::type} to "&7Обычный"
|
| 98 | - | set {_airdrop::type} to "&7Обычный"
|
| 98 | + | |
| 99 | - | else if {_number} is 2:
|
| 99 | + | |
| 100 | - | set {_airdrop::type} to "&aРедкий"
|
| 100 | + | |
| 101 | - | else if {_number} is 3:
|
| 101 | + | |
| 102 | - | set {_airdrop::type} to "&bОчень редкий"
|
| 102 | + | |
| 103 | - | else if {_number} is 4:
|
| 103 | + | |
| 104 | - | set {_airdrop::type} to "&dМифический"
|
| 104 | + | |
| 105 | if {_airdrop::type} is "&bОчень редкий":
| |
| 106 | - | set {_airdrop::type} to "&7Обычный"
|
| 106 | + | |
| 107 | if {_airdrop::type} is "&dМифический":
| |
| 108 | set {_airdrop::type::visualIcon} to "&d⚃"
| |
| 109 | ||
| 110 | - | else: |
| 110 | + | |
| 111 | - | chance of 75%: |
| 111 | + | |
| 112 | - | set {_airdrop::type} to "&7Обычный"
|
| 112 | + | |
| 113 | - | chance of 8%: |
| 113 | + | |
| 114 | - | if size of all players >= 3: |
| 114 | + | |
| 115 | - | set {_airdrop::type} to "&aРедкий"
|
| 115 | + | |
| 116 | - | chance of 3%: |
| 116 | + | |
| 117 | - | if size of all players >= 6: |
| 117 | + | |
| 118 | - | set {_airdrop::type} to "&bОчень редкий"
|
| 118 | + | |
| 119 | - | chance of 2%: |
| 119 | + | |
| 120 | - | if size of all players >= 12: |
| 120 | + | |
| 121 | - | set {_airdrop::type} to "&dМифический"
|
| 121 | + | |
| 122 | # add 45 minute to {_airdrop::times::*}
| |
| 123 | - | if {_airdrop::type} is not set:
|
| 123 | + | |
| 124 | - | stop |
| 124 | + | |
| 125 | set {_airdrop::time} to random element of {_airdrop::times::*}
| |
| 126 | set {_airdrop::time::visual} to "%{_airdrop::time}%"
| |
| 127 | ||
| 128 | replace all "and ", "," and "and" in {_airdrop::time::visual} with ""
| |
| 129 | replace all "seconds", "second" in {_airdrop::time::visual} with "с."
| |
| 130 | replace all "minutes", "minute" in {_airdrop::time::visual} with "м."
| |
| 131 | replace all "hours", "hour" in {_airdrop::time::visual} with "ч."
| |
| 132 | replace all "days", "day" in {_airdrop::time::visual} with "д."
| |
| 133 | ||
| 134 | replace all "s" in {_airdrop::time::visual} with ""
| |
| 135 | if {_airdrop::time::visual} contains ".":
| |
| 136 | set {_prep::*} to {_airdrop::time::visual} split at " "
| |
| 137 | loop {_prep::*}:
| |
| 138 | set {_tmp::loop-value} to loop-value
| |
| 139 | if {_tmp::loop-value} contains ".":
| |
| 140 | if {_tmp::loop-value} contains "д." or "ч." or "м." or "с.":
| |
| 141 | add 1 to {_nothing}
| |
| 142 | else: | |
| 143 | set {_prep2::*} to {_tmp::loop-value} split at "."
| |
| 144 | set {_erase} to {_prep2::2}
| |
| 145 | ||
| 146 | set {_erase} to ".%{_prep2::2}%"
| |
| 147 | replace all "%{_erase}%" in {_airdrop::time::visual} with ""
| |
| 148 | ||
| 149 | ||
| 150 | # Подготавливаем координатц аирдропа | Визуальный вид | |
| 151 | set {_location::visual::x} to x coordinate of {_location}
| |
| 152 | set {_location::visual::y} to "?"
| |
| 153 | set {_location::visual::z} to z coordinate of {_location}
| |
| 154 | ||
| 155 | set {_airdrop::coordinates::visual} to "%{_location::visual::x}%, %{_location::visual::y}%, %{_location::visual::z}%"
| |
| 156 | set {airdrop::%{_code}%::coordinates::visual} to {_airdrop::coordinates::visual}
| |
| 157 | ||
| 158 | broadcast "&e⚑ &fАирдроп вида %{_airdrop::type}% &fприземлится на координаты &e%{_airdrop::coordinates::visual}%&f через %{_airdrop::time::visual}%"
| |
| 159 | ||
| 160 | ||
| 161 | # Расчитываем позицию внизу... | |
| 162 | set {_found} to false
| |
| 163 | while {_found} is false:
| |
| 164 | if {_location::find} is not set:
| |
| 165 | set {_location::find} to {_location}
| |
| 166 | reduce y coordinate of {_location::find} by 1
| |
| 167 | if block at {_location::find} is not air:
| |
| 168 | set {_block} to block at {_location::find}
| |
| 169 | set {_found} to true
| |
| 170 | ||
| 171 | wait 1 tick | |
| 172 | ||
| 173 | loop all blocks in radius 10 around {_location::find}:
| |
| 174 | set {airdrop::%{_code}%::block::%location of loop-block%::breakable} to false
| |
| 175 | ||
| 176 | # Airdrop-Worker | |
| 177 | set {worker::airdrop::%{_code}%} to "%{_code}%"
| |
| 178 | while {worker::airdrop::%{_code}%} is set:
| |
| 179 | if {worker::airdrop::%{_code}%} is "canceled":
| |
| 180 | # broadcast "&c⚠ &fAirdrop-Worker был выключен. Ближайший аирдроп был отменён." | |
| 181 | stopEffect id "airdrop-portal" | |
| 182 | stopEffect id "airdrop-shulker" | |
| 183 | delete {worker::airdrop::%{_code}%}
| |
| 184 | delete {airdrop::%{_code}%::*}
| |
| 185 | stop | |
| 186 | # Анимация. | |
| 187 | ||
| 188 | if {_airdrop::time} <= 0 seconds:
| |
| 189 | ||
| 190 | if {_send} is not set:
| |
| 191 | broadcast "%{_airdrop::type::visualIcon}% %{_airdrop::type}% &fаирдроп уже летит! Берегитесь! &7(Координаты: %{_airdrop::coordinates::visual}%)"
| |
| 192 | set {_send} to true
| |
| 193 | ||
| 194 | if {_animated} is not set:
| |
| 195 | # Анимируем | |
| 196 | set {_animating} to true
| |
| 197 | while {_animating} is true:
| |
| 198 | if {_location::animating} is not set:
| |
| 199 | ||
| 200 | set {_location::animating} to {_location}
| |
| 201 | set {_x} to random integer between -80 and 80
| |
| 202 | add {_x} to x coordinate of {_location::animating}
| |
| 203 | ||
| 204 | set {_z} to random integer between -80 and 80
| |
| 205 | add {_z} to z coordinate of {_location::animating}
| |
| 206 | add 150 to y coordinate of {_location::animating}
| |
| 207 | ||
| 208 | set {_location::end} to {_location::find}
| |
| 209 | ||
| 210 | set {_locations::animation::*} to line({_location::animating}, {_location::end}, 60)
| |
| 211 | ||
| 212 | # Сама анимация. | |
| 213 | ||
| 214 | # Подготовка | |
| 215 | set {_s} to size of {_locations::animation::*}
| |
| 216 | set {_end} to {_locations::animation::%{_s}%}
| |
| 217 | # broadcast "END: %{_end}% || S: %{_s}%"
| |
| 218 | ||
| 219 | # delete {worker::airdrop}
| |
| 220 | # stop | |
| 221 | loop {_locations::animation::*}:
| |
| 222 | drawDot count 1, particle "explosionhuge", center loop-value, visibleRange 2526, keepFor 1 second | |
| 223 | # play sound | |
| 224 | play sound "entity.generic.burn" with volume 1.2 and pitch 2 at loop-value | |
| 225 | play sound "entity.generic.explode" with volume 1.2 and pitch 2 at loop-value | |
| 226 | ||
| 227 | ||
| 228 | # broadcast "Yeah" | |
| 229 | if "%loop-value%" contains "%{_end}%":
| |
| 230 | delete {_locations::animation::*}
| |
| 231 | set {_animating} to false
| |
| 232 | exit 1 loop | |
| 233 | # else: | |
| 234 | # broadcast "LOOP: %loop-value% || %{_end}%"
| |
| 235 | wait 1 tick | |
| 236 | # Идём дальше.. | |
| 237 | # reduce y coordinate of {_location::animating} by 1
| |
| 238 | ||
| 239 | set {_animated} to true
| |
| 240 | ||
| 241 | ||
| 242 | # Ставим шалкер с ресами. | |
| 243 | # set {_block} to block at {_location::find}
| |
| 244 | # if block at {_location::find} is not bedrock:
| |
| 245 | # set {_block::end} to block at {_location::find}
| |
| 246 | # set block at {_location::find} to bedrock
| |
| 247 | ||
| 248 | set {_location::shulker} to {_location::find}
| |
| 249 | add 1 to y coordinate of {_location::shulker}
| |
| 250 | ||
| 251 | if {_looted} is true:
| |
| 252 | set {_block} to block at {_location::shulker}
| |
| 253 | ||
| 254 | loop all items in {_block}'s inventory:
| |
| 255 | add 1 to {_exist}
| |
| 256 | if {_exist} is not set:
| |
| 257 | if {_setted} is not set:
| |
| 258 | set {_airdrop::wait::time} to 15 seconds
| |
| 259 | set {_setted} to true
| |
| 260 | # set {airdrop::%{_code}%::wait::time} to {_airdrop::wait::time}
| |
| 261 | delete {_exist}
| |
| 262 | else: | |
| 263 | set {_block::air} to block at {_location::shulker}
| |
| 264 | if {_airdrop::type} is "&7Обычный":
| |
| 265 | set {_block} to ordinary airdrop
| |
| 266 | ||
| 267 | # Готовим слоты | |
| 268 | add 0,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 to {_slots::*}
| |
| 269 | ||
| 270 | # if block at {_location::shulker} is not {_block}:
| |
| 271 | set block at {_location::shulker} to ordinary airdrop
| |
| 272 | ||
| 273 | set {_block} to block at {_location::shulker}
| |
| 274 | # Подготавливаем ресы для шалкера | |
| 275 | if {_looted} is not set:
| |
| 276 | chance of 100%: | |
| 277 | set {_rand} to random integer between 1 and 15
| |
| 278 | set {_item} to {_rand} of iron ingot
| |
| 279 | ||
| 280 | set {_slot} to random element of {_slots::*}
| |
| 281 | remove {_slot} from {_slots::*}
| |
| 282 | ||
| 283 | # broadcast "&cdebug &fЛут: %{_rand}% железа."
| |
| 284 | set slot {_slot} of {_block}'s inventory to {_item}
| |
| 285 | ||
| 286 | # Мини-анимация | |
| 287 | drawComplexSpiral particle "redstone", center {_location::shulker}, id "airdrop-shulker", rainbowMode false, clockwise true, scan true, radius 2, density 50, height 6, effectMod .05, start 0, visibleRange 30
| |
| 288 | reduce {_airdrop::wait::time} by 1 second
| |
| 289 | ||
| 290 | ||
| 291 | if {_airdrop::wait::time} <= 0 seconds:
| |
| 292 | delete block at {_location::shulker}
| |
| 293 | set block at {_location::find} to {_block::end}
| |
| 294 | set {worker::airdrop::%{_code}%} to "canceled"
| |
| 295 | ||
| 296 | if {_airdrop::wait::time} is not set:
| |
| 297 | set {_airdrop::wait::time} to 30 minutes
| |
| 298 | set {airdrop::%{_code}%::wait::time} to {_airdrop::wait::time}
| |
| 299 | set {airdrop::%{_code}%::time} to {_airdrop::time}
| |
| 300 | ||
| 301 | if {airdrop::%{_code}%::time} = 5 minutes:
| |
| 302 | ||
| 303 | #Force the advancement to be awarded | |
| 304 | loop all players: | |
| 305 | - | set {_item} to "%{_rand}% of iron ingot" parsed as item
|
| 305 | + | |
| 306 | if {_setting} is 404:
| |
| 307 | set {_setting} to 1
| |
| 308 | if {_setting} is 1:
| |
| 309 | send title "&e⚠ &fУведомление об Аирдропе!" with subtitle "&7Посмотри в таб на время! Ты чуть его не пропустил." to loop-player for 6 seconds with 1 second fade in and 1 second fade out | |
| 310 | play sound "block.note.pling" with volume 2 with pitch 2 at loop-player for loop-player | |
| 311 | ||
| 312 | if {_airdrop::time} >= 1 second:
| |
| 313 | - | if {_airdrop::type} is "&aРедкий":
|
| 313 | + | |
| 314 | set {data::effectlib::loc::location} to {_location}
| |
| 315 | execute console command "/effectLib wave loc" | |
| 316 | reduce {_airdrop::time} by 1 second
| |
| 317 | wait 1 second | |
| 318 | - | set block at {_location::shulker} to rare airdrop
|
| 318 | + | |
| 319 | ||
| 320 | ||
| 321 | # if arg 1 is "p" or "pos" or "position" or "setPosition" or "setpos" or "позицияБлять": | |
| 322 | # if arg 2 is not set: | |
| 323 | # send "&c⚠ &fВ втором аргументе вам нужно указать номер позиции. (1 или 2)" | |
| 324 | - | # ЛУТ РЕДКОГО АИРА |
| 324 | + | |
| 325 | # else: | |
| 326 | - | loop all items in {_block}'s inventory:
|
| 326 | + | |
| 327 | - | add 1 to {_exist}
|
| 327 | + | |
| 328 | - | if {_exist} is not set:
|
| 328 | + | |
| 329 | - | set slot {_slot} of {_block}'s inventory to {_item}
|
| 329 | + | |
| 330 | - | set {_looted} to true
|
| 330 | + | |
| 331 | # set {_locations::y} to y coordinate of {_location}
| |
| 332 | - | if {_airdrop::type} is "&bОчень редкий":
|
| 332 | + | |
| 333 | # | |
| 334 | # set skript-yaml value "locations.1" from "{@file}" to "%{_locations::x}%,%{_locations::y}%,%{_locations::z}%"
| |
| 335 | # save yaml "{@file}"
| |
| 336 | # load yaml "{@file}" as "{@file}"
| |
| 337 | - | set block at {_location::shulker} to very rare airdrop
|
| 337 | + | |
| 338 | # else if arg 2 is 2: | |
| 339 | # send title "&a✔ &fУспешно!" with subtitle "&fВы успешно установили &aвторую позицию&f." to player for 3 seconds | |
| 340 | # | |
| 341 | # set {_location} to player's location
| |
| 342 | # set {_locations::x} to x coordinate of {_location}
| |
| 343 | - | # ЛУТ ОЧЕНЬ РЕДКОГО АИРА |
| 343 | + | |
| 344 | # set {_locations::z} to z coordinate of {_location}
| |
| 345 | - | loop all items in {_block}'s inventory:
|
| 345 | + | |
| 346 | - | add 1 to {_exist}
|
| 346 | + | |
| 347 | - | if {_exist} is not set:
|
| 347 | + | |
| 348 | - | set slot 13 of {_block}'s inventory to stone named "&9☃ &fУпс, тут пусто."
|
| 348 | + | |
| 349 | - | set {_looted} to true
|
| 349 | + | |
| 350 | - | if {_airdrop::type} is "&dМифический":
|
| 350 | + | |
| 351 | # send "&c⚠ &fПозиция &c%arg 2% &fне была обнаружена. Используйте позиции 1 или 2." | |
| 352 | # stop | |
| 353 | else: | |
| 354 | send "&c⚠ &fУ вас нету доступа к этой команде." | |
| 355 | - | set block at {_location::shulker} to mythic airdrop
|
| 355 | + | |
| 356 | on block break: | |
| 357 | if {worker::airdrop::*} is set:
| |
| 358 | loop {worker::airdrop::*}:
| |
| 359 | if {airdrop::%loop-value%::block::%location of event-block%::breakable} is false:
| |
| 360 | cancel event | |
| 361 | - | # ЛУТ МИФИЧЕСКОГО АИРА |
| 361 | + | |
| 362 | on block place: | |
| 363 | - | loop all items in {_block}'s inventory:
|
| 363 | + | |
| 364 | - | add 1 to {_exist}
|
| 364 | + | |
| 365 | - | if {_exist} is not set:
|
| 365 | + | |
| 366 | - | set slot 13 of {_block}'s inventory to stone named "&9☃ &fУпс, тут пусто."
|
| 366 | + |