Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Глупый вопрос.

Страниц (1): [1]
 

1. Cash - 17 Ноября, 2014 - 08:54:02 - перейти к сообщению
Кибор, я конечно понимаю что скрипт написан и работает но никак не могу понять как)))
CODE:

int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
int время_выполнения_милисек;
j: getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
время_выполнения_милисек=0;
int time;
....
if (Hour==10 && Minute>=00)время_выполнения_милисек=3600000; // 60*60*1000 час
if (время_выполнения_милисек!=0)
time=gettime();
a: if (gettime()-time<время_выполнения_милисек)
{
fight();
sleep(100);
goto a;
}
}
sleep(100);
goto j;

Понято что это вырванный код из общего кода но это сейчас не важно...
вот мы по порядку:
объявили переменые год месяц.... милисекунды
объявили переменную время_выполнения_милисек
получаем текущие год месяц...милисекунды
приравниваем время_выполнения_милисек=0

если (час равен 10 И минут больше 00) умножить? на время_выполнения_милисек (которые мы прировняли нулю)=36000000 //60секунд*60 минут*1000 мелисекунд = 36000000
если время_выполнения_милисек не равно 0
переменной time присваиваем текущее время "gettime"
если текущее время минус переменная время меньше переменной время_выполнения_милисек
выполняем правило в фигурных скобках а именно функцию файт сон и goto
далее опять спим и goto j


вопрос
1. откуда кибор знает что переменная время_выполнения_милисек это вообще время в милисекундах? Откуда он вообще понимает что это время?
2. Если мы только что присвоили переменной время_выполнения_милисек значение равное 0 и тут же просим выполнения функции если оно перестало быть равным 0 то каким образом оно вообще работает?
3. Как вообще понимать эту строчку
time=gettime();
a: if (gettime()-time<время_выполнения_милисек)
4. я тупой? (риторический вопрос. мнение со стороны) Растерялся
2. Kibor - 17 Ноября, 2014 - 09:16:27 - перейти к сообщению
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
Взяли 8 ящиков для хранения чисел

int время_выполнения_милисек;
еще один взяли

j: getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
эта функция ложит в каждый ящик по числу дата время....

время_выполнения_милисек=0;
кинули в ящик число 0

int time;
еще один ящик склепали

if (Hour==10 && Minute>=00)время_выполнения_милисек=3600000; // 60*60*1000 час
если в этих язщиках валяются числа 10 и число более 0, кинем в ящик другой число 3600000


if (время_выполнения_милисек!=0)
тут открываем ящик и смотрим число. если оно не равно 0 выполняем функцию, а оно может быто не 0 если
в предыдущей строке в него кинули число 3600000, то есть если наступил час нужный 10ч +0 мин.


time=gettime();
функция эта ложит в ящик число милисек с момента запуска компьютера. для счетчика.


a: if (gettime()-time<время_выполнения_милисек)
проверяем сколько мсекунд прошло с запуска комп. срвниваем с временем в ящике которое было раньше
если сейчас время минус время которое в ящике лежит (мы в ящик положили число мсек с запуска комп)
меньше чем число в ящике время_выполнения_милисек вперед выполнять между скобками
3. Cash - 17 Ноября, 2014 - 11:20:58 - перейти к сообщению
1. Зачем тогда мы в начале ящику время_выполнения_милисек сначала присваиваем 0 а потом 3600000?
2. if (Hour==10 && Minute>=00)время_выполнения_милисек=3600000; // 60*60*1000 час
то есть никаких пробелов после скобки? никаких фигурных скобок? зачем же мы тогда после условия пишем {} если тут они не нужны?
3. a: if (gettime()-time<время_выполнения_милисек)
у нас time=gettime(); почему бы сразу не написать тогда if (0<время_выполнения_милисек)
4. Kibor - 17 Ноября, 2014 - 11:33:42 - перейти к сообщению
 Cash пишет:
1. Зачем тогда мы в начале ящику время_выполнения_милисек сначала присваиваем 0 а потом 3600000?

мы не потом там присваиваем, а если

 Cash пишет:
2. if (Hour==10 && Minute>=00)время_выполнения_милисек=3600000; // 60*60*1000 час
то есть никаких пробелов после скобки? никаких фигурных скобок? зачем же мы тогда после условия пишем {} если тут они не нужны?
(для просмотра ссылки Вам необходимо авторизоваться)
 Cash пишет:
3. a: if (gettime()-time<время_выполнения_милисек)
у нас time=gettime(); почему бы сразу не написать тогда if (0<время_выполнения_милисек)

сразу равно, потом когда переходим на a разрыв то увеличивается
5. Cash - 17 Ноября, 2014 - 12:11:49 - перейти к сообщению
по пункту 2 все равно не вникаю.
тут(для просмотра ссылки Вам необходимо авторизоваться) нет ни одного примера где после if действия бы описывались без фигурных скобок.
четко описано, что после условия иф открываются круглые скобки в которых описывается само условие, а далее если условие выполняется, то в фигурных описываем действие
иначе опять фигурные скобки и другое действие (опционально). То есть по моей логике правильным было бы написание
if (Hour==10 && Minute>=00)
{время_выполнения_милисек=3600000};
6. Kibor - 17 Ноября, 2014 - 13:43:44 - перейти к сообщению
 Cash пишет:
тут(для просмотра ссылки Вам необходимо авторизоваться) нет ни одного примера где после if действия бы описывались без фигурных скобок.


 Цитата:
int color=178898;
if (color==getcolor(10, 20))messagebox("совпадение цвета 178898 с цветом в экранных координатах 10, 20"Подмигивание;

одна инструкция когда можно без.

если много брать в скобки - блок кода
7. Cash - 17 Ноября, 2014 - 14:24:17 - перейти к сообщению
кажись понял, спасибо, что очень подробно описали и разъяснили Закатив глазки

Powered by ExBB FM 1.0 Final