1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

В разработке Алгоритм для получения очков за убийство.

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

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

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

    Баллы:
    68
    Всем привет,

    Я по разработке плагина являюсь новичком, и не могу я придумать алгоритма для получения очков за убийство игрока и записи их в MySQL.

    MySQL подключение у меня уже сделано.

    Вот как я пробывал:
    MySQL.java:
    Код:
        private static void getInfo() {
            Statement st = null;
            ResultSet rs = null;
       
            try {
                st = conn.createStatement();
                rs = st.executeQuery("SELECT * FROM basebuilder");
           
                while (rs.next()) {
                    String name = rs.getString("name");
                    Integer points = rs.getInt("points");
                    Integer kills = rs.getInt("kills");
                    Integer deaths = rs.getInt("deaths");
               
                    PlayerPoints.setInfo(name, points, kills, deaths);
                }
    PlayerPoints:

    Код:
        public static void addXP(Player p, int points) {
            String name = p.getName();
            Integer before = taskai.get(name);
         
            if (before != null) {
                taskai.put(name, before+points);
            } else {
                before = 0;
                taskai.put(name, points);
            }
        }
     
        public static void setInfo(String name, int points, int kills, int deaths) {
            taskai.put(name, points);
            killai.put(name, kills);
            mirtys.put(name, deaths);
        }
    Main:

    Код:
        @EventHandler
      public void onKillPoints(PlayerDeathEvent e) {   
      if (e.getEntity().getKiller() != null)
      {
          int points = 0;
          points += 1;
          PlayerPoints.addXP(e.getEntity().getKiller(), points);
      } 
    Пытался найти решение в дгугих плагинах, которые имеют похожие функции, но не помогло.
    P.S: Ошибок не кидает.

    Спасибо!
     
  2. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Ну а в MySQL то почему не записал данные при убийстве? И конкретно напиши, что ты хочешь
     
  3. omegaLIMKSYS

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

    Баллы:
    88
    Имя в Minecraft:
    thejust
    • (5.4) Флуд, офтопик
    хммм.... убидительно мне как раз нужен человек который умеет писать плагины , кто хочет можете добавляться в скайп elion.elisa , а так же нужны программисты (только настоящие , так как я знаю как выести всю правду из человека:))
     
  4. Автор темы
    Bind

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

    Баллы:
    68
    Киллеру + 1 points.
    Вроде есть запись в MySQL, но чета неработает...
     
  5. gamelax

    gamelax Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    gamelax
    Кроме Select запроса что-нибудь покажите?
     
  6. Автор темы
    Bind

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

    Баллы:
    68
    Код:
        public static void insertInfo(String name, Integer points, Integer kills, Integer deaths) {
            PreparedStatement update = null;
           
            try {
                update = conn.prepareStatement("UPDATE basebuilder SET points=?, kills=?, death=? WHERE name=?");
                update.setInt(1, points);
                update.setInt(2, kills);
                update.setInt(3, deaths);
                update.setString(4, name);
               
                int row = update.executeUpdate();
               
                if(row==0) {
                    PreparedStatement insert = null;
                   
                    try {
                        insert = conn.prepareStatement("INSERT INTO basebuilder SET name=?, points=?, kills=?, deaths=?");
                        insert.setString(1, name);
                        insert.setInt(2, points);
                        insert.setInt(3, kills);
                        insert.setInt(4, deaths);
                        insert.executeUpdate();
                    } finally {
                        if (insert != null) {
                            try { insert.close(); } catch (SQLException e) {}
                        }
                    }
                }
            } catch (Exception e) {
                Main.log.warning("[CRUEL] SQL ERROR while inserting info: " + e);
            } finally {
                if (update != null) {
                    try { update.close(); } catch (SQLException e) {}
                }
            }
        }
     
  7. gamelax

    gamelax Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    gamelax
    Быть может из-за отсутствия какой-либо обработки исключений ("catch (SQLException e) {}")?
     

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