Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (4): [1] 2 3 4 »   

> Без описания
Dantes3000
Отправлено: 29 Марта, 2017 - 22:41:07
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1464
Дата рег-ции: Июнь 2016  
Репутация: 58




Подскажите как реализовать идею...
Надо чтобы у меня на компьютере отображалось сколько часов запущена программа на другом ПК(writebuffernet). Например в messagebox после запуска скрипта на проверку (readbuffernet)
(Добавление)
При чем чтобы можно было обнулить статистику.
 
 Top
Dantes3000
Отправлено: 30 Марта, 2017 - 20:30:34
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1464
Дата рег-ции: Июнь 2016  
Репутация: 58




то как?
(Добавление)
хоть на словах
 
 Top
Kibor
Отправлено: 30 Марта, 2017 - 20:46:55
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Что как?
Отслеживаемая программа при запуске записывает на сервер время.
Следящая по запросу считывает.
 
 Top
Dantes3000
Отправлено: 30 Марта, 2017 - 22:55:45
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1464
Дата рег-ции: Июнь 2016  
Репутация: 58




Что-то не то....Я хочу 100% знать сколько был запущен скрипт на другом компе. Даже если у меня не работает скрипт приема. Думаю это можно реализовать с помощью записи в файл. Или еще как-то?
(Добавление)
Это тоже сложновато....(

(Отредактировано автором: 30 Марта, 2017 - 22:57:38)

 
 Top
idcco
Отправлено: 31 Марта, 2017 - 12:14:40
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 67
Дата рег-ции: Март 2017  
Репутация: 5




Обязательные условия - все EXE должны быть собраны в одном Кибор на одном компьютере, writebuffernet и readbuffernet доступны только для максимальной версии Кибор.

Добавить в код отправляющей программы:
Наверх в шапку
CODE:
char ch_time[10];
int timer = gettime();

Внутрь главного цикла перед возвратом
(или внутрь обработчика CREATE_TIMER если он есть)

CODE:
if (gettime() - timer > 20000) // отправлять данные каждые 20 секунд
{
strcpy (#ch_time[0], format (gettime ())); // переводим время с запуска в массив char
writebuffernet (#ch_time[0], size (#ch_time[0]), -1, -1); // отправляем на сервер
timer = gettime (); // обнуляем таймер отправки данных на сервер
}


Добавить в код принимающей программы:
Наверх в шапку
CODE:
char ch_time[10];
int timer = gettime();
int sendedtime;

Внутрь главного цикла перед возвратом
(или внутрь обработчика CREATE_TIMER если он есть)

CODE:
if (gettime() - timer > 20000) // принимать данные каждые 20 секунд
{
readbuffernet (#ch_time[0], 10, -1, -1); // считываем данные с сервера
timer = gettime (); // обнуляем таймер запроса данных с сервера
sendedtime = formatsn (format (#ch_time[0]));
}


Переменная int sendedtime будет содержать время работы отправляющей программы в милисекундах (плюс время обмена данными на сервер и принимающую программу, плюс паузы по 20 секунд между отправками/приемками).

З.Ы. Заранее сори за возможные опечатки, но вроде нигде не ошибся.
 
 Top
Dantes3000
Отправлено: 31 Марта, 2017 - 13:16:41
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1464
Дата рег-ции: Июнь 2016  
Репутация: 58




Всё верно, конечно...я бы до такого дошел спустя пару дней неудач)
Но не подходит такой метод. Для этого нужно, чтобы принимающая программа постоянно работала. Я одному человеку делаю бота для игры и хочу брать почасовую оплату...Поэтому не всегда могу следить за ним.

Идея такая - на стороне человека время запуска записывается в лог и постоянно отсылается мне...и как только я запускаю чтение с буфера - получаю в свой лог его лог. Это уже на много сложнее реализовать. Было бы проще скопировать его лог к себе, но это для меня запредельная сложность.
 
 Top
Kibor
Отправлено: 31 Марта, 2017 - 20:14:48
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Оплата по предоплате? или по факту времени использованного..
 
 Top
idcco
Отправлено: 31 Марта, 2017 - 20:58:46
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 67
Дата рег-ции: Март 2017  
Репутация: 5




Не вижу проблемы, просто отправляющая программа тоже должна знать сколько она суммарно работает.

СПОСОБ 1: Сперва Собираем данные с сервера
Добавить в код отправляющей программы:
Наверх в шапку
CODE:
char ch_time[20];
int overaltime = 0;
int timer = gettime();

Внутрь главного цикла перед возвратом
(или внутрь обработчика CREATE_TIMER если он есть)

CODE:
if (gettime() - timer > 20000) // принимать/отправлять данные каждые 20 секунд
{
if (overaltime = 0) // если время ранее не было считано (только что запущена программа)
{
readbuffernet (#ch_time[0], 20, -1, -1); // считываем данные с сервера
overaltime = formatsn (format (#ch_time[0])); // пихаем их в переменную overaltime
}
strcpy (#ch_time[0], format (gettime () + overaltime)); // переводим в массив char сумму общего времени
writebuffernet (#ch_time[0], size (#ch_time[0]), -1, -1); // отправляем сумму на сервер
timer = gettime (); // обнуляем таймер работы с сервером
}

СПОСОБ 2: Берем данные из файла, предварительно сохранив их там
Добавить в код отправляющей программы:
Наверх в шапку
CODE:
char ch_time[20];
int timer = gettime();
int overaltime = 0; sum = 0;
string str = "";
if (fopen ("c:\... спрятанный путь к файлу ...\worktime.txt", "r") != 0) // читаем из файла
{
freadline (str);
fclose ();
}
overaltime = formatsn (str);

Внутрь главного цикла перед возвратом
(или внутрь обработчика CREATE_TIMER если он есть)

CODE:
if (gettime() - timer > 20000) // принимать/отправлять данные каждые 20 секунд
sum = gettime () + overaltime;
if (fopen ("c:\... спрятанный путь к файлу ...\worktime.txt", "w") != 0) // сохраняем в файл
{
fwrite (sum);
fclose ();
}
strcpy (#ch_time[0], format (sum)); // переводим в массив char сумму общего времени
writebuffernet (#ch_time[0], size (#ch_time[0]), -1, -1); // отправляем сумму на сервер
timer = gettime (); // обнуляем таймер работы с сервером
}

Ну короче как-то так...

Принимающий код не меняется (кроме char ch_time[20]; и второго параметра readbuffernet ессьно).
Принцип такой же как раньше, только теперь при запуске отправляющей программы она сперва считает с сервера/файла суммарное время своей работы, и в дальнейшем будет отправлять раз в 20 секунд обновленное общее время своей работы (будет суммировать текущее время работы с тем что выхватила из сервера/файла при первом запуске). Принимающая программа может быть запущена в любой момент для считывания данных с сервера в свою переменную int sendedtime. До тех пор данные с сервера, по идее, никуда не денутся.

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

(Отредактировано автором: 31 Марта, 2017 - 21:12:55)

 
 Top
Dantes3000
Отправлено: 01 Апреля, 2017 - 10:11:10
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1464
Дата рег-ции: Июнь 2016  
Репутация: 58




 Kibor пишет:
Оплата по предоплате? или по факту времени использованного..

По факту. Другу делаю, он не обманет.
 
 Top
Kibor
Отправлено: 01 Апреля, 2017 - 11:28:33
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Я понимаю, что друг может несколько раз запускать программу и использовать ее.. И надо узнать сколько часов она проработала в сумме..

Ну код писать не буду.. Алгоритм бы примерно так можно сделать было бы..
Изначально создается буферный файл на сервере.
Создать его можно той программой которая будет считывать данные времени.
В него записываем 0.

Бот каждые 10 минут работы читает этот файл и прибавляет по 1 к тому что есть в нем и его перезаписывает.
То есть каждые 10 мин число увеличивается на 1.

Когда надо получить инфо о времени, запускаем программу которая читает этот буфер. И в соответствие с числом расчитываем время.
При получение расчета с юзера обнуляем этот буфер 0.
 
 Top
Страниц (4): [1] 2 3 4 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by