Форум Pawn.Wiki - Воплоти мечту в реальность!: Время и дата - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Тема закрыта

Время и дата Вывод время и даты с помощью CEF Оценка: -----

#1
Пользователь офлайн   NiceXPlayer 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Продолжаю выпускать готовые решения, где можно применить CEF. Сегодня попробуем сделать Время и Дату. Походу Роме придется делать отдельный раздел по Web-Разработке. Начнем.


Для начала мы создадим отдельную папку для примера и создадим внутри папки 2 файла. Я назвал ceftime.html и style.css

Открываем ceftime.html любым редактором вставляем основу html страницы


<!DOCTYPE HTML>
<html>

   <head> 
      <meta charset="utf-8">
      <title>[CEF] Time and Date</title>
      <link rel="stylesheet" type="text/css" href="style.css"> <!-- подключаем файл стилей -->
   </head>

   <body>
   </body>

</html>


Основа страницы готова. Теперь нам нужно создать внутри html документа js скрипт. Заходим в <head> и эти строки

<script type="text/javascript">
    
    function zero_first_format(value)
    {
        if (value < 10)
        {
            value='0'+value;
        }
        return value;
    }

    function date()
    {
        var current_datetime = new Date();
        var day = zero_first_format(current_datetime.getDate());
        var month = zero_first_format(current_datetime.getMonth()+1);
        var year = current_datetime.getFullYear();

        return day+"."+month+"."+year;
    }
	function time()
    {
	var current_datetime = new Date();
        var hours = zero_first_format(current_datetime.getHours());
        var minutes = zero_first_format(current_datetime.getMinutes());
        var seconds = zero_first_format(current_datetime.getSeconds());

        return hours+":"+minutes+":"+seconds;
    }

	document.getElementById('current_date_time_block2').innerHTML = date();
	document.getElementById('current_date_time_block3').innerHTML = time();

</script>



Отлично, теперь нам нужно отобразить само время и дату. Для этого добавляем в <body> следующий код.

<div id="current_date_time_block2"></div>
 <div id="current_date_time_block3"></div>

<script type="text/javascript">
    
    setInterval(function () {
        document.getElementById('current_date_time_block2').innerHTML = date();
		document.getElementById('current_date_time_block3').innerHTML = time();
    }, 1000);
</script>



Вот что у нас получилось. Состав html документа

<!DOCTYPE HTML>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Пример веб-страницы</title>
  <link rel="stylesheet" type="text/css" href="style.css">
  <script type="text/javascript">
   
    function zero_first_format(value)
    {
        if (value < 10)
        {
            value='0'+value;
        }
        return value;
    }


    function date()
    {
        var current_datetime = new Date();
        var day = zero_first_format(current_datetime.getDate());
        var month = zero_first_format(current_datetime.getMonth()+1);
        var year = current_datetime.getFullYear();

        return day+"."+month+"."+year;
    }
	function time()
    {
	var current_datetime = new Date();
        var hours = zero_first_format(current_datetime.getHours());
        var minutes = zero_first_format(current_datetime.getMinutes());
        var seconds = zero_first_format(current_datetime.getSeconds());

        return hours+":"+minutes+":"+seconds;
    }

	document.getElementById('current_date_time_block2').innerHTML = date();
	document.getElementById('current_date_time_block3').innerHTML = time();

</script>
 </head>
 <body>
 <div id="current_date_time_block2"></div>
 <div id="current_date_time_block3"></div>

<script type="text/javascript">
    
    setInterval(function () {
    document.getElementById('current_date_time_block2').innerHTML = date();
    document.getElementById('current_date_time_block3').innerHTML = time();
    }, 1000);
</script>
 </body>
</html>


Итак, дата и время готовы. А если я например хочу текст разукрасить, сменить расположение или увеличить. Что же мне делать? Заходим в style.css. Открываем с помощью текстового редактора и добавляем следующий код

#current_date_time_block2 {
  width:100%;
  display:flex;
  justify-content:flex-end;
  font-size: 150%;
}
#current_date_time_block3 {
  float: right;
  font-size: 150%;
}


current_date_time_block2 - это дата
current_date_time_block3 - это время




Если вы хотите все в одну строку. Вот вам готовый вариант. HTML файла

<!DOCTYPE HTML>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Пример веб-страницы</title>
  <link rel="stylesheet" type="text/css" href="style.css">
  <script type="text/javascript">
    
    function zero_first_format(value)
    {
        if (value < 10)
        {
            value='0'+value;
        }
        return value;
    }

    function date_time()
    {
        var current_datetime = new Date();
        var day = zero_first_format(current_datetime.getDate());
        var month = zero_first_format(current_datetime.getMonth()+1);
        var year = current_datetime.getFullYear();
		var hours = zero_first_format(current_datetime.getHours());
        var minutes = zero_first_format(current_datetime.getMinutes());
        var seconds = zero_first_format(current_datetime.getSeconds());

        return day+"."+month+"."+year+" "+hours+":"+minutes+":"+seconds;
    }

	document.getElementById('current_date_time_block').innerHTML = date_time();

</script>
 </head>
 <body>
 <div id="current_date_time_block2"></div>

<script type="text/javascript">
    
    setInterval(function () {
        document.getElementById('current_date_time_block2').innerHTML = date_time();
    }, 1000);
</script>
 </body>
</html>




Осталось вывести в самом pawno

В начало мода

#include <cef>
#include <fmt>



Ко всем define

#define SCMf SendClientMessagef
#define CEF_INTERFACE_BROWSER_ID 2


В OnGameModeInit

initialize_interface(playerid);



В конец мода

stock initialize_interface(playerid)
{
        cef_create_browser(playerid, CEF_INTERFACE_BROWSER_ID, "Ссылка на сайт", false, false);
        return 1;
}



В конец мода, если у вас все еще нет этих строк

forward OnCefBrowserCreated(player_id, browser_id, status_code);
public OnCefBrowserCreated(player_id, browser_id, status_code)
{
	SCMf(player_id, -1, "public OnCefBrowserCreated(player_id(%i), browser_id(%i), status_code(%i))", player_id, browser_id, status_code);
        if (status_code != 200)
        {
                SendClientMessage(player_id, -1, "У вас проблемы с интернетом возможные, могут быть сбои.");
                return;
        }
        else
        {
            SendClientMessage(player_id, -1, "Иницилизация браузера в игру прошла успешно!");
        }
        return;
}

forward OnCefInitialize(player_id, success);
public OnCefInitialize(player_id, success)
{
        SCMf(player_id, -1, "public OnCefInitialize(player_id(%i), success(%i))", player_id, success);
        return;
}



Ссылка на плагины, клиент - ТЫК . Версия CEF 1.4

Дата и время с помощью CEF готовы. Получившийся пример лишь демонстрирует вывод и способ. Шрифты, цвет, и прочее вы сможете сами отредактировать в style.css. Основа дана.

Демонстрация скрипта будет чуть позже. Сейчас нет возможности выложить.

Сообщение отредактировал NiceXPlayer: 30 сентября 2021 - 22:22

4

#2
Пользователь офлайн   _54REGION_ 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
http://ИП адрес/data/ceftime
вдс debian 8
В логах плагины cef и fmt грузит
Ссылку если в браузере открыть то время показывает
Почему при заходе пишет SCMf(player_id, -1, "public OnCefInitialize(player_id(%i), success(%i))", player_id, success)
Success=0
И за этого наверно и не показывает
И в онгамемодеинит вставить initialize_interface(playerid)
Playerid нету же через перебор for делать?
0

#3
Пользователь офлайн   mama123123 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщения_54REGION_ (29 октября 2021 - 11:17) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

success = 0 значит что браузер не загрузился, initialize_interface(playerid) следует вставлять в onplayerconnect, желательно при этом еще нормальную проверку сделать, потому что иногда браузер открывается еще до вашего коннекта и он попросту можешь не загрузится
1

#4
Пользователь офлайн   _54REGION_ 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
всёравно не грузит даже пытался закинуть чтобы срабатывало после ввода пароля тоже самое
0

#5
Пользователь офлайн   _54REGION_ 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
Loading plugin: cef.so
[29/10 13:46:30] CEF plugin is successful loaded.
[29/10 13:46:30] Loaded.
[29/10 13:46:30] Loading plugin: fmt.so
[29/10 13:46:30] * fmt plugin loaded
[29/10 13:46:30] * v2.3 © vsergeenko
[29/10 13:46:30] Loaded.

при вводе команды CMD:plugin(playerid) return SCMf(playerid, -1, "Плагин - %s", cef_player_has_plugin(playerid) ? ("загружен") : ("отгружен"));
пишет плагин отгружен почему?
0

#6
Пользователь офлайн   mama123123 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщения_54REGION_ (29 октября 2021 - 13:52) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]


Значит вы что-то не правильно сделали возможно не правильно ссылку на сайт указали, или что-то вроде того, или же зашли со сборки, где не установлен cef

Сообщение отредактировал mama123123: 29 октября 2021 - 14:12

1

#7
Пользователь офлайн   _54REGION_ 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
в саму папку с игрой гта тоже надо устанавливать? что именно?
0

#8
Пользователь офлайн   mama123123 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщения_54REGION_ (29 октября 2021 - 14:18) писал:

в саму папку с игрой гта тоже надо устанавливать? что именно?

Да, в саму папку с игрой гта, надо тоже установить cef вот от сюда из папки Client перенесите все в корневую папку с гта
https://disk.yandex..../EPSiFqxk4KYZUg
1

#9
Пользователь офлайн   _54REGION_ 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияmama123123 (29 октября 2021 - 14:20) писал:

Да, в саму папку с игрой гта, надо тоже установить cef вот от сюда из папки Client перенесите все в корневую папку с гта
https://disk.yandex..../EPSiFqxk4KYZUg


блин спасибо не знал)
0

#10
Пользователь офлайн   _54REGION_ 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
всёравно при входе пишет success 0 и при вводе команды проверить плагин в лог
Encountered an error receiving data: DecodingError(OrderingGuarantee)
и сервер вырубается
либо ввести команду CMD:cef(playerid) return initialize_interface(playerid); тоже самое в лог и вырубается
0

Поделиться темой:


  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Тема закрыта

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика