Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Реконект

тут можно задать вопрос по скриптингу
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Реконект

Post by Vizit0r »

currX := GetX(Self); currY := GetY(Self);
repeat

строки поменять местами, чтобы установка переменных была в цикле.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Diadora
Neophyte
Neophyte
Posts: 20
Joined: 13.12.2015 19:42

Re: Реконект

Post by Diadora »

Vizit0r wrote:currX := GetX(Self); currY := GetY(Self);
repeat

строки поменять местами, чтобы установка переменных была в цикле.
Благодарю! *ушел тестить*
Diadora
Neophyte
Neophyte
Posts: 20
Joined: 13.12.2015 19:42

Re: Реконект

Post by Diadora »

Diadora wrote:
Vizit0r wrote:currX := GetX(Self); currY := GetY(Self);
repeat

строки поменять местами, чтобы установка переменных была в цикле.
Благодарю! *ушел тестить*
После запуска, уже измененного, скрипта персонажа продолжает отключать и подключать обратно к серверу.

Если запущен только этот скрипт и персонаж просто стоит на месте, то реконнект происходит как положено - через 5 минут, однако... макрос продолжает постоянно реконнектить.. вот лог:

Code: Select all

12:31:41:176 [needmore]: Compiling
12:31:41:188 [needmore]: Compiled succesfully
12:36:47:219 [needmore]: Character Alisa Disconnected.
12:36:51:828 [needmore]: Character Alisa Connected.
12:36:51:832 [needmore]: reconnect
12:36:51:835 [needmore]: Character Alisa Disconnected.
12:36:56:426 [needmore]: Character Alisa Connected.
12:36:56:433 [needmore]: reconnect
12:36:56:434 [needmore]: Character Alisa Disconnected.
12:37:01:105 [needmore]: Character Alisa Connected.
12:37:01:109 [needmore]: reconnect
12:37:01:110 [needmore]: Character Alisa Disconnected.
12:37:05:670 [needmore]: Character Alisa Connected.
12:37:05:674 [needmore]: reconnect
12:37:05:676 [needmore]: Character Alisa Disconnected.
12:37:10:338 [needmore]: Character Alisa Connected.
12:37:10:344 [needmore]: reconnect
12:37:10:345 [needmore]: Character Alisa Disconnected.
12:37:14:929 [needmore]: Character Alisa Connected.
12:37:14:935 [needmore]: reconnect
12:37:14:936 [needmore]: Character Alisa Disconnected.
12:37:19:607 [needmore]: Character Alisa Connected.
12:37:19:612 [needmore]: reconnect
12:37:19:614 [needmore]: Character Alisa Disconnected.
12:37:24:200 [needmore]: Character Alisa Connected.
12:37:24:206 [needmore]: reconnect
12:37:24:207 [needmore]: Character Alisa Disconnected.
12:37:28:835 [needmore]: Character Alisa Connected.
12:37:28:840 [needmore]: reconnect
12:37:28:844 [needmore]: Character Alisa Disconnected.
12:37:33:456 [needmore]: Character Alisa Connected.
12:37:33:463 [needmore]: reconnect
12:37:33:464 [needmore]: Character Alisa Disconnected.
12:37:38:076 [needmore]: Character Alisa Connected.
12:37:38:082 [needmore]: reconnect
12:37:38:083 [needmore]: Character Alisa Disconnected.
12:37:42:618 [needmore]: Character Alisa Connected.
12:37:42:624 [needmore]: reconnect
12:37:42:626 [needmore]: Character Alisa Disconnected.
12:37:47:184 [needmore]: Character Alisa Connected.
12:37:47:190 [needmore]: reconnect
12:37:47:192 [needmore]: Character Alisa Disconnected.
12:37:51:765 [needmore]: Character Alisa Connected.
12:37:51:773 [needmore]: reconnect
12:37:51:777 [needmore]: Character Alisa Disconnected.
12:37:54:628 [needmore]: Succesfully executed
12:37:54:634 [needmore]: Script recNEW.sc stopped successfuly
12:37:56:391 [needmore]: Character Alisa Connected.
а вот сам скрипт:

Code: Select all

var
stime : TDateTime;
currX, currY : Word;
Begin
while true do
begin
stime := Now;
repeat
currX := GetX(Self); currY := GetY(Self);   
wait(9000);
if (currX <> GetX(Self)) or (currY <> GetY(Self)) then
Break;

   UseObject(backpack);
until Now > stime + (5.0/1440);
while true do
   begin
if (currX = GetX(Self)) or (currY = GetY(Self)) then
Disconnect;
addtosystemjournal('reconnect');
end;
end;
end.
где ошибка?
:(
Diadora
Neophyte
Neophyte
Posts: 20
Joined: 13.12.2015 19:42

Re: Реконект

Post by Diadora »

А вот еще что заметил.. Если запустить этот скрипт на реконнект и параллельно запустить мой основной, в котором персонаж бегает, добывает ресурсы и т.п., то происходит примерно следующее: после запуска основного, когда персонаж не стоит на месте, а передвигается, то скрипт на реконнект делает отключение в течении первых 9-ти секунд.

Вот лог:

Code: Select all

..
12:43:42:781 [needmore]: reconnect
12:43:42:785 [needmore]: reconnect
12:43:42:789 [needmore]: reconnect
12:43:42:792 [needmore]: reconnect
12:43:42:796 [needmore]: reconnect
12:43:42:831 [needmore]: reconnect
12:43:42:835 [needmore]: reconnect
12:43:42:841 [needmore]: Character Alisa Disconnected.
12:43:47:527 [needmore]: Character Alisa Connected.
12:43:47:538 [needmore]: reconnect
12:43:47:548 [needmore]: Character Alisa Disconnected.
12:43:49:618 [needmore]: Succesfully executed
12:43:49:621 [needmore]: Script recNEW.sc stopped successfuly
12:43:49:777 [needmore]: Succesfully executed
12:43:49:782 [needmore]: Script alisa serp.sc stopped successfuly
12:43:52:155 [needmore]: Character Alisa Connected.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Реконект

Post by drabadan »

Попробуй, может будет работать, но писал на работе и не тестил...

Code: Select all

Program CheckStop;

const
 _WAITTIME_MINS = 1;

type
 TPosition = record
  X : Word;
  Y : Word;
 end;

 function SetPosition(X, Y : Integer) : TPosition;
 begin
  Result.X := X;
  Result.Y := Y;
 end;
 
var 
 OldPosition : TPosition;
 G_Index : Integer;
 
procedure CheckStop;
var
 CurrentPosition : TPosition;
begin 
 //AddToSystemJournal('reconnect' + IntToStr(G_Index));
 CurrentPosition := SetPosition(GetX(Self), GetY(Self));
 
 if (OldPosition = CurrentPosition) then begin
  G_Index := G_Index + 1;
  //AddToSystemJournal(IntToStr(OldPosition.X) + ' ' + IntToStr(OldPosition.Y));
 end;
 
 if (G_Index > (_WAITTIME_MINS * 600)) then begin
  G_Index := 0;
  Disconnect;
  AddToSystemJournal('reconnect');
 end;
end;

begin
 SetEventProc(evTimer1, 'CheckStop');
 
 while (true) do Wait(100);
end.
Diadora
Neophyte
Neophyte
Posts: 20
Joined: 13.12.2015 19:42

Re: Реконект

Post by Diadora »

drabadan wrote:Попробуй, может будет работать, но писал на работе и не тестил...

Code: Select all

Program CheckStop;

const
 _WAITTIME_MINS = 1;

type
 TPosition = record
  X : Word;
  Y : Word;
 end;

 function SetPosition(X, Y : Integer) : TPosition;
 begin
  Result.X := X;
  Result.Y := Y;
 end;
 
var 
 OldPosition : TPosition;
 G_Index : Integer;
 
procedure CheckStop;
var
 CurrentPosition : TPosition;
begin 
 //AddToSystemJournal('reconnect' + IntToStr(G_Index));
 CurrentPosition := SetPosition(GetX(Self), GetY(Self));
 
 if (OldPosition = CurrentPosition) then begin
  G_Index := G_Index + 1;
  //AddToSystemJournal(IntToStr(OldPosition.X) + ' ' + IntToStr(OldPosition.Y));
 end;
 
 if (G_Index > (_WAITTIME_MINS * 600)) then begin
  G_Index := 0;
  Disconnect;
  AddToSystemJournal('reconnect');
 end;
end;

begin
 SetEventProc(evTimer1, 'CheckStop');
 
 while (true) do Wait(100);
end.
Огромное спасибо за потраченное время! :!:
*ушел тестить"
Diadora
Neophyte
Neophyte
Posts: 20
Joined: 13.12.2015 19:42

Re: Реконект

Post by Diadora »

drabadan wrote:Попробуй, может будет работать, но писал на работе и не тестил...
Чет не совсем понял сколько минут должно пройти до следующей проверки и дисконнекта. По идеи 6 минут.
Я запустил этот скрипт, персонаж при этом просто стоит на месте. Прошло уже больше 12 минут - никакой реакции. Может там не 6 минут, а больше?

Code: Select all

_WAITTIME_MINS = 1;
....
(_WAITTIME_MINS * 600)
Тут случаем не 1 минута * на 600? Не 600 минут? :roll: :lol:
Diadora
Neophyte
Neophyte
Posts: 20
Joined: 13.12.2015 19:42

Re: Реконект

Post by Diadora »

Не работает дисконнект на этом скрипте :( Я даже, интереса ради, изменил:

Code: Select all

(_WAITTIME_MINS * 6)

Вот лог спустя некоторое время:

Code: Select all

17:41:02:030 [needmore]: Compiling
17:41:02:043 [needmore]: Compiled succesfully
17:54:07:911 [needmore]: Succesfully executed
17:54:07:912 [needmore]: Script CHECK STOP.sc stopped successfuly
Больше 10 минут никакой реакции. Персонаж при этом стоял на одном месте.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Реконект

Post by drabadan »

Diadora wrote:Не работает дисконнект на этом скрипте :( Я даже, интереса ради, изменил:

Code: Select all

(_WAITTIME_MINS * 6)

Вот лог спустя некоторое время:

Code: Select all

17:41:02:030 [needmore]: Compiling
17:41:02:043 [needmore]: Compiled succesfully
17:54:07:911 [needmore]: Succesfully executed
17:54:07:912 [needmore]: Script CHECK STOP.sc stopped successfuly
Больше 10 минут никакой реакции. Персонаж при этом стоял на одном месте.
Щас отремонтируем
Diadora
Neophyte
Neophyte
Posts: 20
Joined: 13.12.2015 19:42

Re: Реконект

Post by Diadora »

drabadan wrote: Щас отремонтируем
Буду ждать :roll:
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Реконект

Post by drabadan »

Diadora wrote:
drabadan wrote: Щас отремонтируем
Буду ждать :roll:

Code: Select all

Program CheckStop;

const
 _WAITTIME_MINS = 1;

type
 TPosition = record
  X : Word;
  Y : Word;
 end;

 function SetPosition(X, Y : Integer) : TPosition;
 begin
  Result.X := X;
  Result.Y := Y;
 end;
 
var 
 OldPosition, CurrentPosition : TPosition;
 G_Index : Integer;

begin
 CurrentPosition := SetPosition(GetX(Self), GetY(Self)); 
 
 while not Dead do begin        
  if (OldPosition = CurrentPosition) then begin 
   G_Index := G_Index + 1;
   if (G_Index > _WAITTIME_MINS * 60) then begin
    G_Index := 0;
    Disconnect;
    AddToSystemJournal('Disconnect.');
   end;                                 
  end;
  OldPosition := SetPosition(GetX(Self), GetY(Self));
  Wait(1000);
 end;
end.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Реконект

Post by drabadan »

Ну чо там как оно, работает не?
Diadora
Neophyte
Neophyte
Posts: 20
Joined: 13.12.2015 19:42

Re: Реконект

Post by Diadora »

drabadan wrote:Ну чо там как оно, работает не?
не было возможности затестить, вот только пришел с работы, сейчас буду пробовать :!:

p.s.: огромное спасибо за старание!
Diadora
Neophyte
Neophyte
Posts: 20
Joined: 13.12.2015 19:42

Re: Реконект

Post by Diadora »

drabadan wrote:Ну чо там как оно, работает не?
Хм, вроде все как надо, но.. Короче, когда запускаю этот скрипт на реконнект, только этот один и само-собой, персонаж стоит на месте, то реконнект работает как положено и указано в самом скрипте :!:
но вот если запустить вместе с ним другой, в котором персонаж бегает и выполняет кучу разных действий и, к примеру, бросить на него в движении паралайз, или просто поставить тот скрипт на паузу, дабы персонаж остановился и стоял, то этот скрипт перестает работать, тоесть он запущен, но не делает ничего..

:?:
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Реконект

Post by drabadan »

Diadora wrote:
drabadan wrote:Ну чо там как оно, работает не?
Хм, вроде все как надо, но.. Короче, когда запускаю этот скрипт на реконнект, только этот один и само-собой, персонаж стоит на месте, то реконнект работает как положено и указано в самом скрипте :!:
но вот если запустить вместе с ним другой, в котором персонаж бегает и выполняет кучу разных действий и, к примеру, бросить на него в движении паралайз, или просто поставить тот скрипт на паузу, дабы персонаж остановился и стоял, то этот скрипт перестает работать, тоесть он запущен, но не делает ничего..

:?:
угу, так и есть :)

Code: Select all

Program CheckStop;

const
 _WAITTIME_MINS = 1;

type
 TPosition = record
  X : Word;
  Y : Word;
 end;

 function SetPosition(X, Y : Integer) : TPosition;
 begin
  Result.X := X;
  Result.Y := Y;
 end;
 
var 
 OldPosition, CurrentPosition : TPosition;
 G_Index : Integer;

begin
 while not Dead do begin        
   CurrentPosition := SetPosition(GetX(Self), GetY(Self)); 
 
  if (OldPosition = CurrentPosition) then begin 
   G_Index := G_Index + 1;
   if (G_Index > _WAITTIME_MINS * 60) then begin
    G_Index := 0;
    Disconnect;
    AddToSystemJournal('Disconnect.');
   end;                                 
  end;
  OldPosition := SetPosition(GetX(Self), GetY(Self));
  Wait(1000);
 end;
end.
Post Reply