Back
full-scripts.md
markdownwiki/examples/full-scripts.md
# 📜 Готовые скрипты
Полностью готовые к использованию скрипты для ScriptsLab.
---
## Приветственное сообщение
Полная система приветствия и прощания игроков.
**Файл**: `plugins/ScriptsLab/scripts/welcome_message.js`
```javascript
/**
* Приветственное сообщение при входе
* Убирает ванильное сообщение и показывает кастомное
*/
API.registerEvent('PlayerJoinEvent', function(event) {
var player = event.getPlayer();
// Убираем ванильное сообщение
event.joinMessage(null);
// Отправляем кастомное приветствие
var Bukkit = Java.type('org.bukkit.Bukkit');
player.sendMessage('§8§m ');
player.sendMessage('');
player.sendMessage(' §6§l⚡ Добро пожаловать на сервер! ⚡');
player.sendMessage('');
player.sendMessage(' §7Привет, §e' + player.getName() + '§7!');
player.sendMessage(' §7Онлайн: §a' + Bukkit.getOnlinePlayers().size() + ' §7игроков');
player.sendMessage('');
player.sendMessage(' §7Используй §e/help §7для помощи');
player.sendMessage('');
player.sendMessage('§8§m ');
// Сообщение всем остальным
Bukkit.getOnlinePlayers().forEach(function(p) {
if (p.getName() !== player.getName()) {
p.sendMessage('§8[§a+§8] §7' + player.getName() + ' §aзашёл на сервер');
}
});
Console.log(player.getName() + ' joined the server');
});
// Кастомное сообщение при выходе
API.registerEvent('PlayerQuitEvent', function(event) {
var player = event.getPlayer();
// Убираем ванильное сообщение
event.quitMessage(null);
// Отправляем кастомное сообщение всем
var Bukkit = Java.type('org.bukkit.Bukkit');
Bukkit.getOnlinePlayers().forEach(function(p) {
if (p.getName() !== player.getName()) {
p.sendMessage('§8[§c-§8] §7' + player.getName() + ' §cвышел с сервера');
}
});
Console.log(player.getName() + ' left the server');
});
Console.log('Приветственное сообщение активировано');
```
---
## Система лечения
Команда `/heal` для восстановления здоровья.
**Файл**: `plugins/ScriptsLab/scripts/heal_command.js`
```javascript
/**
* Команда /heal - Восстановление здоровья
*/
Commands.register('heal', function(sender, args) {
if (!sender.isPlayer()) {
sender.sendMessage('§cТолько для игроков!');
return;
}
var player = sender;
// Восстановить здоровье
player.setHealth(player.getMaxHealth());
// Восстановить голод
player.setFoodLevel(20);
player.setSaturation(20.0);
// Убрать эффекты
player.getActivePotionEffects().forEach(function(effect) {
player.removePotionEffect(effect.getType());
});
player.sendMessage('§a✓ Вы полностью исцелены!');
Console.log(player.getName() + ' used /heal');
}, 'scriptslab.heal');
Console.log('Команда /heal зарегистрирована');
```
---
## Система полёта
Команда `/fly` для включения полёта.
**Файл**: `plugins/ScriptsLab/scripts/fly_command.js`
```javascript
/**
* Команда /fly - Включение/выключение полёта
*/
Commands.register('fly', function(sender, args) {
if (!sender.isPlayer()) {
sender.sendMessage('§cТолько для игроков!');
return;
}
var player = sender;
var currentFlight = player.getAllowFlight();
player.setAllowFlight(!currentFlight);
var msg = player.getAllowFlight() ? '§a✓ Полёт включен!' : '§c✗ Полёт выключен!';
player.sendMessage(msg);
Console.log(player.getName() + ' toggled flight: ' + player.getAllowFlight());
}, 'scriptslab.fly');
Console.log('Команда /fly зарегистрирована');
```
---
## Автоматические объявления
Регулярные объявления для игроков.
**Файл**: `plugins/ScriptsLab/scripts/auto_broadcast.js`
```javascript
/**
* Автоматические объявления
*/
var messages = [
'§6[Объявление] §eНе забудьте проголосовать за сервер!',
'§6[Объявление] §eПосетите наш Discord!',
'§6[Объявление] §eИспользуйте §a/fly §eдля полёта!',
'§6[Объявление] §eИспользуйте §a/heal §eдля лечения!'
];
var currentIndex = 0;
// Отправлять сообщение каждые 5 минут
Scheduler.runTimer(function() {
Server.broadcast(messages[currentIndex]);
currentIndex = (currentIndex + 1) % messages.length;
}, 100, 6000); // 100 тиков задержка, 6000 тиков = 5 минут
Console.log('Автоматические объявления запущены');
```
---
## Легендарный Меч Молний
Сложный кастомный предмет с несколькими способностями.
**Файл**: `plugins/ScriptsLab/scripts/custom_sword.js`
```javascript
/**
* ⚔️ ЛЕГЕНДАРНЫЙ МЕЧ МОЛНИЙ ⚔️
*
* Особенности:
* - Вызывает молнию при ударе
* - +10 к урону (атрибут)
* - +20% к скорости атаки
* - Даёт эффект Силы II при держании
* - Светится (enchant glow)
* - Неразрушимый
*/
var Material = Java.type('org.bukkit.Material');
var ItemStack = Java.type('org.bukkit.inventory.ItemStack');
var Enchantment = Java.type('org.bukkit.enchantments.Enchantment');
var ItemFlag = Java.type('org.bukkit.inventory.ItemFlag');
var ArrayList = Java.type('java.util.ArrayList');
Console.log('=== Инициализация Меча Молний ===');
// Команда для получения меча
Commands.register('getlightningsword', function(sender, args) {
if (!sender.isPlayer()) {
sender.sendMessage('§cЭта команда только для игроков!');
return;
}
var player = org.bukkit.Bukkit.getPlayer(sender.getName());
if (!player) return;
var sword = new ItemStack(Material.DIAMOND_SWORD);
var meta = sword.getItemMeta();
if (meta) {
meta.setDisplayName('§6§l⚡ МЕЧ МОЛНИЙ ⚡');
var lore = new ArrayList();
lore.add('§7');
lore.add('§e▸ Способности:');
lore.add('§7 • Вызывает молнию при ударе');
lore.add('§7 • Даёт эффект §cСилы II§7 при держании');
lore.add('§7 • Дополнительный урон: §c+5 ❤');
lore.add('§7');
lore.add('§e▸ Характеристики:');
lore.add('§7 • Урон: §c+10 ❤');
lore.add('§7 • Скорость атаки: §a+20%');
lore.add('§7 • Прочность: §6Неразрушимый');
lore.add('§7');
lore.add('§6§l✦ ЛЕГЕНДАРНЫЙ ПРЕДМЕТ ✦');
meta.setLore(lore);
meta.setUnbreakable(true);
meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
meta.addEnchant(Enchantment.LUCK_OF_THE_SEA, 1, true);
API.addAttribute(meta, 'GENERIC_ATTACK_DAMAGE', 'lightning_sword_damage', 10.0, 'ADD_NUMBER', 'HAND');
API.addAttribute(meta, 'GENERIC_ATTACK_SPEED', 'lightning_sword_speed', 0.8, 'ADD_NUMBER', 'HAND');
sword.setItemMeta(meta);
}
player.getInventory().addItem(sword);
player.sendMessage('§6§l⚡ §aВы получили §6§lМЕЧ МОЛНИЙ§a!');
player.sendMessage('§7Ударьте моба, чтобы увидеть его силу...');
}, 'scriptslab.getlightningsword');
Console.log('✓ Команда /getlightningsword зарегистрирована');
// === СПОСОБНОСТЬ 1: Молния при ударе ===
API.registerEvent('EntityDamageByEntityEvent', function(event) {
var Player = Java.type('org.bukkit.entity.Player');
if (!(event.getDamager() instanceof Player)) return;
var attacker = event.getDamager();
var victim = event.getEntity();
var item = attacker.getInventory().getItemInMainHand();
if (!item || item.getType() !== Material.DIAMOND_SWORD) return;
var meta = item.getItemMeta();
if (!meta || !meta.hasDisplayName()) return;
var displayName = meta.getDisplayName();
if (displayName.indexOf('МЕЧ МОЛНИЙ') === -1) return;
API.strikeLightningSync(victim.getLocation());
event.setDamage(event.getDamage() + 5.0);
attacker.sendMessage('§6⚡ §eМолния поражает врага!');
Console.log(attacker.getName() + ' использовал Меч Молний');
});
Console.log('✓ Способность "Молния при ударе" активирована');
// === СПОСОБНОСТЬ 2: Эффект Силы при держании ===
API.registerEvent('PlayerItemHeldEvent', function(event) {
var player = event.getPlayer();
var newSlot = event.getNewSlot();
var item = player.getInventory().getItem(newSlot);
if (item && item.getType() === Material.DIAMOND_SWORD) {
var meta = item.getItemMeta();
if (meta && meta.hasDisplayName() && meta.getDisplayName().indexOf('МЕЧ МОЛНИЙ') !== -1) {
var PotionEffectType = Java.type('org.bukkit.potion.PotionEffectType');
API.addPotionEffectSync(player, PotionEffectType.STRENGTH, 999999, 1, false, false);
player.sendMessage('§6⚡ §eВы чувствуете силу молнии!');
}
}
var oldSlot = event.getPreviousSlot();
var oldItem = player.getInventory().getItem(oldSlot);
if (oldItem && oldItem.getType() === Material.DIAMOND_SWORD) {
var oldMeta = oldItem.getItemMeta();
if (oldMeta && oldMeta.hasDisplayName() && oldMeta.getDisplayName().indexOf('МЕЧ МОЛНИЙ') !== -1) {
var PotionEffectType = Java.type('org.bukkit.potion.PotionEffectType');
API.removePotionEffectSync(player, PotionEffectType.STRENGTH);
player.sendMessage('§7Сила молнии покидает вас...');
}
}
});
Console.log('✓ Способность "Эффект Силы" активирована');
Console.log('=== Меч Молний полностью активирован! ===');
```
---
## Быстрая установка скриптов
### Шаг 1: Создайте папку скриптов
Создайте папку `plugins/ScriptsLab/scripts/`, если её нет.
### Шаг 2: Скопируйте скрипт
Скопируйте код скрипта в новый файл `.js` в папке скриптов.
### Шаг 3: Перезагрузите
Выполните `/script reload` для загрузки скрипта.
---
## Таблица готовых скриптов
| Скрипт | Файл | Команда | Описание |
|--------|------|---------|-----------|
| Приветствие | welcome_message.js | Автоматически | Вход/выход |
| Лечение | heal_command.js | /heal | Восстановить HP |
| Полёт | fly_command.js | /fly | Включить полёт |
| Объявления | auto_broadcast.js | Автоматически | Объявления |
| Меч | custom_sword.js | /getlightningsword | Легендарный меч |
---
## Дальнейшие шаги
| Раздел | Описание |
|--------|-----------|
| [Script API](../script-api.md) | Полный API |
| [Модули](../modules.md) | Система модулей |
| [Тroubleshooting](../troubleshooting.md) | Решение проблем |