PDA

Просмотр полной версии : [Мануал] Часы в диалоге с обновлением (v3)



Engineer
28.11.2013, 21:44
Hola.

Новая версия моих стареньких часов.

http://rghost.ru/44872646/image.png

Убраны ошибки, и не нужные функции.

Для работы потребуются foreach и ZCMD/DC_CMD.

Ко всем #define:

#define DLG_TIME 1010

В OnGameModeInit:

SetTimer("ClockTimer", 1000, true);

В конец мода:

CMD:time(playerid, params[])
{
SetPVarInt(playerid, "show_time", 1);
static const fmt_str[] = "Время: %02d:%02d:%02d";
new string[sizeof(fmt_str)+(-4+2)*3];
new hour, minute, second;
gettime(hour, minute, second);
format(string, sizeof(string), fmt_str, hour, minute, second);
return ShowPlayerDialog(playerid, DLG_TIME, DIALOG_STYLE_MSGBOX, "Time", string, "ok", "");
}

forward ClockTimer();
public ClockTimer()
{
foreach(new i:Player)
if(GetPVarInt(i, "show_time"))
cmd_time(i, "");
}

В OnDialogResponse:

if(dialogid == DLG_TIME) return DeletePVar(playerid, "show_time");

Salvacore
28.11.2013, 22:51
Молодец.

#Vito
29.11.2013, 02:51
Норм, только

CMD:time( playerid, params[] ) //if standard processor
Это не стандартный процессор)

Engineer
15.12.2013, 17:25
бамп

denis01
22.08.2014, 18:51
Ребят как из показанного выше кода, добавить к нему еще и дату.
Пример: 22 августа 2014 г.

DeimoS
22.08.2014, 23:02
Я бы сделал как-то так


//Начало мода
#define DLG_TIME 1010

static const month_name[12][9] =
{
"января",
"февраля",
"марта",
"апреля",
"мая",
"июня",
"июля",
"августа",
"сентября",
"октября",
"ноября",
"декабря"
};
//Команда
CMD:time(playerid, params[])
{
SetPVarInt(playerid, "show_time_dialog", 1);
SetTimerEx("UpdateClockDialog", 999, false, "i", playerid);
}
//В конец мода
forward UpdateClockDialog(playerid);
public UpdateClockDialog(playerid)
{
if(!GetPVarInt(playerid, "show_time_dialog")) return 1;
static const fmt_str[] = "Время: %02d:%02d:%02d\nДата: %02d:%02d:%04dг";
new string[sizeof(fmt_str)+(-4+2)*4+4+sizeof(month_name[])];
gettime(string[1], string[2], string[3]);
getdate(string[4], string[5], string[6]);
format(string, sizeof(string), fmt_str, string[1], string[2], string[3], string[6], month_name[string[5]-1], string[4]);
ShowPlayerDialog(playerid, DLG_TIME, DIALOG_STYLE_MSGBOX, "Информация", string, "Закрыть", "");
return SetTimerEx("UpdateClockDialog", 999, false, "i", playerid);
}

//К диалогам
if(dialogid == DLG_TIME) return DeletePVar(playerid, "show_time_dialog");

Nurick
23.08.2014, 00:00
Я бы сделал как-то так


//Начало мода
#define DLG_TIME 1010

static const month_name[12][] =
{
"января",
"февраля",
"марта",
"апреля",
"мая",
"июня",
"июля",
"августа",
"сентября",
"октября",
"ноября",
"декабря"
};
//Команда
CMD:time(playerid, params[])
{
SetPVarInt(playerid, "show_time_dialog", 1);
SetTimerEx("UpdateClockDialog", 999, false, "i", playerid);
}
//В конец мода
forward UpdateClockDialog(playerid);
public UpdateClockDialog(playerid)
{
if(!GetPVarInt(playerid, "show_time_dialog")) return 1;
static const fmt_str[] = "Время: %02d:%02d:%02d\nДата: %02d:%02d:%04dг";
new string[sizeof(fmt_str)+(-4+2)*4+4+sizeof(month_name[])];
gettime(string[1], string[2], string[3]);
getdate(string[4], string[5], string[6]);
format(string, sizeof(string), fmt_str, string[1], string[2], string[3], string[6], month_name[string[5]-1], string[4]);
ShowPlayerDialog(playerid, DLG_TIME, DIALOG_STYLE_MSGBOX, "Информация", string, "Закрыть", "");
return SetTimerEx("UpdateClockDialog", 999, false, "i", playerid);
}

//К диалогам
if(dialogid == DLG_TIME) return DeletePVar(playerid, "show_time");


if(dialogid == DLG_TIME) return DeletePVar(playerid, "show_time_dialog");//Маленькая поправочка

Archange
10.09.2014, 01:23
Перезалей скриншот

Пельмень
10.09.2014, 02:27
ShowTimeDlg(playerid); Функцию забыл..

denis01
22.09.2014, 10:56
warning 224: indeterminate array size in "sizeof" expression (symbol "")
строка:

new string[sizeof(fmt_str)+(-4+2)*4+4+sizeof(month_name[])];

DeimoS
22.09.2014, 14:42
warning 224: indeterminate array size in "sizeof" expression (symbol "")
строка:

new string[sizeof(fmt_str)+(-4+2)*4+4+sizeof(month_name[])];


static const month_name[12][] =
на

static const month_name[12][9] =

denis01
22.09.2014, 19:44
static const month_name[12][] =
на

static const month_name[12][9] =

Спасибо!