Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Плагин [ FUN ] Troll 1.7 | Достал игрок или нечего делать? Веселись :)

Qmaks

Старожил
Пользователь
Баллы
173
Имя в Minecraft
Qmaks
server_icon.png

Представляю плагин Troll
Скрин:
bandicam_2014_05_21_17_23_38_917.png

Команды и права:
/troll help | troll.trollhelp | Показать все команды

/burn [игрок] | troll.burn | Зажечь игрока
/freeze [игрок] | troll.freeze | Заморозить игрока
/bolt [игрок] | troll.bolt | Ударить молнией игрока
/special | troll.special | troll.ak47 | troll.grenade | Получить AK-47 и Гранату
/fakeop [игрок] | troll.fakeop | Дать фейковый "OP" игроку
/fakedeop [игрок] | troll.fakedeop | Забрать фейковый "OP" у игрока
/launch [игрок] | troll.launch | Запустить игрока вверх
/spam [игрок] | troll.spam | Заспамить игрока
/trollkick [игрок] | troll.trollkick | "Кикнуть" игрока
/badapple [игрок] | troll.badapple | Дать тролл яблоко игроку
/boom [игрок] | troll.boom | Взорвать игрока
/push [игрок] | troll.push | Подкинуть игрока
/gokill [игрок] [время] | troll.gokill | Убить игрока через определённое время
/switch [игрок] [игрок] | troll.switch | Переместить игрока к другому
/denymove [игрок] [время] | troll.denymove | Обездвижить игрока на время
/potatotroll [игрок] | troll.potatotroll | Заменить все вещи в инвентаре картошкой

Прошу ставить "Мне нравиться", а не только писать коменты)
​
 
Последнее редактирование:
server_icon.png

Представляю плагин Troll
Скрин:
bandicam_2014_05_21_17_23_38_917.png

Команды и права:
/troll help | troll.trollhelp | Показать все команды

/burn [игрок] | troll.burn | Зажечь игрока
/freeze [игрок] | troll.freeze | Заморозить игрока
/bolt [игрок] | troll.bolt | Ударить молнией игрока
/special | troll.special | troll.ak47 | troll.grenade | Получить AK-47 и Гранату
/fakeop [игрок] | troll.fakeop | Дать фейковый "OP" игроку
/fakedeop [игрок] | troll.fakedeop | Забрать фейковый "OP" у игрока
/launch [игрок] | troll.launch | Запустить игрока вверх
/spam [игрок] | troll.spam | Заспамить игрока
/trollkick [игрок] | troll.trollkick | "Кикнуть" игрока
/badapple [игрок] | troll.badapple | Дать тролл яблоко игроку
/boom [игрок] | troll.boom | Взорвать игрока
/push [игрок] | troll.push | Подкинуть игрока
/gokill [игрок] [время] | troll.gokill | Убить игрока через определённое время
/switch [игрок] [игрок] | troll.switch | Переместить игрока к другому
/denymove [игрок] [время] | troll.denymove | Обездвижить игрока на время
/potatotroll [игрок] | troll.potatotroll | Заменить все вещи в инвентаре картошкой

Прошу ставить "Мне нравиться", а не только писать коменты)
​
1) Убери подчёркивания. Хотя бы в [ командах | пермах | описании ]
2)
Java:
if(Bukkit.getPlayer(p).isOnline()){
    /*...*/
}
else{
    sender.sendMessage("");
}
Лучше замени на
Java:
if(!Bukkit.getPlayer(p).isOnline()){
    sender.sendMessage("");
    return false;
}
/*...*/
3)
Java:
if(!(sender instanceof Player)){
    return true;
}
if(sender instanfeof Player){
    /*...*/
}
Этого я вообще не понимаю...
Если отправитель не Игрок, то в первом ИФе ты выходишь из действия ( return true; ). Зачем делать ещё одну проверку на Игрока, если она (проверка) даже не будет осуществляться по причине, описанной выше.
Java:
if(!(sender instanceof Player)){ return false; }
/*...*/
4)
Java:
p.setFireTicks(1000000000);
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Java:
p.setFireTicks(Integer.MAX_VALUE);
5) Ты вообще проверял свой плагин?
При обработке команды ты объявляешь и инициализируешь переменную
Java:
Player p = (Player) sender;
а потом ты фризишь, убиваешь и т.д. игрока КОТОРЫЙ ВВЁЛ КОМАНДУ а не который указан в аргументах:
Java:
p.sendMessage("§f[§cTroll§f] §6Тебя заморозили!");
p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 2400, 2));
/*...*/
p.sendMessage("§f[§cTroll§f] §6Тебя ударили молнией!");
Location loc1 = p.getLocation();
p.getLocation().getWorld().strikeLightning(loc1);
6)
Java:
Player target = getServer().getPlayer(args[0]);
p.sendMessage("§f[§cTroll§f] §6Тебя зажег " + ChatColor.GREEN + target.getName());
Тут я вообще молчу...

А дальше мне писать лень. :)
 
1) Убери подчёркивания. Хотя бы в [ командах | пермах | описании ]
2)
Java:
if(Bukkit.getPlayer(p).isOnline()){
    /*...*/
}
else{
    sender.sendMessage("");
}
Лучше замени на
Java:
if(!Bukkit.getPlayer(p).isOnline()){
    sender.sendMessage("");
    return false;
}
/*...*/
3)
Java:
if(!(sender instanceof Player)){
    return true;
}
if(sender instanfeof Player){
    /*...*/
}
Этого я вообще не понимаю...
Если отправитель не Игрок, то в первом ИФе ты выходишь из действия ( return true; ). Зачем делать ещё одну проверку на Игрока, если она (проверка) даже не будет осуществляться по причине, описанной выше.
Java:
if(!(sender instanceof Player)){ return false; }
/*...*/
4)
Java:
p.setFireTicks(1000000000);
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Java:
p.setFireTicks(Integer.MAX_VALUE);
5) Ты вообще проверял свой плагин?
При обработке команды ты объявляешь и инициализируешь переменную
Java:
Player p = (Player) sender;
а потом ты фризишь, убиваешь и т.д. игрока КОТОРЫЙ ВВЁЛ КОМАНДУ а не который указан в аргументах:
Java:
p.sendMessage("§f[§cTroll§f] §6Тебя заморозили!");
p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 2400, 2));
/*...*/
p.sendMessage("§f[§cTroll§f] §6Тебя ударили молнией!");
Location loc1 = p.getLocation();
p.getLocation().getWorld().strikeLightning(loc1);
6)
Java:
Player target = getServer().getPlayer(args[0]);
p.sendMessage("§f[§cTroll§f] §6Тебя зажег " + ChatColor.GREEN + target.getName());
Тут я вообще молчу...

А дальше мне писать лень. :)
Пристал....
 
Не пристал, а указал на глупые ошибки.
Особенно №5 в моём списке. Это критическая ошибка. Если он на себе проверял все команды, то будет работать конечно, а если в аргументах указал другого игрока... Тут то и будет "веселье"...
Что за "веселье"?
Пример №1:
Я один на сервере. Ввёл, к примеру, команду [/freeze Notch]. Идёт проверка [if ( Bukkit.getPlayer("Notch").isOnline() ) ]. Так как Нотч никогда небыл на этом сервере, то в консоле мы увидим ексцепшн. Почему? Да потому что getPlayer() получает файл игрока, который БЫЛ на сервере ХОТЯ БЫ ОДИН РАЗ.
Пример №2:
Каким то невероятным чудом является то, что Нотч на сервере! Я ввожу команду [/freeze Notch]. Идёт всё та же проверка, и подтверждается то, что Нотч онлайн. Что дальше? А дальше по идее Нотчу должны были наложится эффекты. Но хрен там был! Они наложились какого то фига на меня, и мне ещё пришло сообщение "Тебя заморозили!"... Это что получается, я сам себя заморозил?!

------------------

P.S. Если, к примеру, самозамораживание и является целью плагина (Как бЭ троллинг), то, автор, извини за недопонимание. Хотя, я в этом сомневаюсь...
 
Сука ****ь даже норм паген неможыт зделатьмсука ииддиив жопу
Ненормативная лексика не допустима на форуме.
--------------------------------------------------------
Закрываю тему, редактировать буду при обновлениях.
--------------------------------------------------------.
~UP~
-=-=UP=-=-
Эт был не совсем мой плагин, так что по поводу говнокода на меня не крякайте xD
 
Последнее редактирование:
Бедный Qmaks... Они тебя сожрать хотят))
Ну а вообще годные советы дали!(Но у меня бы горело на них)
 

Поделиться этой страницей

Назад
Верх