|
|
|
#1301 |
|
Местный
|
Гроховский Г-37 WIP https://disk.yandex.ru/d/RAUb13V7oojpJQ __________________________________________________ ___________ Обновление V161125 https://disk.yandex.ru/d/9HyVIi6x_ZSvwA __________________________________________________ ___________ air.ini G-37 air.G_37 1 NOINFO r01 SUMMER Спасибо всем, помогавшим словом и делом. Отдельное спасибо Дмитрию 'Asura' Шабанову, Dimas1999. Последний раз редактировалось Molva; 16.11.2025 в 09:53. |
|
|
|
|
|
#1302 |
|
Местный
Регистрация: 13.01.2009
Сообщений: 171
|
Air.ini?
|
|
|
|
|
|
#1303 | |
|
Звичайна людина на Землі
Регистрация: 06.11.2011
Адрес: Україна, м.Київ, Печерський район, вул. Кіквідзе
Сообщений: 8,365
|
Цитата:
![]() Может кто положит на гугл-диск??? |
|
|
|
|
|
|
#1304 |
|
Под игом быта
Регистрация: 11.05.2013
Адрес: Ех-СССР
Сообщений: 2,759
|
__________________
"Ялла, ялла! Бурверон!" - суетливый афганский торопляк. "принятие или непринятие идей не должно зависеть от личных или общественных характеристик автора: его раса, национальность, вероисповедание, общественное положение и личные качества не имеют к этому никакого отношения". Торжество идей должно зависеть не от того, кто их поддерживает (или не поддерживает), а от их научной ценности и от того, что они объясняют события и явления лучше других. |
|
|
|
|
|
#1305 |
|
гость
Регистрация: 27.09.2014
Адрес: Россия
Сообщений: 5,160
|
Спасибо Олег!
__________________
Не шалю, никого не трогаю, починяю примус. Скины на заказ, не рисую. |
|
|
|
|
|
#1306 |
|
Модератор
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,646
|
Красота!
|
|
|
|
|
|
#1307 |
|
Модератор
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,646
|
Это нечто! Подвесную кабину сбросить не смог))
|
|
|
|
|
|
#1308 |
|
Местный
|
Что надо сделать для передачи управления второму пилоту? И чтобы он выполнял функции бомбардира.
|
|
|
|
|
|
#1309 |
|
Модератор
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,892
|
Сделать класс кабины бомбардира, в кабине пилота передвинуть камеру на место второго пилота и новый хир хим прицепить в класс кабины бомбардира. Я обычно делаю копию Body (камеры чаще всего именно к этому мешу зацеплены), обзываю например BodyB. В новом меше делаю нужные камеры. Делаю копию хир хим типа hierB.him, внутри переобзываю мешь Body
[Body] Mesh BodyB и в классе кабины бомбардира указываю hierB.him. Вобщем то все. Сам класс повторяет класс пилота только в секцию статик надо добавить: Property.set(CLASS.THIS(), "astatePilotIndx", 1); Property.set(CLASS.THIS(), "aiTuretNum", BOMBARDIER_INDEX); Property.set(CLASS.THIS(), "weaponControlNum", 3); Ну и если класс под 4.13 и выше в начале класса public class CockpitB_17G_Bombardier extends CockpitBombardier |
|
|
|
|
|
#1310 |
|
Местный
|
|
|
|
|
|
|
#1311 |
|
Модератор
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,892
|
Надо еще добавить обработку "прильнуть к прицелу":
Код:
protected boolean doFocusEnter()
{
if(super.doFocusEnter())
{
HookPilot hook = HookPilot.cur();
hook.doAim(false);
Point3d p3d = new Point3d();
p3d.set(0.15F, 0F, -0.10F);
hook.setTubeSight(p3d);
return true;
}else {
return false;
}
}
protected void doFocusLeave()
{
if(!isFocused()) return;
leave();
super.doFocusLeave();
}
private void prepareToEnter()
{
HookPilot hook = HookPilot.cur();
if(hook.isPadlock())
hook.stopPadlock();
hook.doAim(true);
hook.setSimpleAimOrient(0F,-33F,0F);
enteringAim = true;
}
private void enter()
{
saveFov = Main3D.FOVX;
CmdEnv.top().exec("fov "+saveBSFov);
Main3D.cur3D().aircraftHotKeys.enableBombSightFov();
HookPilot hook = HookPilot.cur();
hook.setInstantOrient(aAim,tAim,0);
hook.setSimpleUse(true);
hook.setStabilizedBSUse(true);
doSetSimpleUse(true);
HotKeyEnv.enable("PanView",false);
HotKeyEnv.enable("SnapView",false);
bEntered = true;
}
private void leave()
{
if(enteringAim)
{
HookPilot hook = HookPilot.cur();
hook.setInstantOrient(0F,-33F,0F);
hook.doAim(false);
hook.setSimpleAimOrient(0.0f, 0.0f, 0.0f);
return;
}
if(!bEntered) return;
saveBSFov = Main3D.FOVX;
Main3D.cur3D().aircraftHotKeys.setEnableChangeFov(true);
CmdEnv.top().exec("fov "+saveFov);
HookPilot hook = HookPilot.cur();
hook.setInstantOrient(0F,-33F,0F);
hook.doAim(false);
hook.setSimpleAimOrient(0,0,0);
hook.setSimpleUse(false);
hook.setStabilizedBSUse(false);
doSetSimpleUse(false);
boolean bEnable = HotKeyEnv.isEnabled("aircraftView");
HotKeyEnv.enable("PanView",bEnable);
HotKeyEnv.enable("SnapView",bEnable);
bEntered = false;
}
public void destroy()
{
super.destroy();
leave();
}
public void doToggleAim( boolean bToggleAim )
{
if(!isFocused()) return;
if(isToggleAim() == bToggleAim) return;
if(bToggleAim) prepareToEnter();
else leave();
}
public CockpitXXXXX_Bombardier()
{
super("3DO/Cockpit/XXXXX_Bombardier/hier.him", "bf109");
try {
Loc l = new Loc();
Hook hook = new HookNamed(mesh, "CAMERAAIM");
hook.computePos(this,new Loc(),l);
aAim = l.getOrient().getAzimut();
tAim = l.getOrient().getTangage();
}catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
|
|
|
|
|
|
#1312 |
|
Местный
|
|
|
|
|
|
|
#1313 |
|
Модератор
Регистрация: 05.11.2007
Адрес: Кемеровская область
Сообщений: 7,646
|
У Г-37 фм от чего?
|
|
|
|
|
|
#1314 |
|
Местный
|
Ли-2.
|
|
|
|
|
|
#1315 |
|
Пытающийся полететь
|
Сам хук или его пивот крутить в меше бесполезно, хуки крутятся и выставляется наклон хука в классе, см пост Дмитрия №1311.
__________________
Даёшь защищенный онлайн и Свободный оффлайн. Теперь я и в телеграмме: https://t.me/il_2_1946 |
|
|
|
|
|
#1316 |
|
Модератор
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,892
|
Вот этот кусок в часть где хир хим прописан добавил?
Код:
try {
Loc l = new Loc();
Hook hook = new HookNamed(mesh, "CAMERAAIM");
hook.computePos(this,new Loc(),l);
aAim = l.getOrient().getAzimut();
tAim = l.getOrient().getTangage();
}catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
|
|
|
|
|
|
#1317 |
|
Местный
|
Добавил. Сейчас получается такая картинка. Прицел брал от ТБ-3. Но прицела не видно.
|
|
|
|
|
|
#1318 |
|
Модератор
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,892
|
Тогда надо добавить еще вот что;
Код:
private float curAlt = 300.0f;
private float curSpd = 50.0f;
class Interpolater extends InterpolateRef
{
public boolean tick() {
resetYPRmodifier();
float v = ((G_37)aircraft()).fSightCurSpeed;
float h = ((G_37)aircraft()).fSightCurAltitude;
curAlt = (19.0f*curAlt+h)/20.0f;
curSpd = (19.0f*curSpd+v)/20.0f;
mesh.chunkSetAngles("zScaleKM", 0.04f*curAlt, 0.0f, 0.0f);
mesh.chunkSetAngles("zScaleM", 0.36f*curAlt, 0.0f, 0.0f);
mesh.chunkSetAngles("zScaleKMH", -0.8f*(curSpd-50.0f), 0.0f, 0.0f);
float m300 = 0.5f*(float)Math.tan(Math.atan( (300.0f/3.6f)*(Math.sqrt(2.0f*curAlt/Atmosphere.g()))/(curAlt) ));
float m = (float)Math.tan(Math.atan( (curSpd/3.6f)*(Math.sqrt(2.0f*curAlt/Atmosphere.g()))/(curAlt) ));
xyz[0] = -0.0005f*curAlt;
xyz[1] = -1.0f*(m300 - m);
mesh.chunkSetLocate("zScaleCurve", xyz, ypr);
if (bEntered)
{
float tan = aircraft().FM.Or.getTangage();
if (tan > 5f)
tan = 5f;
else if (tan < -5f)
tan = -5f;
mesh.chunkSetAngles("BlackBox", 0.0f, 0f, tan);
HookPilot hook = HookPilot.cur();
hook.setInstantOrient(aAim, tAim-tan, 0f);
}
return true;
}
}
public void reflectWorldToInstruments ( float delta )
{
if(bEntered) {
mesh.chunkVisible("BlackBox", true);
mesh.chunkVisible("zReticle", true);
mesh.chunkVisible("zScaleCurve", true);
mesh.chunkVisible("zScaleM", true);
mesh.chunkVisible("zScaleKM", true);
mesh.chunkVisible("zScaleKMH", true);
}else {
mesh.chunkVisible("BlackBox", false);
mesh.chunkVisible("zReticle", false);
mesh.chunkVisible("zScaleCurve", false);
mesh.chunkVisible("zScaleM", false);
mesh.chunkVisible("zScaleKM", false);
mesh.chunkVisible("zScaleKMH", false);
}
}
Код:
public float fSightCurAltitude = 300.0f; // 300 - 5000 m
public float fSightCurSpeed = 50.0f; // 50 - 350 km/h
private Point3d endPoint = new Point3d();
private Point3d hitPoint = new Point3d();
private Vector3d vTemp = new Vector3d();
private Orient oTemp = new Orient();
public boolean typeBomberToggleAutomation()
{
return false;
}
public void typeBomberAdjDistanceReset()
{
}
public void typeBomberAdjDistancePlus()
{
}
public void typeBomberAdjDistanceMinus()
{
}
public void typeBomberAdjSideslipReset()
{
}
public void typeBomberAdjSideslipPlus()
{
}
public void typeBomberAdjSideslipMinus()
{
}
public void typeBomberAdjAltitudeReset()
{
if (!World.cur().diffCur.RealisticBombSights)
return;
fSightCurAltitude = 300.0f;
}
public void typeBomberAdjAltitudePlus()
{
if (!World.cur().diffCur.RealisticBombSights)
return;
fSightCurAltitude += 50.0f;
if (fSightCurAltitude > 5000.0f)
{
fSightCurAltitude = 5000.0f;
}
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightAltitude",
new Object[]
{ new Integer((int) fSightCurAltitude) });
}
public void typeBomberAdjAltitudeMinus()
{
if (!World.cur().diffCur.RealisticBombSights)
return;
fSightCurAltitude -= 50.0f;
if (fSightCurAltitude < 300.0f)
{
fSightCurAltitude = 300.0f;
}
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightAltitude",
new Object[]
{ new Integer((int) fSightCurAltitude) });
}
public void typeBomberAdjSpeedReset()
{
if (!World.cur().diffCur.RealisticBombSights)
return;
fSightCurSpeed = 50.0f;
}
public void typeBomberAdjSpeedPlus()
{
if (!World.cur().diffCur.RealisticBombSights)
return;
fSightCurSpeed += 5.0f;
if (fSightCurSpeed > 350.0f)
{
fSightCurSpeed = 350.0f;
}
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightSpeed", new Object[]
{ new Integer((int) fSightCurSpeed) });
}
public void typeBomberAdjSpeedMinus()
{
if (!World.cur().diffCur.RealisticBombSights)
return;
fSightCurSpeed -= 5.0f;
if (fSightCurSpeed < 50.0f)
{
fSightCurSpeed = 50.0f;
}
HUD.log(AircraftHotKeys.hudLogWeaponId, "BombsightSpeed", new Object[]
{ new Integer((int) fSightCurSpeed) });
}
public void typeBomberUpdate(float dt)
{
if (!World.cur().diffCur.RealisticBombSights){
fSightCurAltitude = (float)World.getPlayerAircraft().FM.getAltitude()-(float)hitPoint.z;
fSightCurSpeed = (float)World.getPlayerAircraft().getSpeed(null)*3.6f;
double bombDist = getBombDist(fSightCurAltitude,
(double) (fSightCurSpeed / 3.6000000000000001D));
//measure the exact ground height at the point where the bombsight is pointing.
if (FM.isTick(4, 0))
{
oTemp.setYaw(FM.Or.getYaw());
oTemp.setRoll(0);
oTemp.setPitch(30f);
vTemp.set(1,0,0);
oTemp.transform(vTemp);
vTemp.scale(100000);
endPoint.set(this.pos.getAbsPoint());
endPoint.add(vTemp);
Landscape.rayHitHQ(this.pos.getAbsPoint(), endPoint, hitPoint);
}
}
}
public void typeBomberReplicateToNet(NetMsgGuaranted out)
throws IOException
{
if (!World.cur().diffCur.RealisticBombSights)
return;
out.writeFloat(fSightCurAltitude);
out.writeFloat(fSightCurSpeed);
}
public void typeBomberReplicateFromNet(NetMsgInput in) throws IOException
{
if (!World.cur().diffCur.RealisticBombSights)
return;
fSightCurAltitude = in.readFloat();
fSightCurSpeed = in.readFloat();
}
}
|
|
|
|
|
|
#1319 |
|
Местный
|
Не получилось сделать класс. Вот такие ошибки:
|
|
|
|
|
|
#1320 |
|
Местный
|
Осталась одна ошибка:
|
|
|
|
![]() |
| Здесь присутствуют: 2 (пользователей: 0 , гостей: 2) | |
|
|