www.open-tager.ru http://www.open-tager.ru/forum/ |
|
LTAscet - расширяем функционал прошивки http://www.open-tager.ru/forum/viewtopic.php?f=5&t=2178 |
Страница 5 из 6 |
Автор: | Pingvin [ 30 окт 2013, 14:14 ] |
Заголовок сообщения: | Re: LTAscet - расширяем функционал прошивки |
LTagKirov писал(а): ЗЫ. Аскет вроде тоже может сам себя "застрелить" На данный момент прошивка так работает, что не может! Сравнивается ID команды и ID игрока, если они совпадают с ID команды и ID игрока тага, то игнор! Поправить исходники, чтобы фиксировался "самострел" - 15 секунд! |
Автор: | Pingvin [ 30 окт 2013, 14:21 ] |
Заголовок сообщения: | Re: LTAscet - расширяем функционал прошивки |
MidnightDreamer писал(а): Ужос! Раньше по АйДи рассчитывалось самопоражение... ( Ну вот так и работаем "по устаревшим" - по ID вычисляем самопоражение. |
Автор: | LTagKirov [ 30 окт 2013, 14:37 ] |
Заголовок сообщения: | Re: LTAscet - расширяем функционал прошивки |
MidnightDreamer писал(а): Раньше по АйДи рассчитывалось самопоражение... ( Скорее это "костылик" LW от версии лайт с ид=50, который не меняется, вот и поправили прошивку |
Автор: | MidnightDreamer [ 30 окт 2013, 14:41 ] |
Заголовок сообщения: | Re: LTAscet - расширяем функционал прошивки |
LTagKirov писал(а): MidnightDreamer писал(а): Раньше по АйДи рассчитывалось самопоражение... ( Скорее это "костылик" LW от версии лайт с ид=50, который не меняется, вот и поправили прошивку Именно на Лайт эта лабуда и появилась. Залочили статистику и изменение АйДи, стобы Лайты поущербнее казались, Прикрутили этот костыль (ну иначе не назовешь), типа для ХСЛ это не критично, а теперь эта фигня вот все версии зачем то просочилась! Не верю, что для этого есть хоть какие-то нормальные предпосылки. |
Автор: | LTagKirov [ 07 ноя 2013, 12:58 ] |
Заголовок сообщения: | Re: LTAscet - расширяем функционал прошивки |
Как в аскете реализована работа с разными группами поражения и бронёй ? При попадании по игроку из двух видов оружия с разных сторон одновременно - вычитать сразу оба поражения или смотреть который мощнее/с меньшими помехами пришёл и только его учитывать. Заковыка - если по человеку пуляют из тубуса и закрывают две/(три и тд) группы ИК датчиков - урон сразу удваивается/утраивается и тд При одновременном приёме пакетов какой зоне отдавать предпочтение, та которая с бронёй или наоборот ? Если с бронёй то на большом расстоянии всё замечательно, урон уменьшается, если вблизи стреляем, то при попадании в голову может отработать засветка "брони" на корпусе... Геймплей становится совсем странным, кто что думает ??? Код: if (mlBullet.TeamID != teamID ) || ((mlBullet.TeamID == teamID) && (frendfire > 0)) { // Чужая команда, уменьшить жисть ж) // своя команда, дружественный огонь включен - тоже уменьшить // Отработать поведение для нужной группы ИК датчиков if (Zone) { // Первая зона в броне if (damage_table(mlBullet.Damage) > damage_table(arm_jaket)) { live_in_game = live_in_game - damage_table(mlBullet.Damage) + damage_table(arm_jaket); // пуля сильнее брони: повреждение уменьшается на величину брони } else { // пуля слабее/равна броне: вычитаем самый слабый урон - беспокоющее поражение. live_in_game = live_in_game - damage_table(0); } } else { // Вторая зона без брони, оставим для совместимости live_in_game = live_in_game - damage_table(mlBullet.Damage); } putchar_('t'); putchar_(Zone); } |
Автор: | Pingvin [ 07 ноя 2013, 13:12 ] |
Заголовок сообщения: | Re: LTAscet - расширяем функционал прошивки |
LTagKirov писал(а): Как в аскете реализована работа с разными группами поражения и бронёй ? При попадании по игроку из двух видов оружия с разных сторон одновременно - вычитать сразу оба поражения или смотреть который мощнее/с меньшими помехами пришёл и только его учитывать. Заковыка - если по человеку пуляют из тубуса и закрывают две/(три и тд) группы ИК датчиков - урон сразу удваивается/утраивается и тд Код: if (mlBullet.TeamID != teamID ) || ((mlBullet.TeamID == teamID) && (frendfire > 0)) { // Чужая команда, уменьшить жисть ж) // своя команда, дружественный огонь включен - тоже уменьшить // Отработать поведение для нужной группы ИК датчиков if (Zone) { // Первая зона в броне if (damage_table(mlBullet.Damage) > damage_table(arm_jaket)) { live_in_game = live_in_game - damage_table(mlBullet.Damage) + damage_table(arm_jaket); // пуля сильнее брони: повреждение уменьшается на величину брони } else { // пуля слабее/равна броне: вычитаем самый слабый урон - беспокоющее поражение. live_in_game = live_in_game - damage_table(0); } } else { // Вторая зона без брони, оставим для совместимости live_in_game = live_in_game - damage_table(mlBullet.Damage); } putchar_('t'); putchar_(Zone); } В "Аскете" не реализована работа с независимыми зонами поражения. Хотя в беспроводке это можно сделать (имеем две зоны независимых фактически). Но пока он ловит весь урон с обеих зон. Да и броню не делал пока. Независимые зоны будут на "ARMаде"! Там и буду голову ломать... |
Автор: | LTagKirov [ 07 ноя 2013, 13:19 ] |
Заголовок сообщения: | Re: LTAscet - расширяем функционал прошивки |
Pingvin писал(а): Да и броню не делал пока. Там и буду голову ломать... При одновременном приёме пакетов какой зоне отдавать предпочтение, та которая с бронёй или наоборот ? Если с бронёй то на большом расстоянии всё замечательно, урон уменьшается, если вблизи стреляем, то при попадании в голову может отработать засветка "брони" на корпусе... Может соображения какие есть по логике поведения оборудования в игре ??? Геймплей становится совсем странным, кто что думает ??? |
Автор: | Pingvin [ 07 ноя 2013, 13:24 ] |
Заголовок сообщения: | Re: LTAscet - расширяем функционал прошивки |
LTagKirov писал(а): Pingvin писал(а): Да и броню не делал пока. Там и буду голову ломать... При одновременном приёме пакетов какой зоне отдавать предпочтение, та которая с бронёй или наоборот ? Если с бронёй то на большом расстоянии всё замечательно, урон уменьшается, если вблизи стреляем, то при попадании в голову может отработать засветка "брони" на корпусе... Может соображения какие есть по логике поведения оборудования в игре ??? Геймплей становится совсем странным, кто что думает ??? Есть мысли, но нужно отличать "пули", выпущенные с одного ствола. Чтобы не считать урон с, к примеру, двух датчиков, поймавших один выстрел, два раза. Это можно сделать либо сравнивая время "прилета" пуль, но гемморно! Либо... расширяем протокол и в выстреле передаем дополнительное число, которое циклически меняется. Таким образом два ближайших выстрела с одного ствола легко различимы! И "лишний" урон не считаем! |
Автор: | LTagKirov [ 08 ноя 2013, 13:05 ] |
Заголовок сообщения: | Re: LTAscet - расширяем функционал прошивки |
Pingvin писал(а): Там и буду голову ломать... Прикрутил зарядное устройство встроенное в тагер. Вопрос знатокам, допустимо ли заряжать Li акб, не разрядив полностью ? Например зарядили - поиграли разрядили не до минимальной границы, возможно совсем чуть чуть. И снова ставим на зарядку. Или второй вариант, тагер лежит на зарядке: зарядился, АКБ автоматика отключила от зарядки, напряжение в сети ненамного пропало, тагер лежит тратит АКБ считает что он в игре,если выключатся то будет странно для пользователя. Потом сетевое снова появляется, АКБ снова не максимум, опять заряжать ? Думаю вводить "моточасы", но надо ли ? Код: // Автомат логики зарядки АКБ
void LogicChargeAkb(void) { switch (StateCharge) { case WAIT_CHARGE: // Ждём запроса на зарядку // придумать вариант старта if ( btReload > 0) { // кнопку надо подержать не менее 1 сек // начинаем проверку подключенности питания зарядки charge_off(); // работа только от АКБ StateCharge = START_CHARGE; } break; case START_CHARGE: charge_off(); charge_cnt ++; // отрабатываем паузу в секундах if (charge_cnt > 2) { // время выдержки АКБ кончилось (2сек) charge_cnt = 0; adc_off_chg = adc_in; // замерить и запомнить напряжение АКБ // проверить напряжение на АКБ if (adc_off_chg < akb_max) { // меньше порога - включаем подачу зарядного тока // Индикация через мигание диода ТХ charge_on(); StateCharge = TEST_CHARGE; } else { // больше порога - хватит заряжать // остановку по таймауту тоже можно добавить StateCharge = WAIT_CHARGE; } } break; case TEST_CHARGE: // меряем напряжение на АКБ charge_on(); charge_cnt ++; // отрабатываем зарядку в секундах if (charge_cnt > 3) { // время выдержки АКБ под зарядкой (3сек) charge_cnt = 0; adc_on_chg = adc_in; // замерить и запомнить напряжение АКБ if (adc_on_chg > adc_off_chg) { // зарядный ток есть, продолжаем StateCharge = START_CHARGE; } else { // зарядного тока нет(выключили) или АКБ не принимает заряд // останавливаем зарядку StateCharge = WAIT_CHARGE; } } break; } //swich end } |
Автор: | G-man [ 08 ноя 2013, 13:51 ] |
Заголовок сообщения: | Re: LTAscet - расширяем функционал прошивки |
LTagKirov писал(а): Вопрос знатокам, допустимо ли заряжать Li акб, не разрядив полностью ? Например зарядили - поиграли разрядили не до минимальной границы, возможно совсем чуть чуть. И снова ставим на зарядку. Допустимо. Более того умная зарядка просто до уровня зарядить побыстрому, а не будет гонять его положенные часы. |
Страница 5 из 6 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |