Advertisement
Guest User

Untitled

a guest
Aug 17th, 2015
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 18.75 KB | None | 0 0
  1. /*
  2.     FileScrip name: Phone book system.
  3.     Аuthor: St1muL
  4. */
  5.  
  6. #include <a_samp>
  7. #include <mxINI05>
  8.  
  9. //Дефайны:
  10. #undef MAX_PLAYERS
  11. #define MAX_PLAYERS (50)//Изменить на кол-во слотов сервера
  12.  
  13. #define Loop(%0,%1) for(new %0; %0 != %1; %0++)//упрощенный цикл
  14.  
  15. #define MAX_PBK 10//Максимальное число номеров в книжке
  16.  
  17. #define MAX_PBK_LABEL 64//Максимум символов в пометке
  18. #define MAX_PBK_NUMBER 6//Максимум цифр в номере
  19.  
  20. #define PBK_CMD "/phonebook"
  21.  
  22. #define DLG_PBK 3757
  23.  
  24. //Переменные:
  25. new PBK_Number[MAX_PLAYERS][MAX_PBK];//Номер телефона
  26. new PBK_Name[MAX_PLAYERS][MAX_PBK][MAX_PLAYER_NAME];//Владелец телефона
  27. new PBK_Label[MAX_PLAYERS][MAX_PBK][MAX_PBK_LABEL];//Пометка
  28. new PBK_Select[MAX_PLAYERS];//Выбор номера
  29.  
  30. //Паблики:
  31.  
  32. //Загрузка номеров
  33. forward PBK_Load(playerid);
  34. public PBK_Load(playerid)
  35. {
  36.     //Cоздаём переменные
  37.     new string[64], File;
  38.    
  39.     //Вводим путь к файлу
  40.     format(string, sizeof(string), "phonebook/%s.ini", GN(playerid));
  41.    
  42.     //Открываем файл
  43.     if (fexist(string))
  44.     {
  45.         //Если файл есть, открываем его
  46.         File = ini_openFile(string);
  47.     }
  48.     else
  49.     {
  50.         //Если файла нет, создаём его
  51.         File = ini_createFile(string);
  52.     }
  53.    
  54.     //Если открыть/создать файл невозможно, выходим из загрузки
  55.     if(File < 0)
  56.     {
  57.         return 1;
  58.     }
  59.  
  60.     //Запускаем цикл чтобы загрузить данные
  61.     Loop(pbkid, MAX_PBK)
  62.     {
  63.         //Загрузка номеров
  64.         format(string, sizeof(string), "number_%d", pbkid);
  65.         ini_getInteger(File, string, PBK_Number[playerid][pbkid]);
  66.  
  67.         //Загрузка имён
  68.         format(string, sizeof(string), "name_%d", pbkid);
  69.         ini_getString(File, string, PBK_Name[playerid][pbkid], MAX_PLAYER_NAME);
  70.        
  71.         //Загрузка пометок
  72.         format(string, sizeof(string), "label_%d", pbkid);
  73.         ini_getString(File, string, PBK_Label[playerid][pbkid], MAX_PBK_LABEL);
  74.     }
  75.    
  76.     //Когда всё закончим, закрываем файл
  77.     ini_closeFile(File);
  78.     return 1;
  79. }
  80. forward PBK_Save(playerid);
  81. public PBK_Save(playerid)
  82. {
  83.     //Cоздаём переменные
  84.     new string[64], File;
  85.  
  86.     //Вводим путь к файлу
  87.     format(string, sizeof(string), "phonebook/%s.ini", GN(playerid));
  88.  
  89.     //Открываем файл
  90.     if (fexist(string))
  91.     {
  92.         //Если файл есть, открываем его
  93.         File = ini_openFile(string);
  94.     }
  95.     else
  96.     {
  97.         //Если файла нет, создаём его
  98.         File = ini_createFile(string);
  99.     }
  100.  
  101.     //Если открыть/создать файл невозможно, выходим из загрузки
  102.     if(File < 0)
  103.     {
  104.         return 1;
  105.     }
  106.  
  107.     //Запускаем цикл чтобы загрузить данные
  108.     Loop(pbkid, MAX_PBK)
  109.     {
  110.         //Загрузка номеров
  111.         format(string, sizeof(string), "number_%d", pbkid);
  112.         ini_setInteger(File, string, PBK_Number[playerid][pbkid]);
  113.  
  114.         //Загрузка имён
  115.         format(string, sizeof(string), "name_%d", pbkid);
  116.         ini_setString(File, string, PBK_Name[playerid][pbkid]);
  117.  
  118.         //Загрузка пометок
  119.         format(string, sizeof(string), "label_%d", pbkid);
  120.         ini_setString(File, string, PBK_Label[playerid][pbkid]);
  121.     }
  122.  
  123.     //Когда всё закончим, закрываем файл
  124.     ini_closeFile(File);
  125.     return 1;
  126. }
  127. //Команда
  128. forward PBK_OnPlayerCommandText(playerid, cmdtext[]);
  129. public PBK_OnPlayerCommandText(playerid, cmdtext[])
  130. {
  131.     if (strcmp(PBK_CMD, cmdtext, true, 10) == 0)
  132.     {
  133.         PBK_MainMenu(playerid);
  134.         return 1;
  135.     }
  136.     return 0;
  137. }
  138. //Диалоги
  139. forward PBK_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  140. public PBK_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  141. {
  142.     switch(dialogid)
  143.     {
  144.         //Главный диалог
  145.         case DLG_PBK:
  146.         {
  147.             //Ничего не делаем если нажали на "Выход"
  148.             if(!response) return 1;
  149.  
  150.             //Запускаем новый диалог:
  151.             PBK_Select[playerid] = listitem;
  152.            
  153.             //Выдаём следующее меню
  154.             PBK_PhoneMenu(playerid);
  155.         }
  156.        
  157.         //Диалог выбора действия
  158.         case DLG_PBK+1:
  159.         {
  160.             //Отправляем в главное меню, если нажали на "Назад"
  161.             if(!response) return PBK_MainMenu(playerid);
  162.            
  163.             new pbkid = PBK_Select[playerid];
  164.             switch(listitem)
  165.             {
  166.                 case 0:
  167.                 {
  168.                     //Если информация пустая:
  169.                     if(PBK_Number[playerid][pbkid] == 0 && !strlen(PBK_Name[playerid][pbkid]))
  170.                     {
  171.                         PBK_PhoneMenu(playerid);
  172.                         return 1;
  173.                     }
  174.                     //Если информация есть, то выводим меню с инфой
  175.                     PBK_Info(playerid);
  176.                 }
  177.                 case 1:
  178.                 {
  179.                     //Меню редактирования
  180.                     PBK_Edit(playerid);
  181.                 }
  182.             }
  183.         }
  184.        
  185.         //Диалог информации
  186.         case DLG_PBK+2:
  187.         {
  188.             //Возвращаем назад
  189.             PBK_PhoneMenu(playerid);
  190.         }
  191.        
  192.         //Диалог редактирования
  193.         case DLG_PBK+3:
  194.         {
  195.             //отправляем в выбор действия, если нажали на "Назад"
  196.             if(!response) return PBK_PhoneMenu(playerid);
  197.            
  198.             new string[200];
  199.             switch(listitem)
  200.             {
  201.                 case 0:
  202.                 {
  203.                     format(string, sizeof(string), "{FFFFFF}Введите {FFCB77}номер{FFFFFF}:\n\
  204.                     {FFFFFF}( Пример: {FFCB77}684153 {FFFFFF})\n\
  205.                     {FFFFFF}( {FFCB77}1-%d {FFFFFF}символов )", MAX_PBK_NUMBER);
  206.                    
  207.                     ShowPlayerDialog(playerid, DLG_PBK+4, DIALOG_STYLE_INPUT, "Ввод номера", string, "Ввод", "Назад");
  208.                 }
  209.                 case 1:
  210.                 {
  211.                     format(string, sizeof(string), "{FFFFFF}Введите {FFCB77}имя владельца{FFFFFF}:\n\
  212.                     {FFFFFF}( Пример: {FFCB77}Vasya_Pupkin {FFFFFF})\n\
  213.                     {FFFFFF}( {FFCB77}1-%d {FFFFFF}символов )", MAX_PLAYER_NAME);
  214.  
  215.                     ShowPlayerDialog(playerid, DLG_PBK+5, DIALOG_STYLE_INPUT, "Ввод имени владельца", string, "Ввод", "Назад");
  216.                 }
  217.                 case 2:
  218.                 {
  219.                     format(string, sizeof(string), "{FFFFFF}Введите {FFCB77}пометку{FFFFFF}:\n\
  220.                     {FFFFFF}( Пример: {FFCB77}Должен 1.000.000$ {FFFFFF})\n\
  221.                     {FFFFFF}( {FFCB77}1-%d {FFFFFF}символов )", MAX_PBK_LABEL);
  222.  
  223.                     ShowPlayerDialog(playerid, DLG_PBK+6, DIALOG_STYLE_INPUT, "Ввод пометки", string, "Ввод", "Назад");
  224.                 }
  225.             }
  226.         }
  227.        
  228.         //Редактирование номера:
  229.         case DLG_PBK+4:
  230.         {
  231.             //отправляем в редактирование, если нажали на "Назад"
  232.             if(!response) return PBK_Edit(playerid);
  233.  
  234.             new pbkid = PBK_Select[playerid];
  235.            
  236.             if(!strlen(inputtext))
  237.             {
  238.                 PBK_SetNumber(playerid, pbkid, 0);
  239.                
  240.                 new string[50];
  241.                 format(string, sizeof(string), "{FFFFFF}Вы стёрли {FFCB77}номер");
  242.                 ShowPlayerDialog(playerid, DLG_PBK+7, DIALOG_STYLE_MSGBOX, "Ввод номера", string, "ОК", "");
  243.                 return 1;
  244.             }
  245.            
  246.             PBK_SetNumber(playerid, pbkid, strval(inputtext));
  247.            
  248.             PBK_Edit(playerid);
  249.         }
  250.  
  251.         case DLG_PBK+5:
  252.         {
  253.             //отправляем в редактирование, если нажали на "Назад"
  254.             if(!response) return PBK_Edit(playerid);
  255.  
  256.             new pbkid = PBK_Select[playerid];
  257.            
  258.             if(!strlen(inputtext))
  259.             {
  260.                 PBK_SetName(playerid, pbkid, "");
  261.  
  262.                 new string[50];
  263.                 format(string, sizeof(string), "{FFFFFF}Вы стёрли {FFCB77}имя влательца");
  264.                 ShowPlayerDialog(playerid, DLG_PBK+7, DIALOG_STYLE_MSGBOX, "Ввод имения владельца", string, "ОК", "");
  265.                 return 1;
  266.             }
  267.            
  268.             if(strlen(inputtext) > MAX_PLAYER_NAME)
  269.             {
  270.                 PBK_Edit(playerid);
  271.                 return 1;
  272.             }
  273.            
  274.             PBK_SetName(playerid, pbkid, inputtext);
  275.  
  276.             PBK_Edit(playerid);
  277.         }
  278.        
  279.         case DLG_PBK+6:
  280.         {
  281.             //отправляем в редактирование, если нажали на "Назад"
  282.             if(!response) return PBK_Edit(playerid);
  283.            
  284.             new pbkid = PBK_Select[playerid];
  285.            
  286.             if(!strlen(inputtext))
  287.             {
  288.                 PBK_SetLabel(playerid, pbkid, "");
  289.  
  290.                 new string[50];
  291.                 format(string, sizeof(string), "{FFFFFF}Вы стёрли {FFCB77}пометку");
  292.                 ShowPlayerDialog(playerid, DLG_PBK+7, DIALOG_STYLE_MSGBOX, "Ввод пометки", string, "ОК", "");
  293.                 return 1;
  294.             }
  295.            
  296.             if(strlen(inputtext) > MAX_PBK_LABEL)
  297.             {
  298.                 PBK_Edit(playerid);
  299.                 return 1;
  300.             }
  301.            
  302.             PBK_SetLabel(playerid, pbkid, inputtext);
  303.  
  304.             PBK_Edit(playerid);
  305.         }
  306.        
  307.         case DLG_PBK+7:
  308.         {
  309.             PBK_Edit(playerid);
  310.         }
  311.     }
  312.     return 1;
  313. }
  314. forward PBK_SetNumber(playerid, pbkid, number);
  315. public PBK_SetNumber(playerid, pbkid, number)
  316. {
  317.     PBK_Number[playerid][pbkid] = number;
  318.  
  319.     new string[64], File;
  320.  
  321.     //Вводим путь к файлу
  322.     format(string, sizeof(string), "phonebook/%s.ini", GN(playerid));
  323.    
  324.     //Открываем файл
  325.     if (fexist(string))
  326.     {
  327.         //Если файл есть, открываем его
  328.         File = ini_openFile(string);
  329.     }
  330.     else
  331.     {
  332.         //Если файла нет, создаём его
  333.         File = ini_createFile(string);
  334.     }
  335.  
  336.     //Если открыть/создать файл невозможно, выходим из загрузки
  337.     if(File < 0)
  338.     {
  339.         return 1;
  340.     }
  341.  
  342.     format(string, sizeof(string), "number_%d", pbkid);
  343.     ini_setInteger(File, string, PBK_Number[playerid][pbkid]);
  344.  
  345.     //Когда всё закончим, закрываем файл
  346.     ini_closeFile(File);
  347.     return 1;
  348. }
  349. forward PBK_SetName(playerid, pbkid, name[]);
  350. public PBK_SetName(playerid, pbkid, name[])
  351. {
  352.     format(PBK_Name[playerid][pbkid], MAX_PLAYER_NAME, name);
  353.  
  354.     new string[64], File;
  355.  
  356.     //Вводим путь к файлу
  357.     format(string, sizeof(string), "phonebook/%s.ini", GN(playerid));
  358.  
  359.      //Открываем файл
  360.     if (fexist(string))
  361.     {
  362.         //Если файл есть, открываем его
  363.         File = ini_openFile(string);
  364.     }
  365.     else
  366.     {
  367.         //Если файла нет, создаём его
  368.         File = ini_createFile(string);
  369.     }
  370.  
  371.     //Если открыть/создать файл невозможно, выходим из загрузки
  372.     if(File < 0)
  373.     {
  374.         return 1;
  375.     }
  376.  
  377.     format(string, sizeof(string), "name_%d", pbkid);
  378.     ini_setString(File, string, PBK_Name[playerid][pbkid]);
  379.  
  380.     //Когда всё закончим, закрываем файл
  381.     ini_closeFile(File);
  382.     return 1;
  383. }
  384. forward PBK_SetLabel(playerid, pbkid, label[]);
  385. public PBK_SetLabel(playerid, pbkid, label[])
  386. {
  387.     format(PBK_Label[playerid][pbkid], MAX_PBK_LABEL, label);
  388.    
  389.     new string[64], File;
  390.    
  391.     //Вводим путь к файлу
  392.     format(string, sizeof(string), "phonebook/%s.ini", GN(playerid));
  393.  
  394.     //Открываем файл
  395.     if (fexist(string))
  396.     {
  397.         //Если файл есть, открываем его
  398.         File = ini_openFile(string);
  399.     }
  400.     else
  401.     {
  402.         //Если файла нет, создаём его
  403.         File = ini_createFile(string);
  404.     }
  405.  
  406.     //Если открыть/создать файл невозможно, выходим из загрузки
  407.     if(File < 0)
  408.     {
  409.         return 1;
  410.     }
  411.  
  412.     format(string, sizeof(string), "label_%d", pbkid);
  413.     ini_setString(File, string, PBK_Label[playerid][pbkid]);
  414.  
  415.     //Когда всё закончим, закрываем файл
  416.     ini_closeFile(File);
  417.     return 1;
  418. }
  419. //Построение главного меню
  420. forward PBK_MainMenu(playerid);
  421. public PBK_MainMenu(playerid)
  422. {
  423.     //Создаём переменные
  424.     new string[(MAX_PLAYER_NAME + MAX_PBK_NUMBER + 60) * MAX_PBK];//(Имя игрока+номер+доп-ные сиволы)*Максимальной кол-во номеров
  425.  
  426.     //Запускаем цикл для построения меню
  427.     Loop(pbkid, MAX_PBK)
  428.     {
  429.         //Автоматически переходим на другую строку
  430.         if(pbkid > 0)
  431.         {
  432.             format(string, sizeof(string), "%s\n", string);
  433.         }
  434.    
  435.         //Строим меню
  436.         if(PBK_Number[playerid][pbkid] == 0)
  437.         {
  438.             format(string, sizeof(string), "%s{6f6f6f}Номер: [ - ].", string);
  439.         }
  440.         else if(PBK_Number[playerid][pbkid] > 0)
  441.         {
  442.             format(string, sizeof(string), "%sНомер: [ {FFCB77}%d {FFFFFF}].", string, PBK_Number[playerid][pbkid]);
  443.         }
  444.        
  445.         if(strlen(PBK_Name[playerid][pbkid]) < 3)
  446.         {
  447.             format(string, sizeof(string), "%s {6f6f6f}Владелец: [ - ]", string);
  448.         }
  449.         else if(strlen(PBK_Name[playerid][pbkid]) >= 3)
  450.         {
  451.             format(string, sizeof(string), "%s Владелец: [ {FFCB77}%s {FFFFFF}]", string, PBK_Name[playerid][pbkid]);
  452.         }
  453.        
  454.         //Выводим диалог игроку
  455.         ShowPlayerDialog(playerid, DLG_PBK, DIALOG_STYLE_LIST, "Телефонная книжка", string, "Выбор", "Выход");
  456.     }
  457.     return 1;
  458. }
  459. //Построение меню действия
  460. forward PBK_PhoneMenu(playerid);
  461. public PBK_PhoneMenu(playerid)
  462. {
  463.     //Создаём переменные
  464.     new string[60], caption[MAX_PLAYER_NAME+MAX_PBK_NUMBER], pbkid = PBK_Select[playerid];
  465.     //!strlen(PBK_Label[playerid][pbkid])
  466.    
  467.     //Строим меню действия
  468.     if(PBK_Number[playerid][pbkid] == 0 && !strlen(PBK_Name[playerid][pbkid]))
  469.     {
  470.         format(string, sizeof(string), "Информация ( {FFCB77}Пусто {FFFFFF})");
  471.     }
  472.     else
  473.     {
  474.         format(string, sizeof(string), "Информация ( {FFCB77}Доступно {FFFFFF})");
  475.     }
  476.    
  477.     format(string, sizeof(string), "%s\nРедактирование", string);
  478.    
  479.     //Вписываем кого выбрали
  480.     format(caption, sizeof(caption), "%d - %s", PBK_Number[playerid][pbkid], PBK_Name[playerid][pbkid]);
  481.    
  482.     //Выводим диалог
  483.     ShowPlayerDialog(playerid, DLG_PBK+1, DIALOG_STYLE_LIST, caption, string, "Выбор", "Назад");
  484.     return 1;
  485. }
  486. forward PBK_Info(playerid);
  487. public PBK_Info(playerid)
  488. {
  489.     //Создаём переменные
  490.     new string[MAX_PLAYER_NAME+MAX_PBK_NUMBER+MAX_PBK_LABEL+100], pbkid = PBK_Select[playerid];
  491.    
  492.     //Вписываем номер телефона:
  493.     if(PBK_Number[playerid][pbkid] == 0)
  494.     {
  495.         format(string, sizeof(string), "{FFFFFF}Номер: {FFCB77}Не указан");
  496.     }
  497.     else if(PBK_Number[playerid][pbkid] > 0)
  498.     {
  499.         format(string, sizeof(string), "{FFFFFF}Номер: {FFCB77}%d", PBK_Number[playerid][pbkid]);
  500.     }
  501.    
  502.     //Вписываем владельца:
  503.     if(!strlen(PBK_Name[playerid][pbkid]))
  504.     {
  505.         format(string, sizeof(string), "%s\n{FFFFFF}Владелец: {FFCB77}Не указан", string);
  506.     }
  507.     else if(strlen(PBK_Name[playerid][pbkid]) > 0)
  508.     {
  509.         format(string, sizeof(string), "%s\n{FFFFFF}Владелец: {FFCB77}%s", string, PBK_Name[playerid][pbkid]);
  510.     }
  511.    
  512.     //Вписываем пометку:
  513.     if(!strlen(PBK_Label[playerid][pbkid]))
  514.     {
  515.         format(string, sizeof(string), "%s\n{FFFFFF}Пометка: {FFCB77}Не указана", string);
  516.     }
  517.     else if(strlen(PBK_Label[playerid][pbkid]) > 0)
  518.     {
  519.         format(string, sizeof(string), "%s\n{FFFFFF}Пометка: {FFCB77}%s", string, PBK_Label[playerid][pbkid]);
  520.     }
  521.    
  522.     //Выводим диалог
  523.     ShowPlayerDialog(playerid, DLG_PBK+2, DIALOG_STYLE_MSGBOX, "Информация", string, "Назад", "");
  524.     return 1;
  525. }
  526. forward PBK_Edit(playerid);
  527. public PBK_Edit(playerid)
  528. {
  529.     //Создаём переменные
  530.     new string[MAX_PLAYER_NAME+MAX_PBK_NUMBER+MAX_PBK_LABEL+100], pbkid = PBK_Select[playerid];
  531.  
  532.     //Вписываем номер телефона:
  533.     if(PBK_Number[playerid][pbkid] == 0)
  534.     {
  535.         format(string, sizeof(string), "Номер: {FFCB77}Не указан");
  536.     }
  537.     else if(PBK_Number[playerid][pbkid] > 0)
  538.     {
  539.         format(string, sizeof(string), "Номер: {FFCB77}%d", PBK_Number[playerid][pbkid]);
  540.     }
  541.  
  542.     //Вписываем владельца:
  543.     if(!strlen(PBK_Name[playerid][pbkid]))
  544.     {
  545.         format(string, sizeof(string), "%s\nВладелец: {FFCB77}Не указан", string);
  546.     }
  547.     else if(strlen(PBK_Name[playerid][pbkid]) > 0)
  548.     {
  549.         format(string, sizeof(string), "%s\nВладелец: {FFCB77}%s", string, PBK_Name[playerid][pbkid]);
  550.     }
  551.  
  552.     //Вписываем пометку:
  553.     if(!strlen(PBK_Label[playerid][pbkid]))
  554.     {
  555.         format(string, sizeof(string), "%s\nПометка: {FFCB77}Не указана", string);
  556.     }
  557.     else if(strlen(PBK_Label[playerid][pbkid]) > 0)
  558.     {
  559.         //Если в пометке меньше 25 символов, вставляем полностью
  560.         if(strlen(PBK_Label[playerid][pbkid]) < 25)
  561.         {
  562.             format(string, sizeof(string), "%s\nПометка: {FFCB77}%s", string, PBK_Label[playerid][pbkid]);
  563.         }
  564.         //Если в пометке больше 25 символов, укорачиваем до 24 и добавляем "..."
  565.         else
  566.         {
  567.             new label[32];
  568.             strmid(label, PBK_Label[playerid][pbkid], 0, 24);
  569.             format(label, sizeof(label), "%s...", label);
  570.            
  571.             format(string, sizeof(string), "%s\nПометка: {FFCB77}%s", string, label);
  572.         }
  573.     }
  574.  
  575.     //Выводим диалог
  576.     ShowPlayerDialog(playerid, DLG_PBK+3, DIALOG_STYLE_LIST, "Редактирование", string, "Выбор", "Назад");
  577.     return 1;
  578. }
  579.  
  580. //Стоки:
  581. stock GN(playerid)
  582. {
  583.     new pName[MAX_PLAYER_NAME];
  584.     GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
  585.     return pName;
  586. }
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599. public OnPlayerRequestClass(playerid, classid)
  600. {
  601.     PBK_Load(playerid);
  602.     return 1;
  603. }
  604.  
  605. public OnPlayerDisconnect(playerid, reason)
  606. {
  607.     PBK_Save(playerid);
  608.     return 1;
  609. }
  610.  
  611. public OnPlayerCommandText(playerid, cmdtext[])
  612. {
  613.     PBK_OnPlayerCommandText(playerid, cmdtext);
  614.     return 0;
  615. }
  616.  
  617. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  618. {
  619.     switch(dialogid)
  620.     {
  621.         case DLG_PBK .. DLG_PBK+7:
  622.         {
  623.             PBK_OnDialogResponse(playerid, dialogid, response, listitem, inputtext);
  624.             return 1;
  625.         }
  626.     }
  627.     return 1;
  628. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement