Every hour and half a hour -
GospodinX - 18.07.2018
Hi guys
I want to make timer with which I will be able to do some thing every hour and half a hour.
For example( 00:00 00:30 01:00 01:30 02:00 ... 06:00 06:30 etc )
I want to start an race event in 00:00 ,in 00:30 i want to start derby event etc...it's example.
I'm use this:
Код:
task OneMinuteTimer[60000]()
{
new hours,minutes,seconds;
gettime(hours,minutes,seconds);
if(minutes == 30)
{
if(hours == 1)
{
//This is 01:30
}
else if(hours == 2)
{
//This is 02:30
}
else if(minutes == 0)
{
if(hours == 1)
{
//This is 01:00
}
else if(hours == 2)
{
//This is 02:00
}
}
return 1;
}
Now,problem is that sometimes happend that timer omissions some hour.
If timer is called in 02:59:59 and next time in 03:01:01 i can't do anything in 03:00 ..Because my code don't will work in it case.
Do you have any better suggestion?
Re: Every hour and half a hour -
Florin48 - 18.07.2018
includes your code in an already created timer that works from second to second.
Re: Every hour and half a hour -
GospodinX - 18.07.2018
Quote:
Originally Posted by Florin48
includes your code in an already created timer that works from second to second.
|
If i'm understand you..You think that i check every second if is now xx:00 or xx:30? But if i do it 'n one-second timer i will have true case 59 times on minute...
Re: Every hour and half a hour -
Florin48 - 18.07.2018
try a 35-second timer, it's going to go wrong and there's no error.
or try to make a half-hour timer.
Re: Every hour and half a hour -
Florin48 - 18.07.2018
this is a timer that runs every 35 seconds, try it.
PHP код:
task OneMinuteTimer[35000]()
{
new hours,minutes,seconds;
gettime(hours,minutes,seconds);
switch(hours)
{
case 0:
{
switch(minutes)
{
case 0:
case 30:
}
}
case 1:
{
switch(minutes)
{
case 0:
case 30:
}
}
case 2:
case 3:
case 4:
case 5:
case 6:
}
return 1;
}
the code was not tested, try it.
Re: Every hour and half a hour -
GospodinX - 18.07.2018
Thank you.But problem with sa-mp is which timer are not exact..It can vary in few seconds.With my code,it will miss some hours,but with 35 seconds I fear that may it can be called 2 times...But i will test it
Re: Every hour and half a hour -
Florin48 - 18.07.2018
Quote:
Originally Posted by GospodinX
Thank you.But problem with sa-mp is which timer are not exact..It can vary in few seconds.With my code,it will miss some hours,but with 35 seconds I fear that may it can be called 2 times...But i will test it
|
uses a timerfix to be more accurate timer.
Re: Every hour and half a hour -
GospodinX - 26.07.2018
Still don't know how to make it..I'm test with 35 seconds but :
Timer is call two times in one hour
I need just one time in one hour...
Re: Every hour and half a hour -
JasonRiggs - 26.07.2018
Why don't you make the timer every 1 second?? And use timerfix plugin, and check if the time is XX:00 or XX:30 and done..
Re: Every hour and half a hour -
GospodinX - 26.07.2018
Quote:
Originally Posted by JasonRiggs
Why don't you make the timer every 1 second?? And use timerfix plugin, and check if the time is XX:00 or XX:30 and done..
|
Hah..
But if i set it on 1 second,it will be called 60 times on minute
Код:
if(hours == 15 && minute == 0) // 15:00
{
//This will be called 60 times,i need it just one time...
//If I here start event in this code,it will be started 60 times..
}
Re: Every hour and half a hour -
Florin48 - 26.07.2018
try to add second in verification
if(hours == 15 && minute == 0 && second == 0) // 15:00
{
Re: Every hour and half a hour -
GospodinX - 26.07.2018
Quote:
Originally Posted by Florin48
try to add second in verification
if(hours == 15 && minute == 0 && second == 0) // 15:00
{
|
Timers are not 100% correct..Sometimes it don't will work..sometimes it will be called for example:
Quote:
14:59:59
and next time in
15:00:01
|
(tested)
Re: Every hour and half a hour -
Florin48 - 26.07.2018
use a timerfix or try
if(hours == 15 && minute == 0 && (second == 0 || second == 1) // 15:00
{
...
}
or you can use a global variable. ex:
PHP код:
new YourVariableName = 0;
if(hours == 15 && minute == 0 && YourVariableName == 0) // 15:00
{
YourVariableName =1;
...
}
there are different ways to solve a problem.
Re: Every hour and half a hour -
JasonRiggs - 26.07.2018
That's WHY I'm saying set a 1 second timer! To be more accurate..
Re: Every hour and half a hour -
BlackBank - 26.07.2018
Quote:
Originally Posted by JasonRiggs
That's WHY I'm saying set a 1 second timer! To be more accurate..
|
As he said, timers are not accurate.
Why not do it this way?
PHP код:
task JustARandomTimer[1000]()
{
static pastMinutes = -1;
new hours, minutes, seconds;
gettime(hours, minutes, seconds);
// Initial pastMinutes variable
if (pastMinutes == -1) {
pastMinutes = minutes;
}
if (minutes < 30 && pastMinutes >= 30) {
pastMinutes = 0;
// Do something under xx:30, called once.
}
else if (minutes >= 30 && pastMinutes < 30) {
pastMinutes = 30;
// Do something above xx:30, called once.
}
return 1;
}
Re: Every hour and half a hour -
Y_Less - 26.07.2018
Why are you using shorter and shorter timers? If you want something to happen once an hour, use a one hour timer:
Код:
task RaceTimer[60 * 60 * 1000]()
{
// Called once an hour - no messing, no misses!
}
Simple!
Then use the timerfix plugin to improve the accuracy. Don’t use ad-hoc half-baked pawn solutions that just end up vastly more complex code.
Re: Every hour and half a hour -
Florin48 - 26.07.2018
Quote:
Originally Posted by Y_Less
Why are you using shorter and shorter timers? If you want something to happen once an hour, use a one hour timer:
Код:
task RaceTimer[60 * 60 * 1000]()
{
// Called once an hour - no messing, no misses!
}
Simple!
Then use the timerfix plugin to improve the accuracy. Don’t use ad-hoc half-baked pawn solutions that just end up vastly more complex code.
|
but if I start the server at 13:26 and I want the event to start at 13:30, this one-hour timer will not start when the server is opened at 13:26 and the next time it is accessed will be at 14: 26 and I wanted it at 13:30.
Or y_timer library works differently?
Re: Every hour and half a hour -
Y_Less - 26.07.2018
The fact that you wanted it ON the hour was not clear at all from your initial post. You did say "for example", but that doesn't to me mean "exclusively". In that case, timers are not at all the right way to go about this - you should be using `gettime`.
Re: Every hour and half a hour -
Florin48 - 27.07.2018
Quote:
Originally Posted by Y_Less
The fact that you wanted it ON the hour was not clear at all from your initial post. You did say "for example", but that doesn't to me mean "exclusively". In that case, timers are not at all the right way to go about this - you should be using `gettime`.
|
I did not create the original post, I just said the requirements that the one who needed the help wanted, gave an example at first you had to look and see that one hour timer would be useless for him.
Re: Every hour and half a hour -
GospodinX - 27.07.2018
Quote:
In that case, timers are not at all the right way to go about this - you should be using `gettime`.
|
But where to use gettime? I don't understand.