Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Опять таймер... (http://www.flasher.ru/forum/showthread.php?t=206451)

ivaniyses 04.02.2014 18:53

Опять таймер...
 
Проблема в том, что когда приложение нормально работает, всё идёт отлично, и работает так как надо.
Но когда я ускоряю процесс игры сторонним П.О. функция таймера выполняется максимальное количество раз.
p/s: Когда таймер доходит до определённого времени, он выполняет определённую функцию (добавляет +1 к переменной), но когда я запускаю чит, и ускоряю флешку он выполняет функцию до максимального колличества...(таймер не ускоряется, но функция работает неправельно)
Если кто понял в чём проблема помогите.

Код:
Код AS3:

import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;
 
var money:Number = 50;
benzin_txt1.text = String(money);
 
var primer6:Timer = new Timer(100);//создаем экземпляр класса Timer
primer6.start();
//запускаем Timer;
 
primer6.addEventListener(TimerEvent.TIMER, tymerF);
 
function tymerF(event:TimerEvent):void
{
 
        var time:Date = new Date();//создаем экземпляр класса Date, чтобы можно было пользоваться методами класса
 
        var second:Number = time.getSeconds();//переменной second присваиваем значение текущей секунды
 
 
 
        time_txt.text = String(second);//в текстовое поле вывести секунды
        if (money <= 49)
        {
                if (second == 0)
                {
                        money += 1;
                        benzin_txt1.text = String(money);
                }
        }
}
 
 
 
 
 
 
 
 
 
btn1.addEventListener(MouseEvent.CLICK, fun2);
 
function fun2(e:MouseEvent):void
{
        if (money >= 10)
        {
                money -=  10;
                benzin_txt1.text = String(money);
        }
}


caseyryan 04.02.2014 19:44

Что именно работает не правильно? Тут не телепаты

п.с. Могу сразу сказать, что вот это условие
Код AS3:

if (second == 0)

вряд ли будет срабатывать (ну по крайней мере глючить будет точно)

BAXTER 04.02.2014 20:14

Согласен с caseyryan.
таймер срабатывает каждые 100 мс, тем самым 10 раз в секунду вызывает функцию tymerF, в которой меняет значение second;
но при ускорении игры таймер не может "поймать" значение second чтобы равнялось 0;

Не знаю зачем вызывать функцию 600 раз в минуту, чтобы всего один раз изменить значение money;

Я бы сделал примерно:

Код AS3:

var money:Number = 50;
var second:Number = 0;
benzin_txt1.text = String(money);
 
//изменим немного таймер
//поставим на одну секунду
var primer6:Timer = new Timer(1000,60);
primer6.start();
 
primer6.addEventListener(TimerEvent.TIMER, tymerF);
primer6.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete);
 
function tymerF(e:TimerEvent):void
{
        second++;
        time_txt.text = String(second);
}
 
function onComplete(e:TimerEvent):void
{
        if (money <= 49)
        {
                money++;
                benzin_txt1.text = String(money);
        }
        second = 0;
        primer6.start();
}


ivaniyses 04.02.2014 20:37

А теперь скомпилируй приложение и ускорь его...
P/S: Мне нужно сделать таймер который нельзя будет взломать!
То, что ты мне предложил я использовал до того как понял что приложение уязвимо на ст.П.О...

Добавлено через 1 минуту
Так вот я и спрашиваю как в моём случае сделать не глючный таймер, но при этом чтобы он серялся к временем на компьютере, как впрочем у меня

Rzer 04.02.2014 21:00

Проверяй в условии дату
Код AS3:

var curTime:Number = new Date().getTime();
if (curTime-lastTime > SECONDS_PER_GOLD*1000){
lastTime  =curTime;
money++;
}


Zebestov 04.02.2014 22:01

Название темы не отражает сути вопроса.


Часовой пояс GMT +4, время: 21:33.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.