AviaSkins.Forums

AviaSkins.Forums (http://forum.aviaskins.com/index.php)
-   Баллада об оружии (http://forum.aviaskins.com/forumdisplay.php?f=32)
-   -   [мод] ограничение углов сброса бомб (http://forum.aviaskins.com/showthread.php?t=813)

ZloyPetrushkO 08.08.2009 13:29

можно...да и раньше можно было собсна вроде как..
а что за обстоятельства то?

ZloyPetrushkO 15.08.2009 14:01

тэкс....посмотрел код, все отлично, спс! :good:

думаю реально надо делать через ету проверку. ибо она рбаотает почти для всех самолетов, кроме некоторых таки как корсар, вилдкет,лайтинг ну и т.п.
в общем для них просто пропишу исключения :)

ZloyPetrushkO 18.08.2009 01:46

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

SJack 18.08.2009 13:37

Цитата:

Сообщение от ZloyPetrushkO (Сообщение 30773)
пока не удается в классе конролс в методе апдейт сделать так, чтобы в нужных условиях не происходил сброс бомбы, а всего лишь перешагивалось на следующую бомбу(чтобы бомба осталась висеть в самолете и при посадке рванула как и положено)
мозг чето совсем не варит...буду еще пробовать...
хотелось бы канешно-но можно по старинке, просто в бомболюке...

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

ZloyPetrushkO 19.08.2009 00:42

Цитата:

Сообщение от SJack (Сообщение 30791)
Ну по идее надо добавить с класс переменную, которая будет хранить индекс текущего сброса, и увеличивать ее при каждом вызове кода сброса, независимо от того, был ли он успешным. И использовать при сбросе именно эту переменную, а не определять перебором слотов первый занятый слот.
Вот только насчет реализма не уверен. Насколько я понимаю, бомба скорее всего все равно вывалилась бы из бомболюка при выходе из пикирования - это раз. Ну а если даже и нет - то с чего бы ей рвануть при посадке, вентилятор-то предохранительный на ней останется, а с ним рванет она разве что случайно.

да я вот тоже сомневаюсь в реализме-рано или поздно она ведь там выпадала\ее выбрасывали....да и не хочеться редактировать еще 1н класс-контролся....он в др модах используеться часто....

в общем за недостатком времени-просто модернизирую свой старый мод на бомбы.

а еще сча работаю с парметром setReadyness - чтобы симулировать пробитие винта. сбросил с истра с подфюзюляжного держателя-бац бомба в винт и все, мотор не тянет :)

там же как я понимаю надо добавить что то типа строчки setReadyness = Х.Х?
или технически намного сложнее сделать чтобы связать подобным образом классы бомбс и мотор?

SJack 19.08.2009 01:02

Ну из класса FlightModelMain крафта игрока надо вызвать EI.engines[0].setReadyness(actor, fReadyness) где fReadyness - степень нетянутия :) . Сложно или нет зависит от того, есть ли в твоём классе доступ к ФМ игрока. Если из класса Controls, то теоретически (не проверял) вызов должен выглядеть так:
FM.EI.engines[0].setReadyness(FM.actor, fReadyness);

ZloyPetrushkO 19.08.2009 01:04

а через Motor.doSetReadyness( f) низя?(работаю через класс Bomb)
я просто непрограммер, до книжки еще недобрался и не могу понять что значит " non static method connot referndet from static contxt"
вернее более менее понятно. они же вроде оба void идут...ищу как ето лечить....

SJack 19.08.2009 03:59

Цитата:

Сообщение от ZloyPetrushkO (Сообщение 30818)
а через Motor.doSetReadyness( f) низя?(работаю через класс Bomb)
я просто непрограммер, до книжки еще недобрался и не могу понять что значит " non static method connot referndet from static contxt"
вернее более менее понятно. они же вроде оба void идут...ищу как ето лечить....

Это означает что ты вызываешь нестатический метод из статического. Так делать нельзя, т.к. нестатический метод привязан к экземпляру класса, а статический "существует сам по себе", т.е. может работать и тогда, когда ни одного экземпляра класса не существует. Т.е. если ты работаешь с методом, имеющим модификатор static, то для вызова методов класса ты не можешь пользоваться неявным this (когда ты изнутри класса вызываешь его метод вызовом someMethod, на самом деле происходит вызов this.someMethod).
Из класса Bomb можно сломать игроку двигатель например так: World.getPlayerFM().EI.engines[0].setReadyness(getOwner(), fReadyness);
Тока ты уж не забудь удостовериться, что бомбу игрок бросает (getOwner() == World.getPlayerAircraft()), а то бомбу уронит бот, а двигатель игроку хряпнут :)

Karabas-Barabas 19.08.2009 15:51

Цитата:

Сообщение от ZloyPetrushkO (Сообщение 30815)
да я вот тоже сомневаюсь в реализме-рано или поздно она ведь там выпадала\ее выбрасывали...

Ну так если нельзя реализовать "выпадание потом", то может лучше сделать сразу по сбросу исчезновение в никуда для бомберов и поломку винта для истребителей, так же с исчезновением самой бомбы?

ZloyPetrushkO 19.08.2009 23:08

Цитата:

Сообщение от SJack (Сообщение 30821)
Это означает что ты вызываешь нестатический метод из статического. Так делать нельзя, т.к. нестатический метод привязан к экземпляру класса, а статический "существует сам по себе", т.е. может работать и тогда, когда ни одного экземпляра класса не существует. Т.е. если ты работаешь с методом, имеющим модификатор static, то для вызова методов класса ты не можешь пользоваться неявным this (когда ты изнутри класса вызываешь его метод вызовом someMethod, на самом деле происходит вызов this.someMethod).
Из класса Bomb можно сломать игроку двигатель например так: World.getPlayerFM().EI.engines[0].setReadyness(getOwner(), fReadyness);
Тока ты уж не забудь удостовериться, что бомбу игрок бросает (getOwner() == World.getPlayerAircraft()), а то бомбу уронит бот, а двигатель игроку хряпнут :)

да вроде они все имеют модификаторы воид...ну да ладно...тут прост у меня руки из одного места растут...

по проверке- да она уже была еще в 1й версии мода. там для ботов не рассчитывалось(токо для игрока), ибо они правильно бросают все равно,зачем грузить машину? :)

а способ твой работает отлично, спс, уже опробовал. весело :good:



Цитата:

Сообщение от Karabas-Barabas (Сообщение 30832)
Ну так если нельзя реализовать "выпадание потом", то может лучше сделать сразу по сбросу исчезновение в никуда для бомберов и поломку винта для истребителей, так же с исчезновением самой бомбы?


зачем так именно так ? :)
для всех внешних подвесок-бомба падает но ломает с какойто вероятностью двигатель\винт
для всех внутренних- бомба никуда не летит при етом, визуально бомба остаеться внутри :) но при посадке просто не детонирует так как нормальные бомбы(то ли экипаж обезвредил,то ли таки вытолкнули\выпала...).ну и соотвественно исключения. вот такой я вариант делаю...
-----
зы: можно сделать запрет на сброс бомбы в пике. ее можно будет сбросить выйди из пике. но для етого надо изменять класс controls, а он часто используеться. поетому мод будет просто очень конфликтным:)

ZloyPetrushkO 26.08.2009 00:30

Sjack подскажи плз а обязательно ли организовывать циклы(как в классе контролс) чтобы юзать строчку
String hookName = FM.CT.Weapons[k][l].getHookName();
просто ведь оружие у нас всегда бомбы( а ето к = 3) а переменную l можно обновлять в конце метода....

ЗЫ: еще параллельна копаю классы с самолетами и оружием завязанные, там тоже должна быть аналогичная по функциональности строчка :)
.
----
и ето, тут товарищи с spsialaircraftservice спрашивали мод, который позволяет сбрасывать бомбы по одной-мб ты дооформишь его? :)

ZloyPetrushkO 28.08.2009 17:24

чета я так подумал...иначал работать с классом BombGun - он походу стоит выше по иерархии....
и там уже есть проверка на вунтренний\наружный подвес.
и в нем же опять же удалось наладить без циклов команду gethookname... но наладить проверку на расположение не используя цикл пока не удаеться...=/

ZloyPetrushkO 28.08.2009 17:43

а если быть совсем точным- то редактирую метод protected void interpolateStep()

йес! получилось без циклов :)

String hookName = getHookName();

Aircraft craft = ((Aircraft)actor);
HierMesh mesh = craft.hierMesh();


int chunkIndex = mesh.hookParentChunk(hookName);
mesh.setCurChunk(chunkIndex);
String chunkName = mesh.chunkName();

и в етом методе выводит все что нужно для счастья :)


Текущее время: 21:34. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot