From a6a377857a63e608232371e965bbb0788d90c57e Mon Sep 17 00:00:00 2001 From: yaohunya <1763917516@qq.com> Date: Sat, 12 Jul 2025 00:00:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DemonLevelReward/DemonLevelReward.jar | Bin 0 -> 17580 bytes .../com/yaohun/levelreward/LevelReward.java | 26 +- .../com/yaohun/levelreward/config/Config.java | 70 ++++ .../yaohun/levelreward/data/PlayerData.java | 7 + .../yaohun/levelreward/data/RewardData.java | 62 ++++ .../com/yaohun/levelreward/gui/RewardGui.java | 36 +- .../yaohun/levelreward/util/MessageUtil.java | 41 +++ .../yaohun/levelreward/util/StackUtil.java | 58 ++++ .../yaohun/levelreward/util/ToolsUtil.java | 40 +++ src/main/resources/config.yml | 326 ++++++++++++++++++ 10 files changed, 660 insertions(+), 6 deletions(-) create mode 100644 out/artifacts/DemonLevelReward/DemonLevelReward.jar create mode 100644 src/main/java/com/yaohun/levelreward/config/Config.java create mode 100644 src/main/java/com/yaohun/levelreward/data/RewardData.java create mode 100644 src/main/java/com/yaohun/levelreward/util/MessageUtil.java create mode 100644 src/main/java/com/yaohun/levelreward/util/StackUtil.java create mode 100644 src/main/java/com/yaohun/levelreward/util/ToolsUtil.java create mode 100644 src/main/resources/config.yml diff --git a/out/artifacts/DemonLevelReward/DemonLevelReward.jar b/out/artifacts/DemonLevelReward/DemonLevelReward.jar new file mode 100644 index 0000000000000000000000000000000000000000..fe1810390f4d0c9fa0397f1c2b3bbecb2c320259 GIT binary patch literal 17580 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 x{XbayF=G literal 0 HcmV?d00001 diff --git a/src/main/java/com/yaohun/levelreward/LevelReward.java b/src/main/java/com/yaohun/levelreward/LevelReward.java index 0cd3294..7499a7f 100644 --- a/src/main/java/com/yaohun/levelreward/LevelReward.java +++ b/src/main/java/com/yaohun/levelreward/LevelReward.java @@ -1,8 +1,14 @@ package com.yaohun.levelreward; +import com.yaohun.levelreward.config.Config; +import com.yaohun.levelreward.data.PlayerData; +import com.yaohun.levelreward.gui.RewardGui; import com.yaohun.levelreward.manage.PlayerManager; +import com.yaohun.levelreward.util.ToolsUtil; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.java.JavaPlugin; public class LevelReward extends JavaPlugin { @@ -14,6 +20,7 @@ public class LevelReward extends JavaPlugin { @Override public void onEnable() { instance = this; + Config.reloadConfig(this); playerManager = new PlayerManager(); } @@ -25,6 +32,7 @@ public class LevelReward extends JavaPlugin { @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if("open".equalsIgnoreCase(args[0])){ + RewardGui.OpenGui((Player) sender); return true; } if(!sender.isOp()) { @@ -33,16 +41,24 @@ public class LevelReward extends JavaPlugin { if (args.length == 0) { sender.sendMessage(""); sender.sendMessage("§e------- ======= §6等级成长礼包 §e======= -------"); - sender.sendMessage("§2/"+label+" add §e[方案] §2<玩家> §f- §2增加礼包"); - sender.sendMessage("§2/"+label+" reset §e[方案] §2<玩家> §f- §2重置礼包"); - sender.sendMessage("§2/"+label+" show §e[方案] §f- §2查看礼包内容"); - sender.sendMessage("§2/"+label+" edit §e[方案] §f- §2设置礼包内容"); - sender.sendMessage("§2/"+label+" list §f- §2查看礼包方案"); + sender.sendMessage("§2/"+label+" open §f- §2打开界面"); + sender.sendMessage("§2/"+label+" skull §f- §2查看头颅码"); sender.sendMessage("§2/"+label+" reload §f- §2重载配置文件"); sender.sendMessage("§e------- ======= §6等级成长礼包 §e======= -------"); sender.sendMessage(""); return true; } + if("skull".equalsIgnoreCase(args[0])){ + Player player = (Player) sender; + ItemStack stack = player.getInventory().getItemInMainHand(); + sender.sendMessage("[查询头颅] Base64ID: "+ToolsUtil.getHandSkullBase64(stack)); + return true; + } + if("reload".equalsIgnoreCase(args[0])){ + Config.reloadConfig(this); + sender.sendMessage("[等级礼包] 配置文件已重载."); + return true; + } return false; } diff --git a/src/main/java/com/yaohun/levelreward/config/Config.java b/src/main/java/com/yaohun/levelreward/config/Config.java new file mode 100644 index 0000000..224e5b2 --- /dev/null +++ b/src/main/java/com/yaohun/levelreward/config/Config.java @@ -0,0 +1,70 @@ +package com.yaohun.levelreward.config; + +import com.yaohun.levelreward.LevelReward; +import com.yaohun.levelreward.data.RewardData; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonPlugin.data.GuiItemData; +import me.Demon.DemonPlugin.data.LangData; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.inventory.ItemStack; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class Config { + + public static LangData langData; + private static HashMap guiItemDataMap = new HashMap<>(); + private static List rewardDataList = new ArrayList<>(); + + public static void reloadConfig(LevelReward plugin) { + // 调用了DemonAPI中的LangData + // 需要在AuLangs目录中创建一个 LevelReward.yml 文件存语言配置 + langData = DemonAPI.getLangData("LevelReward"); + plugin.reloadConfig(); + plugin.saveConfig(); + FileConfiguration config = plugin.getConfig(); + loadGuiItemData(config); + loadRewardSettings(config); + } + + private static void loadRewardSettings(FileConfiguration config){ + rewardDataList.clear(); + ConfigurationSection section = config.getConfigurationSection("RewardSettings"); + if(section == null) {return;} + for (String rewardKey : section.getKeys(false)){ + rewardDataList.add(new RewardData(rewardKey,section)); + } + } + + private static void loadGuiItemData(FileConfiguration configuration){ + guiItemDataMap.clear(); + ConfigurationSection section = configuration.getConfigurationSection("GuiItemData"); + if(section == null){return;} + for (String itemKey : section.getKeys(false)){ + guiItemDataMap.put(itemKey,new GuiItemData(itemKey,section)); + } + } + + public static ItemStack getItemStack(String itemKey) { + if(guiItemDataMap.containsKey(itemKey)){ + return guiItemDataMap.get(itemKey).getItemStack().clone(); + } + return DemonAPI.getErrItems(); + } + + public static List getRewardDataList() { + return rewardDataList; + } + + public static RewardData getRewardData(String rewardKey) { + for (RewardData rewardData : rewardDataList){ + if(rewardData.getRewardKey().equals(rewardKey)){ + return rewardData; + } + } + return null; + } +} diff --git a/src/main/java/com/yaohun/levelreward/data/PlayerData.java b/src/main/java/com/yaohun/levelreward/data/PlayerData.java index 2da7a26..c57be5e 100644 --- a/src/main/java/com/yaohun/levelreward/data/PlayerData.java +++ b/src/main/java/com/yaohun/levelreward/data/PlayerData.java @@ -19,6 +19,8 @@ public class PlayerData { private final File file; private final FileConfiguration configuration; + private final String playerName; + /** * 存储玩家奖励的列表 */ @@ -30,6 +32,7 @@ public class PlayerData { * @param playerName 玩家名称,用于标识和加载对应的玩家数据文件 */ public PlayerData(String playerName){ + this.playerName = playerName; // 初始化文件路径 this.file = new File("plugins/AuData/LevelReward", playerName + ".yml"); // 检查并创建玩家数据文件的父目录 @@ -43,6 +46,10 @@ public class PlayerData { this.rewardList = this.configuration.getStringList("RewardList"); } + public String getPlayerName() { + return playerName; + } + /** * 保存玩家数据到文件 * 将玩家的奖励列表保存到配置文件中,并写入磁盘 diff --git a/src/main/java/com/yaohun/levelreward/data/RewardData.java b/src/main/java/com/yaohun/levelreward/data/RewardData.java new file mode 100644 index 0000000..7dcfc2c --- /dev/null +++ b/src/main/java/com/yaohun/levelreward/data/RewardData.java @@ -0,0 +1,62 @@ +package com.yaohun.levelreward.data; + +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.entity.Player; + +import java.util.List; + +public class RewardData { + + private String rewardKey; + + private int slot; + + private String base64; + + private int needLevel; + + private List rewardList; + + private List commandList; + + public RewardData(String rewardKey, ConfigurationSection section){ + this.rewardKey = rewardKey; + this.slot = section.getInt(rewardKey+".slot"); + this.needLevel = section.getInt(rewardKey+".level"); + this.base64 = section.getString(rewardKey+".base64","default"); + this.rewardList = section.getStringList(rewardKey+".reward"); + this.commandList = section.getStringList(rewardKey+".commands"); + } + + public String getRewardKey() { + return rewardKey; + } + + public int getSlot() { + return slot; + } + + public String getBase64() { + return base64; + } + + public List getRewardList() { + return rewardList; + } + + public int getNeedLevel() { + return needLevel; + } + + public void carryOutCommands(Player player){ + String playerName = player.getName(); + for(String command : commandList) { + if (command.contains("msg:")) { + player.sendMessage(command.replace("msg:", "")); + } else { + command = command.replace("%p%", playerName); + player.performCommand(command); + } + } + } +} diff --git a/src/main/java/com/yaohun/levelreward/gui/RewardGui.java b/src/main/java/com/yaohun/levelreward/gui/RewardGui.java index 7e8e97d..b5848a0 100644 --- a/src/main/java/com/yaohun/levelreward/gui/RewardGui.java +++ b/src/main/java/com/yaohun/levelreward/gui/RewardGui.java @@ -1,7 +1,41 @@ package com.yaohun.levelreward.gui; +import com.yaohun.levelreward.config.Config; +import com.yaohun.levelreward.data.RewardData; +import com.yaohun.levelreward.util.MessageUtil; +import com.yaohun.levelreward.util.StackUtil; +import org.bukkit.Bukkit; +import org.bukkit.Sound; +import org.bukkit.entity.Player; import org.bukkit.event.Listener; +import org.bukkit.inventory.Inventory; -public class RewardGui implements Listener { +public class RewardGui { + private static String invTitle = Config.langData.getMessage("invTitle"); + + public static boolean isTimeOut60Day(Player player){ + long firstPlayed = player.getFirstPlayed(); + if(firstPlayed == 0){ + return false; + } + long nowTime = System.currentTimeMillis(); + long days = (nowTime - firstPlayed) / (1000 * 60 * 60 * 24); + if(days < 60){ + return false; + } + return true; + } + public static void OpenGui(Player player) { + // 获取玩家入服时间 并判断是否已超过60天 + if(isTimeOut60Day(player)){ + MessageUtil.sendMessage(player,"timeOutDay", Sound.ENTITY_BLAZE_DEATH); + return; + } + Inventory inv = Bukkit.createInventory(null,27, invTitle); + for (RewardData rewardData : Config.getRewardDataList()){ + inv.setItem(rewardData.getSlot(), StackUtil.getGiftPack(player, rewardData)); + } + player.openInventory(inv); + } } diff --git a/src/main/java/com/yaohun/levelreward/util/MessageUtil.java b/src/main/java/com/yaohun/levelreward/util/MessageUtil.java new file mode 100644 index 0000000..18ec5de --- /dev/null +++ b/src/main/java/com/yaohun/levelreward/util/MessageUtil.java @@ -0,0 +1,41 @@ +package com.yaohun.levelreward.util; + +import com.yaohun.levelreward.config.Config; +import org.bukkit.Sound; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class MessageUtil { + + public static void sendMessage(CommandSender sender, String message) { + if(sender instanceof Player){ + Player player = (Player) sender; + player.sendMessage(message); + } else { + sender.sendMessage(message); + } + } + + public static void sendMessage(CommandSender sender, String message, Sound sound) { + if(sender instanceof Player){ + Player player = (Player) sender; + player.sendMessage(message); + player.playSound(player.getLocation(), sound, 0.5f, 1.2f); + } else { + sender.sendMessage(message); + } + } + + public static void sendMessageKey(CommandSender sender, String langKey, Sound sound) { + String message = Config.langData.getMessage(langKey); + if(sender instanceof Player){ + Player player = (Player) sender; + player.sendMessage(message); + player.playSound(player.getLocation(), sound, 0.5f, 1.2f); + } else { + sender.sendMessage(message); + } + } + + +} diff --git a/src/main/java/com/yaohun/levelreward/util/StackUtil.java b/src/main/java/com/yaohun/levelreward/util/StackUtil.java new file mode 100644 index 0000000..2a9acb6 --- /dev/null +++ b/src/main/java/com/yaohun/levelreward/util/StackUtil.java @@ -0,0 +1,58 @@ +package com.yaohun.levelreward.util; + +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; +import com.yaohun.levelreward.config.Config; +import com.yaohun.levelreward.data.PlayerData; +import com.yaohun.levelreward.data.RewardData; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.SkullMeta; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class StackUtil { + + public static ItemStack getGiftPack(Player player, RewardData rewardData){ + ItemStack stack = Config.getItemStack("LevelGiftPack"); + if(rewardData.getRewardKey().contains("kejin")){ + stack = Config.getItemStack("PayGiftPack"); + } + stack.setType(Material.SKULL_ITEM); + stack.setDurability((short) 3); + SkullMeta meta = (SkullMeta) stack.getItemMeta(); + GameProfile profile = new GameProfile(UUID.randomUUID(), null); + String base64 = rewardData.getBase64(); + profile.getProperties().put("textures", new Property("textures", base64)); + try { + Field profileField = meta.getClass().getDeclaredField("profile"); + profileField.setAccessible(true); + profileField.set(meta, profile); + } catch (Exception e) { + e.printStackTrace(); + } + String itemName = meta.getDisplayName(); + meta.setDisplayName(itemName.replace("{level}",String.valueOf(rewardData.getNeedLevel()))); + List lore = meta.getLore(); + List newLore = new ArrayList<>(); + for (String line : lore) { + if (line.contains("{name}")) { + newLore.add(line.replace("{name}", player.getName())); + } else if (line.contains("{player_level}")) { + newLore.add(line.replace("{player_level}", String.valueOf(player.getLevel()))); + } else if (line.contains("{rewardLore}")) { + newLore.addAll(rewardData.getRewardList()); + } else { + newLore.add(line); + } + } + meta.setLore(newLore); + stack.setItemMeta(meta); + return stack; + } +} diff --git a/src/main/java/com/yaohun/levelreward/util/ToolsUtil.java b/src/main/java/com/yaohun/levelreward/util/ToolsUtil.java new file mode 100644 index 0000000..1657a78 --- /dev/null +++ b/src/main/java/com/yaohun/levelreward/util/ToolsUtil.java @@ -0,0 +1,40 @@ +package com.yaohun.levelreward.util; + +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; +import me.Demon.DemonPlugin.DemonAPI; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import java.lang.reflect.Field; + +public class ToolsUtil { + + public static String getHandSkullBase64(ItemStack stack){ + if(DemonAPI.itemIsNull(stack) || stack.getType() != Material.SKULL_ITEM){ + return "无"; + } + if(!(stack.getItemMeta() instanceof SkullMeta)){ + return "无"; + } + SkullMeta meta = (SkullMeta) stack.getItemMeta(); + try { + Field profileField = meta.getClass().getDeclaredField("profile"); + profileField.setAccessible(true); + GameProfile profile = (GameProfile) profileField.get(meta); + + if (profile == null) { + return "无"; + } + for (Property prop : profile.getProperties().get("textures")) { + String base64 = prop.getValue(); + System.out.println("[HeadBase64] 读取头颅皮肤:\n" + base64); + return base64; + } + } catch (Exception e) { + e.printStackTrace(); + } + return "无"; + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..1057e04 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,326 @@ +GuiItemData: + LevelGiftPack: + Material: SKULL_ITEM + DisplayName: "§e萌新助力宝箱 §7[§b{level}§7]" + Lore: + - "§A§L✔§7点击领取奖励" + - "§A§L★§7玩家名称: §d{name}" + - "§c§l★§7当前等级: §dLv.{player_level}" + - "§7§l★§7奖励如下:" + - "§7---------------------" + - "{rewardLore}" + - "§7---------------------" + - "§6PS:领取前请确认背包空间是否充足!" + PayGiftPack: + Material: SKULL_ITEM + DisplayName: "§e土豪助力宝箱 §7[§b80§7]" + Lore: + - "§A§L✔§7点击领取奖励" + - "§A§L★§7玩家名称: §d{name}" + - "§c§l★§7累计充值: §b1288软妹币" + - "§e§l★§7当前累计: §b{coins}软妹币" + - "§7§l★§7奖励如下:" + - "§7---------------------" + - "{rewardLore}" + - "§7---------------------" + - "§6PS:领取前请确认背包空间是否充足!" +RewardSettings: + expup_15: + slot: 10 + level: 15 + base64: xxxxxxxxxxxxxxxxxxxxxxxxx + reward: + - §71. §7§l★§71 §65000金币 + - §72. §7§l★§75 §e百年灵环 + - §73. §7§l★§73 §d千年灵环 + - §74. §7§l★§72 §e学院的认可 + - §75. §7§l★§732 §f[§6食物§f]§d粉汤圆 + - §76. §7§l★§73 §f[§6碎片§f]§e暴食娃娃 + - §77. §7§l★§75 §f[§a繁花§f]§e灵环抽奖钥匙 + commands: + - eco give %p% 5000 + - ditem give 学院的认可 2 %p% + - ditem give 食物_粉汤圆 32 %p% + - ditem give 暴食娃娃碎片 3 %p% + - dgroupcmd %p% 随机百年灵环 5 + - dgroupcmd %p% 随机千年灵环 3 + - ditem give 魂环抽奖箱钥匙 5 %p% + - bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.15]&a萌新助力礼包 + - msg:&f[&c消息&f] &a成功领取 &e&lLv.15 &a萌新助力礼包。 + expup_25: + slot: 11 + level: 25 + base64: xxxxxxxxxxxxxxxxxxxxxxxxx + reward: + - §71. §7§l★§71 §610000金币 + - §72. §7§l★§74 §d千年灵环 + - §73. §7§l★§72 §7万年灵环 + - §74. §7§l★§75 §e学院的认可 + - §75. §7§l★§71 §2暗器·蛇蛊毒镖 + - §76. §7§l★§732 §f[§6食物§f]§d粉汤圆′ + - §77. §7§l★§71 §d经验+200%§f(持续30分钟) + - §78. §7§l★§73 §f[§6碎片§f]§e暴食娃娃 + - §79. §7§l★§75 §f[§a繁花§f]§e灵环抽奖钥匙 + commands: + - eco give %p% 10000 + - ditem give 学院的认可 5 %p% + - auforge 暗器_蛇蛊毒镖 %p% + - ditem give 食物_粉汤圆 32 %p% + - ditem give 暴食娃娃碎片 3 %p% + - dpotion add %p% 200 30 + - dgroupcmd %p% 随机千年灵环 4 + - dgroupcmd %p% 随机万年灵环 2 + - ditem give 魂环抽奖箱钥匙 5 %p% + - bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.25]&a萌新助力礼包 + - msg:&f[&c消息&f] &a成功领取 &e&lLv.25 &a萌新助力礼包。 + expup_35: + slot: 12 + level: 35 + base64: xxxxxxxxxxxxxxxxxxxxxxxxx + reward: + - §71. §7§l★§71 §615800金币 + - §72. §7§l★§76 §d千年灵环 + - §73. §7§l★§72 §7万年灵环 + - §74. §7§l★§78 §e学院的认可 + - §75. §7§l★§71 §2暗器·蛇蛊毒镖 + - §76. §7§l★§732 §f[§6食物§f]§d粉汤圆 + - §77. §7§l★§71 §d经验+200%§f(持续30分钟) + - §78. §7§l★§73 §f[§6碎片§f]§e暴食娃娃 + - §79. §7§l★§710 §f[§a繁花§f]§e灵环抽奖钥匙 + commands: + - eco give %p% 15800 + - ditem give 学院的认可 8 %p% + - auforge 暗器_蛇蛊毒镖 %p% + - ditem give 食物_粉汤圆 32 %p% + - ditem give 暴食娃娃碎片 3 %p% + - dpotion add %p% 200 30 + - dgroupcmd %p% 随机千年灵环 6 + - dgroupcmd %p% 随机万年灵环 2 + - ditem give 魂环抽奖箱钥匙 10 %p% + - bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.35]&a萌新助力礼包 + - msg:&f[&c消息&f] &a成功领取 &e&lLv.35 &a萌新助力礼包。 + expup_45: + slot: 13 + level: 45 + base64: xxxxxxxxxxxxxxxxxxxxxxxxx + reward: + - §71. §7§l★§71 §620800金币 + - §72. §7§l★§78 §d千年灵环 + - §73. §7§l★§73 §7万年灵环 + - §74. §7§l★§78 §e学院的认可 + - §75. §7§l★§78 §b天外灵玉 + - §76. §7§l★§71 §f暗器·锻钢飞刀 + - §77. §7§l★§732 §f[§6食物§f]§d粉汤圆 + - §78. §7§l★§71 §d经验+200%§f(持续30分钟) + - §79. §7§l★§73 §f[§6碎片§f]§e暴食娃娃 + - §710. §7§l★§710 §f[§a繁花§f]§e灵环抽奖钥匙 + commands: + - eco give %p% 20800 + - ditem give 学院的认可 8 %p% + - ditem give 天外灵玉 8 %p% + - auforge 暗器_锻钢飞刀 %p% + - ditem give 食物_粉汤圆 32 %p% + - ditem give 暴食娃娃碎片 3 %p% + - dpotion add %p% 200 30 + - dgroupcmd %p% 随机千年灵环 8 + - dgroupcmd %p% 随机万年灵环 3 + - ditem give 魂环抽奖箱钥匙 10 %p% + - bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.45]&a萌新助力礼包 + - msg:&f[&c消息&f] &a成功领取 &e&lLv.45 &a萌新助力礼包。 + expup_55: + slot: 14 + level: 55 + base64: xxxxxxxxxxxxxxxxxxxxxxxxx + reward: + - §71. §7§l★§71 §625800金币 + - §72. §7§l★§78 §d千年灵环 + - §73. §7§l★§74 §7万年灵环 + - §74. §7§l★§76 §c赤心炼狱珠 + - §75. §7§l★§76 §b玄玉冰心珠 + - §76. §7§l★§71 §f暗器·锻钢飞刀 + - §77. §7§l★§732 §f[§6食物§f]§d粉汤圆 + - §78. §7§l★§71 §d经验+300%§f(持续30分钟) + - §79. §7§l★§73 §f[§6碎片§f]§e暴食娃娃 + - §710. §7§l★§715 §f[§a繁花§f]§e灵环抽奖钥匙 + commands: + - eco give %p% 25800 + - ditem give 赤心炼狱珠 6 %p% + - ditem give 玄玉冰心珠 6 %p% + - auforge 暗器_锻钢飞刀 %p% + - ditem give 食物_粉汤圆 32 %p% + - ditem give 暴食娃娃碎片 3 %p% + - dpotion add %p% 300 30 + - dgroupcmd %p% 随机千年灵环 8 + - dgroupcmd %p% 随机万年灵环 4 + - ditem give 魂环抽奖箱钥匙 15 %p% + - bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.55]&a萌新助力礼包 + - msg:&f[&c消息&f] &a成功领取 &e&lLv.55 &a萌新助力礼包。 + expup_65: + slot: 15 + level: 65 + base64: xxxxxxxxxxxxxxxxxxxxxxxxx + reward: + - §71. §7§l★§71 §629800金币 + - §72. §7§l★§712 §d千年灵环 + - §73. §7§l★§76 §c异变§d千年灵环 + - §74. §7§l★§76 §7万年灵环 + - §75. §7§l★§78 §b天外灵玉 + - §76. §7§l★§78 §c杀怒之石 + - §77. §7§l★§71 §c暗器·赤心回旋镖 + - §78. §7§l★§71 §d经验+300%§f(持续30分钟) + - §79. §7§l★§73 §f[§6碎片§f]§e暴食娃娃 + - §710. §7§l★§715 §f[§a繁花§f]§e灵环抽奖钥匙 + commands: + - eco give %p% 29800 + - ditem give 天外灵玉 8 %p% + - ditem give 杀怒之石 8 %p% + - auforge 暗器_赤心回旋镖 %p% + - ditem give 食物_粉汤圆 32 %p% + - ditem give 暴食娃娃碎片 3 %p% + - dpotion add %p% 300 30 + - dskills stone 1 %p% + - dgroupcmd %p% 随机异变千年灵环 6 + - dgroupcmd %p% 随机万年灵环 6 + - dgroupcmd %p% 随机千年灵环 12 + - ditem give 魂环抽奖箱钥匙 15 %p% + - bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.65]&a萌新助力礼包 + - msg:&f[&c消息&f] &a成功领取 &e&lLv.65 &a萌新助力礼包。 + expup_75: + slot: 16 + level: 75 + base64: xxxxxxxxxxxxxxxxxxxxxxxxx + reward: + - §71. §7§l★§71 §636800金币 + - §72. §7§l★§71 §d40点券 + - §73. §7§l★§79 §c异变§d千年灵环 + - §74. §7§l★§76 §7万年灵环 + - §75. §7§l★§72 §c异变灵环 + - §76. §7§l★§710 §b天外灵玉 + - §77. §7§l★§710 §c杀怒之石 + - §78. §7§l★§71 §c暗器·赤心回旋镖 + - §79. §7§l★§71 §d经验+300%§f(持续30分钟) + - §710. §7§l★§720 §f[§a繁花§f]§e灵环抽奖钥匙 + - §711. §7§l★§71 §c§l十万年巨兽泰坦灵环 + commands: + - eco give %p% 36800 + - points give %p% 40 + - dhhqc give 十万年_巨兽泰坦灵环 1 %p% true + - ditem give 天外灵玉 10 %p% + - ditem give 杀怒之石 10 %p% + - auforge 暗器_赤心回旋镖 %p% + - dpotion add %p% 300 30 + - dgroupcmd %p% 随机异变灵环 2 + - dgroupcmd %p% 随机万年灵环 6 + - dgroupcmd %p% 随机异变千年灵环 9 + - ditem give 魂环抽奖箱钥匙 20 %p% + - bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.75]&a萌新助力礼包 + - msg:&f[&c消息&f] &a成功领取 &e&lLv.75 &a萌新助力礼包。 + expup_80: + slot: 20 + level: 80 + base64: xxxxxxxxxxxxxxxxxxxxxxxxx + reward: + - §71. §7§l★§71 §642800金币 + - §72. §7§l★§71 §d80点券 + - §73. §7§l★§76 §7万年灵环 + - §74. §7§l★§72 §c异变灵环 + - §75. §7§l★§76 §e冰火灵石 + - §76. §7§l★§76 §b灵环精片 + - §77. §7§l★§71 §e超级灵环抽奖钥匙 + - §78. §7§l★§71 §d经验+300%§f(持续30分钟) + - §79. §7§l★§720 §f[§a繁花§f]§e灵环抽奖钥匙 + - §710. §7§l★§71 §c§l十万年巨兽泰坦灵环 + commands: + - eco give %p% 42800 + - points give %p% 80 + - dhhqc give 十万年_巨兽泰坦灵环 1 %p% true + - ditem give 冰火灵石 6 %p% + - ditem give 灵环精片 6 %p% + - ditem give 超级魂环抽奖箱钥匙 1 %p% + - dpotion add %p% 300 30 + - dgroupcmd %p% 随机异变灵环 2 + - dgroupcmd %p% 随机万年灵环 6 + - ditem give 魂环抽奖箱钥匙 20 %p% + - bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.80]&a萌新助力礼包 + - msg:&f[&c消息&f] &a成功领取 &e&lLv.80 &a萌新助力礼包。 + expup_85: + slot: 22 + level: 85 + base64: xxxxxxxxxxxxxxxxxxxxxxxxx + reward: + - §71. §7§l★§71 §658800金币 + - §72. §7§l★§71 §d100点券 + - §73. §7§l★§76 §7万年灵环 + - §74. §7§l★§74 §c异变灵环 + - §75. §7§l★§78 §e冰火灵石 + - §76. §7§l★§78 §b灵环精片 + - §77. §7§l★§72 §e超级灵环抽奖钥匙 + - §78. §7§l★§71 §d经验+400%§f(持续30分钟) + - §79. §7§l★§71 §c§l十万年巨兽泰坦灵环 + - §710. §7§l★§710 §f[§a繁花§f]§e超级灵环钥匙 + commands: + - eco give %p% 58800 + - points give %p% 100 + - dhhqc give 十万年_巨兽泰坦灵环 1 %p% true + - ditem give 冰火灵石 8 %p% + - ditem give 灵环精片 8 %p% + - dpotion add %p% 400 30 + - dgroupcmd %p% 随机万年灵环 6 + - dgroupcmd %p% 随机异变灵环 4 + - ditem give 超级魂环抽奖箱钥匙 10 %p% + - bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.85]&a萌新助力礼包 + - msg:&f[&c消息&f] &a成功领取 &e&lLv.85 &a萌新助力礼包。 + expup_90: + slot: 24 + level: 90 + base64: xxxxxxxxxxxxxxxxxxxxxxxxx + reward: + - §71. §7§l★§71 §658800金币 + - §72. §7§l★§71 §d120点券 + - §73. §7§l★§74 §c异变灵环 + - §74. §7§l★§710 §e冰火灵石 + - §75. §7§l★§710 §b灵环精片 + - §76. §7§l★§73 §f[§a繁花§f]§e幸运夺宝箱钥匙 + - §77. §7§l★§710 §f[§a繁花§f]§e灵环抽奖钥匙 + - §78. §7§l★§75 §f[§a繁花§f]§e超级灵环抽奖钥匙 + - §79. §7§l★§71 §d经验+400%§f(持续30分钟) + - §710. §7§l★§71 §c§l十万年青天牛马灵环 + - §711. §7§l★§71 §c§l十万年奇灵舞魅兔灵环 + commands: + - eco give %p% 58800 + - points give %p% 120 + - dhhqc give 十万年_青天牛马灵环 1 %p% true + - dhhqc give 十万年_奇灵舞魅兔灵环 1 %p% true + - ditem give 冰火灵石 10 %p% + - ditem give 灵环精片 10 %p% + - ditem give 幸运夺宝钥匙 3 %p% + - ditem give 魂环抽奖箱钥匙 10 %p% + - ditem give 超级魂环抽奖箱钥匙 5 %p% + - dpotion add %p% 400 30 + - dgroupcmd %p% 随机异变灵环 4 + - bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.90]&a萌新助力礼包 + - msg:&f[&c消息&f] &a成功领取 &e&lLv.90 &a萌新助力礼包。 + expup_kejin: + slot: 4 + level: 80 + base64: xxxxxxxxxxxxxxxxxxxxxxxxx + reward: + - §71. §7§l★§710 §e灵环抽奖钥匙 + - §72. §7§l★§710 §e超级灵环抽奖钥匙 + - §73. §7§l★§75 §e幸运夺宝箱钥匙 + - §74. §7§l★§72 §e次元§5精灵§d秘药 + - §75. §7§l★§72 §6大财主金币袋 + - §76. §7§l★§71 §c§l十万年巨兽泰坦灵环§d(献祭) + - §77. §7§l★§71 §c§l十万年青天牛马灵环§d(献祭) + - §78. §7§l★§71 §c§l十万年奇灵舞魅兔灵环§d(献祭) + commands: + - ditem give 大财主金币袋 2 %p% + - dpotion give 次元精灵秘药 2 %p% + - ditem give 幸运夺宝钥匙 5 %p% + - ditem give 魂环抽奖箱钥匙 10 %p% + - ditem give 超级魂环抽奖箱钥匙 10 %p% + - dhhqc givepro 十万年_巨兽泰坦灵环 1 %p% true + - dhhqc givepro 十万年_青天牛马灵环 1 %p% true + - dhhqc givepro 十万年_奇灵舞魅兔灵环 1 %p% true + - bcm &7[&c公告&7] &a玩家&e%p%&a成功领取到了&e&l[Lv.80]&a土豪助力宝箱 + - msg:&f[&c消息&f] &a成功领取 &e&lLv.80 &a土豪助力宝箱。 \ No newline at end of file