이해도 | 1.16 |
---|---|
게임버전 (JE) | 페이퍼 |
게임버전 (BE) | SKchoke, Skellet, skript-reflect, skutilities, skrayfall, skquerry, tuske |
스크립트 애드온 | 2.5-beta2 |
options:
name: &f[&6낚시&f]
import:
java.lang.Math
java.text.DecimalFormat
java.lang.StringBuilder
java.io.BufferedReader
java.io.InputStreamReader
java.net.URL
java.util.UUID
java.lang.Integer as JavaInteger
java.util.Calendar
java.util.regex.Pattern as RegexPattern
java.util.regex.Matcher
java.lang.management.ManagementFactory
java.lang.management.RuntimeMXBean
java.io.File
org.bukkit.Bukkit
org.bukkit.map.MinecraftFont
org.bukkit.block.data.Ageable as BlockDataAgeable
org.bukkit.inventory.meta.EnchantmentStorageMeta
org.bukkit.block.data.Levelled
org.bukkit.Raid
org.bukkit.Statistic
org.bukkit.inventory.ItemFlag
org.bukkit.Art
org.bukkit.Rotation
org.bukkit.entity.Horse$Color as HorseColor
org.bukkit.entity.Horse$Style as HorseStyle
org.bukkit.event.player.PlayerFishEvent$State as FishingState
org.bukkit.event.player.PlayerLoginEvent$Result as LoginResult
org.bukkit.Raid$RaidStatus
org.bukkit.block.PistonMoveReaction as PistonReactions
org.bukkit.inventory.ShapelessRecipe
org.bukkit.inventory.ShapedRecipe
org.bukkit.inventory.CookingRecipe
org.bukkit.inventory.MerchantRecipe
org.bukkit.inventory.StonecuttingRecipe
org.bukkit.inventory.meta.Repairable
com.destroystokyo.paper.entity.Pathfinder$PathResult
ch.njol.skript.Skript
ch.njol.skript.util.Timespan
ch.njol.skript.lang.Effect
ch.njol.skript.lang.TriggerItem
ch.njol.skript.ScriptLoader
ch.njol.skript.lang.Condition
ch.njol.skript.classes.Changer$ChangeMode
ch.njol.skript.classes.Changer$ChangerUtils
ch.njol.skript.lang.Variable
ch.njol.skript.util.Utils
ch.njol.skript.log.ErrorQuality
ch.njol.skript.util.SkriptColor
ch.njol.skript.util.EnchantmentType
ch.njol.skript.variables.Variables
ch.njol.skript.ServerPlatform
com.google.common.base.Splitter
com.sk89q.worldedit.math.BlockVector3
com.sk89q.worldedit.regions.CuboidRegion
com.sk89q.worldedit.bukkit.BukkitAdapter
com.sk89q.worldedit.function.pattern.BlockPattern
com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats
com.sk89q.worldedit.bukkit.BukkitWorld
expression [[fishing] state] (0¦fishing|1¦caught fish|2¦caught entity|3¦in ground|4¦failed attempt|5¦reel in|6¦bite):
return type: object
get:
return FishingState.values()[parse mark]
expression [the] [event-]fish[ing] state:
return type: object
parse:
continue if ScriptLoader.isCurrentEvent(class "org.bukkit.event.player.PlayerFishEvent") = true
Skript.error("Cannot use 'fishing state' outside of the fish event" and ErrorQuality.SEMANTIC_ERROR)
get:
return FishingState.values()[FishingState.ordinal(event.getState())]
expression [the] [event-]caught (1¦(item|loot)|2¦entity):
return type: itemtype/entity
parse:
continue if ScriptLoader.isCurrentEvent(class "org.bukkit.event.player.PlayerFishEvent") = true
Skript.error("Cannot use 'caught item/entity' outside of the fish event" and ErrorQuality.SEMANTIC_ERROR)
get:
return (new ItemType(event.getCaught().getItemStack()) if parse mark != 2, else event.getCaught())
set itemtype:
try event.getCaught().setItemStack(random item of change value)
delete:
event.getCaught().remove()
expression [the] [event-][fish[ing]] hook:
return type: entity
parse:
continue if ScriptLoader.isCurrentEvent(class "org.bukkit.event.player.PlayerFishEvent") = true
Skript.error("Cannot use 'fishing hook' outside of the fish event" and ErrorQuality.SEMANTIC_ERROR)
get:
return event.getHook()
delete:
event.getHook().remove()
variables:
{number.%player%} = 0
{item.%player%} = ""
{length.%player%} = 0
{e} = ""
on fish:
#kill fishing hook
set {number.%player%} to a random integer between 1 and 20
set {_number2.%player%} to a random integer between 1 and 4
set {length.%player%} to a random number between 1 and 200
set {_date} to now
#send "asdasd22"
if {_number2.%player%} is 1:
set {item.%player%} to cod named "{@name} &f대구"
set 1st line of {item.%player%}'s lore to "{@name} &f대구"
else if {_number2.%player%} is 2:
set {item.%player%} to salmon named "{@name} &f연어"
set 1st line of {item.%player%}'s lore to "{@name} &f연어"
else if {_number2.%player%} is 3:
set {item.%player%} to pufferfish named "{@name} &f복어"
set 1st line of {item.%player%}'s lore to "{@name} &f복어"
else if {_number2.%player%} is 4:
set {item.%player%} to tropical fish named "{@name} &f열대어"
set 1st line of {item.%player%}'s lore to "{@name} &f열대어"
if {number.%player%} is 1 or 2 or 3 or 4:
set name of {item.%player%} to "&7F등급"
set 2st line of {item.%player%}'s lore to "&f%{length.%player%}%cm"
set 3st line of {item.%player%}'s lore to "&f잡은 날짜: %{_date}%"
set {e} to 1st line of {item.%player%}'s lore
else if {number.%player%} is 5 or 6 or 7 or 8:
set name of {item.%player%} to "&7E등급"
set 2st line of {item.%player%}'s lore to "&f%{length.%player%}%cm"
set 3st line of {item.%player%}'s lore to "&f잡은 날짜: %{_date}%"
set {e} to {item.%player%}
else if {number.%player%} is 9 or 10 or 11:
set name of {item.%player%} to "&7D등급"
set 2st line of {item.%player%}'s lore to "&f%{length.%player%}%cm"
set 3st line of {item.%player%}'s lore to "&f잡은 날짜: %{_date}%"
set {e} to {item.%player%}
else if {number.%player%} is 12 or 13 or 14:
set name of {item.%player%} to "&7C등급"
set 2st line of {item.%player%}'s lore to "&f%{length.%player%}%cm"
set 3st line of {item.%player%}'s lore to "&f잡은 날짜: %{_date}%"
set {e} to {item.%player%}
else if {number.%player%} is 15 or 16 or 17:
set name of {item.%player%} to "&6B등급"
set 2st line of {item.%player%}'s lore to "&f%{length.%player%}%cm"
set 3st line of {item.%player%}'s lore to "&f잡은 날짜: %{_date}%"
set {e} to {item.%player%}
else if {number.%player%} is 18 or 19:
set name of {item.%player%} to "&aA등급"
set 2st line of {item.%player%}'s lore to "&f%{length.%player%}%cm"
set 3st line of {item.%player%}'s lore to "&f잡은 날짜: %{_date}%"
set {e} to {item.%player%}
else if {number.%player%} is 20:
set name of {item.%player%} to "&c&lS등급"
set 2st line of {item.%player%}'s lore to "&f길이: %{length.%player%}%cm"
set 3st line of {item.%player%}'s lore to "&f잡은 날짜: %{_date}%"
set {e} to {item.%player%}
#broadcast "&a%player%&f님이 &c&lS등급 &f%{item.%player%}%을 낚았습니다. &f길이: %{length.%player%}%"
#give {e} to player
set caught item to {item.%player%}
#send "%{item.%player%}%, %{number.%player%}%, %{_number2.%player%}%, %{length.%player%}%cm"
#event.getCaught().setItemStack({item.%player%})
#event.getCaught().setItemStack({item.%player%})
# On Pick Up:
# if name of event-item contain "&f[&6낚시&f]":
# exit
# else:
# if name of event-item contain "&c&lS등급":
# set {e} to "%{e}%"
# if {e} contain "salmon":
# replace all "salmon named" and "&c&lS등급" with "&f[&6낚시&f] &c&lS등급 &f연어" in {e}
# else if {e} contain "cod":
# replace all "cod named" and "&c&lS등급" with "&f[&6낚시&f] &c&lS등급 &f대구" in {e}
# else if {e} contain "pufferfish":
# replace all "pufferfish named" and "&c&lS등급" with "&f[&6낚시&f] &c&lS등급 &f복어" in {e}
# else if {e} contain "tropical fish":
# replace all "tropical fish named" and "&c&lS등급" with "&f[&6낚시&f] &c&lS등급 &f열대어" in {e}
# broadcast "&f%{e}%&f를 &c%player%&f님이 낚았습니다. &f길이: %{length.%player%}%cm"
# set {number.%player%} to 0
# else if name of event-item contain "&aA등급":
# set {e} to "%{e}%"
# if {e} contain "salmon":
# replace all "salmon named" and "&aA등급" with "&f[&6낚시&f] &aA등급 &f연어" in {e}
# else if {e} contain "cod":
# replace all "cod named" and "&aA등급" with "&f[&6낚시&f] &aA등급 &f대구" in {e}
# else if {e} contain "pufferfish":
# replace all "pufferfish named" and "&aA등급" with "&f[&6낚시&f] &aA등급 &f복어" in {e}
# else if {e} contain "tropical fish":
# replace all "tropical fish named" and "&aA등급" with "&f[&6낚시&f] &aA등급 &f열대어" in {e}
# broadcast "&f%{e}%&f를 &c%player%&f님이 낚았습니다. &f길이: %{length.%player%}%cm"
# set {number.%player%} to 0
# else if name of event-item contain "&6B등급":
# set {e} to "%{e}%"
# if {e} contain "salmon":
# replace all "salmon named" and "&6B등급" with "&f[&6낚시&f] &6B등급 &f연어" in {e}
# else if {e} contain "cod":
# replace all "cod named" and "&6B등급" with "&f[&6낚시&f] &6B등급 &f대구" in {e}
# else if {e} contain "pufferfish":
# replace all "pufferfish named" and "&6B등급" with "&f[&6낚시&f] &6B등급 &f복어" in {e}
# else if {e} contain "tropical fish":
# replace all "tropical fish named" and "&6B등급" with "&f[&6낚시&f] &6B등급 &f열대어" in {e}
# broadcast "&f%{e}%&f를 &c%player%&f님이 낚았습니다. &f길이: %{length.%player%}%cm"
# set {number.%player%} to 0
# on fishing:
# event.getState() is State.CAUGHT_FISH!
# set {e} to event.getCaught()
# set {_i} to random element out of {fishingdrops::*}
# set item of {e} to {_i}
------------------------------------------------------------
스크립트 툴박스 받아서 해보고있는데 명확한 답이 안떠오르네요
물고기를 잡았을때 S~B 등급이면 전체 메세지로 뜨게 하고싶어요
sam_soon
2020.08.18물고기 이름이랑 로어 입력은 잘 되는데, 물고기 찌를 던졌을때랑 물고기가 물었을때, 물고기를 낚을때 스크립트가 모두 일어나서 전체 메세지로 보내면 세번 보내져서 답이 없어요 ㅜㅜ
스크립터브혼
2020.08.19구현하고자 하는 기능은 skript-reflect애드온 없이 가능합니다.
skellett 애드온의 [fishing state]를 참고하시길바랍니다.
Skript를 어느정도 다룰 수 있으시다면 Skellett, SkQuery, SkBee 이 세가지 애드온을 먼저 마스터 하시길 바랍니다.
이 세가지로 웬만한 기능들은 모두 구현 할 수 있습니다.
skript-mirror, skript-reflect는 Java에 대한 이해, Skript 내부코드에 대한 이해가 동반되어야 재대로 활용할 수 있습니다.
Java와 Skript 내부코드를 이해할 수준의 지식이 생기면 굳이 Skript를 쓰지 않을 겁니다.
hellow_mong
2021.02.02전체 말고 그럼 낚은건 나두고 찌를 던졌을때 막 필요없을때는 message 로 하는게 좋은거같네요