GlovePIE

Форум для выкладывания и обсуждения модификаций и скрытых настроек. Внимание, новички! Все вопросы задаём только в специально отведённой для этого теме!

Модераторы:Kivlov, manuj, Nik

tj09
Новенький
Сообщения:3
Зарегистрирован:Вс авг 22, 2010 10:48 am
Откуда:Черкесск
Re: GlovePIE

Сообщение tj09 » Ср мар 07, 2012 12:16 pm

razr писал(а):хорошо....
Функции скрипта:
1.) Реализация МКПП: 6 (мышь)
2.) Эмуляция TrackIR (мышь ИЛИ мышь+клава)

Требования к скрипту:
0.) наличие GlovePIE :)
1.) мышка с боковыми кнопками (XButton1 и XButton2), с правой кнопкой и колёсиком
2.) клавиатура с желательно работающими кнопками: F9, Z, X, V, K, L, Y, LeftControl, LeftAlt

Инструкции и настройки:
Запуск:
1.) запустить GlovePIE и вставить код скрипта(возможно в дальнейшем реализовать автозагрузку)
2.) Нажать в окне GlovePIE "Run"
3.) При необходимости выполнить первоначальные настройки скрипта (читать ниже)
4.) сам скрипт активируется нажатием кнопки "F9" (по умолчанию выключен)

[spoiler МКПП]представлена в виде

Код: Выделить всё

|R|  |1|3|5|
  - - -|N|-
     |2|4|6|

где "-" обозначается положение рукоятки рычага кор. передач, из которых при отпуске рукоятки , она сама возвращается в положение N
По умолчанию включается передача N между 3 и 4-ой.
В скрипте реализован автовозврат в нейтральное положение. Он действует ,например тогда, когда вы выключаете заднюю передачу и не включаете никакую другую...

Для нормальной работы скрипта в настройках 3D инструктора нужно выставить след настройки управления:
Первая передача - клавиша "1" (цифра 1)
Вторая передача - клавиша "2"
Третья передача - клавиша "3"
Четвёртая передача - клавиша "4"
Пятая передача - клавиша "5"
Шестая передача - клавиша "6"
Задний ход - клавиша "0"
Нейтральная передача - клавиша "N"[/spoiler]

[spoiler Эмуляция TrackIR]1.) Верчение головой с помощью мышки:
Для верчения следует зажать правую кнопку мышки и водить мышкой вп\назад , влево\вправо

2.) Перемещения камеры:
2.1) Ускоренные перемещения камеры:
Перемещение вперёд\назад: при зажатой на клавиатуре кнопке Z нужно прокручивать колёсиком
Перемещение влево\вправо: при зажатой на клавиатуре кнопке X нужно прокручивать колёсиком
Перемещение вверх\вниз: при зажатой на клавиатуре кнопке Y нужно прокручивать колёсиком
Боковой наклон камеры: при зажатой на клавиатуре кнопке K нужно прокручивать колёсиком
Выглядывание из левого и правого окошка: из левого кнопка "LeftCTRL", из правого - "LeftALT" (проверено на Ваз2170, для других надо подбирать индивидуальные положения камеры)
2.) Замедленные перемещения камеры:
Перемещение вперёд\назад: при зажатой правой кнопке мышки и одновременной прокрутке колёсиком мышки
Перемещение вверх\вниз(Регулировка высоты): при зажатой на клавиатуре кнопке V нужно прокручивать колёсиком

Универсальная регулировка положения камеры - для этого нужно зажать на боковой части мышки кнопку XButton2 (=>):
Перемещение вперёд\назад и влево\вправо осуществляется перемещением курсора мышки
Регулировка высоты осуществляется прокруткой колёсика мышки

Возврат в центральное положение камеры:
Для этого нужно нажать среднюю кнопку мышки(не бойтесь нажать на колёсик)[/spoiler]

[spoiler Первоначальная настройка скрипта]0.) настройки следует менять только в самых первых строках скрипта, но не в его конце
границы настроек выделены комментариями //
все настройки связаны только с настройкой чувствительности мышки.
1.) Разрешение экрана задаётся либо автоматически

Код: Выделить всё

var.scrW=screen.Width
var.scrH=screen.Height
Либо вручную, если вручную то нужно расскомментировать "//" две строчки что ниже

Код: Выделить всё

var.scrW=1680    -разрешение по горизонтали
var.scrH=1050    -разрешение по вертикали
2.) Настройка Cursor2

Код: Выделить всё

var.MyScrX=var.scrW*10  -Разрешение Cursor2 по X  , используется для МКПП, по желанию можно самому изменить или просто стереть множители 10
var.MyScrY=var.scrH*10  -Разрешение Cursor2 по Y
Настройка Cursor3

Код: Выделить всё

var.MyScrTRX=var.scrW*10 -Разрешение Cursor3 по X  , используется для FaceTrackIR -например 16800 
var.MyScrTRY=var.scrH*10 - Разрешение Cursor3 по Y - например 10500
3.)

Код: Выделить всё

var.MyUskX=2,2 -изменять по желанию - ускорение по оси X Cursor2
var.MyUskY=5 //0,5; //7;   ускорение по оси Y Cursor2
var.MyUskTRX=4;            ускорение по оси X Cursor3
var.MyUskTRY=4;            ускорение по оси Y Cursor3
var.MyUskFX=4;             ускорение по оси X обзор
var.MyUskFY=4;             ускорение по оси Y обзор
var.MyUskFZ=4;             ускорение по оси Z обзор
var.MyMinUskX=0,002;       ускорение по оси X озор в салоне
var.MyMinUskY=0,002;       ускорение по оси Y озор в салоне
var.MyMinUskZ=0,005;       ускорение по оси Z озор в салоне
[/spoiler]

Сам код:
[spoiler script razrmkpp.pie]

Код: Выделить всё

//Key F9- Вкл/Выкл джоя
 if (F9 = false) {
  var.v1 = 0;
  }
 if (F9 = true and var.v19 = 0 and var.v1 = 0) {
 var.v19 = 1 //переменная отвечающая за вкл\выкл скрипта
 var.v1 = 1

//Разрешение экрана задаётся либо автоматически
  var.scrW=screen.Width
  var.scrH=screen.Height
  //Либо вручную, если вручную то нужно расскомментировать "//" две строчки что ниже
  //var.scrW=1680   //разрешение по горизонтали
  //var.scrH=1050   //разрешение по вертикали


//ниже настройки RazrMouseDriver
//Настройка Cursor2
var.MyScrX=var.scrW*10  //Разрешение Cursor2 по X  , используется для МКПП, по желанию можно самому изменить или просто стереть множители 10
var.MyScrY=var.scrH*10  //Разрешение Cursor2 по Y

//Настройка Cursor3
var.MyScrTRX=var.scrW*10 //Разрешение Cursor3 по X  , используется для FaceTrackIR //например 16800
var.MyScrTRY=var.scrH*10 //Разрешение Cursor3 по Y                                 //например 10500

//Прочие настройки
var.v41=var.MyScrX/2;   //Не изменять
var.v46=var.MyScrY/2;   //Не изменять
var.v45=var.MyScrTRX/2; //Не изменять
var.v43=var.MyScrTRY/2; //Не изменять
var.MyUskX=2,2 //0,3; //1,9;  //изменять по желанию - ускорение по оси X Cursor2
var.MyUskY=5 //0,5; //7;      //изменять по желанию - ускорение по оси Y Cursor2
var.MyUskTRX=4;               //изменять по желанию - ускорение по оси X Cursor3
var.MyUskTRY=4;               //изменять по желанию - ускорение по оси Y Cursor3
var.MyUskFX=4;                //изменять по желанию - ускорение по оси X обзор
var.MyUskFY=4;                //изменять по желанию - ускорение по оси Y обзор
var.MyUskFZ=4;                //изменять по желанию - ускорение по оси Z обзор
var.MyMinUskX=0,002;          //изменять по желанию - ускорение по оси X озор в салоне
var.MyMinUskY=0,002;          //изменять по желанию - ускорение по оси Y озор в салоне
var.MyMinUskZ=0,005;          //изменять по желанию - ускорение по оси Z озор в салоне
//Выше первоначальная конфигурация RazrMouseDriver

//то что ниже лучше не менять
  var.v6 = 1000;
  var.v14 = 1000;
  var.v9 = 1;
  var.v15 = 1;
  var.v2 = -180;
  var.v12 = 180;
  var.v28 = 180;
  var.v18 = -180;
  var.v5 = 5;
  var.v4 = 3;
  var.v17 = -144;
  var.v21 = 144;
  var.v8 = 150;
  var.v25 = -150;
  var.v16 = 36;
  var.v27 = 288;
  var.v3 = 60;
  var.v10 = 300;
  var.v7 = (abs(var.v2) + abs(var.v12) )/ var.v5 ;
  var.v23 = (abs(var.v28) + abs(var.v18) )/ var.v4 ;
  var.v30 = var.v7 / 2;
  var.v32 = var.v23 / 2;
  var.v11= abs(var.scrW/(abs(var.v2)+abs(var.v12)));
  var.v24= abs(var.scrH/(abs(var.v28)+abs(var.v18)));
  var.v26= var.v11*(var.v16+var.v7*3);
  var.v31= var.v24*(var.v3+var.v23);
  var.v34 = var.scrW/2;
  var.v36 = var.scrH/2;
  var.v13 = var.v34;
  var.v38 = var.v36;
  var.v40 = 0
  var.v33 = 0
  var.v29 = 9;
  var.v37 = false;
 elseif (F9 = true and var.v19 = 1 and var.v1 = 0) {
 var.v19 = 0
 var.v1 = 1
 }
 }
 if (var.v19 = true) {
 var.v22=var.v35;
  if (mouse.XButton1 = 1) {
   var.v35 = 2;     // переключение МКПП
  } elseif (mouse.XButton2 = 1) {
     var.v35 = 3;                       // обзор:вп\нз вл\вп
    } elseif (mouse.RightButton) {
      var.v35 = 4                       // верчение головой
      } elseif (mouse.MiddleButton) {
        var.v35=5                       // по центру
        } else {
          var.v35=1;
          }
   if (var.v37=false) {
     if (var.v29 IN(6,7,8,10) ) {
          var.v29=9;
          var.v20=2;
          var.v39=4;
      }
   }
   if var.v29 = 1 {
var.v20=1;
var.v39=1;
} elseif var.v29=2 {
 var.v20=1;
 var.v39=2;
 } elseif var.v29=3 {
  var.v20=1;
  var.v39=3;
 } elseif var.v29=4 {
  var.v20=1;
  var.v39=4;
 } elseif var.v29=5 {
  var.v20=1;
  var.v39=5;
 } elseif var.v29=6 {
  var.v20=2;
  var.v39=1;
 } elseif var.v29=7 {
  var.v20=2;
  var.v39=2;
 } elseif var.v29=8 {
  var.v20=2;
  var.v39=3;
 } elseif var.v29=9 {
  var.v20=2;
  var.v39=4;
 } elseif var.v29=10 {
  var.v20=2;
  var.v39=5;
 } elseif var.v29=11 {
  var.v20=3;
  var.v39=1;
 } elseif var.v29=12 {
  var.v20=3;
  var.v39=2;
 } elseif var.v29=13 {
  var.v20=3;
  var.v39=3;
 } elseif var.v29=14 {
  var.v20=3;
  var.v39=4;
 } elseif var.v29=15 {
  var.v20=3;
  var.v39=5;
 }

//Выполняется постоянно RazrMouseDriver
var.v42=-(var.v48 - mouse.DirectInputX) //var.MyDX
var.v44=-(var.v47 - mouse.DirectInputY) //var.MyDY
//END Выполняется постоянно RazrMouseDriver

//Выполняется постоянно: доп. функции
if (key.X) { //перемещение влево\вправо
 if (mouse.WheelUp) {
 FakeTrackIR.x=FakeTrackIR.x+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.x=FakeTrackIR.x-2
 }
}
if (key.Z) { //перемещение вперёд\назад
 if (mouse.WheelUp) {
 FakeTrackIR.z=FakeTrackIR.z+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.z=FakeTrackIR.z-2
 }
}
if (key.y) { //ВЫСОТА
 if (mouse.WheelUp) {
 FakeTrackIR.y=FakeTrackIR.y+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.y=FakeTrackIR.y-2
 }
}
if (key.K) {  //HAKJIOH
 if (mouse.WheelUp) {
 FakeTrackIR.roll=FakeTrackIR.roll+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.roll=FakeTrackIR.roll-2
 }
}
if (key.L) {   //перемещение влево\вправо

 if (mouse.WheelUp) {
 FakeTrackIR.x=FakeTrackIR.x+0,2
  }
if (mouse.WheelDown) {
 FakeTrackIR.x=FakeTrackIR.x-0,2
 }
}

if (key.V) {   //BbIcoTA
 if (mouse.WheelUp) {
 FakeTrackIR.y=FakeTrackIR.y+var.MyMinUskY
  }
if (mouse.WheelDown) {
 FakeTrackIR.y=FakeTrackIR.y-var.MyMinUskY
 }
}

//**START key.leftcontrol and ALT  ** Высунуть голову из салона
if (key.leftcontrol) { //левое окошко
 FakeTrackIR.x=-0,6
 }
if (key.leftalt) {   //правое
 FakeTrackIR.x=1,8
 }
//**END key.leftcontrol and ALT  ** Высунуть голову из салона


//END Выполняется постоянно: доп. функции


if (var.v35=2) {
  if ((var.v22<>var.v35) and ((abs(mouse.cursorposx-(var.v11*(var.v16+var.v7*(var.v39-1))))>var.v30) OR (abs(mouse.cursorposy-(var.v24*(var.v3+var.v23*(var.v20-1))))>var.v32 )) ) {
 var.v26=var.v11*(var.v16+var.v7*(var.v39-1));
 var.v31=var.v24*(var.v3+var.v23*(var.v20-1));
 var.v41=MapRange(var.v26,0,var.ScrW,0,var.MyScrX)
 var.v46=MapRange(var.v31,0,var.ScrH,0,var.MyScrY)
}
//то что ниже выполняется всегда

 // START SCRIPT RazrMouseDriver
//Ниже проверки RazrMouseDriver
var.v41=var.v41+var.v42*var.MyUskX
var.v46=var.v46+var.v44*var.MyUskY
if (var.v41<0) {
 var.v41=0
 } elseif (var.v41>var.MyScrX) {
    var.v41=var.MyScrX
    }
if (var.v46<0) {
 var.v46=0
 } elseif (var.v46>var.MyScrY) {
    var.v46=var.MyScrY
    }
//выше проверки  RazrMouseDriver
 // END SCRIPT RazrMouseDriver

  var.v26=maprange(var.v41,0,var.MyScrX,0,var.ScrW)
  var.v31=maprange(var.v46,0,var.MyScrY,0,var.ScrH)
  var.v37=false;
   if (var.v29 = 8 && var.v37=false) {
    var.v37=true;
    if (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) {
       var.v29=9
    }elseif (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=7
    }elseif (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=13
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=3
    } else var.v37=false;
   }

   if (var.v29 = 9 && var.v37=false) {
    var.v37=true;
    if (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) {
       var.v29=10
    }elseif (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=8
    }elseif (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=14
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=4
     } else var.v37=false;
   }

   if (var.v29 = 10 && var.v37=false) {
    var.v37=true;
    if (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=9
    }elseif (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=15
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=5
     } else var.v37=false;
   }
////
   if (var.v29 = 7 && var.v37=false) {
    var.v37=true;
    if (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) {
       var.v29=8
    }elseif (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=6
    } else var.v37=false;
   }
////
   if (var.v29 = 6 && var.v37=false) {
    var.v37=true;
    if ( (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) AND (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)-var.v32) ) ) {
       var.v29=7
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=1
     } else var.v37=false;
   }
////
   if (var.v29 = 1 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=6
    } else var.v37=false;
   }
////
   if (var.v29 = 3 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=8
    } else var.v37=false;
   }
////
   if (var.v29 = 13 && var.v37=false) {
    var.v37=true;
    if (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=8
     } else var.v37=false;
   }
////
   if (var.v29 = 4 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=9
    } else var.v37=false;
   }
////
   if (var.v29 = 14 && var.v37=false) {
    var.v37=true;
    if (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=9
     } else var.v37=false;
   }
////
   if (var.v29 = 5 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=10
    } else var.v37=false;
   }
////
   if (var.v29 = 15 && var.v37=false) {
    var.v37=true;
    if (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=10
     } else var.v37=false;
   }

//Блок нажатия кнопок
  if (var.v37=true ) {
    if (var.v29=3) {
     Key.One = 1;  // 1
     Key.Two = 0;  // 2
     Key.Three = 0;// 3
     Key.Four = 0; // 4
     Key.Five = 0; // 5
     Key.Six = 0;  // 6
     Key.Zero = 0; // R
     Key.N = 0;    // N
    } elseif (var.v29=13) {
     Key.One = 0;
     Key.Two = 1;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=4) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 1;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=14) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 1;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=5) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 1;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=15) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 1;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=1) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 1;
     Key.N = 0;
    } else {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 1;
    }

  }
   ////
   }//то что выше выполняется только при нажатой кнопке XButton1 (стрелка налево или "назад" сбоку мышки)

  }

if (var.v35=3) { //Улучшенный обзор при зажатой кнопке XButton2 (стрелка направо или "вперёд" сбоку мышки)

  //START Регулировка влево\вправо; вперёд\назад
  faketrackir.x=faketrackir.x+ var.v42*var.MyUskFX;
  faketrackir.z=faketrackir.z- var.v44*var.MyUskFZ;
  //END Регулировка влево\вправо; вперёд\назад

  //START Регулировка по высоте при зажатой кнопке XButton2 (стрелка направо или "вперёд" сбоку мышки) и одновременной прокруткой колёсиком мышки
 if (mouse.WheelUp) {
 FakeTrackIR.y=FakeTrackIR.y+var.MyMinUskY *var.MyUskFY
  }
if (mouse.WheelDown) {
 FakeTrackIR.y=FakeTrackIR.y-var.MyMinUskY *var.MyUskFY
 }
 //END Регулировка по высоте
 }

 if (var.v35=4) { //Регулировка положения водителя (вперёд-назад) при зажатой правой кнопке мышки и одновременной прокрутке колёсиком
//  CAMERA Bnepeg\Ha3ag
 if (mouse.WheelUp) {
 FakeTrackIR.z=FakeTrackIR.z+var.MyMinUskZ
  }
if (mouse.WheelDown) {
 FakeTrackIR.z=FakeTrackIR.z-var.MyMinUskZ
 }
 ///////////END CAMERA Bnepeg\Ha3ag


var.v45=var.v45+var.v42*var.MyUskTRX
var.v43=var.v43+var.v44*var.MyUskTRY
if (var.v45<0) {
 var.v45=0
 } elseif (var.v45>var.MyScrTRX) {
    var.v45=var.MyScrTRX
    }
if (var.v43<0) {
 var.v43=0
 } elseif (var.v43>var.MyScrTRY) {
    var.v43=var.MyScrtRY
    }


  FakeTrackIR.yaw = MapRange(var.v45, 0, var.MyScrTRX, -180, 180)
  FakeTrackIR.pitch = MapRange(var.v43, 0, var.MyScrTRY, 180, -180)

   }//то что выше выполняется только при нажатой правой кнопке
 if (var.v35=5) {
 var.v45 =  var.MyScrX/2
 var.v43 =  var.MyScrY/2
 mouse.cursorposy = var.scrH/2
FakeTrackIR.yaw = 0
FakeTrackIR.pitch = 0
FakeTrackIR.x=0
FakeTrackIR.y=0
FakeTrackIR.z=0
FakeTrackIR.roll=0
}

 //RMDr    выполняется постоянно, желательно в конец скрипта
    var.v48=mouse.DirectInputX //var.v48
    var.v47=mouse.DirectInputY //var.v47
 //END RMDr выполняется постоянно, желательно в конец скрипта

  } // Конец того что включается\выключается кнопкой F9
}
[/spoiler]

Всех с Наступающим Новым ГОДОМ!!!!!! =))
А где сам код то?

razr
Новенький
Сообщения:10
Зарегистрирован:Сб дек 24, 2011 8:29 pm
Откуда:Москва
Контактная информация:

Re: GlovePIE

Сообщение razr » Сб мар 24, 2012 1:03 pm

посмотри на последние три строчки той цитаты, что выше...
найди там спойлер "script razrmkpp.pie" , и нажми +
http://vk.com/programmirovanie - Программирование на заказ

Linar
Новенький
Сообщения:14
Зарегистрирован:Чт окт 13, 2011 2:09 pm

Re: GlovePIE

Сообщение Linar » Чт апр 12, 2012 6:37 pm

Ребят я так понимаю тут надо скачивать программу GlovePie и вставлять код туда? Или что-то подругому?

evgeha664
Новенький
Сообщения:15
Зарегистрирован:Пн апр 02, 2012 3:29 pm
Откуда:Москва

Re: GlovePIE

Сообщение evgeha664 » Сб апр 14, 2012 10:56 am

razr писал(а):хорошо....
Функции скрипта:
1.) Реализация МКПП: 6 (мышь)
2.) Эмуляция TrackIR (мышь ИЛИ мышь+клава)

Требования к скрипту:
0.) наличие GlovePIE :)
1.) мышка с боковыми кнопками (XButton1 и XButton2), с правой кнопкой и колёсиком
2.) клавиатура с желательно работающими кнопками: F9, Z, X, V, K, L, Y, LeftControl, LeftAlt

Инструкции и настройки:
Запуск:
1.) запустить GlovePIE и вставить код скрипта(возможно в дальнейшем реализовать автозагрузку)
2.) Нажать в окне GlovePIE "Run"
3.) При необходимости выполнить первоначальные настройки скрипта (читать ниже)
4.) сам скрипт активируется нажатием кнопки "F9" (по умолчанию выключен)

[spoiler МКПП]представлена в виде

Код: Выделить всё

|R|  |1|3|5|
  - - -|N|-
     |2|4|6|

где "-" обозначается положение рукоятки рычага кор. передач, из которых при отпуске рукоятки , она сама возвращается в положение N
По умолчанию включается передача N между 3 и 4-ой.
В скрипте реализован автовозврат в нейтральное положение. Он действует ,например тогда, когда вы выключаете заднюю передачу и не включаете никакую другую...

Для нормальной работы скрипта в настройках 3D инструктора нужно выставить след настройки управления:
Первая передача - клавиша "1" (цифра 1)
Вторая передача - клавиша "2"
Третья передача - клавиша "3"
Четвёртая передача - клавиша "4"
Пятая передача - клавиша "5"
Шестая передача - клавиша "6"
Задний ход - клавиша "0"
Нейтральная передача - клавиша "N"[/spoiler]

[spoiler Эмуляция TrackIR]1.) Верчение головой с помощью мышки:
Для верчения следует зажать правую кнопку мышки и водить мышкой вп\назад , влево\вправо

2.) Перемещения камеры:
2.1) Ускоренные перемещения камеры:
Перемещение вперёд\назад: при зажатой на клавиатуре кнопке Z нужно прокручивать колёсиком
Перемещение влево\вправо: при зажатой на клавиатуре кнопке X нужно прокручивать колёсиком
Перемещение вверх\вниз: при зажатой на клавиатуре кнопке Y нужно прокручивать колёсиком
Боковой наклон камеры: при зажатой на клавиатуре кнопке K нужно прокручивать колёсиком
Выглядывание из левого и правого окошка: из левого кнопка "LeftCTRL", из правого - "LeftALT" (проверено на Ваз2170, для других надо подбирать индивидуальные положения камеры)
2.) Замедленные перемещения камеры:
Перемещение вперёд\назад: при зажатой правой кнопке мышки и одновременной прокрутке колёсиком мышки
Перемещение вверх\вниз(Регулировка высоты): при зажатой на клавиатуре кнопке V нужно прокручивать колёсиком

Универсальная регулировка положения камеры - для этого нужно зажать на боковой части мышки кнопку XButton2 (=>):
Перемещение вперёд\назад и влево\вправо осуществляется перемещением курсора мышки
Регулировка высоты осуществляется прокруткой колёсика мышки

Возврат в центральное положение камеры:
Для этого нужно нажать среднюю кнопку мышки(не бойтесь нажать на колёсик)[/spoiler]

[spoiler Первоначальная настройка скрипта]0.) настройки следует менять только в самых первых строках скрипта, но не в его конце
границы настроек выделены комментариями //
все настройки связаны только с настройкой чувствительности мышки.
1.) Разрешение экрана задаётся либо автоматически

Код: Выделить всё

var.scrW=screen.Width
var.scrH=screen.Height
Либо вручную, если вручную то нужно расскомментировать "//" две строчки что ниже

Код: Выделить всё

var.scrW=1680    -разрешение по горизонтали
var.scrH=1050    -разрешение по вертикали
2.) Настройка Cursor2

Код: Выделить всё

var.MyScrX=var.scrW*10  -Разрешение Cursor2 по X  , используется для МКПП, по желанию можно самому изменить или просто стереть множители 10
var.MyScrY=var.scrH*10  -Разрешение Cursor2 по Y
Настройка Cursor3

Код: Выделить всё

var.MyScrTRX=var.scrW*10 -Разрешение Cursor3 по X  , используется для FaceTrackIR -например 16800 
var.MyScrTRY=var.scrH*10 - Разрешение Cursor3 по Y - например 10500
3.)

Код: Выделить всё

var.MyUskX=2,2 -изменять по желанию - ускорение по оси X Cursor2
var.MyUskY=5 //0,5; //7;   ускорение по оси Y Cursor2
var.MyUskTRX=4;            ускорение по оси X Cursor3
var.MyUskTRY=4;            ускорение по оси Y Cursor3
var.MyUskFX=4;             ускорение по оси X обзор
var.MyUskFY=4;             ускорение по оси Y обзор
var.MyUskFZ=4;             ускорение по оси Z обзор
var.MyMinUskX=0,002;       ускорение по оси X озор в салоне
var.MyMinUskY=0,002;       ускорение по оси Y озор в салоне
var.MyMinUskZ=0,005;       ускорение по оси Z озор в салоне
[/spoiler]

Сам код:
[spoiler script razrmkpp.pie]

Код: Выделить всё

//Key F9- Вкл/Выкл джоя
 if (F9 = false) {
  var.v1 = 0;
  }
 if (F9 = true and var.v19 = 0 and var.v1 = 0) {
 var.v19 = 1 //переменная отвечающая за вкл\выкл скрипта
 var.v1 = 1

//Разрешение экрана задаётся либо автоматически
  var.scrW=screen.Width
  var.scrH=screen.Height
  //Либо вручную, если вручную то нужно расскомментировать "//" две строчки что ниже
  //var.scrW=1680   //разрешение по горизонтали
  //var.scrH=1050   //разрешение по вертикали


//ниже настройки RazrMouseDriver
//Настройка Cursor2
var.MyScrX=var.scrW*10  //Разрешение Cursor2 по X  , используется для МКПП, по желанию можно самому изменить или просто стереть множители 10
var.MyScrY=var.scrH*10  //Разрешение Cursor2 по Y

//Настройка Cursor3
var.MyScrTRX=var.scrW*10 //Разрешение Cursor3 по X  , используется для FaceTrackIR //например 16800
var.MyScrTRY=var.scrH*10 //Разрешение Cursor3 по Y                                 //например 10500

//Прочие настройки
var.v41=var.MyScrX/2;   //Не изменять
var.v46=var.MyScrY/2;   //Не изменять
var.v45=var.MyScrTRX/2; //Не изменять
var.v43=var.MyScrTRY/2; //Не изменять
var.MyUskX=2,2 //0,3; //1,9;  //изменять по желанию - ускорение по оси X Cursor2
var.MyUskY=5 //0,5; //7;      //изменять по желанию - ускорение по оси Y Cursor2
var.MyUskTRX=4;               //изменять по желанию - ускорение по оси X Cursor3
var.MyUskTRY=4;               //изменять по желанию - ускорение по оси Y Cursor3
var.MyUskFX=4;                //изменять по желанию - ускорение по оси X обзор
var.MyUskFY=4;                //изменять по желанию - ускорение по оси Y обзор
var.MyUskFZ=4;                //изменять по желанию - ускорение по оси Z обзор
var.MyMinUskX=0,002;          //изменять по желанию - ускорение по оси X озор в салоне
var.MyMinUskY=0,002;          //изменять по желанию - ускорение по оси Y озор в салоне
var.MyMinUskZ=0,005;          //изменять по желанию - ускорение по оси Z озор в салоне
//Выше первоначальная конфигурация RazrMouseDriver

//то что ниже лучше не менять
  var.v6 = 1000;
  var.v14 = 1000;
  var.v9 = 1;
  var.v15 = 1;
  var.v2 = -180;
  var.v12 = 180;
  var.v28 = 180;
  var.v18 = -180;
  var.v5 = 5;
  var.v4 = 3;
  var.v17 = -144;
  var.v21 = 144;
  var.v8 = 150;
  var.v25 = -150;
  var.v16 = 36;
  var.v27 = 288;
  var.v3 = 60;
  var.v10 = 300;
  var.v7 = (abs(var.v2) + abs(var.v12) )/ var.v5 ;
  var.v23 = (abs(var.v28) + abs(var.v18) )/ var.v4 ;
  var.v30 = var.v7 / 2;
  var.v32 = var.v23 / 2;
  var.v11= abs(var.scrW/(abs(var.v2)+abs(var.v12)));
  var.v24= abs(var.scrH/(abs(var.v28)+abs(var.v18)));
  var.v26= var.v11*(var.v16+var.v7*3);
  var.v31= var.v24*(var.v3+var.v23);
  var.v34 = var.scrW/2;
  var.v36 = var.scrH/2;
  var.v13 = var.v34;
  var.v38 = var.v36;
  var.v40 = 0
  var.v33 = 0
  var.v29 = 9;
  var.v37 = false;
 elseif (F9 = true and var.v19 = 1 and var.v1 = 0) {
 var.v19 = 0
 var.v1 = 1
 }
 }
 if (var.v19 = true) {
 var.v22=var.v35;
  if (mouse.XButton1 = 1) {
   var.v35 = 2;     // переключение МКПП
  } elseif (mouse.XButton2 = 1) {
     var.v35 = 3;                       // обзор:вп\нз вл\вп
    } elseif (mouse.RightButton) {
      var.v35 = 4                       // верчение головой
      } elseif (mouse.MiddleButton) {
        var.v35=5                       // по центру
        } else {
          var.v35=1;
          }
   if (var.v37=false) {
     if (var.v29 IN(6,7,8,10) ) {
          var.v29=9;
          var.v20=2;
          var.v39=4;
      }
   }
   if var.v29 = 1 {
var.v20=1;
var.v39=1;
} elseif var.v29=2 {
 var.v20=1;
 var.v39=2;
 } elseif var.v29=3 {
  var.v20=1;
  var.v39=3;
 } elseif var.v29=4 {
  var.v20=1;
  var.v39=4;
 } elseif var.v29=5 {
  var.v20=1;
  var.v39=5;
 } elseif var.v29=6 {
  var.v20=2;
  var.v39=1;
 } elseif var.v29=7 {
  var.v20=2;
  var.v39=2;
 } elseif var.v29=8 {
  var.v20=2;
  var.v39=3;
 } elseif var.v29=9 {
  var.v20=2;
  var.v39=4;
 } elseif var.v29=10 {
  var.v20=2;
  var.v39=5;
 } elseif var.v29=11 {
  var.v20=3;
  var.v39=1;
 } elseif var.v29=12 {
  var.v20=3;
  var.v39=2;
 } elseif var.v29=13 {
  var.v20=3;
  var.v39=3;
 } elseif var.v29=14 {
  var.v20=3;
  var.v39=4;
 } elseif var.v29=15 {
  var.v20=3;
  var.v39=5;
 }

//Выполняется постоянно RazrMouseDriver
var.v42=-(var.v48 - mouse.DirectInputX) //var.MyDX
var.v44=-(var.v47 - mouse.DirectInputY) //var.MyDY
//END Выполняется постоянно RazrMouseDriver

//Выполняется постоянно: доп. функции
if (key.X) { //перемещение влево\вправо
 if (mouse.WheelUp) {
 FakeTrackIR.x=FakeTrackIR.x+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.x=FakeTrackIR.x-2
 }
}
if (key.Z) { //перемещение вперёд\назад
 if (mouse.WheelUp) {
 FakeTrackIR.z=FakeTrackIR.z+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.z=FakeTrackIR.z-2
 }
}
if (key.y) { //ВЫСОТА
 if (mouse.WheelUp) {
 FakeTrackIR.y=FakeTrackIR.y+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.y=FakeTrackIR.y-2
 }
}
if (key.K) {  //HAKJIOH
 if (mouse.WheelUp) {
 FakeTrackIR.roll=FakeTrackIR.roll+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.roll=FakeTrackIR.roll-2
 }
}
if (key.L) {   //перемещение влево\вправо

 if (mouse.WheelUp) {
 FakeTrackIR.x=FakeTrackIR.x+0,2
  }
if (mouse.WheelDown) {
 FakeTrackIR.x=FakeTrackIR.x-0,2
 }
}

if (key.V) {   //BbIcoTA
 if (mouse.WheelUp) {
 FakeTrackIR.y=FakeTrackIR.y+var.MyMinUskY
  }
if (mouse.WheelDown) {
 FakeTrackIR.y=FakeTrackIR.y-var.MyMinUskY
 }
}

//**START key.leftcontrol and ALT  ** Высунуть голову из салона
if (key.leftcontrol) { //левое окошко
 FakeTrackIR.x=-0,6
 }
if (key.leftalt) {   //правое
 FakeTrackIR.x=1,8
 }
//**END key.leftcontrol and ALT  ** Высунуть голову из салона


//END Выполняется постоянно: доп. функции


if (var.v35=2) {
  if ((var.v22<>var.v35) and ((abs(mouse.cursorposx-(var.v11*(var.v16+var.v7*(var.v39-1))))>var.v30) OR (abs(mouse.cursorposy-(var.v24*(var.v3+var.v23*(var.v20-1))))>var.v32 )) ) {
 var.v26=var.v11*(var.v16+var.v7*(var.v39-1));
 var.v31=var.v24*(var.v3+var.v23*(var.v20-1));
 var.v41=MapRange(var.v26,0,var.ScrW,0,var.MyScrX)
 var.v46=MapRange(var.v31,0,var.ScrH,0,var.MyScrY)
}
//то что ниже выполняется всегда

 // START SCRIPT RazrMouseDriver
//Ниже проверки RazrMouseDriver
var.v41=var.v41+var.v42*var.MyUskX
var.v46=var.v46+var.v44*var.MyUskY
if (var.v41<0) {
 var.v41=0
 } elseif (var.v41>var.MyScrX) {
    var.v41=var.MyScrX
    }
if (var.v46<0) {
 var.v46=0
 } elseif (var.v46>var.MyScrY) {
    var.v46=var.MyScrY
    }
//выше проверки  RazrMouseDriver
 // END SCRIPT RazrMouseDriver

  var.v26=maprange(var.v41,0,var.MyScrX,0,var.ScrW)
  var.v31=maprange(var.v46,0,var.MyScrY,0,var.ScrH)
  var.v37=false;
   if (var.v29 = 8 && var.v37=false) {
    var.v37=true;
    if (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) {
       var.v29=9
    }elseif (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=7
    }elseif (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=13
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=3
    } else var.v37=false;
   }

   if (var.v29 = 9 && var.v37=false) {
    var.v37=true;
    if (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) {
       var.v29=10
    }elseif (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=8
    }elseif (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=14
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=4
     } else var.v37=false;
   }

   if (var.v29 = 10 && var.v37=false) {
    var.v37=true;
    if (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=9
    }elseif (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=15
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=5
     } else var.v37=false;
   }
////
   if (var.v29 = 7 && var.v37=false) {
    var.v37=true;
    if (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) {
       var.v29=8
    }elseif (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=6
    } else var.v37=false;
   }
////
   if (var.v29 = 6 && var.v37=false) {
    var.v37=true;
    if ( (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) AND (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)-var.v32) ) ) {
       var.v29=7
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=1
     } else var.v37=false;
   }
////
   if (var.v29 = 1 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=6
    } else var.v37=false;
   }
////
   if (var.v29 = 3 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=8
    } else var.v37=false;
   }
////
   if (var.v29 = 13 && var.v37=false) {
    var.v37=true;
    if (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=8
     } else var.v37=false;
   }
////
   if (var.v29 = 4 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=9
    } else var.v37=false;
   }
////
   if (var.v29 = 14 && var.v37=false) {
    var.v37=true;
    if (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=9
     } else var.v37=false;
   }
////
   if (var.v29 = 5 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=10
    } else var.v37=false;
   }
////
   if (var.v29 = 15 && var.v37=false) {
    var.v37=true;
    if (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=10
     } else var.v37=false;
   }

//Блок нажатия кнопок
  if (var.v37=true ) {
    if (var.v29=3) {
     Key.One = 1;  // 1
     Key.Two = 0;  // 2
     Key.Three = 0;// 3
     Key.Four = 0; // 4
     Key.Five = 0; // 5
     Key.Six = 0;  // 6
     Key.Zero = 0; // R
     Key.N = 0;    // N
    } elseif (var.v29=13) {
     Key.One = 0;
     Key.Two = 1;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=4) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 1;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=14) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 1;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=5) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 1;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=15) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 1;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=1) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 1;
     Key.N = 0;
    } else {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 1;
    }

  }
   ////
   }//то что выше выполняется только при нажатой кнопке XButton1 (стрелка налево или "назад" сбоку мышки)

  }

if (var.v35=3) { //Улучшенный обзор при зажатой кнопке XButton2 (стрелка направо или "вперёд" сбоку мышки)

  //START Регулировка влево\вправо; вперёд\назад
  faketrackir.x=faketrackir.x+ var.v42*var.MyUskFX;
  faketrackir.z=faketrackir.z- var.v44*var.MyUskFZ;
  //END Регулировка влево\вправо; вперёд\назад

  //START Регулировка по высоте при зажатой кнопке XButton2 (стрелка направо или "вперёд" сбоку мышки) и одновременной прокруткой колёсиком мышки
 if (mouse.WheelUp) {
 FakeTrackIR.y=FakeTrackIR.y+var.MyMinUskY *var.MyUskFY
  }
if (mouse.WheelDown) {
 FakeTrackIR.y=FakeTrackIR.y-var.MyMinUskY *var.MyUskFY
 }
 //END Регулировка по высоте
 }

 if (var.v35=4) { //Регулировка положения водителя (вперёд-назад) при зажатой правой кнопке мышки и одновременной прокрутке колёсиком
//  CAMERA Bnepeg\Ha3ag
 if (mouse.WheelUp) {
 FakeTrackIR.z=FakeTrackIR.z+var.MyMinUskZ
  }
if (mouse.WheelDown) {
 FakeTrackIR.z=FakeTrackIR.z-var.MyMinUskZ
 }
 ///////////END CAMERA Bnepeg\Ha3ag


var.v45=var.v45+var.v42*var.MyUskTRX
var.v43=var.v43+var.v44*var.MyUskTRY
if (var.v45<0) {
 var.v45=0
 } elseif (var.v45>var.MyScrTRX) {
    var.v45=var.MyScrTRX
    }
if (var.v43<0) {
 var.v43=0
 } elseif (var.v43>var.MyScrTRY) {
    var.v43=var.MyScrtRY
    }


  FakeTrackIR.yaw = MapRange(var.v45, 0, var.MyScrTRX, -180, 180)
  FakeTrackIR.pitch = MapRange(var.v43, 0, var.MyScrTRY, 180, -180)

   }//то что выше выполняется только при нажатой правой кнопке
 if (var.v35=5) {
 var.v45 =  var.MyScrX/2
 var.v43 =  var.MyScrY/2
 mouse.cursorposy = var.scrH/2
FakeTrackIR.yaw = 0
FakeTrackIR.pitch = 0
FakeTrackIR.x=0
FakeTrackIR.y=0
FakeTrackIR.z=0
FakeTrackIR.roll=0
}

 //RMDr    выполняется постоянно, желательно в конец скрипта
    var.v48=mouse.DirectInputX //var.v48
    var.v47=mouse.DirectInputY //var.v47
 //END RMDr выполняется постоянно, желательно в конец скрипта

  } // Конец того что включается\выключается кнопкой F9
}
[/spoiler]

Всех с Наступающим Новым ГОДОМ!!!!!! =))
у меня почему то не работает((((((((

cas4397
Новенький
Сообщения:4
Зарегистрирован:Вс фев 12, 2012 5:45 pm

Re: GlovePIE

Сообщение cas4397 » Ср апр 18, 2012 11:37 am

А сколько осей нужно на джойстике,чтобы приспособить его под МКПП ?
Конвертирую Seat Leon Cupra 2007

Аватара пользователя
Windy
Новенький
Сообщения:5
Зарегистрирован:Вс ноя 11, 2012 3:26 pm

Re: GlovePIE

Сообщение Windy » Сб ноя 24, 2012 3:16 pm

razr писал(а):хорошо....
Функции скрипта:
1.) Реализация МКПП: 6 (мышь)
2.) Эмуляция TrackIR (мышь ИЛИ мышь+клава)

Требования к скрипту:
0.) наличие GlovePIE :)
1.) мышка с боковыми кнопками (XButton1 и XButton2), с правой кнопкой и колёсиком
2.) клавиатура с желательно работающими кнопками: F9, Z, X, V, K, L, Y, LeftControl, LeftAlt

Инструкции и настройки:
Запуск:
1.) запустить GlovePIE и вставить код скрипта(возможно в дальнейшем реализовать автозагрузку)
2.) Нажать в окне GlovePIE "Run"
3.) При необходимости выполнить первоначальные настройки скрипта (читать ниже)
4.) сам скрипт активируется нажатием кнопки "F9" (по умолчанию выключен)

[spoiler МКПП]представлена в виде

Код: Выделить всё

|R|  |1|3|5|
  - - -|N|-
     |2|4|6|

где "-" обозначается положение рукоятки рычага кор. передач, из которых при отпуске рукоятки , она сама возвращается в положение N
По умолчанию включается передача N между 3 и 4-ой.
В скрипте реализован автовозврат в нейтральное положение. Он действует ,например тогда, когда вы выключаете заднюю передачу и не включаете никакую другую...

Для нормальной работы скрипта в настройках 3D инструктора нужно выставить след настройки управления:
Первая передача - клавиша "1" (цифра 1)
Вторая передача - клавиша "2"
Третья передача - клавиша "3"
Четвёртая передача - клавиша "4"
Пятая передача - клавиша "5"
Шестая передача - клавиша "6"
Задний ход - клавиша "0"
Нейтральная передача - клавиша "N"[/spoiler]

[spoiler Эмуляция TrackIR]1.) Верчение головой с помощью мышки:
Для верчения следует зажать правую кнопку мышки и водить мышкой вп\назад , влево\вправо

2.) Перемещения камеры:
2.1) Ускоренные перемещения камеры:
Перемещение вперёд\назад: при зажатой на клавиатуре кнопке Z нужно прокручивать колёсиком
Перемещение влево\вправо: при зажатой на клавиатуре кнопке X нужно прокручивать колёсиком
Перемещение вверх\вниз: при зажатой на клавиатуре кнопке Y нужно прокручивать колёсиком
Боковой наклон камеры: при зажатой на клавиатуре кнопке K нужно прокручивать колёсиком
Выглядывание из левого и правого окошка: из левого кнопка "LeftCTRL", из правого - "LeftALT" (проверено на Ваз2170, для других надо подбирать индивидуальные положения камеры)
2.) Замедленные перемещения камеры:
Перемещение вперёд\назад: при зажатой правой кнопке мышки и одновременной прокрутке колёсиком мышки
Перемещение вверх\вниз(Регулировка высоты): при зажатой на клавиатуре кнопке V нужно прокручивать колёсиком

Универсальная регулировка положения камеры - для этого нужно зажать на боковой части мышки кнопку XButton2 (=>):
Перемещение вперёд\назад и влево\вправо осуществляется перемещением курсора мышки
Регулировка высоты осуществляется прокруткой колёсика мышки

Возврат в центральное положение камеры:
Для этого нужно нажать среднюю кнопку мышки(не бойтесь нажать на колёсик)[/spoiler]

[spoiler Первоначальная настройка скрипта]0.) настройки следует менять только в самых первых строках скрипта, но не в его конце
границы настроек выделены комментариями //
все настройки связаны только с настройкой чувствительности мышки.
1.) Разрешение экрана задаётся либо автоматически

Код: Выделить всё

var.scrW=screen.Width
var.scrH=screen.Height
Либо вручную, если вручную то нужно расскомментировать "//" две строчки что ниже

Код: Выделить всё

var.scrW=1680    -разрешение по горизонтали
var.scrH=1050    -разрешение по вертикали
2.) Настройка Cursor2

Код: Выделить всё

var.MyScrX=var.scrW*10  -Разрешение Cursor2 по X  , используется для МКПП, по желанию можно самому изменить или просто стереть множители 10
var.MyScrY=var.scrH*10  -Разрешение Cursor2 по Y
Настройка Cursor3

Код: Выделить всё

var.MyScrTRX=var.scrW*10 -Разрешение Cursor3 по X  , используется для FaceTrackIR -например 16800 
var.MyScrTRY=var.scrH*10 - Разрешение Cursor3 по Y - например 10500
3.)

Код: Выделить всё

var.MyUskX=2,2 -изменять по желанию - ускорение по оси X Cursor2
var.MyUskY=5 //0,5; //7;   ускорение по оси Y Cursor2
var.MyUskTRX=4;            ускорение по оси X Cursor3
var.MyUskTRY=4;            ускорение по оси Y Cursor3
var.MyUskFX=4;             ускорение по оси X обзор
var.MyUskFY=4;             ускорение по оси Y обзор
var.MyUskFZ=4;             ускорение по оси Z обзор
var.MyMinUskX=0,002;       ускорение по оси X озор в салоне
var.MyMinUskY=0,002;       ускорение по оси Y озор в салоне
var.MyMinUskZ=0,005;       ускорение по оси Z озор в салоне
[/spoiler]

Сам код:
[spoiler script razrmkpp.pie]

Код: Выделить всё

//Key F9- Вкл/Выкл джоя
 if (F9 = false) {
  var.v1 = 0;
  }
 if (F9 = true and var.v19 = 0 and var.v1 = 0) {
 var.v19 = 1 //переменная отвечающая за вкл\выкл скрипта
 var.v1 = 1

//Разрешение экрана задаётся либо автоматически
  var.scrW=screen.Width
  var.scrH=screen.Height
  //Либо вручную, если вручную то нужно расскомментировать "//" две строчки что ниже
  //var.scrW=1680   //разрешение по горизонтали
  //var.scrH=1050   //разрешение по вертикали


//ниже настройки RazrMouseDriver
//Настройка Cursor2
var.MyScrX=var.scrW*10  //Разрешение Cursor2 по X  , используется для МКПП, по желанию можно самому изменить или просто стереть множители 10
var.MyScrY=var.scrH*10  //Разрешение Cursor2 по Y

//Настройка Cursor3
var.MyScrTRX=var.scrW*10 //Разрешение Cursor3 по X  , используется для FaceTrackIR //например 16800
var.MyScrTRY=var.scrH*10 //Разрешение Cursor3 по Y                                 //например 10500

//Прочие настройки
var.v41=var.MyScrX/2;   //Не изменять
var.v46=var.MyScrY/2;   //Не изменять
var.v45=var.MyScrTRX/2; //Не изменять
var.v43=var.MyScrTRY/2; //Не изменять
var.MyUskX=2,2 //0,3; //1,9;  //изменять по желанию - ускорение по оси X Cursor2
var.MyUskY=5 //0,5; //7;      //изменять по желанию - ускорение по оси Y Cursor2
var.MyUskTRX=4;               //изменять по желанию - ускорение по оси X Cursor3
var.MyUskTRY=4;               //изменять по желанию - ускорение по оси Y Cursor3
var.MyUskFX=4;                //изменять по желанию - ускорение по оси X обзор
var.MyUskFY=4;                //изменять по желанию - ускорение по оси Y обзор
var.MyUskFZ=4;                //изменять по желанию - ускорение по оси Z обзор
var.MyMinUskX=0,002;          //изменять по желанию - ускорение по оси X озор в салоне
var.MyMinUskY=0,002;          //изменять по желанию - ускорение по оси Y озор в салоне
var.MyMinUskZ=0,005;          //изменять по желанию - ускорение по оси Z озор в салоне
//Выше первоначальная конфигурация RazrMouseDriver

//то что ниже лучше не менять
  var.v6 = 1000;
  var.v14 = 1000;
  var.v9 = 1;
  var.v15 = 1;
  var.v2 = -180;
  var.v12 = 180;
  var.v28 = 180;
  var.v18 = -180;
  var.v5 = 5;
  var.v4 = 3;
  var.v17 = -144;
  var.v21 = 144;
  var.v8 = 150;
  var.v25 = -150;
  var.v16 = 36;
  var.v27 = 288;
  var.v3 = 60;
  var.v10 = 300;
  var.v7 = (abs(var.v2) + abs(var.v12) )/ var.v5 ;
  var.v23 = (abs(var.v28) + abs(var.v18) )/ var.v4 ;
  var.v30 = var.v7 / 2;
  var.v32 = var.v23 / 2;
  var.v11= abs(var.scrW/(abs(var.v2)+abs(var.v12)));
  var.v24= abs(var.scrH/(abs(var.v28)+abs(var.v18)));
  var.v26= var.v11*(var.v16+var.v7*3);
  var.v31= var.v24*(var.v3+var.v23);
  var.v34 = var.scrW/2;
  var.v36 = var.scrH/2;
  var.v13 = var.v34;
  var.v38 = var.v36;
  var.v40 = 0
  var.v33 = 0
  var.v29 = 9;
  var.v37 = false;
 elseif (F9 = true and var.v19 = 1 and var.v1 = 0) {
 var.v19 = 0
 var.v1 = 1
 }
 }
 if (var.v19 = true) {
 var.v22=var.v35;
  if (mouse.XButton1 = 1) {
   var.v35 = 2;     // переключение МКПП
  } elseif (mouse.XButton2 = 1) {
     var.v35 = 3;                       // обзор:вп\нз вл\вп
    } elseif (mouse.RightButton) {
      var.v35 = 4                       // верчение головой
      } elseif (mouse.MiddleButton) {
        var.v35=5                       // по центру
        } else {
          var.v35=1;
          }
   if (var.v37=false) {
     if (var.v29 IN(6,7,8,10) ) {
          var.v29=9;
          var.v20=2;
          var.v39=4;
      }
   }
   if var.v29 = 1 {
var.v20=1;
var.v39=1;
} elseif var.v29=2 {
 var.v20=1;
 var.v39=2;
 } elseif var.v29=3 {
  var.v20=1;
  var.v39=3;
 } elseif var.v29=4 {
  var.v20=1;
  var.v39=4;
 } elseif var.v29=5 {
  var.v20=1;
  var.v39=5;
 } elseif var.v29=6 {
  var.v20=2;
  var.v39=1;
 } elseif var.v29=7 {
  var.v20=2;
  var.v39=2;
 } elseif var.v29=8 {
  var.v20=2;
  var.v39=3;
 } elseif var.v29=9 {
  var.v20=2;
  var.v39=4;
 } elseif var.v29=10 {
  var.v20=2;
  var.v39=5;
 } elseif var.v29=11 {
  var.v20=3;
  var.v39=1;
 } elseif var.v29=12 {
  var.v20=3;
  var.v39=2;
 } elseif var.v29=13 {
  var.v20=3;
  var.v39=3;
 } elseif var.v29=14 {
  var.v20=3;
  var.v39=4;
 } elseif var.v29=15 {
  var.v20=3;
  var.v39=5;
 }

//Выполняется постоянно RazrMouseDriver
var.v42=-(var.v48 - mouse.DirectInputX) //var.MyDX
var.v44=-(var.v47 - mouse.DirectInputY) //var.MyDY
//END Выполняется постоянно RazrMouseDriver

//Выполняется постоянно: доп. функции
if (key.X) { //перемещение влево\вправо
 if (mouse.WheelUp) {
 FakeTrackIR.x=FakeTrackIR.x+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.x=FakeTrackIR.x-2
 }
}
if (key.Z) { //перемещение вперёд\назад
 if (mouse.WheelUp) {
 FakeTrackIR.z=FakeTrackIR.z+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.z=FakeTrackIR.z-2
 }
}
if (key.y) { //ВЫСОТА
 if (mouse.WheelUp) {
 FakeTrackIR.y=FakeTrackIR.y+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.y=FakeTrackIR.y-2
 }
}
if (key.K) {  //HAKJIOH
 if (mouse.WheelUp) {
 FakeTrackIR.roll=FakeTrackIR.roll+2
  }
if (mouse.WheelDown) {
 FakeTrackIR.roll=FakeTrackIR.roll-2
 }
}
if (key.L) {   //перемещение влево\вправо

 if (mouse.WheelUp) {
 FakeTrackIR.x=FakeTrackIR.x+0,2
  }
if (mouse.WheelDown) {
 FakeTrackIR.x=FakeTrackIR.x-0,2
 }
}

if (key.V) {   //BbIcoTA
 if (mouse.WheelUp) {
 FakeTrackIR.y=FakeTrackIR.y+var.MyMinUskY
  }
if (mouse.WheelDown) {
 FakeTrackIR.y=FakeTrackIR.y-var.MyMinUskY
 }
}

//**START key.leftcontrol and ALT  ** Высунуть голову из салона
if (key.leftcontrol) { //левое окошко
 FakeTrackIR.x=-0,6
 }
if (key.leftalt) {   //правое
 FakeTrackIR.x=1,8
 }
//**END key.leftcontrol and ALT  ** Высунуть голову из салона


//END Выполняется постоянно: доп. функции


if (var.v35=2) {
  if ((var.v22<>var.v35) and ((abs(mouse.cursorposx-(var.v11*(var.v16+var.v7*(var.v39-1))))>var.v30) OR (abs(mouse.cursorposy-(var.v24*(var.v3+var.v23*(var.v20-1))))>var.v32 )) ) {
 var.v26=var.v11*(var.v16+var.v7*(var.v39-1));
 var.v31=var.v24*(var.v3+var.v23*(var.v20-1));
 var.v41=MapRange(var.v26,0,var.ScrW,0,var.MyScrX)
 var.v46=MapRange(var.v31,0,var.ScrH,0,var.MyScrY)
}
//то что ниже выполняется всегда

 // START SCRIPT RazrMouseDriver
//Ниже проверки RazrMouseDriver
var.v41=var.v41+var.v42*var.MyUskX
var.v46=var.v46+var.v44*var.MyUskY
if (var.v41<0) {
 var.v41=0
 } elseif (var.v41>var.MyScrX) {
    var.v41=var.MyScrX
    }
if (var.v46<0) {
 var.v46=0
 } elseif (var.v46>var.MyScrY) {
    var.v46=var.MyScrY
    }
//выше проверки  RazrMouseDriver
 // END SCRIPT RazrMouseDriver

  var.v26=maprange(var.v41,0,var.MyScrX,0,var.ScrW)
  var.v31=maprange(var.v46,0,var.MyScrY,0,var.ScrH)
  var.v37=false;
   if (var.v29 = 8 && var.v37=false) {
    var.v37=true;
    if (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) {
       var.v29=9
    }elseif (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=7
    }elseif (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=13
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=3
    } else var.v37=false;
   }

   if (var.v29 = 9 && var.v37=false) {
    var.v37=true;
    if (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) {
       var.v29=10
    }elseif (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=8
    }elseif (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=14
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=4
     } else var.v37=false;
   }

   if (var.v29 = 10 && var.v37=false) {
    var.v37=true;
    if (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=9
    }elseif (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=15
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=5
     } else var.v37=false;
   }
////
   if (var.v29 = 7 && var.v37=false) {
    var.v37=true;
    if (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) {
       var.v29=8
    }elseif (var.v26 < var.v11*(var.v16+var.v7*(var.v39-1)-var.v30) ) {
       var.v29=6
    } else var.v37=false;
   }
////
   if (var.v29 = 6 && var.v37=false) {
    var.v37=true;
    if ( (var.v26 > var.v11*(var.v16+var.v7*(var.v39-1)+var.v30) ) AND (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)-var.v32) ) ) {
       var.v29=7
    }elseif (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=1
     } else var.v37=false;
   }
////
   if (var.v29 = 1 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=6
    } else var.v37=false;
   }
////
   if (var.v29 = 3 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=8
    } else var.v37=false;
   }
////
   if (var.v29 = 13 && var.v37=false) {
    var.v37=true;
    if (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=8
     } else var.v37=false;
   }
////
   if (var.v29 = 4 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=9
    } else var.v37=false;
   }
////
   if (var.v29 = 14 && var.v37=false) {
    var.v37=true;
    if (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=9
     } else var.v37=false;
   }
////
   if (var.v29 = 5 && var.v37=false) {
    var.v37=true;
    if (var.v31 > var.v24*(var.v3+var.v23*(var.v20-1)+var.v32)  ) {
       var.v29=10
    } else var.v37=false;
   }
////
   if (var.v29 = 15 && var.v37=false) {
    var.v37=true;
    if (var.v31 < var.v24*(var.v3+var.v23*(var.v20-1)-var.v32)  ) {
       var.v29=10
     } else var.v37=false;
   }

//Блок нажатия кнопок
  if (var.v37=true ) {
    if (var.v29=3) {
     Key.One = 1;  // 1
     Key.Two = 0;  // 2
     Key.Three = 0;// 3
     Key.Four = 0; // 4
     Key.Five = 0; // 5
     Key.Six = 0;  // 6
     Key.Zero = 0; // R
     Key.N = 0;    // N
    } elseif (var.v29=13) {
     Key.One = 0;
     Key.Two = 1;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=4) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 1;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=14) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 1;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=5) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 1;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=15) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 1;
     Key.Zero = 0;
     Key.N = 0;
    } elseif (var.v29=1) {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 1;
     Key.N = 0;
    } else {
     Key.One = 0;
     Key.Two = 0;
     Key.Three = 0;
     Key.Four = 0;
     Key.Five = 0;
     Key.Six = 0;
     Key.Zero = 0;
     Key.N = 1;
    }

  }
   ////
   }//то что выше выполняется только при нажатой кнопке XButton1 (стрелка налево или "назад" сбоку мышки)

  }

if (var.v35=3) { //Улучшенный обзор при зажатой кнопке XButton2 (стрелка направо или "вперёд" сбоку мышки)

  //START Регулировка влево\вправо; вперёд\назад
  faketrackir.x=faketrackir.x+ var.v42*var.MyUskFX;
  faketrackir.z=faketrackir.z- var.v44*var.MyUskFZ;
  //END Регулировка влево\вправо; вперёд\назад

  //START Регулировка по высоте при зажатой кнопке XButton2 (стрелка направо или "вперёд" сбоку мышки) и одновременной прокруткой колёсиком мышки
 if (mouse.WheelUp) {
 FakeTrackIR.y=FakeTrackIR.y+var.MyMinUskY *var.MyUskFY
  }
if (mouse.WheelDown) {
 FakeTrackIR.y=FakeTrackIR.y-var.MyMinUskY *var.MyUskFY
 }
 //END Регулировка по высоте
 }

 if (var.v35=4) { //Регулировка положения водителя (вперёд-назад) при зажатой правой кнопке мышки и одновременной прокрутке колёсиком
//  CAMERA Bnepeg\Ha3ag
 if (mouse.WheelUp) {
 FakeTrackIR.z=FakeTrackIR.z+var.MyMinUskZ
  }
if (mouse.WheelDown) {
 FakeTrackIR.z=FakeTrackIR.z-var.MyMinUskZ
 }
 ///////////END CAMERA Bnepeg\Ha3ag


var.v45=var.v45+var.v42*var.MyUskTRX
var.v43=var.v43+var.v44*var.MyUskTRY
if (var.v45<0) {
 var.v45=0
 } elseif (var.v45>var.MyScrTRX) {
    var.v45=var.MyScrTRX
    }
if (var.v43<0) {
 var.v43=0
 } elseif (var.v43>var.MyScrTRY) {
    var.v43=var.MyScrtRY
    }


  FakeTrackIR.yaw = MapRange(var.v45, 0, var.MyScrTRX, -180, 180)
  FakeTrackIR.pitch = MapRange(var.v43, 0, var.MyScrTRY, 180, -180)

   }//то что выше выполняется только при нажатой правой кнопке
 if (var.v35=5) {
 var.v45 =  var.MyScrX/2
 var.v43 =  var.MyScrY/2
 mouse.cursorposy = var.scrH/2
FakeTrackIR.yaw = 0
FakeTrackIR.pitch = 0
FakeTrackIR.x=0
FakeTrackIR.y=0
FakeTrackIR.z=0
FakeTrackIR.roll=0
}

 //RMDr    выполняется постоянно, желательно в конец скрипта
    var.v48=mouse.DirectInputX //var.v48
    var.v47=mouse.DirectInputY //var.v47
 //END RMDr выполняется постоянно, желательно в конец скрипта

  } // Конец того что включается\выключается кнопкой F9
}
[/spoiler]

Всех с Наступающим Новым ГОДОМ!!!!!! =))
Привет, подскажи пожалуйста как совместить скрипт "вращения головой":

Код: Выделить всё

if mouse.MiddleButton = 1 THEN begin
 mouse.CursorPosX = (screen.Width) / 2;
 mouse.CursorPosY = screen.Height /2;
endif

var.xxx = MapRange(mouse.CursorPosX, 0, screen.Width, -180, 180)
var.yyy = MapRange(mouse.CursorPosY, 0, screen.Height, 180, -180)

FakeTrackIR.yaw = var.xxx;
FakeTrackIR.pitch = var.yyy;

debug = mouse.CursorPosY;
debug = mouse.CursorPosX;
С твоим скриптом "Высунуть голову из окна"?

Код: Выделить всё

//**START key.leftcontrol and ALT  ** Высунуть голову из салона
if (key.leftcontrol) { //левое окошко
 FakeTrackIR.x=-0,6
 }
if (key.leftalt) {   //правое
 FakeTrackIR.x=1,8
 }
//**END key.leftcontrol and ALT  ** Высунуть голову из салона
З.Ы. Пытался сдлелать, но косорукость не позволила. Камера не возвращалась в первоначальное положение, а центрировалась за окном.

razr
Новенький
Сообщения:10
Зарегистрирован:Сб дек 24, 2011 8:29 pm
Откуда:Москва
Контактная информация:

Re: GlovePIE

Сообщение razr » Вс дек 02, 2012 1:57 pm

хм... что-то проблемки не видно, или я не допонял... вроде нужно "высунуть голову из салона" написать выше твоего вращения...


[spoiler примерно так:]

Код: Выделить всё

//**START key.leftcontrol and ALT  ** Высунуть голову из салона
if (key.leftcontrol) { //левое окошко
 FakeTrackIR.x=-0,6
 }
if (key.leftalt) {   //правое
 FakeTrackIR.x=1,8
 }
//**END key.leftcontrol and ALT  ** Высунуть голову из салона

//оцентровка
if mouse.MiddleButton = 1 THEN begin
 mouse.CursorPosX = (screen.Width) / 2;
 mouse.CursorPosY = screen.Height /2;
endif

var.xxx = MapRange(mouse.CursorPosX, 0, screen.Width, -180, 180)
var.yyy = MapRange(mouse.CursorPosY, 0, screen.Height, 180, -180)
FakeTrackIR.yaw = var.xxx;
FakeTrackIR.pitch = var.yyy;
debug = mouse.CursorPosY;
debug = mouse.CursorPosX;
[/spoiler]
хотя, вроде догнал теперь =)
[spoiler второй вариант:]

Код: Выделить всё

//**START key.leftcontrol and ALT  ** Высунуть голову из салона
if (key.leftcontrol) { //левое окошко
 FakeTrackIR.x=-0,6
 }
if (key.leftalt) {   //правое
 FakeTrackIR.x=1,8
 }
//**END key.leftcontrol and ALT  ** Высунуть голову из салона

//оцентровка
if mouse.MiddleButton = 1 THEN begin
 mouse.cursorposx = screen.Width/2
 mouse.cursorposy = screen.Height/2
 FakeTrackIR.x=0
 FakeTrackIR.y=0
 FakeTrackIR.z=0
 FakeTrackIR.roll=0
endif

var.xxx = MapRange(mouse.CursorPosX, 0, screen.Width, -180, 180)
var.yyy = MapRange(mouse.CursorPosY, 0, screen.Height, 180, -180)
FakeTrackIR.yaw = var.xxx;
FakeTrackIR.pitch = var.yyy;
debug = mouse.CursorPosY;
debug = mouse.CursorPosX;
[/spoiler]
попробуй второй вариант, вроде бы должно сразу оцентровать взгляд, и камеру переместить в салон, за руль
http://vk.com/programmirovanie - Программирование на заказ

razr
Новенький
Сообщения:10
Зарегистрирован:Сб дек 24, 2011 8:29 pm
Откуда:Москва
Контактная информация:

Re: GlovePIE

Сообщение razr » Вс дек 02, 2012 2:24 pm

cas4397 писал(а):А сколько осей нужно на джойстике,чтобы приспособить его под МКПП ?
по идее две X,Y, я лично по-другому поступил, переделал сам джой под мкпп,[spoiler т.е]теперь есть фиксация в передачах, без автовозврата в центр

использовал 1 ось джойстика, и 2 кнопки:
ось Х: -180 до 180
кнопка1: при нажатии: 1,3,5 передачи
нажимается при отклонении рукоятки до упора вверх (вместо оси У)

кнопка2: при нажатии: 2,4,6 передачи
нажимается при отклонении рукоятки до упора вниз (вместо оси У)


N.) если ось Х (рукоятка джоя)отклонена до предела влево, и не нажата никакая кнопка, то это нейтралка
N.) если ось Х оцентрована, и не нажата никакая кнопка(рукоятка не поднята и не опущена), то это нейтралка
N.) если ось Х отклонена до предела вправо, и не нажата никакая кнопка, то это нейтралка

1.) если ось Х (рукоятка джоя)отклонена до предела влево, и нажата кнопка1, то это пер1
3.) если ось Х оцентрована, и нажата кнопка1, то это пер3
5.) если ось Х отклонена до предела вправо, и нажата кнопка1, то это пер5

2.) если ось Х (рукоятка джоя)отклонена до предела влево, и нажата кнопка2, то это пер2
4.) если ось Х оцентрована, и нажата кнопка2, то это пер4
6,R.) если ось Х отклонена до предела вправо, и нажата кнопка2, то это пер6(либо задний ход)
{1} {3} {5}
[кнопка1]

(рукоятка
ось Х)

[кнопка2]
{2} {4} {6}


сам код ещё сыроват, выкладывать пока не буду.....[/spoiler]
--------------------------------------------------------------------
а если вы хотите использовать предыдущий скрипт, предназначенный для мышки, то я готов помочь переделать под Джойстик, но только с одним нюансом, при переключении передач нужно будет нажать и удерживать кнопку, иначе не будет нейтральной передачи
http://vk.com/programmirovanie - Программирование на заказ

Аватара пользователя
Windy
Новенький
Сообщения:5
Зарегистрирован:Вс ноя 11, 2012 3:26 pm

Re: GlovePIE

Сообщение Windy » Вт дек 04, 2012 6:02 pm

Отлично! Спасибо большое, ты мне очень помог! Это то что я хотел.

Аватара пользователя
MrSteve
Новенький
Сообщения:34
Зарегистрирован:Чт авг 30, 2012 11:38 am

Re: GlovePIE

Сообщение MrSteve » Пн дек 17, 2012 2:54 pm

Вопрос. Движение мышкой никак не сказывается на верчение с головой. Запускаю сначала 3Di , потом GlovePie ... Втсавляю скрипт, тыкаю ран и ничего.

Аватара пользователя
MrSteve
Новенький
Сообщения:34
Зарегистрирован:Чт авг 30, 2012 11:38 am

Re: GlovePIE

Сообщение MrSteve » Чт янв 03, 2013 12:38 pm

Автору темы: Скрипт на переключение передач мышкой не позволяет врубить нейтралку. Доделай.

razr
Новенький
Сообщения:10
Зарегистрирован:Сб дек 24, 2011 8:29 pm
Откуда:Москва
Контактная информация:

Re: GlovePIE

Сообщение razr » Вс янв 13, 2013 12:07 am

MrSteve писал(а):Вопрос. Движение мышкой никак не сказывается на верчение с головой. Запускаю сначала 3Di , потом GlovePie ... Втсавляю скрипт, тыкаю ран и ничего.
если ты используешь скрипт Ашота, то там нужно зажимать среднюю кнопку мышки и двигать саму мышку...
http://vk.com/programmirovanie - Программирование на заказ

mateusz9966
Новенький
Сообщения:17
Зарегистрирован:Пн фев 20, 2012 8:11 pm

Re: GlovePIE

Сообщение mateusz9966 » Сб янв 19, 2013 7:26 pm

mayby tutorial on youtube?

niketa
Новенький
Сообщения:3
Зарегистрирован:Чт янв 24, 2013 7:23 pm

Re: GlovePIE

Сообщение niketa » Чт янв 24, 2013 8:31 pm

Напишите мне пожалуйста такой вот скрипт -

-Руление - перемещение мыши по оси Х
-Поворот головы влево - лкм
-Поворот головы право - пкм
-Колесико - переключение передач

Штатно игра мою мышь не определяет.....

Аватара пользователя
gryzO_Fan
Опытный
Сообщения:212
Зарегистрирован:Вс янв 23, 2011 4:33 pm
Откуда:Киров

Re: GlovePIE

Сообщение gryzO_Fan » Сб апр 06, 2013 11:02 pm

уменя перестал работать GlovePIE .....двойной щелчек идет загрузка и все нифига окно не появляется НО самое главное она в процессах есть

Ответить