Перейти к содержимому


Фотография

Условие: если орудие перезарядилось и готого стрелять.


Лучший Ответ Schatten , 22 January 2019 - 00:05

Так?
MK41VLS addEventHandler ["Reloaded", {hint "Перезарядилось"}];

Я так понимаю, что надо не просто что-то вывести, так? Тогда надо как-то так:

magazineReloaded = false;

_reloadTime = getNumber (configfile >> "CfgWeapons" >> _className >> "magazineReloadTime");

_ehIndex = _vehicle addEventHandler ["Reloaded", {magazineReloaded = true;}];

_weapon loadMagazine [...];

_time = time + _reloadTime;

waitUntil {
    sleep 0.1;

    magazineReloaded or {_time >= time}
};

if (magazineReloaded) then {
    ...
};

_vehicle removeEventHandler ["Reloaded", _ehIndex];

magazineReloaded = nil;
Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 18

#1 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

  • Пользователи
  • 447 сообщений
  • Откуда:Россия

Отправлено 21 January 2019 - 23:05

Всем здравствуйте.

Столкнулся с трудностью в написании условия.

 

Суть такая:

 

west ReportRemoteTarget [laserTarget vehicle player, 100000];

laserTarget vehicle player confirmSensorTarget [west, true];

MK41VLS fireAtTarget [laserTarget vehicle player, "weapon_vls_01"];

 

Далее идет замена типа боеприпасов:

MK41VLS loadMagazine [[0],"weapon_VLS_01","magazine_Missiles_Cruise_01_Cluster_x18"];

 

Вопрос: как узнать когда MK41VLS перезарядилась? Типа:

waitUntil {MK41VLS сменила тип снарядов и готова стрелять};

 

Спасибо заранее.


  • 0

#2 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1781 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 21 January 2019 - 23:23

как узнать когда MK41VLS перезарядилась?

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


Хотя нет, есть событие

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

.


Сообщение отредактировал Schatten: 21 January 2019 - 23:21

  • 1

#3 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

  • Пользователи
  • 447 сообщений
  • Откуда:Россия

Отправлено 21 January 2019 - 23:41

Так?

MK41VLS addEventHandler ["Reloaded", {hint "Перезарядилось"}];


  • 0

#4 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 21 January 2019 - 23:48

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


  • 1

#5 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

  • Пользователи
  • 447 сообщений
  • Откуда:Россия

Отправлено 21 January 2019 - 23:53

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 

Да, я нашел эту команду. Но это не честно.

В конфиге написано: reloadingTime = 10; Что это значит?

Если проверить вот так 

getNumber (configfile >> "CfgWeapons" >> "hgun_P07_F" >> "magazineReloadTime");//returns 2 - time needed to change magazine то выдает значение 2? Не понимаю)

Простите требуется разъяснение)))


Сообщение отредактировал D_Donskoy: 21 January 2019 - 23:54

  • 0

#6 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1781 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 21 January 2019 - 23:56

В конфиге написано: reloadingTime = 10; Что это значит?

Это время перезарядки в секундах.


  • 1

#7 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 22 January 2019 - 00:05

Да, я нашел эту команду. Но это не честно.

Что нечестно? Вам нужно стрельнуть с конкретной ракеты, для этого вы моментальное ее заряжаете, причем тут честность?

Насчет конкретных циферок, это вы у БЕСов спрашивайте, или тех когото из создателей модов с оружием
  • 1

#8 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1781 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 22 January 2019 - 00:05   Лучший Ответ

Так?
MK41VLS addEventHandler ["Reloaded", {hint "Перезарядилось"}];

Я так понимаю, что надо не просто что-то вывести, так? Тогда надо как-то так:

magazineReloaded = false;

_reloadTime = getNumber (configfile >> "CfgWeapons" >> _className >> "magazineReloadTime");

_ehIndex = _vehicle addEventHandler ["Reloaded", {magazineReloaded = true;}];

_weapon loadMagazine [...];

_time = time + _reloadTime;

waitUntil {
    sleep 0.1;

    magazineReloaded or {_time >= time}
};

if (magazineReloaded) then {
    ...
};

_vehicle removeEventHandler ["Reloaded", _ehIndex];

magazineReloaded = nil;

  • 1

#9 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

  • Пользователи
  • 447 сообщений
  • Откуда:Россия

Отправлено 22 January 2019 - 00:07

Она перезаряжается не меньше 2 минут! Это не она или она не верная.


 

Да, я нашел эту команду. Но это не честно.

Что нечестно? Вам нужно стрельнуть с конкретной ракеты, для этого вы моментальное ее заряжаете, причем тут честность?

Насчет конкретных циферок, это вы у БЕСов спрашивайте, или тех когото из создателей модов с оружием

 

Нужно не перезарядить, а узнать момент когда орудие готово стрелять с новым типом снаряда.


  • 0

#10 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 22 January 2019 - 00:08

В конфиге написано: reloadingTime = 10; Что это значит?

Это время перезарядки в секундах.

Это конкретно задержка между выстрелами
  • 1

#11 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

  • Пользователи
  • 447 сообщений
  • Откуда:Россия

Отправлено 22 January 2019 - 00:11

 

 

В конфиге написано: reloadingTime = 10; Что это значит?

Это время перезарядки в секундах.

 

Это конкретно задержка между выстрелами

 

 

Точно. Но когда эта штука заряжает снаряд другого типа это не то время!

Как быть? Где взять время? Замерить часами?)


 

Так?
MK41VLS addEventHandler ["Reloaded", {hint "Перезарядилось"}];

Я так понимаю, что надо не просто что-то вывести, так? Тогда надо как-то так:

magazineReloaded = false;

_reloadTime = getNumber (configfile >> "CfgWeapons" >> _className >> "magazineReloadTime");

_ehIndex = _vehicle addEventHandler ["Reloaded", {magazineReloaded = true;}];

_weapon loadMagazine [...];

_time = time + _reloadTime;

waitUntil {
    sleep 0.1;

    magazineReloaded or {_time >= time}
};

if (magazineReloaded) then {
    ...
};

_vehicle removeEventHandler ["Reloaded", _ehIndex];

magazineReloaded = nil;

Наверное самый вариант.


  • 0

#12 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1781 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 22 January 2019 - 00:15

 

 

 

В конфиге написано: reloadingTime = 10; Что это значит?

Это время перезарядки в секундах.

 

Это конкретно задержка между выстрелами

 

 
Точно. Но когда эта штука заряжает снаряд другого типа это не то время!
Как быть? Где взять время? Замерить часами?)

 

И то, и другое -- время перезарядки, а также берётся из конфигов (CfgWeapons и (или) CfgMagazines). reloadTime -- между выстрелами, magazineReloadTime -- между заменой мегазинов.


Сообщение отредактировал Schatten: 22 January 2019 - 00:16

  • 1

#13 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

  • Пользователи
  • 447 сообщений
  • Откуда:Россия

Отправлено 22 January 2019 - 00:17

Вот вся идея целиком.

 

[TLRider2, "Вызвать ракетный удар: Эсминец Доблесть.", "\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa", "\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_hack_ca.paa", "true", "true",
    {
     TLRider2 KbAddTopic ["ArtyRq","subtitles.bikb","",""];
     HQWatchTower KbAddTopic ["ArtyRq","subtitles.bikb","",""];
     TLRider2 kbTell [HQWatchTower, "ArtyRq", "TLRider2_Line2"];
     HQWatchTower kbTell [TLRider2, "ArtyRq", "HQWatchTower_Line3"];
    },
    {},
    {
     waitUntil {TLRider2 kbWasSaid [HQWatchTower, "ArtyRq", "TLRider2_Line2", 5]};
     waitUntil {HQWatchTower kbWasSaid [TLRider2, "ArtyRq", "HQWatchTower_Line3", 5]};
     west ReportRemoteTarget [laserTarget vehicle player, 100000];
     laserTarget vehicle player confirmSensorTarget [west, true];
     MK41VLS fireAtTarget [laserTarget vehicle player, "weapon_vls_01"];
     Sleep 2.5;
     HQWatchTower kbTell [TLRider2, "ArtyRq", "HQWatchTower_Line4"]; 
    }, {},  [], 1.5, nil, false, false] call BIS_fnc_holdActionAdd;

 

Т.е. при повторном вызове ХКУ скажет мол орудие перезаряжается ждите. Как это все запихать в функцию нажатия кнопки.


  • 0

#14 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 22 January 2019 - 00:23

D_Donskoy, сделать как я сказал - моментальную перезарядку, и внутри экшена проверять время последнего вызова, и если время "перезарядки" еще не прошло, то говорить "нет, подожди"
  • 1

#15 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

  • Пользователи
  • 447 сообщений
  • Откуда:Россия

Отправлено 22 January 2019 - 00:30

Ок спасибо. Пойду попробую.


Кстати попутный вопрос.

Я так и не научился двигать предметы, как например мишени двигаются.

Можете подсказать команды?


  • 0

#16 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 22 January 2019 - 00:36

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


  • 1

#17 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

  • Пользователи
  • 447 сообщений
  • Откуда:Россия

Отправлено 22 January 2019 - 00:41

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

)Да...

Просто стараюсь предерживаться фантазии бесов и их игрового мира)


  • 0

#18 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 22 January 2019 - 00:47

D_Donskoy, их фантазии заканчиваются там, где начинаются твои. Так было, так есть и так будет. Во всех играх в подобных ситуациях всегда шлют куда подальше логику, самое главное что бы для игрока это выглядело нормально, а как там это технически сделано (перезарядил ли бот орудие, есть ли этот бот, да вообще есть ли там какое-то орудие) - ему *поболту*, если все работает как нужно.
  • 1

#19 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

  • Пользователи
  • 447 сообщений
  • Откуда:Россия

Отправлено 22 January 2019 - 11:46

Влад ты прав.

Спасибо парни за помощь.


  • 0




Яндекс.Метрика