Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Переменные, массивы, енумы*/
- enum dialogs {
- d_select_spawn = 10,
- d_menu_members = 30
- };
- enum players {
- id,
- rang,
- skin,
- fraction_id,#ид фракции
- vacation_type[64],#тип отпуска/пропуска/прогула
- vacation_value[128],#значение отпуска/пропуска/прогула
- };
- new PI[MAX_PLAYERS][players];
- #define MAX_FRACTIONS 3 #максиимальное количество фрак + 1 нулевая (без фраки)
- enum fractions {
- id,#ид фракции
- name[128], #название фракции
- start_work_time[2], #два элемента массива начала раб.дня (часы и минуты)
- end_work_time[2], #два элемента массива конца раб.дня (часы и минуты)
- start_dinner_time[2], ##два элемента массива начала обеда (часы и минуты)
- end_dinner_time[2] #два элемента массива конца обеда (часы и минуты)
- };
- new FI[MAX_FRACTIONS][fractions] = {
- {0, "Отсутствует", {00, 00}, {00, 00}, {00, 00}, {00, 00}},
- {1, "Полиция ПГТ Бусаево", {10, 00}, {18, 00},{12, 00}, {13, 00}},
- {2, "Администрация ПГТ Бусаево", {10, 00}, {18, 00}, {12, 00}, {13, 00}},
- };
- public OnPlayerConnect(playerid)
- {
- /*Тут пропускаем все проверки и сразу приступаем к спавну*/
- new str_dialog[256];
- format(str_dialog, sizeof(str_dialog), "- База вашей организации {ff6600}[%s]\n- Место проживания {ff6600}[%s]",
- (IsCanPlayerFinishWorkDay(playerid)) ? ("{228B22}Раб.день окончен"):("{#FF0000}Раб.день НЕ окончен"),
- (IsCanPlayerFinishWorkDay(playerid)) ? ("{228B22}Возможно"):("{#FF0000}Невозможно"));
- ShowPlayerDialog(playerid, d_select_spawn, DIALOG_STYLE_LIST, "Где желаете появится?", str_dialog, "Выбрать", "Выйти");
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case d_select_spawn: {
- if(!response) return Kick(playerid);
- if(listitem == 0)
- {
- #Спавним игрока во фраке
- }
- else if(listitem == 1)
- {
- if(IsCanPlayerFinishWorkDay(playerid))
- {
- #спавним игрока во фраке
- }
- else спавним игрока дома
- }
- }
- case d_menu_members: {
- if(!response) return true;
- ShowPlayerDialog(playerid, d_menu_members+1, DIALOG_STYLE_INPUT, "Действие на сотрудником Offline",
- "Введите NickName сотрудника из предыдущего списка", "Далее", "Закрыть");
- }
- case d_menu_members+1: {
- if(!response) return true;
- SetPVarString(playerid, "SELECT_PLAYERS_NAME", inputtext);
- ShowPlayerDialog(playerid, d_menu_members+2, DIALOG_STYLE_LIST, "Действие на сотрудником Offline",
- "- Дать отпуск до определенного дня\n- Дать уйти по-раньше", "Выбрать", "Закрыть");
- }
- case d_menu_members+2: {
- if(!response) return true;
- switch(listitem)
- {
- case 0: {
- ShowPlayerDialog(playerid, d_menu_members+3, DIALOG_STYLE_INPUT, "Введите дату конца отгула",
- "Введите дату до которой у сотрудника будет отгул\nФормат: дд.мм.гг\n\nПример: 26.04.21", "Выбрать", "Закрыть");
- }
- case 1: {
- ShowPlayerDialog(playerid, d_menu_members+4, DIALOG_STYLE_INPUT, "Введите время начала отгула",
- "Введите время, когда сотрудник может покинуть раб.день.\nФормат: чч:мм\n\nПример: 16:00", "Выбрать", "Закрыть");
- }
- }
- }
- case d_menu_members+3: {
- if(!response) return DeletePVar(playerid, "SELECT_PLAYERS_NAME");
- mysql_format(database, query, sizeof(query), "UPDATE `users` SET 'vacation_type' = '%s', 'vacation_value' = '%s' WHERE 'name' = '%s'", "until_day", inputtext, GetPVarString(playerid, "SELECT_PLAYERS_NAME"));
- if(mysql_query(database, query)) return SendClientMessage(playerid, 0xff77ffff, "Вы успешно выдали выдали отгул!");
- else return SendClientMessage(playerid, 0xff77ffff, "Ошибка!");
- }
- case d_menu_members+4: {
- if(!response) return DeletePVar(playerid, "SELECT_PLAYERS_NAME");
- mysql_format(database, query, sizeof(query), "UPDATE `users` SET 'vacation_type' = '%s', 'vacation_value' = '%s' WHERE 'name' = '%s'", "until_time", inputtext, GetPVarString(playerid, "SELECT_PLAYERS_NAME"));
- if(mysql_query(database, query)) return SendClientMessage(playerid, 0xff77ffff, "Вы успешно выдали выдали отгул!");
- else return SendClientMessage(playerid, 0xff77ffff, "Ошибка!");
- }
- }
- }
- stock IsCanPlayerFinishWorkDay(playerid)
- {
- new hour,minute,second;
- gettime(hour,minute,second);
- new frac_id = PI[playerid][fraction_id];
- new start_work_hour, start_work_minute;
- start_work_hour = FI[frac_id][start_work_time][0];
- start_work_minute = FI[frac_id][start_work_time][1];
- new end_work_hour, end_work_minute;
- end_work_hour = FI[frac_id][end_work_time][0];
- end_work_minute = FI[frac_id][end_work_time][1];
- new start_dinner_hour, start_dinner_minute;
- start_dinner_hour = FI[frac_id][start_dinner_time][0];
- start_dinner_minute = FI[frac_id][start_dinner_time][1];
- new end_dinner_hour, end_dinner_minute;
- end_dinner_hour = FI[frac_id][end_dinner_time][0];
- end_dinner_minute = FI[frac_id][end_dinner_time][1];
- if(((hour < start_work_hour && minute < start_work_minute) || (hour > end_work_hour && minute > end_work_minute)) || ((hour < start_dinner_hour && minute < start_dinner_minute) || (hour > end_dinner_hour && minute > end_dinner_minute)))
- {
- return true;
- }
- else
- {
- new v_type = PI[playerid][vacation_value];
- new v_value = PI[playerid][vacation_value];
- if(strcmp(v_type, "until_time") == 0) #Если отгул ДО ОПРЕДЕЛЕННОГО ВРЕМЕНИ
- {
- new until_hour, until_minute;
- sscanf(v_value , " p<:>dd", until_hour, until_minute)
- if(hour < until_hour && minute < until_minute) return true;
- else return false;
- }
- else if(strcmp(v_type, "until_day") == 0) #Если отгул ДО ОПРЕДЕЛЕННОГО ДНЯ
- {
- new year, month,day;
- getdate(year, month, day)
- new date[64];
- format(date, sizeof(date), "%02d.%02d.%d", day, month, year);
- if(strcmp(v_value, date) == 0) return false;
- else return true;
- }
- }
- }
- CMD:memlist(playerid)
- {
- if(PI[playerid][rang] < 8) return SendClientMessage(playerid, 0xff0066ff, "Недоступно!");
- new query[128];
- mysql_format(database, query, sizeof(query), "SELECT * FROM `users` WHERE `fraction_id` = '%d'", PI[playerid][fraction_id]);
- mysql_query_callback(database, query, "MemberList", "d", playerid);
- }
- forward MembersList(playerid);
- {
- new rows, fields;
- cache_get_data(rows, fields);
- if(rows)
- {
- new str_dialog[1024];
- new str_strcat[154];
- format(str_strcat, sizeof(str_strcat), "{808080}ID {FFFFFF}- {008000}NickName {FFFFFF}- {20B2AA}Ранг {FFFFFF}- {FFD700}Скин");
- strcat(str_dialog, str_strcat);
- for(new i; i <= rows; i++)
- {
- format(str_strcat, sizeof(str_strcat), "{808080}%d {FFFFFF}- {008000}%s {FFFFFF}- {20B2AA}%d {FFFFFF}- {FFD700}%d",
- cache_get_field_content_int(i, "id"), cache_get_field_content(i, "name"), cache_get_field_content_int(i, "rang")
- cache_get_field_content_int(i, "skin"));
- strcat(str_dialog, str_strcat);
- }
- ShowPlayerDialog(playerid, d_menu_members, DIALOG_STYLE_MSGBOX, "Список сотрудников Offline", str_dialog, "Действие", "Выйти");
- }
- else return SendClientMessage(playerid, 0xff6600ff, "Список сотрудников пуст!");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement