Гайд по Macro/Keybind mod или как привязать команды к кнопкам в майнкрафте.

Тема в разделе "Руководства", создана пользователем Black_falcon, 7 янв 2015.

  1. Black_falcon

    Black_falcon
    Архитектор
    1.895
    793
    438
    Сделай автопилот. Что бы он умел прокладывать маршурт из точки А в точку Б, проходящий через другие известные точки.
     
  2. John_Locke

    John_Locke
    Градостроитель
    1.177
    1.092
    463
    Это автобот, охота на них пока не открыта[smile]
    Напиши лучше калькулятор в инвентаре где кнопками служат ячейки и обязательно с копированием результата в буфер обмена[smile]
     
  3. squirrel

    squirrel
    Заслуженный градостроитель
    3.239
    3.319
    558
    Ботоводство - зло. Вы ведь не хотите стать виновниками того, что мод macro key bind станет запрещенным.
     
    John_Locke нравится это.
  4. damix_pro

    damix_pro
    Архитектор
    370
    149
    313
    вот про точки А и Б я могу конечно сделать... но...... как сказал великий бельчонок:
    )))
    а вот
    это интересно)
    да и кстати вы вроде и сами сможете это сделать мне кажется)
    Ты так еще про буфер сказал, будто это прям такое дело на десять лет разработок))

    а пока еще что нибудь придумайте полезное или забавное)
     
  5. Black_falcon

    Black_falcon
    Архитектор
    1.895
    793
    438
    Окей, перефразирую, не автопилот, а построитель маршрута. Что бы имея список точек, и списки соесдей каждой из них, он мог просчитать и выдать мне маршрут, по которому я смогу дойти до цели.
     
  6. squirrel

    squirrel
    Заслуженный градостроитель
    3.239
    3.319
    558
    Длина вектора какая? [smile]
    И не стоит шутить, сделать мод macro key bind запрещенным - не проблема. Только оно вам нужно? А еще можно для конкретного игрока его запретить. Думаю это начнем практиковать если вы перестанете понимать.
     
  7. damix_pro

    damix_pro
    Архитектор
    370
    149
    313
    Короче Вот канкулятор
    Ваш инвентарь должен выглядеть примерно так:
    upload_2016-10-6_18-4-21.png
    А именно:
    немного кремня (не обязательно 64 можно 9);
    45 земли ;
    64 кабл стоуна;
    1 саженец любой ;
    1 факел простой;
    1 факел красный;
    1 палка;
    1 ступенька из булыжника;
    1 уголь;
    1 гравий;
    1 ведро воды;
    1 верстак;
    булыжник,кремень и земля пусть стоит в первом ряду на любом из 3х последних блоков (ну короче расфасуйте как у меня на скрине. неважно в каком порядке, главное чтобы там рабочая область была открыта) (рабочая область - с 1 по 6 блоки на каждом уровне) (ну вы поймёте после первого запуска)

    Как играть:
    земля - цифры (1-9)
    гравий - Цифра 0 (вспомнил про нее в конце поэтому она немного кривее стоит))
    красный факел ------ "+"
    простой факел ------- "-"
    уголь --------------------" * "
    палочка ----------------" / "
    ступенька ------------- Квадрат
    Деревце --------------- Корень
    Ведёрко --------------- Удалить (после того как решите пример, нажмите пожалуйста)
    Верстак ---------------- "="

    при ответе если в начале кремень - значит отрицателоьный ответ
    а если кремень в середине или конце то он идет как 0
    Теперь установка:
    лехчи некуда - Просто закиньте все файлы куда надо ( \macros )
    и забиндите на любую кнопочку: $${$$<calc.txt>}$$
    пс нужен модуль клипбоард
     

    Вложения:

    • calc.txt
      Размер файла:
      6,2 КБ
      Просмотров:
      560
    • checker.txt
      Размер файла:
      556 байт
      Просмотров:
      513
    • psi.txt
      Размер файла:
      206 байт
      Просмотров:
      519
    • sort.txt
      Размер файла:
      2 КБ
      Просмотров:
      626
    Последнее редактирование: 6 окт 2016
    humanother, John_Locke и squirrel нравится это.
  8. John_Locke

    John_Locke
    Градостроитель
    1.177
    1.092
    463
    Идея - оригинальная, исполнение - креативное.[smile]
    А почему у меня в слоте №36 постоянно лежит кремень?
    P.S. Результат в буфере верный[smile]
     
  9. damix_pro

    damix_pro
    Архитектор
    370
    149
    313
    вот это не знаю у меня всё норм работало =/

    и давайте еще ченибудь на что хватит фантазии!!! ))
     
  10. Detser

    Detser
    Новичок
    3
    0
    116
    Можешь сделать скрипт - что бы выводилось окно с полной информацие от хп до прочности брони(можно и больше)
     
  11. Detser

    Detser
    Новичок
    3
    0
    116
    Ну как сможешь ?
     
  12. damix_pro

    damix_pro
    Архитектор
    370
    149
    313
    там выше есть про GUI и их штуки вроде
    для этого скрипт не нужен в принципе
    Для начала:
    first.gif
    затем открой AppData\Roaming\.minemoscow\MM Classic\liteconfig\common\macros\logs там появится vars.txt
    Каждую строчку ты можешь использовать как показано Далее:
    создай новый gui и кинь на него лэйбл. в этом лейбле во вторую строчку напиши %% а ниже пиши любое слово из файла vars.txt (допустим HEALTH) и нажми ОК.
    second.gif сори но это не загружалось почему то сюда))
    (как ссылку откроешь там просто нажмешь на картинку которая будет в центре и тебя перебросит на страничку. как только страничка загрузится (30мб) гифка откроется.)
    и так вот. Далее делаешь как на этой гифке:
    3.gif
    уфф, вроде всё.

    давайте еще Еще ЕЩЕ!!!!!!
     
    Последнее редактирование: 7 окт 2016
  13. damix_pro

    damix_pro
    Архитектор
    370
    149
    313
    нууууужеее какое нибудь нереальное задание или какую нибудь игру типа слот машины в инвентаре)) но желательно конечно что нибудь полезное
    шоб я месяц пыхтел без остановки и мой мозг высушился до капли
     
  14. Detser

    Detser
    Новичок
    3
    0
    116
    А есть какие - нибудь весёлые скрипты ?[smile]
     
  15. damix_pro

    damix_pro
    Архитектор
    370
    149
    313
    не-а. придумай что нибудь а мы попробуем сделать)
    А хотя вроде делал скрипт один.. можно было рисовать блоками в креативе
    но жесткий диск сломлен со всеми моими старыми скриптами ;(

    Ну жееееее нуууу Нууууууу НУУУУУУУУУУУУУУУУ
     
    Последнее редактирование: 7 окт 2016
  16. damix_pro

    damix_pro
    Архитектор
    370
    149
    313
    3000 за хорошую идею!!!! 500ч за простоую идею!!!
    мне совсем совсем нечем заняться ап салютно
     
  17. BearGrils

    BearGrils
    Архитектор
    806
    562
    393
    ))....было такое )....бьёш по табличке появляется вагонетка )....садишся прописываеш станцию куда тебе нужно добраться - жмёш энтер, жмёш на кнопку на стене - вагонетка стартует, пока едеш 10-15 минут, скучно пялиться на наскоро прокопанный тоннель из булыги ), смотриш видео какое нибудь на тытрубе или залипаеш в вк ), как только приезжаеш на станцию назначения вагонетка автоматически пропадает - персонаж остаётся стоять - чем тебе не проход из точки А в точку Б в автоматическом режиме ? )....
     
    Последнее редактирование: 7 окт 2016
  18. BearGrils

    BearGrils
    Архитектор
    806
    562
    393
    придумай как взломать сервер пентагона и похитить информацию оттуда а потом безпалевно продать )....вот тебе задача на долгие месяцы ))):lol:
     
    Последнее редактирование: 7 окт 2016
  19. damix_pro

    damix_pro
    Архитектор
    370
    149
    313
    ага. на биндах)
     
  20. John_Locke

    John_Locke
    Градостроитель
    1.177
    1.092
    463
    Ну если только совсем совсем скучно, то можно продолжить издеваться над инвентарём. Набросай миниигру "Крестики-нолики" Тем более выиграть её очень сложно. В качестве алгоритма, "сюжет" можно позаимствовать из исходника на Java
    Код:
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.Insets;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ComponentAdapter;
    import java.awt.event.ComponentEvent;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    
    public class CrossesNaughts
      extends JFrame
    {
      int currentSide = 1;
      int playerSide = 1;
     
      class Cell
        extends JButton
        implements ActionListener
      {
        static final long serialVersionUID = 1L;
        private final int id;
        Dimension dim = new Dimension();
       
        Cell(int id)
        {
          this.id = id;
          addActionListener(this);
        }
       
        public void actionPerformed(ActionEvent e)
        {
          CrossesNaughts.this.onPress(this.id);
        }
       
        void mark(int side)
        {
          CrossesNaughts.this.field[this.id] = side;
          setEnabled(false);
          if (side > 0) {
            setText("X");
          } else {
            setText("O");
          }
        }
      }
     
      ComponentAdapter resizer = new ComponentAdapter()
      {
        public void componentResized(ComponentEvent e)
        {
          Insets i = CrossesNaughts.this.getInsets();
          CrossesNaughts.this.onResize(e.getComponent().getWidth() - i.left - i.right, e.getComponent().getHeight() - i.top -
    
    i.bottom);
        }
      };
      static final long serialVersionUID = 1L;
      CrossesNaughts.Cell[] cells;
      int best;
      static final int SIZE = 3;
      int[] field;
     
      CrossesNaughts()
      {
        super("Crosses and Naughts");
       
        this.field = new int[9];
        for (int i = 0; i < this.field.length; i++) {
          this.field[i] = 0;
        }
        this.cells = new CrossesNaughts.Cell[9];
        for (int i = 0; i < this.cells.length; i++) {
          add(this.cells[i] = new CrossesNaughts.Cell(i));
        }
        setLayout(null);
        addComponentListener(this.resizer);
        setDefaultCloseOperation(2);
        Dimension scrDim = Toolkit.getDefaultToolkit().getScreenSize();
        setLocation(scrDim.width / 4, scrDim.height / 4);
        setSize(scrDim.width / 2, scrDim.height / 2);
        setVisible(true);
        if (JOptionPane.showConfirmDialog(this, "Ваш первый ход?", "Game mode", 0) == 1)
        {
          machineMove();
          this.playerSide = -1;
        }
      }
     
      int get(int x, int y)
      {
        return this.field[(y * 3 + x)];
      }
     
      void set(int x, int y, int v)
      {
        this.field[(y * 3 + x)] = v;
      }
     
      int x(int i)
      {
        return i % 3;
      }
     
      int y(int i)
      {
        return i / 3;
      }
     
      void onResize(int w, int h)
      {
        for (int i = 0; i < this.cells.length; i++)
        {
          this.cells[i].setLocation(w * x(i) / 3, h * y(i) / 3);
          this.cells[i].setSize(w * (x(i) + 1) / 3 - w * x(i) / 3, h * (y(i) + 1) / 3 - h * y(i) / 3);
        }
      }
     
      void onPress(int id)
      {
        if (this.currentSide != this.playerSide) {
          return;
        }
        this.cells[id].mark(this.currentSide);
        if (checkWin(x(id), y(id)))
        {
          JOptionPane.showMessageDialog(this, "Вы всё таки победили!");
          return;
        }
        this.currentSide = (-this.currentSide);
        assess(this.currentSide);
        if (this.best < 0)
        {
          JOptionPane.showMessageDialog(this, "Ничья!");
          return;
        }
        machineMove();
      }
     
      void machineMove()
      {
        this.cells[this.best].mark(this.currentSide);
        if (checkWin(x(this.best), y(this.best)))
        {
          JOptionPane.showMessageDialog(this, "Вы проиграли. Удачи в следующий раз )))");
          return;
        }
        this.currentSide = (-this.currentSide);
        assess(this.currentSide);
        if (this.best < 0)
        {
          JOptionPane.showMessageDialog(this, "Ничья!");
          return;
        }
      }
     
      boolean checkWin(int x, int y)
      {
        int i = 0;
        for (int s = 0; i < 3; i++) {
          s += get(i, y);
        }
        if (Math.abs(s) == 3) {
          return true;
        }
        i = 0;
        for (s = 0; i < 3; i++) {
          s += get(x, i);
        }
        if (Math.abs(s) == 3) {
          return true;
        }
        if (x == y)
        {
          i = 0;
          for (s = 0; i < 3; i++) {
            s += get(i, i);
          }
          if (Math.abs(s) == 3) {
            return true;
          }
        }
        if (x + y + 1 == 3)
        {
          i = 0;
          for (s = 0; i < 3; i++) {
            s += get(i, 3 - i - 1);
          }
          if (Math.abs(s) == 3) {
            return true;
          }
        }
        return false;
      }
     
      int assess(int side)
      {
        int best = -1;int bestVal = -2;
        for (int i = 0; i < this.field.length; i++) {
          if (this.field[i] == 0)
          {
            this.field[i] = side;
            if (checkWin(x(i), y(i)))
            {
              this.field[i] = 0;
              this.best = i;
              return side;
            }
            int curVal = assess(-side);
            this.field[i] = 0;
            if (curVal * side > bestVal)
            {
              bestVal = curVal * side;
              best = i;
            }
          }
        }
        this.best = best;
        if (best < 0) {
          return 0;
        }
        return bestVal * side;
      }
     
      public static void main(String[] args)
      {
        new CrossesNaughts();
      }
    }
    
    --
    P.S. вот как раз на недельку будет чем занятся[smile]
     
    damix_pro и squirrel нравится это.