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

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

Discussion in 'Разработка плагинов для новичков' started by asdqwertypro, Jan 3, 2017.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    создаем поле. public Essentials ess; (это писать на следующей строчке после public Economy econ=null;)
    Создаем метод setupEssentials()
    Code:
    private boolean setupEssentials() {
        if (getServer().getPluginManager().getPlugin("Essentials") == null) {
            return false;
        }
        return true;
    }
    В методе onEnable() добавляем
    Code:
    if (!setupEssentials()) {
                Bukkit.getConsoleSender().sendMessage(String.format("[%s] - Disabled due to no Essentias found!", getDescription().getName()));
                getServer().getPluginManager().disablePlugin(this);
                return;
                }
    Так же создаем два метода работы с конфигами. Это пригодится позже.
    Вот эти методы:
    Code:
    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();
            }
        }
    С главным классом закончили.

    Старый ивент можно убрать. т.к. теперь есть свой конфиг, то и статус убийцы отныне хранится там. Это несомненно будет лучше, ибо засирать пекс лишним ну не стоит.
    Теперь ставим туда новый ивент.
    Code:
    @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()));
            }   
        }
    И так же добавляем два новых метода:
    Code:
    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 Активный участник Пользователь

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

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

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

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

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

Share This Page