Ki1ime Опубликовано 13 августа, 2014 Жалоба Поделиться Опубликовано 13 августа, 2014 Всем привет.Столкнулся с такой проблемой, не знаю как уберечь таймер команды "initnpctimer;", Дело в том что я создаю таймер и вывожу его, но вот при использовании команды @reloadscript или перезагрузки сервера таймер обнуляется. Что можно сделать что бы сохранить его? Ссылка на комментарий Поделиться на другие сайты Поделиться
Jarek Опубликовано 13 августа, 2014 Жалоба Поделиться Опубликовано 13 августа, 2014 При старте таймера в переменную записать время старта gettimetick(2)а в onInit написать setnpctimer(gettimetick(2) - <переменная>) Ссылка на комментарий Поделиться на другие сайты Поделиться
Ki1ime Опубликовано 14 августа, 2014 Автор Жалоба Поделиться Опубликовано 14 августа, 2014 (изменено) ...initnpctimer;setnpctimer -172800000;set timer,gettimetick(2);end;...Дублю 1:OnInit:setnpctimer ((gettimetick(2)-timer)*(-1)); //у меня просто идет действие с отрицательным значением.end;}Дубль 2:OnInit:setnpctimer ((172800000-timer)*(-1)); //у меня просто идет действие с отрицательным значением.end;}пробовал разные вариации, но таймер по прежнему обнуляется.P.S. У меня такой вопросик, "а в onInit написать setnpctimer(gettimetick(2) - <переменная>) "разве вы не отнимаем один и тот же таймер от таймера, т.к. точка отчета одна или в переменно мы прописали промежуток до и отнимаем точку после? Изменено 14 августа, 2014 пользователем Saha Ссылка на комментарий Поделиться на другие сайты Поделиться
Jarek Опубликовано 14 августа, 2014 Жалоба Поделиться Опубликовано 14 августа, 2014 setnpctimer ((172800000-(gettimetick(2)-timer)*1000)*(-1));Вопрос не понял, но попробую объяснить1) в переменную записываем время старта таймера2) в онините: "gettimetick(2)-timer" даст нам разницу между текущим временем и временем старта таймера3) отнимаем из 2х суток эту разницу и продолжаем таймерИ еще раз на цифрах1) в переменную timer помещается количество секунд, прошедшее с 1 янв 1970г. Но для удобства примера, пусть там будет 0 секунд2) Допустим ровно через 12ч перезапустили сервер "gettimetick(2)-timer" даст 43200 (секунд)3) умножаем на 1000 и отнимаем от 172800000 полученное значение, получаем 129600000 (36ч)P.S.: В онините тоже нужно инициализоровать таймер, т.к. старого больше нетP.S.S.: используйте нпц переменную, а не переменную чара. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ki1ime Опубликовано 14 августа, 2014 Автор Жалоба Поделиться Опубликовано 14 августа, 2014 Ну, есть 2 новости:1) После перезапуска таймер работает. //>.< initnpctimer; xD2) Он то стал появляется, но ставит одно и тоже значение и начинает от него отсчет....OnInit:initnpctimer;set .timert,gettimetick(2);setnpctimer ((172800000-((.timert-.timero)/1000))*(-1));goto tier;end;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Jarek Опубликовано 14 августа, 2014 Жалоба Поделиться Опубликовано 14 августа, 2014 Не совсем понял, откуда и зачем 2 переменных...2) Он то стал появляется, но ставит одно и тоже значение и начинает от него отсчет.Ну дык потому что без проверки на в OnInitinitnpctimer;setnpctimer -172800000;set .timer,gettimetick(2);end;...OnInit:if(.timer){initnpctimer;setnpctimer ((172800000-(gettimetick(2)-.timer)*1000)*(-1));}end;Соответственно после остановки таймера переменную лучше сбрасывать Ссылка на комментарий Поделиться на другие сайты Поделиться
Ki1ime Опубликовано 15 августа, 2014 Автор Жалоба Поделиться Опубликовано 15 августа, 2014 не хочет реагировать на проверку и обнуляет таймер. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ki1ime Опубликовано 16 августа, 2014 Автор Жалоба Поделиться Опубликовано 16 августа, 2014 (изменено) я попробовал вывести в числах переменную и в итоге у меня получилось наша переменная .timer = 0 и gettimetick(2) = 1408171484, причем статично.P.S. Я тут подумал, а если попробовать прописать в переменную как точку отчета время сервера и при перезагрузке отнимать разницу? Изменено 16 августа, 2014 пользователем Saha Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения