Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите группы игроков

Тема в разделе "Разработка плагинов для новичков", создана пользователем asdqwertypro, 3 янв 2017.

  1. Автор темы
    asdqwertypro

    asdqwertypro Активный участник Пользователь

    Баллы:
    76
    во - 1:
    я хз как так сделать :3
    во - 2:
    я подумал... killer это же группа в pex... а донатеры то как? они же будут терять привилегию при убийстве!
     
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    В пексе можно выдавать несколько групп. А вот мусора там накопится не хилое количество, что приведет к отставанию сервера.
     
  4. Автор темы
    asdqwertypro

    asdqwertypro Активный участник Пользователь

    Баллы:
    76
    ок люблю просерать время своей жизни )))) хотя возможно потом когда то однажды это поможет мне создать топ сервер... мечтать не вредно :D
     
  5. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    С твоими то познаниями? Скорее топ шлак.
     
  6. Автор темы
    asdqwertypro

    asdqwertypro Активный участник Пользователь

    Баллы:
    76
    ой да ладно тебе... со временем научусь! командным блокам ведь как то научился? и ничего не учил: не английский не команды... просто качал команды потом стало интересно как работает потом начал потихоньку разбираться и заодно случайно учить английский (я его не учил но я его выучил!) и так допёрло до уровня профи в командах! и до уровня нуба в eclipse :D а вообще я обычно быстро учусь если интересно (хотя так все вроде... незнаю) короче потихонечку да стану норм eclipse-ром )))[DOUBLEPOST=1483547884,1483547851][/DOUBLEPOST]
    сам то скоко учил яву и эклипс?
     
  7. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Не замерял. Но моих нубских познаний хватало, чтоб здувать всяких авардкрафтов и хаоскрафтов. P.s да, я изучал жабу с реверс-инжиниринга.
     
  8. Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    открою секрет, я начал кодить плагины < месяца назад. до этого что такое эклипс не знал. и с явой не работал

    Да кстати, вопрос. если убийца убил убийцу то что с убийцы снять статус киллера, или например срок урезать? если урезать строк то на сколько?
     
  9. Автор темы
    asdqwertypro

    asdqwertypro Активный участник Пользователь

    Баллы:
    76
    я хотел крафт добавить но там какая то ошибка + нигде не было гайда как сделать такой предмет... короче я хотел сделать cat gun как в гаджетах на minigames серверах и короче я хз как сделать чтобы эта пушка стреляла шарами с котами решил забить... я ещё вернусь к этой теме....[DOUBLEPOST=1483548327,1483548276][/DOUBLEPOST]
    ну... убийца это как никак приступник... пускай срок урежут на 20% там же можно с процентами работать?[DOUBLEPOST=1483548361][/DOUBLEPOST]
    а, и денег не дадут ещё типо премия... убийце...
     
  10. Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    там можно все. если знать как.
     
  11. Автор темы
    asdqwertypro

    asdqwertypro Активный участник Пользователь

    Баллы:
    76
    мда... прям всё... даже сделать так чтобы у себя прописал команду и майнплекс крашнулся :D ладно шучу но стопудово есть там что-то, чего нельзя сделать.
     
  12. Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    ты понял о чем я...
     
  13. Автор темы
    asdqwertypro

    asdqwertypro Активный участник Пользователь

    Баллы:
    76
    так точно... Fenix78563[DOUBLEPOST=1483548931,1483548845][/DOUBLEPOST]
    я отойду на час - второй... а может и до завтра =3
     
  14. TheZefirrkka

    TheZefirrkka Активный участник Пользователь

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    и ивент финалить тоже нету смысла[DOUBLEPOST=1483551524,1483551053][/DOUBLEPOST]Его крч гавном обливают, а он на позитиве и думает, что он станет мега кодером и создаст качественный сервер...
    P.S.
    setGroup(String s) - выдать(выставить) группу s
    addGroup(String s) - добавить группу s
     
  15. Автор темы
    asdqwertypro

    asdqwertypro Активный участник Пользователь

    Баллы:
    76
    это вместо pex ставить? типо не группа killer а просто s ???
     
  16. TheZefirrkka

    TheZefirrkka Активный участник Пользователь

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    s это стринг в методе[DOUBLEPOST=1483552671,1483552599][/DOUBLEPOST]
    я специально сложно для тебя объясняю, что бы ты уже понял и начал учить джаву(выучи хоть немного, хоть про переменные посмотри, поможет оч сильно!)
     
  17. Автор темы
    asdqwertypro

    asdqwertypro Активный участник Пользователь

    Баллы:
    76
    ок про переменные... посмотрю но хз пойму ли?
     
  18. Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Вроде как сделал, но не тестировал. протестируешь сам.

    Инструкция по установке ибо ты тупенький.
    Добавляем как стороннюю библиотеку essentials (ибо я делал для него)

    создаем поле. public Essentials ess; (это писать на следующей строчке после public Economy econ=null;)
    Создаем метод setupEssentials()
    Код:
    private boolean setupEssentials() {
        if (getServer().getPluginManager().getPlugin("Essentials") == null) {
            return false;
        }
        return true;
    }
    В методе onEnable() добавляем
    Код:
    if (!setupEssentials()) {
                Bukkit.getConsoleSender().sendMessage(String.format("[%s] - Disabled due to no Essentias found!", getDescription().getName()));
                getServer().getPluginManager().disablePlugin(this);
                return;
                }
    Так же создаем два метода работы с конфигами. Это пригодится позже.
    Вот эти методы:
    Код:
    public YamlConfiguration getUserConfig(Player user){
            File uf = new File(getDataFolder(), "userdata"+File.separator+user.getName());
            if (!uf.exists()) {
                getLogger().log(Level.SEVERE, "User file is not exists. Creating one new");
                try {
                    uf.createNewFile();
                } catch (IOException e) {
                    getLogger().log(Level.SEVERE, "Error while creating new user file");
                    e.printStackTrace();
                }
            }
            YamlConfiguration uconfig = YamlConfiguration.loadConfiguration(uf);
            uconfig.set("killer", "false");
            uconfig.set("time", 0);
            saveUserFile(uconfig, uf);
            return uconfig;
        }
        public void saveUserFile(YamlConfiguration uconfig, File uf){
            try {
                uconfig.save(uf);
            } catch (IOException e) {
                getLogger().log(Level.SEVERE, "Error while saving user file \"" +uf.getName()+"\"");
                e.printStackTrace();
            }
        }
    С главным классом закончили.

    Старый ивент можно убрать. т.к. теперь есть свой конфиг, то и статус убийцы отныне хранится там. Это несомненно будет лучше, ибо засирать пекс лишним ну не стоит.
    Теперь ставим туда новый ивент.
    Код:
    @EventHandler
        public void onDeath(final PlayerDeathEvent e) {
            Player killed = e.getEntity();
            Player killer = killed.getKiller();
            if (killer==null) return;
            YamlConfiguration killerconf = plugin.getUserConfig(killer);
            YamlConfiguration killedconf = plugin.getUserConfig(killed);
            if (killedconf.getBoolean("killer")){
                jailKilled(killed, killedconf.getInt("time"));
                killedconf.set("killer", "false");
                killedconf.set("time", 0);
                plugin.save(killedconf, new File(plugin.getDataFolder(), "userdata"+File.separator+killed.getName()));
                plugin.econ.depositPlayer(killer, 100);
                killer.sendMessage("Вы убили киллера поэтому его отправили в тюрьму");
                updateKiller(killer);
            }else{
                if (!killerconf.getBoolean("killer")) killer.sendMessage("Вы стали убийцей! Кровожадное животное!");
                else killer.sendMessage("Сколько можно лить крови? Бессердечная скотина! Тебе это припомнят, учти!");
                killerconf.set("killer", "true");
                killerconf.set("time", killerconf.getInt("time")+10);
                plugin.save(killerconf, new File(plugin.getDataFolder(), "userdata"+File.separator+killer.getName()));
            }   
        }
    И так же добавляем два новых метода:
    Код:
    private void updateKiller(Player killer) {
            plugin.econ.depositPlayer(killer, 100);
            killer.sendMessage("Вы убили киллера и получили 100$");
            YamlConfiguration killerconf = plugin.getUserConfig(killer);
            if (killerconf.getBoolean("killer")){
                killerconf.set("time", (int)killerconf.getInt("time")*0.2);
                killer.sendMessage("Т.к. вы тоже убийца то ваш срок был уменьшен на 20%");
                plugin.save(killerconf, new File(plugin.getDataFolder(), "userdata"+File.separator+killer.getName()));
            }
        }
    
    
        private void jailKilled(Player killed, int time) {
            Collection<String> jails = null;
            try {
                jails = plugin.ess.getJails().getList();
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (jails==null) return;
            for (String s:jails){
                try {
                    plugin.ess.getUser(killed).setJail(s);
                    plugin.ess.getUser(killed).setJailTimeout(time*60*20);
                    killed.sendMessage("Вас поймали и посадили в тюрьму на срок "+ Integer.toString(time));
                    killed.sendMessage("Когда вас выпустят, с вас будут сняты все обвинения. Удачного времяпрепровождения ;)");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

    P.S. Многое может быть красным и еклипс будет кричать"это ошибка, ох, ах, как жить". Прежде чем реветь попробуй симпортировать. если несколько импортов предложит, то пришли скрин и спроси что импортировать. если нет импортов - то скрины в помощь опять же. Удачи[DOUBLEPOST=1483553015,1483552893][/DOUBLEPOST]я не проверял на работоспособность, если кто то заметит лажу в коде\консоли - то тапочки пишем вниз ↓
     
  19. TheZefirrkka

    TheZefirrkka Активный участник Пользователь

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    Кросс, заморочился, я бы этому дауну ничего не делал...[DOUBLEPOST=1483553082,1483553020][/DOUBLEPOST]
    Это азы джавы, даже аутисты это понимают...
     
  20. Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Мне было оооочень скучно
    Я тебе больше открою - сие есть азы программирования. переменные есть в каждом языке. а вот их типы от языка к языку рознятся. но такие стандартные как int, String, Char, Double, boolean есть везде
     
  21. TheZefirrkka

    TheZefirrkka Активный участник Пользователь

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    754 просмотра за 1 день, рекорд раздела...
     

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