Секундомер. [ Нужна помощь срочно. ] -
7emfic - 23.12.2014
У меня есть команда, которая запускает секундомер, и чекпойнт, который останавливает его. Когда он останавливается в чат пишет время. Появилась огромная нужда сделать так, чтобы считались и выводились секунды и миллисекунды( то есть вместо 20 секунд => 20.16/20.04/20.65). Подскажите, возможно такое реализовать?
Код:
forward test(playerid);
new timer;
new count = 0;
forward Countdown2(playerid);
new countdown2[MAX_PLAYERS];
Код:
public OnFilterScriptInit()
{
SetTimer("Countdown2",1000,1);
return 1;
}
Код:
if (strcmp("/start", cmdtext, true, 10) == 0)
{
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)return SendClientMessage(playerid, 0xFF0000AA,"[INFO]: Вы должны быть в машине");
new Float: X, Float:Y, Float: Z;
GetPlayerPos(playerid, X, Y, Z);
countdown2[playerid]=6;
for(new i=0;i<MAX_PLAYERS;i++)
if(IsPlayerInRangeOfPoint(i,15.0,X,Y,Z))
{
if(GetPlayerState(i) != PLAYER_STATE_ONFOOT && countdown2[i]==-1)countdown2[i]=6;
}
return 1;
}
Код:
public OnPlayerEnterRaceCheckpoint(playerid)
{
DisablePlayerRaceCheckpoint(playerid);
new str[128];
format(str,sizeof(str),"Время прохождения: %d сек ",count);
SendClientMessage(playerid, 0xFFFFFF, str);}
KillTimer(timer);
return 0;
}
Код:
public test(playerid)
{
count++;
count1++; //Use ++ for counting forwards, and -- for counting the seconds backwards
return 1;
}
Код:
public Countdown2()
{
for(new i=0;i<MAX_PLAYERS;i++)
if(IsPlayerConnected(i))
{
if(countdown2[i]>0)
{
countdown2[i]-=1;
new str[6];
format(str,6,"...%d",countdown2[i]);
GameTextForPlayer(i,str,950,4);
PlayerPlaySound(i,1056,0.0,0.0,0.0);
if(countdown2[i]<4)TogglePlayerControllable(i,0);
}
if(countdown2[i]==0)
{
TogglePlayerControllable(i,1);
GameTextForPlayer(i,"~r~GO GO GO",500,4);
PlayerPlaySound(i,1057,0.0,0.0,0.0);
SetPlayerRaceCheckpoint(i,1,-431.5638,1409.8419,32.1069,0,0,0,5.0);
timer = SetTimerEx("test", 1000, 1, "d",i);}
countdown2[i]=-1;
}
}
}
Re: Секундомер. [ Нужна помощь срочно. ] -
Stepashka - 23.12.2014
Увеличить скорость таймера.
Re: Секундомер. [ Нужна помощь срочно. ] -
7emfic - 23.12.2014
Quote:
Originally Posted by Stepashka
Увеличить скорость таймера.
|
Эм, а чем это поможет? Как это реализовать, чтобы выводилось не целое, а десятичное значение. Чтобы еще считал эти доли секунды.
Re: Секундомер. [ Нужна помощь срочно. ] -
Stepashka - 23.12.2014
Точно так же как и с секундами только с миллисекундами.
Re: Секундомер. [ Нужна помощь срочно. ] -
7emfic - 23.12.2014
Quote:
Originally Posted by Stepashka
Точно так же как и с секундами только с миллисекундами.
|
Я немного на 100% не втягиваю, как это сделать.
Re: Секундомер. [ Нужна помощь срочно. ] -
Stepashka - 23.12.2014
Какой вы тогда программист?!
Re: Секундомер. [ Нужна помощь срочно. ] -
7emfic - 23.12.2014
Quote:
Originally Posted by Stepashka
Какой вы тогда программист?!
|
Начинающий, а если по делу, можете помочь?
Re: Секундомер. [ Нужна помощь срочно. ] -
Stepashka - 23.12.2014
Ну ты можешь считать дни, часы, часы, минуты и секунды, так в чем проблема с миллисекундами?
Отличие только в том что их в секунде 1000.
Re: Секундомер. [ Нужна помощь срочно. ] -
7emfic - 23.12.2014
Quote:
Originally Posted by Stepashka
Ну ты можешь считать дни, часы, часы, минуты и секунды, так в чем проблема с миллисекундами?
Отличие только в том что их в секунде 1000.
|
Так как это в кодовом плане изобразить.
Re: Секундомер. [ Нужна помощь срочно. ] -
7emfic - 23.12.2014
Quote:
Originally Posted by Stepashka
Ну ты можешь считать дни, часы, часы, минуты и секунды, так в чем проблема с миллисекундами?
Отличие только в том что их в секунде 1000.
|
Уже все,спасибо, нашел способ, да и зарубежные товарищи помогли.
GetTickCount
Re: Секундомер. [ Нужна помощь срочно. ] -
OKStyle - 23.12.2014
gettime тогда уж.
Re: Секундомер. [ Нужна помощь срочно. ] -
=KempeR= - 23.12.2014
Quote:
Originally Posted by OKStyle
gettime тогда уж.
|
Ну так ему мсек нужны, gettime только секунду возвращает )
Re: Секундомер. [ Нужна помощь срочно. ] -
stabker - 23.12.2014
GetTickCount() же.
UPD: не заметил последний пост автора.
Re: Секундомер. [ Нужна помощь срочно. ] -
7emfic - 23.12.2014
Вот, помог иностранец. Может кому пригодиться.
You can create a new variable at the top of the script for each player which stores the tickcount at the moment the player starts racing:
(Создаем новую переменную в начале мода/скрипта для каждого игрока)
Код:
new StartTick[MAX_PLAYERS];
Then when the countdown is done, and the GoGoGo-text is showing you store the tickcount:
(Когда отсчет закончится и появится Gogogo начнется отсчет времени)
Код:
StartTick[i] = GetTickCount();
When the player reaches the checkpoint you create a new temporarily variable and get the current tick count, then calculate the minutes/seconds/milliseconds:
(Мы создаем новую переменную, которая будет подсчитывать время, когда игрок пересечет чекпойнт и в итоге выведет нам цифру)
Код:
//OnPlayerEnterRaceCheckpoint
new RaceTime = (GetTickCount() - StartTick[playerid]);
new str[128];
format(str, 128, "You finished in %02d:%02d.%03d", RaceTime/60000, (RaceTime%60000)/1000, (RaceTime%1000));
SendClientMessage(playerid, -1, str);
You don't need that timer (test(playerid))
(Вам не нужно использовать таймер)
Re: Секундомер. [ Нужна помощь срочно. ] -
OKStyle - 24.12.2014
https://sampwiki.blast.hk/wiki/GetTickCount почитайте описалово. А почему бы в gettime не разделить на 1000 для мс?
Re: Секундомер. [ Нужна помощь срочно. ] -
Stepashka - 24.12.2014
Quote:
Originally Posted by OKStyle
А почему бы в gettime не разделить на 1000 для мс?
|
Удивлен подобным заявлением от тебя! Ты как собрался получать миллисекунды когда у тебя есть только секунды?
Вот если
GetTickCount разделить на 1000 мы получим секунды, обратно увы это операция не прокатит!
Re: Секундомер. [ Нужна помощь срочно. ] -
OKStyle - 24.12.2014
Блин, конечно умножить)))
Re: Секундомер. [ Нужна помощь срочно. ] -
Stepashka - 24.12.2014
Quote:
Originally Posted by OKStyle
Блин, конечно умножить)))
|
и всегда будет 000 миллисекунд