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

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

 Страниц (1): [1]   

> Описание: Алгоритм обработки входящих данных
pashahous
Отправлено: 08 Января, 2017 - 19:28:41
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2016  
Репутация: 2




Не могу реализовать обмен данными между скриптами. Т.е. Допустим есть два окна, и нажимая в одном окне надо, что бы передавались координаты нажатия в другое окно.
/////////клиент
CODE:
win w=window ("", "", -1);
int p=50;
activate (w) ;

int xL, yL;

char recvs[256];
char sends[256];
int flag=0,flag1=0,flag2=0; // счетчики
enabletimer(0);

int n=0;
loop()
{


mu_pause (300);
}

function mu_pause(int p)
{
for (int t=gettime(); gettime()-t<p; sleep(10)){}
}

CREATE_TIMER(0, 25)
{
if (getkeystate(LBUTTON)==1)
{ while(getkeystate(LBUTTON)==1) sleep(5);
getmouse(xL, yL, w);
flag++;
textout(0, 40, 10, "Нажато"+format(flag), 0);
strcpy(#sends[0], format(xL)+'x'+format(yL)+'y');
textout(4, 40, 95, format(xL)+'x'+format(yL)+'y', 0);

if (opensocket ("192.168.0.101", 10005)==1)
{
if (sendhtml(#sends[0], size(#sends[0]))>0)
{

// if (recvhtml(#recvs[0], 256)>0) textout(3, 400, 70, "вернулся ответ"+format(#recvs[0]), 0);
}
closesocket ();
}
while(getkeystate(LBUTTON)==1)sleep(25);
}
}


///СЕРВЕРНАЯ ЧАСТЬ
CODE:
win w=window ("", "", -1);
int p=50;
activate (w) ;

int xL, yL;

enabletimer(0);
char recvs[256];
char sends[256];
int flag_recv=0,flag=0;//
string s;
enablelistenport (10005)
recvport (#recvs[0], 256, #flag_recv);
//

m:

sleep(5);




goto m;

CREATE_TIMER(0, 25)
{

if (flag_recv==1)
{
flag_recv=0;
flag++;
string g=format(#recvs[0],8);
textout(0, 200, 10, "Пришло"+g, 0);


if (#recvs[3]=='x')
{ // 1е условие икс на 4й позиции
xL=formatsn(format(#recvs[0],3)); //присваиваем окс координату // проверка и присвоение Y координаты
if (format(#recvs[5])=='y') yL=formatsn(format(#recvs[4])) else {
if (format(#recvs[6])=='y') yL=formatsn(format(#recvs[4],2)) else {
if (format(#recvs[7])=='y') yL=formatsn(format(#recvs[4],3));
}
}
}

if (#recvs[2]=='x')
{ textout(5, 200, 35, "2е условие икс на 3й позиции ", 0);
xL=formatsn(format(#recvs[0],2));
if (format(#recvs[4])=='y') yL=formatsn(format(#recvs[3])) else {
if (format(#recvs[5])=='y') yL=formatsn(format(#recvs[3],2)) else {
if (format(#recvs[6])=='y') yL=formatsn(format(#recvs[3],3));
}
}
}


if (#recvs[1]=='x')
{ textout(6, 200, 35, "3е условие X на 2й позиции ", 0);
xL=formatsn(format(#recvs[0],1));
if (format(#recvs[3])=='y') yL=formatsn(format(#recvs[2])) else {
if (format(#recvs[4])=='y') yL=formatsn(format(#recvs[2],2)) else {
if (format(#recvs[5])=='y') yL=formatsn(format(#recvs[2],3));
}
}
}





textout(4, 200, 100,"xL="+ format(xL)+"yL="+ format(yL), 0);

// ТУт я просто проверяю правильность обработки данных. Хотел что бы в X и Y записались координаты после обработки. Но понять е могу почему не получается. Может не верный алгоритм обработки входящего сообщения, может есть более просто алгоритм.
Ну естественно если данные принялись и записались в x и y то там уже sendmouse (LEFT, xL, yL, wind);

//text_edit0[0]=format(#recvs[0]);
//strcpy(#sends[0], s);
//sendport (#sends[0], size(#sends[0]));
recvport (#recvs[0], 256, #flag_recv); //
}

}
 
 Top
Kibor
Отправлено: 08 Января, 2017 - 21:38:10
Post Id



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


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




Что то оно барахлит.
Позже разберусь.
 
 Top
pashahous
Отправлено: 08 Января, 2017 - 22:04:29
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2016  
Репутация: 2




Спасибо, буду ждать да и сам по ковыряюсь еще.
 
 Top
pashahous
Отправлено: 13 Января, 2017 - 15:27:55
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2016  
Репутация: 2




удалите пжлст эту тему.
(Добавление)
Все поправил. корректно отправляет, принимает 2-3 раза, и потом зависает сервер. В flag_recv (на сервере) при зависание отображает -3
(Добавление)
СЕРВЕР
CODE:
int p=50;
activate (w) ;
int KliK_nik_X=0;//Íàäî ïîäîáðàòü ÷òî áû êëèê áûë íà ñàìîì ïåðñå ïîä íîãàìè
int KliK_nik_Y=108;//Íàäî ïîäîáðàòü ÷òî áû êëèê áûë íà ñàìîì ïåðñå ïîä íîãàìè
int NikBd[50][50],NikJc[50][50], PosX[40], PosY[40];
int xL, yL; // xy íàæàòèÿ ëåâîé êíîïêè ìûøè
//loadimage (#NikMag[0][0], "c:\warspear\NikJc.bmp"); //Íèê
enabletimer(0);//âêëþ÷èëè òàéìåð
char recvs[256];//ìàññèâ â êîòîðûé ïðèíèìàåì
char sends[256];//ìàññèâ êîòîðûé ïåðåäàåì
int flag_recv=0,flag=0;// ýòî ôëàã â êîòîðîì áóäåò 1 êîãäà íà ñåðâåð ïðèäåò ñîîáùåíèå
string s;
enablelistenport (10005);//âêëþ÷èëè ïðîñëóøêó 10005 ïîðòà (ñàìîìó âûáèðàòü)
recvport (#recvs[0], 256, #flag_recv);//íà÷àëè ñëóøàòü. â îòäåëüíîì ïîòîêå
//ÑÅÐÂÅÐ ÑÅÐÂÅÐ

m:

sleep(25);




goto m;

CREATE_TIMER(0, 200)
{
//textout(0, 200, 10, "Ïðèøëî "+g+' recvs '+format(#recvs[2]), 1);
//if (flag_recv==-3) flag_recv==1;
textout(7, 200, 80, "Ôëàã ðåñèâ= "+format(flag_recv),1);
if (flag_recv==1)//åñëè òóò 1 - ïðèøëî ñîîáùåíèå
{
flag_recv=0;//îáíóëèì
flag++;
string g=format(#recvs[0],8);
// textout(0, 200, 10, "Ïðèøëî "+g+' recvs '+format(#recvs[2]), 1);

/// ïðîâåðêà íà îòðèöàòåëüíûå çíà÷åíèÿ////

if (formatsn(format(#recvs[0],1))<0) xL=0;
if (formatsn(format(#recvs[3],1))<0) yL=0;
if (formatsn(format(#recvs[4],1))<0) yL=0;
if (formatsn(format(#recvs[5],1))<0) yL=0;
//////------------------------------------------
if (format(#recvs[3],1)=='x')
{ //textout(1, 200, 35, "1å óñëîâèå èêñ íà 4é ïîçèöèè ", 1);
xL=formatsn(format(#recvs[0],3)); // ïðèñâàèâàåì èêñ êîîðäèíàòó
if (format(#recvs[5],1)=='y') yL=formatsn(format(#recvs[4],1)) else { //Y íà ïîçèöèè
if (format(#recvs[6],1)=='y') yL=formatsn(format(#recvs[4],2)) else {
if (format(#recvs[7],1)=='y') yL=formatsn(format(#recvs[4],3));
}
}
}

if (format(#recvs[2],1)=='x')
{ //textout(5, 200, 35, "2å óñëîâèå èêñ íà 3é ïîçèöèè ", 1);
xL=formatsn(format(#recvs[0],2)); // ïðèñâàèâàåì èêñ êîîðäèíàòó
if (format(#recvs[4],1)=='y') yL=formatsn(format(#recvs[3],1)) else {
if (format(#recvs[5],1)=='y') yL=formatsn(format(#recvs[3],2)) else {
if (format(#recvs[6],1)=='y') yL=formatsn(format(#recvs[3],3));
}
}
}


if (format(#recvs[1],1)=='x')
{ //textout(6, 200, 35, "3å óñëîâèå èêñ íà 2é ïîçèöèè ", 1);
xL=formatsn(format(#recvs[0],1)); // ïðèñâàèâàåì èêñ êîîðäèíàòó
if (format(#recvs[3],1)=='y') yL=formatsn(format(#recvs[2],1)) else {
if (format(#recvs[4],1)=='y') yL=formatsn(format(#recvs[2],2)) else {
if (format(#recvs[5],1)=='y') yL=formatsn(format(#recvs[2],3));
}
}
}




// sendmouse(LEFT,xL,yL,w);
textout(4, 200, 100,"xL="+ format(xL)+"yL="+ format(yL), 1);
// beep(800,100);
// xL=formatsn(s);
// yL=formatsn(s);
//text_edit0[0]=format(#recvs[0]);//çàïèøåì ýòî ñîîáùåíèå â edit
//strcpy(#sends[0], s);//çàïîëíèì ìàññèâ ïåðåäà÷è òåêñòîì ñ âòîðîãî edit
// sendport (#sends[0], size(#sends[0]));//îòïðàâèì
recvport (#recvs[0], 256, #flag_recv); // îïÿòü ñëóøàåì
}

}
 
 Top
Kibor
Отправлено: 13 Января, 2017 - 17:31:41
Post Id



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


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




Да. Есть такой баг. Я им займусь как в ближайшее время. Точно сказать не могу когда.
 
 Top
pashahous
Отправлено: 13 Января, 2017 - 17:36:20
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2016  
Репутация: 2




Принял, спс за ответ. Жду правки)
 
 Top
Kibor
Отправлено: 14 Января, 2017 - 19:43:48
Post Id



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


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




Это принимает и выводит координаты
CODE:
char recvs[256];//массив в который принимаем
char sends=' ';//передаем
int flag_recv=0;// это флаг в котором будет 1 когда на сервер придет сообщение

enablelistenport (10005);//включили прослушку 10005 порта (самому выбирать)
recvport (#recvs[0], 256, #flag_recv);//начали слушать. в отдельном потоке

loop()//цикл бота
{
if (flag_recv==1)//если тут 1 - пришло сообщение
{
flag_recv=0;//обнулим
textout(0, 100, 100, format(#recvs[0]), 0);
sendport (#sends, 1);//отправим
recvport (#recvs[0], 256, #flag_recv); // опять слушаем
}
sleep(10);
}


Это передает координаты щелчков мыши
CODE:
char recvs[256];//в который принимаем
char sends[256];//массив который передаем
int x, y;

loop()//цикл бота
{
while (getkeystate(1)==0)sleep(10);
getmouse(x, y);
if (opensocket ("127.0.0.1", 10005)==1)//откроем сокет на 10005 порту сервера (самому выбирать)
{
strcpy(#sends[0], format(x)+" "+format(y)+" ");//заполним массив передачи текстом с второго edit
if (sendhtml(#sends[0], size(#sends[0]))>0)//Если отправили
{
recvhtml(#recvs[0], 256);//когда примем ответ запишем ответ в edit
}
closesocket ();//Закрываем сокет
}
while (getkeystate(1)==1)sleep(10);
sleep(10);
}



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


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




Powered by