Как сделать отсчет времени в стиле GameTextForPlayer
как в костях на Samp rp
Вид для печати
Как сделать отсчет времени в стиле GameTextForPlayer
как в костях на Samp rp
как то так, довольно простоPHP код:
enum stol
{
vrema
}
new SI[MAX_STOL][stol];
SI[i][vrema] --;
new str[15];
format(str,15,"~b~%s",TimeConverter(SI[i][vrema]));
GameTextForPlayer(playerid, str, 5000, 1);
stock TimeConverter(seconds)//Конвертер секунды в минуты и секунды
{
new str[6];//объявляем символьную переменную
new minutes = floatround(seconds/60);//кол. целых минут
seconds -= minutes*60; //остаток
format(str, sizeof(str), "%02d:%02d", minutes, seconds);//преобразовываем
return str;//возвращаем строку символов
}
А ничего, что он попросил немного иной пример? Ему наверняка не нужны вырезки кода из каких-то модов, можно обойтись одной переменной! К тому-же, нужно обновлять GameText каждую секунду, и GameTextForPlayer создавать не на 5 секунд, а на 1. Наверное стоит объяснить подробнее, а не выдавать не рабочие, или плохие примеры?
PHP код:
new ret_time = 0;
new timer_ex = 0;
stock Start (playerid, num) {
ret_time = num;
timer_ex = SetTimerEx ("LessTime", 1000, true, "i", playerid);
return 1;
}
forward LessTime (playerid);
public LessTime (playerid) {
if (ret_time-- < 1) {
KillTimer (timer_ex);
return 1;
}
new time [5];
format (time, sizeof (time), "%d", ret_time);
GameTextForPlayer (playerid, time, 1000, 1);
return 1;
}
ну ладно, тут я тупанул по поводу левого времени. Но твой пример не лучше ибо у тебя используется таймер для игрока, но при окончании времени убирается 1 таймер. А если разные игроки использовали этот таймер в разные секунды?
PHP код:
enum stol
{
Svrema,
Stimer
}
new SI[MAX_STOL][stol];
SI[i][vrema] = 30;
SI[i][Stimer] = SetTimerEx ("UpdateStol", 1000, true, "i", i);
forward UpdateStol(i);
public UpdateStol(i)
{
if(SI[i][vrema]> 0) SI[i][vrema] --;
new str[7];
format(str,7,"~b~%d",SI[i][vrema]);
GameTextForPlayer(playerid, str, 1000, 1);
if(SI[i][vrema] == 0) KillTimer(SI[i][Stimer]);
return 1;
}
С чего-это мой пример не лучше? Во-первых, для чего вообще использовать enum. Во-вторых, мой пример очень просто переделать для каждого игрока!
PHP код:
new ret_time [MAX_PLAYERS] = {0, ...};
new timer_ex [MAX_PLAYERS] = {0, ...};
stock Start (playerid, num) {
ret_time [playerid] = num;
timer_ex [playerid] = SetTimerEx ("LessTime", 1000, true, "i", playerid);
return 1;
}
forward LessTime (playerid);
public LessTime (playerid) {
if (ret_time [playerid]-- < 1) {
KillTimer (timer_ex [playerid]);
return 1;
}
new time [5];
format (time, sizeof (time), "%d", ret_time [playerid]);
GameTextForPlayer (playerid, time, 1000, 1);
return 1;
}
Ну хз, вдруг лучше:DPHP код:
new ret_time[MAX_PLAYERS] = {0, ...};
new timer_ex[MAX_PLAYERS] = {0, ...};
stock Start(playerid, num){
ret_time[playerid] = num;
timer_ex[playerid] = SetTimerEx ("LessTime", 1000, true, "i", playerid);
return 1;
}
forward LessTime(playerid);
public LessTime(playerid){
if(ret_time[playerid]-- < 1)
return KillTimer(timer_ex [playerid]);
new time[5];
format(time, sizeof(time), "%d", ret_time[playerid]);
GameTextForPlayer(playerid, time, 1000, 1);
return 1;
}