Jump to content


Photo

Таймер и выход из него


Best Answer Schatten , 09 September 2019 - 20:22

Karp1989, а вот это решение:
-- условие активации:

this and { (stance player) == "STAND" }

-- при активации:

call {
    _scriptHandle = [] spawn {
        for "_t" from 5 to 0 step -1 do {
            sleep 1;

            hintSilent (format ["Вы на прицеле снайпера %1", _t]);
        };

        player setHitPointDamage ["hitHead", 1];
    };

    thisTrigger setVariable ["scriptHandle", _scriptHandle];
};

-- при деактивации:

call {
    _scriptHandle = thisTrigger getVariable ["scriptHandle", scriptNull];

    terminate _scriptHandle;
};
Go to the full post


  • Please log in to reply
13 replies to this topic

#1 OFFLINE   Karp1989

Karp1989

    Ефрейтор

  • Пользователи
  • 56 posts
  • Откуда:Краснодар

Posted 09 September 2019 - 03:31

Всем привет, вот мне умные люди на форуме подсказали, как отловить момент когда игрок встал в полный рост, но как мне отменить таймер, когда он сел обратно, что бы его не убивало по истечении таймера?

if (stance player == "STAND") then {
time = 5;
while {time>0} do {sleep 1; time= (time-1); hint format ["Вы на прицеле снайпера %1",time]};
player setDamage [1,true];
};

  • 0

#2 OFFLINE   nIkRon

nIkRon

    Сержант

  • Пользователи
  • 195 posts
  • Откуда:Донецк

Posted 09 September 2019 - 06:13

Можно было и в той теме это написать, ну да ладно.
Во первых,

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

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


  • 0

#3 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 posts
  • Откуда:Тбилиси, Грузия

Posted 09 September 2019 - 10:43

Karp1989,

timerScriptHandle = scriptNull;

if ((stance player) == "STAND") then {
    timerScriptHandle = [] spawn {
        for "_t" from 5 to 1 step -1 do {
            sleep 1;

            hint (format ["Вы на прицеле снайпера %1", _t]);
        };

        player setDamage 1;
    };
} else {
    terminate timerScriptHandle;
};

Edited by Schatten, 09 September 2019 - 10:44.

  • 0

#4 OFFLINE   Karp1989

Karp1989

    Ефрейтор

  • Пользователи
  • 56 posts
  • Откуда:Краснодар

Posted 09 September 2019 - 14:15

Всё, разобрался.
 
timerScriptHandle = scriptNull;


if ((stance player) == "STAND") then {
    timerScriptHandle = [] spawn {
        for "_t" from 5 to 0 step -1 do {
            sleep 1;


            hintSilent (format ["Вы на прицеле снайпера %1", _t]);
        };
if ((stance player == "CROUCH") or (stance player == "PRONE")) then {
        
} else {
player setHitPointDamage ["hitHead", 1];
};
    };
} else {
    terminate timerScriptHandle;
};
 

Edited by Karp1989, 09 September 2019 - 14:26.

  • 0

#5 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 posts
  • Откуда:Тбилиси, Грузия

Posted 09 September 2019 - 14:22

Не получается, при входе в триггер стоя таймер активируется, и если сесть пока таймер не истёк то всё равно убивает игрока.

И как мне эта инфа поможет? Настройки бы триггера лучше привёл.


Edited by Schatten, 09 September 2019 - 14:23.

  • 0

#6 OFFLINE   Karp1989

Karp1989

    Ефрейтор

  • Пользователи
  • 56 posts
  • Откуда:Краснодар

Posted 09 September 2019 - 18:43

 

Не получается, при входе в триггер стоя таймер активируется, и если сесть пока таймер не истёк то всё равно убивает игрока.

И как мне эта инфа поможет? Настройки бы триггера лучше привёл.

 

Данный скрипт делает своё дело, но он активируется когда входишь в триггер солдатом в полный рост(стоя), (стоит триггер с активацией любым игроком, и в активации прописан запуск данного скрипта: execVM "checkStance.sqf";), но если вставать и садиться внутри зоны триггера, то ни чего не происходит.

timerScriptHandle = scriptNull;


if ((stance player) == "STAND") then {
    timerScriptHandle = [] spawn {
        for "_t" from 5 to 0 step -1 do {
            sleep 1;


            hintSilent (format ["Вы на прицеле снайпера %1", _t]);
        };
if ((stance player == "CROUCH") or (stance player == "PRONE")) then {
        
} else {
player setHitPointDamage ["hitHead", 1];
};
    };
} else {
    terminate timerScriptHandle;
};

Edited by Karp1989, 09 September 2019 - 18:44.

  • 0

#7 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 posts
  • Откуда:Тбилиси, Грузия

Posted 09 September 2019 - 20:02

Данный скрипт делает своё дело, но он активируется когда входишь в триггер солдатом в полный рост(стоя)

Логично, в нём же указано условие

(stance player) == "STAND" 

стоит триггер с активацией любым игроком, и в активации прописан запуск данного скрипта: execVM "checkStance.sqf";

Условие активации триггера какое? this? Тогда неудивительно, почему

если вставать и садиться внутри зоны триггера, то ни чего не происходит

-- игрок вошёл, "скрипт" запустился, и всё, ведь никакой логики на его повторный запуск нету.


  • 0

#8 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 posts
  • Откуда:Тбилиси, Грузия

Posted 09 September 2019 - 20:22   Best Answer

Karp1989, а вот это решение:
-- условие активации:

this and { (stance player) == "STAND" }

-- при активации:

call {
    _scriptHandle = [] spawn {
        for "_t" from 5 to 0 step -1 do {
            sleep 1;

            hintSilent (format ["Вы на прицеле снайпера %1", _t]);
        };

        player setHitPointDamage ["hitHead", 1];
    };

    thisTrigger setVariable ["scriptHandle", _scriptHandle];
};

-- при деактивации:

call {
    _scriptHandle = thisTrigger getVariable ["scriptHandle", scriptNull];

    terminate _scriptHandle;
};

  • 0

#9 OFFLINE   PomaST

PomaST

    Рядовой

  • Пользователи
  • 4 posts
  • Откуда:Ufa
  • Отряд:SKAT

Posted 09 September 2019 - 22:46

Дабы не создавать тему, спрошу касательно таймера тут.

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

Примерно через 4-5 секунд


  • 0

#10 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 posts
  • Откуда:Тбилиси, Грузия

Posted 09 September 2019 - 22:50

PomaST, ничего прописывать не надо -- в настройках триггера задержка настраивается.


  • 0

#11 OFFLINE   PomaST

PomaST

    Рядовой

  • Пользователи
  • 4 posts
  • Откуда:Ufa
  • Отряд:SKAT

Posted 09 September 2019 - 23:00

PomaST, ничего прописывать не надо -- в настройках триггера задержка настраивается.

Нету :(

Скрытый текст


  • 0

#12 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 posts
  • Откуда:Тбилиси, Грузия

Posted 09 September 2019 - 23:11

PomaST, так это же не триггер!


  • 1

#13 OFFLINE   PomaST

PomaST

    Рядовой

  • Пользователи
  • 4 posts
  • Откуда:Ufa
  • Отряд:SKAT

Posted 09 September 2019 - 23:17

Schatten, сори, не правильно тогда написал. Тем не менее, можно ли выставить таймер чтобы молния ударило через пару секунд? 


  • 0

#14 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 posts
  • Откуда:Тбилиси, Грузия

Posted 09 September 2019 - 23:44

PomaST, к сожалению, не подскажу -- не работал с модулями (молния ей является). 


  • 0




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