PDA

Просмотр полной версии : 1 пакетхак - 5 клиентов (запуск скриптов)


etoManiak
13.10.2007, 22:27
Можно ли как-то запускать скрипты сразу в 5 клиентах??

Когда использую 1 клиент - все работает на ура... когда подгружаю ещё 2.... скрипты перестают работать...
т.е. выбираю соединение.. активирую скрипт...выбираю другое соединение... там уже скрипты активированы с прошлого...
при нажатии на тэст Инит скрипт не работает не в одном соединении....

ПакетХак 18, скрипт на сдачу манора с этого форума..

заранее спасибо.

Добавлено спустя 54 минуты 15 секунд:
все клиенты пытаются сдать одни и те же семена... то есть скрипт вычитывает пакет с 1 клиента и посылает его всем...

NLObP
14.10.2007, 00:43
Могу подсазать куда копать.
На примере рыбалки. Скрипты копируешь в восемь разных файлов: scr1.txt, scr2.txt,...scr8.txt. В каждом исправляешь значение константы "NAME" на имена твоих восьми чаров:
const
Name='NLObP'; //<-- вписать имя чара
[skipped]
//ItemList
if FromServer and (ConnectName=Name) and (pck[1]=#$1B) then CreateItemBase; //проверка принадлежности пакета
[skipped]
Запускаешь пакетхак. Запускаешь восемь клиентов Ла2, заходишь поочереди своими восемью чарами. Ставишь в пакетхаке галочки напротив восьми твоих скриптов. Инициализируешь каждый скрипт отдельно, как написано в самом начале скрипта. После этого можно ловить всеми восемью сразу.

etoManiak
14.10.2007, 01:40
ясна.... завтра попробую... рэспект

П.С. Если в скрипте стоит имя, то почему остальные клиенты тоже здают эти семена??? =)

NLObP
14.10.2007, 02:15
Я с такой фигней столкнулся, когда начал скрипты писать. Дело в том, что скрыпты пропускают через себя все пакеты в независимости кому и чьи они. Порядок прохождения пакета через все скрипты определяется положением скрипта в списке скриптов. Начинается с самого верхнего и заканчивается самым нижним. Необходимо проверять каждый пакет на принадлежность определенному чару, например так:
if FromServer and (ConnectName=Name) and (pck[1]=#$27) then
[skipped]
В каждом скрипте значение Name должно быть разным(Name='First'; Name='Second' и так далее), если конечно это копии одного и того же скрипта, и соответствовать одному конкретному чару.

etoManiak
14.10.2007, 22:17
//by VORON
//СКРИПТ АВТОМАТИЧЕСКОЙ СДАЧИ МАНОРА
//использование: скрипт запускается за несколько минут до объявления об олимпиаде
//при получении системного сообщения об ее начале засекается системное время и вычисляется время
//сдачи манора, также активируется таймер с интервалом ХХХ МС для контроля системного времени.
//после этого пытаемся сдать свои всходы- вручную. при этом мы получим ошибку что-
//манор система: выключена в данный момент. но при етом пакет на сдачу манора- скрипт запомнит в
//память для дальнейшего использования. через заданное время скрипт отправит 10 раз запомненный
//пакет с интервалом 0,3сек.
//проверено что: если манор сдастся примерно на 4-й раз (4-й повтор пакета) то остальные 6 повторов
//сервер принимает без ошибок, хотя в инвенторе отсутствуют нужные всходы- сервер на это не ругается

const
Name='GManor'; //ник перса

var
PaketManora: string; //Пакет на сдачу манора, который мы отправим серваку зараннее с помощью клиента
// и запомним его для того чтобы вручную не формировать его кодом.
//важно что оправлять его нужно после после объявления об олимпиаде.
//так как в пакете манора используются ИД сессии, которые изменяются
//каждый ровный час.

timer1: TTimer; //таймер контролирующий системное время

StartTime: TDateTime;
EndTime: TDateTime;


x:integer;

procedure Init; //Вызывается при включении скрипта
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer; //
timer1.enabled:=false; // таймер по умолчанию выключен
timer1.interval:=400; // через каждые 0,4сек будем засекать контрольное время сдачи манора

x:=0;
end;

procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free; //освобождаем занимаемую память таймером
end;

//вызывается при срабатывании таймера
procedure OnTimer(Sender: TObject);
begin
//если наступило время сдавать манор и скрипт пока еще не отправил 30 попыток его сдать то
if (time >= EndTime) and (x<30) then
begin
//пишем сами себе в чат - что "ПОПЫТКА"
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 3F 04 3E 04 3F 04 4B 04 42 04 3A 04 30 04 20 00 41 04 34 04 30 04 42 04 4C 04 00 00');
SendToClient;
// отправляем пакет на сдачу манора.
buf:=PaketManora;
SendToServer;
//счетчик попыток
x:=x+1;
end;
end;


begin

//если перехвачен пакет на сдачу манора то
if FromClient and (ConnectName=Name) and (pck[1]=#$D0) and (pck[2]=#$09) and (pck[3]=#$00) then
begin
//запоминаем его полностью
PaketManora:=pck;
end;

//если получен пакет об начале олимпиады то
if FromServer and (ConnectName=Name) and (pck[1]=#$64) and (pck[2]=#$69) and (pck[3]=#$06) then
begin
//засекаем текущее время
StartTime:=time;
//вычисляем время сдачи манора (прибавляем нужное время которое нужно засеч после получения сообщения об илимпиаде)
EndTime:=StartTime + EncodeTime(0,5,49,0); // изменяем и корректируем ето число в формате (ЧЧ,ММ,СС,МС)
//активируем таймер
timer1.enabled:=true;
//а ето- отправка сам себе сообщения о том что ВРЕМЯ ПОШЛО
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 32 04 40 04 35 04 3C 04 4F 04 20 00 3F 04 3E 04 48 04 3B 04 3E 04 00 00');
SendToClient;
end;

end.

вот что я поизменял.... но теперь каждому боты посылаются все 3 пакета на сдачу... 1 суксес и 2 фэйла =))
при этом пишет не что нет семян, а что попытка не удалась...

теоретически можно дать всем наборы из 3 видов семян -шанс сдать выростит =)) но это уже побочный эффект.

продолжаю разбираться...

NLObP
14.10.2007, 23:24
Везде SendServer, SendClient замени на SendServerEx(Name), SendClientEx(Name).

etoManiak
15.10.2007, 01:14
ты имеешь введу SendToServer =)
заменил... завтра проверю...

NLObP
15.10.2007, 01:50
ты имеешь введу SendToServer =)

Ага, перепутал. :oops: Это необходимо для того чтобы клиенты и сервер понимали чьи это пакеты.

etoManiak
19.10.2007, 01:23
NLObP, огромное тебе спасибо!!!

сегодня прошли последние тэсты.... 7 клиентов без единого глюка сдали всё что нада =)

PunkRediska
16.11.2007, 03:10
А как насчёт таво чтобы в новай верси разбивать пакеты на клиенты,ну тоесть выбрал клиент паставил галку над скриптам #1 , а на другом #2 - удобно же было бы:)

Fifty
23.04.2008, 18:03
const
Name='aIreX';
SendToServerEx('aIreX');
SendToClientEx('aIreX');

Вот у мну норм скрипт все в порядке с синтаксисом а почему то идет 1 пакет на все клиенты,выкиньте скрипт плз что только имея поменял если не трудно)

Zergatul
24.04.2008, 19:50
Вопрос по сабжу : если в через первый запущеный скрипт в списке прошол пакет pck, мы его изменили. Через другие запущеные скрипты он пройдет изменным ?

xkor
24.04.2008, 21:58
Zergatul, да

Fifty
25.04.2008, 17:50
xkor,

Посмтрим плз


//СКРИПТ АВТОМАТИЧЕСКОЙ СДАЧИ МАНОРА
//использование: скрипт запускается за несколько минут до объявления об олимпиаде
//при получении системного сообщения об ее начале засекается системное время и вычисляется время
//сдачи манора, также активируется таймер с интервалом ХХХ МС для контроля системного времени.
//после этого пытаемся сдать свои всходы- вручную. при этом мы получим ошибку что-
//манор система: выключена в данный момент. но при етом пакет на сдачу манора- скрипт запомнит в
//память для дальнейшего использования. через заданное время скрипт отправит 10 раз запомненный
//пакет с интервалом 0,3сек.
//проверено что: если манор сдастся примерно на 4-й раз (4-й повтор пакета) то остальные 6 повторов
//сервер принимает без ошибок, хотя в инвенторе отсутствуют нужные всходы- сервер на это не ругается

const
Name='aIreX'; <<== Ник перса который здает

var
PaketManora: string; //Пакет на сдачу манора, который мы отправим серваку зараннее с помощью клиента
// и запомним его для того чтобы вручную не формировать его кодом.
//важно что оправлять его нужно после после объявления об олимпиаде.
//так как в пакете манора используются ИД сессии, которые изменяются
//каждый ровный час.

timer1: TTimer; //таймер контролирующий системное время

StartTime: TDateTime;
EndTime: TDateTime;


x:integer;

procedure Init; //Вызывается при включении скрипта
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer; //
timer1.enabled:=false; // таймер по умолчанию выключен
timer1.interval:=150; // через каждые 0,4сек будем засекать контрольное время сдачи манора

x:=0;
end;

procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free; //освобождаем занимаемую память таймером
end;

//вызывается при срабатывании таймера
procedure OnTimer(Sender: TObject);
begin
//если наступило время сдавать манор и скрипт пока еще не отправил 30 попыток его сдать то
if (time >= EndTime) and (x<30) then
begin
//пишем сами себе в чат - что "ПОПЫТКА"
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 3F 04 3E 04 3F 04 4B 04 42 04 3A 04 30 04 20 00 41 04 34 04 30 04 42 04 4C 04 00 00');
SendToClientEx('aIreX'); <<<=== Ник перса который здает отправка клиенту
// отправляем пакет на сдачу манора.
buf:=PaketManora;
SendToServerEx('aIreX'); <=== Отправка серверу
//счетчик попыток
x:=x+1;
end;
end;


begin

//если перехвачен пакет на сдачу манора то
if FromClient and (pck[1]=#$D0) and (pck[2]=#$09) and (pck[3]=#$00) then
begin
//запоминаем его полностью
PaketManora:=pck;
end;

//если получен пакет об начале олимпиады то
if FromServer and (pck[1]=#$64) and (pck[2]=#$69) and (pck[3]=#$06) then
begin
//засекаем текущее время
StartTime:=time;
//вычисляем время сдачи манора (прибавляем нужное время которое нужно засеч после получения сообщения об илимпиаде)
EndTime:=StartTime + EncodeTime(0,5,49,0); // изменяем и корректируем ето число в формате (ЧЧ,ММ,СС,МС)
//активируем таймер
timer1.enabled:=true;
//а ето- отправка сам себе сообщения о том что ВРЕМЯ ПОШЛО
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 32 04 40 04 35 04 3C 04 4F 04 20 00 3F 04 3E 04 48 04 3B 04 3E 04 00 00');
SendToClientEx('aIreX'); <<<== Опять клиенту
end;

end.



Что не так написано в скрипте?У меня таких 2 скрипта исправленых под 2 персов,здающих разные плоды в разные города в 2 окна.
Но в итоге у меня происходит так что пакет с последней здавшейся поптыкой отправляется на 2 клиента и следовательно они здают одинаковые плоды ну и 1 клиент не здает(

Подскажите что исправить......Зарание балгодарен

NLObP
25.04.2008, 17:55
Name='aIreX'; <<== Ник перса который здает

...
//пишем сами себе в чат - что "ПОПЫТКА"
...
SendToClientEx('aIreX'); <<<=== Ник перса который здает отправка клиенту
// отправляем пакет на сдачу манора.
buf:=PaketManora;
SendToServerEx('aIreX'); <=== Отправка серверу
...
//а ето- отправка сам себе сообщения о том что ВРЕМЯ ПОШЛО
...
SendToClientEx('aIreX'); <<<== Опять клиенту
Подскажите что исправить......Зарание балгодарен

Вместо SendToClientEx('aIreX'); <<<== Опять клиенту
везде пиши SendToClientEx(Name);
или SendToServerEx(Name);

Fifty
25.04.2008, 19:21
Тоесть вот так.Например:
SendToClientEx('aIreX'); <<<== Опять клиенту
Пишем SendToClientex(aIreX);
SendToServerEx('aIreX'); <=== Отправка серверу
Пишем SendToServerex(aIreX);

Просто 'Галочки' ставить не надо было,правильнО?Но все равно спс жду ответа...

NLObP
25.04.2008, 20:26
Ты неправильно понял.
в константе NAME задается соединение от которого получаем или которому шлём пакеты. Эта константа в разных скриптах должна быть разная, например:
Scrpt1
Name='first';
Scrpt2
Name='second';

а потом в теле обоих скриптов как
SendToServerEx(Name);
или
SendToClientEx(Name);

то есть универсальная, для Name, которое описывается в начале скрипта.

Fifty
25.04.2008, 20:33
SendToServerEx(Name);
или
SendToClientEx(Name);

Здесь заменяем Name-На ник перса который здает правильно?

Name='first;
Scrpt2
Name='second;

Здесь все так и оставлять прально?

И галочки ставить тока в начале First или после тоже?а то у тебя написано ток с 1 галкой)

NLObP
26.04.2008, 01:20
Здесь заменяем Name-На ник перса который здает правильно?

Name='first;
Scrpt2
Name='second;

Здесь все так и оставлять прально?

И галочки ставить тока в начале First или после тоже?а то у тебя написано ток с 1 галкой)

Две галочки конечно, торопился.
Скрипты у тебя будут отличаться только константой Name='имя_чара'
весь остальной текст скрипта один и тот же. Это так называемая централизация кода, чтобы не искать 100 мест, где надо переменную поменять.

Fifty
26.04.2008, 16:08
Две галочки конечно, торопился.
Скрипты у тебя будут отличаться только константой Name='имя_чара'
весь остальной текст скрипта один и тот же. Это так называемая централизация кода, чтобы не искать 100 мест, где надо переменную поменять.


Ну вот получается так как я и писал.
const
Name='Ник Чара';
SendToServerEx('Ник чара');
SendToClientEx('Ник чара);

У меня созданы 2 скрипта на здачу в которых поменяны данные о никах,но в итоге получается тоже самое что и с 1 скриптом,Оба окна пытаются здать одно и тоже((((((
Либо я что то недопонимаю,либо хз.
подскажите или просто выкиньте кусок скрипта.

NLObP
26.04.2008, 17:58
Ну вот получается так как я и писал.
const
Name='Ник Чара';
SendToServerEx('Ник чара');
SendToClientEx('Ник чара);

У меня созданы 2 скрипта на здачу в которых поменяны данные о никах,но в итоге получается тоже самое что и с 1 скриптом,Оба окна пытаются здать одно и тоже((((((
Либо я что то недопонимаю,либо хз.
подскажите или просто выкиньте кусок скрипта.

Не знаю как еще объяснить. :(
Ты везде пишешь 'Ник чара', а надо только в константу - Name='Ник Чара'; в команде SendToServerEx(); уже надо писать саму константу Name. Вот так: SendToServerEx(Name);

Может в личку скинешь оба скрипта я гляну, что там не так?

xkor
26.04.2008, 23:10
дык надо и пакет о сдаче манора сохранять в разные переменные )
вобщем вот мои исправления скрипта чтоб здавать могло до 11 клиентов одновременно:
//by VORON
//СКРИПТ АВТОМАТИЧЕСКОЙ СДАЧИ МАНОРА
//использование: скрипт запускается за несколько минут до объявления об олимпиаде
//при получении системного сообщения об ее начале засекается системное время и вычисляется время
//сдачи манора, также активируется таймер с интервалом ХХХ МС для контроля системного времени.
//после этого пытаемся сдать свои всходы- вручную. при этом мы получим ошибку что-
//манор система: выключена в данный момент. но при етом пакет на сдачу манора- скрипт запомнит в
//память для дальнейшего использования. через заданное время скрипт отправит 10 раз запомненный
//пакет с интервалом 0,3сек.
//проверено что: если манор сдастся примерно на 4-й раз (4-й повтор пакета) то остальные 6 повторов
//сервер принимает без ошибок, хотя в инвенторе отсутствуют нужные всходы- сервер на это не ругается

//const
// Name='GManor'; //ник перса

var
PaketManora: array[0..10] of string; //Пакет на сдачу манора, который мы отправим серваку зараннее с помощью клиента
// и запомним его для того чтобы вручную не формировать его кодом.
//важно что оправлять его нужно после после объявления об олимпиаде.
//так как в пакете манора используются ИД сессии, которые изменяются
//каждый ровный час.

timer1: TTimer; //таймер контролирующий системное время

StartTime: array[0..10] of TDateTime;
EndTime: array[0..10] of TDateTime;


x: array[0..10] of integer;

procedure Init; //Вызывается при включении скрипта
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer; //
timer1.enabled:=false; // таймер по умолчанию выключен
timer1.interval:=400; // через каждые 0,4сек будем засекать контрольное время сдачи манора

x[ConnectID]:=0;
end;

procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free; //освобождаем занимаемую память таймером
end;

//вызывается при срабатывании таймера
procedure OnTimer(Sender: TObject);
begin
//если наступило время сдавать манор и скрипт пока еще не отправил 30 попыток его сдать то
if (time >= EndTime[ConnectID]) and (x[ConnectID]<30) then
begin
//пишем сами себе в чат - что "ПОПЫТКА"
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 3F 04 3E 04 3F 04 4B 04 42 04 3A 04 30 04 20 00 41 04 34 04 30 04 42 04 4C 04 00 00');
SendToClient;
// отправляем пакет на сдачу манора.
buf:=PaketManora[ConnectID];
SendToServer;
//счетчик попыток
x[ConnectID]:=x[ConnectID]+1;
end;
end;


begin

//если перехвачен пакет на сдачу манора то
if FromClient and {(ConnectName=Name) and} (pck[1]=#$D0) and (pck[2]=#$09) and (pck[3]=#$00) then
begin
//запоминаем его полностью
PaketManora[ConnectID]:=pck;
end;

//если получен пакет об начале олимпиады то
if FromServer and {(ConnectName=Name) and} (pck[1]=#$64) and (pck[2]=#$69) and (pck[3]=#$06) then
begin
//засекаем текущее время
StartTime[ConnectID]:=time;
//вычисляем время сдачи манора (прибавляем нужное время которое нужно засеч после получения сообщения об илимпиаде)
EndTime[ConnectID]:=StartTime[ConnectID] + EncodeTime(0,5,49,0); // изменяем и корректируем ето число в формате (ЧЧ,ММ,СС,МС)
//активируем таймер
timer1.enabled:=true;
//а ето- отправка сам себе сообщения о том что ВРЕМЯ ПОШЛО
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 32 04 40 04 35 04 3C 04 4F 04 20 00 3F 04 3E 04 48 04 3B 04 3E 04 00 00');
SendToClient;
end;

end.
тока я его не проверял, могут быть небольшие ляпы

NLObP
27.04.2008, 02:36
Забыл сказать что еще надо было вот такое писать:
if (ConnectName=Name) and FromServer and ...
чтобы скрипт знал чьи пакеты обрабатываем.

Fifty
27.04.2008, 21:15
Все спасибо огромное и тебе xKor и тебе NLObP сегодня попробую,надеюсь покатит.Сенкс.

Добавлено через 5 часов 17 минут
ппц опять так же фигня скопировал скрипт кора,зделал 2 копии с разными названиями и никами.В итоге здает 1,а второй тупо пытается здать что и 1 перс

NLObP
27.04.2008, 22:15
ппц опять так же фигня скопировал скрипт кора,зделал 2 копии с разными названиями и никами.В итоге здает 1,а второй тупо пытается здать что и 1 перс

А мой пробовал? Может ты используешь не верно? Я насколько понял, надо самому сдать манор, а потом скрипт повторит этот пакет. Ты должен разными персами разное сдавать, тогда и скрипты по разному будут работать.

Fifty
28.04.2008, 17:45
Я насколько понял, надо самому сдать манор, а потом скрипт повторит этот пакет. Ты должен разными персами разное сдавать, тогда и скрипты по разному будут работать.

Сегодня попробую твой.У меня здают манор 6 ботов+ 2 окна с персами.Я в 1-ом окне выставляю и пытаюсь здать в Годдарт,А во 2-ом выставляю и пытаюсь здать в Аден(Все это после начала олимпиады в ручную) после чего Пх запоминает пакет последней попытки тоесть пакет со здачей 2-ого перса в аден.И в итоге в нужное время он юзает пакет на оба окна на здачу манора в Аден.......вот так(

xkor
28.04.2008, 19:00
ппц опять так же фигня скопировал скрипт кора,зделал 2 копии с разными названиями и никами.В итоге здает 1,а второй тупо пытается здать что и 1 персстоп!, нахрена две копии моего скрипта??, он одной копией работать должен и ник там писать собсно негде!, ему на ники пох!

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

Fifty
28.04.2008, 20:40
стоп!, нахрена две копии моего скрипта??, он одной копией работать должен и ник там писать собсно негде!, ему на ники пох!

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

Просто ппц =))))Я думал раз говорили 2 копии и более так и сделал 2 скрипта)))Лан кор попробую ещё и так)В скрипте ни чего не менять.)

Fifty
01.05.2008, 18:25
Вот скрипт NLObP но он был очень не доделан,Я исправил не мног,но дальше не знаю


//СКРИПТ АВТОМАТИЧЕСКОЙ СДАЧИ МАНОРА
//использование: скрипт запускается за несколько минут до объявления об олимпиаде
//при получении системного сообщения об ее начале засекается системное время и вычисляется время
//сдачи манора, также активируется таймер с интервалом ХХХ МС для контроля системного времени.
//после этого пытаемся сдать свои всходы- вручную. при этом мы получим ошибку что-
//манор система: выключена в данный момент. но при етом пакет на сдачу манора- скрипт запомнит в
//память для дальнейшего использования. через заданное время скрипт отправит 10 раз запомненный
//пакет с интервалом 0,3сек.
//проверено что: если манор сдастся примерно на 4-й раз (4-й повтор пакета) то остальные 6 повторов
//сервер принимает без ошибок, хотя в инвенторе отсутствуют нужные всходы- сервер на это не ругается

//const
//Name:='aIreX'; //!!!!!!!!!!!во втором скрипте замени эту строку на вторую и всё!!!!!!!!!

var

PaketManora: string; //Пакет на сдачу манора, который мы отправим серваку зараннее с помощью клиента
// и запомним его для того чтобы вручную не формировать его кодом.
//важно что оправлять его нужно после после объявления об олимпиаде.
//так как в пакете манора используются ИД сессии, которые изменяются
//каждый ровный час.

timer1: TTimer; //таймер контролирующий системное время

StartTime: TDateTime;
EndTime: TDateTime;

x:integer;

procedure Init; //Вызывается при включении скрипта
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer; //
timer1.enabled:=false; // таймер по умолчанию выключен
timer1.interval:=250; // через каждые 0,4сек будем засекать контрольное время сдачи манора
x:=0;
end;

procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free; //освобождаем занимаемую память таймером
end;

//вызывается при срабатывании таймера
procedure OnTimer(Sender: TObject);
begin
//если наступило время сдавать манор и скрипт пока еще не отправил 30 попыток его сдать то
if (time >= EndTime) and (x<30) then
begin
//пишем сами себе в чат - что "ПОПЫТКА"
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 3F 04 3E 04 3F 04 4B 04 42 04 3A 04 30 04 20 00 41 04 34 04 30 04 42 04 4C 04 00 00');
SendToClientEx(Name);
// отправляем пакет на сдачу манора.
buf:=PaketManora;
SendToServerEx(Name);
//счетчик попыток
x:=x+1;
end;
end;


begin
//************************************************** **************************
//не обрабатываем пустые пакеты
if pck='' then exit;

//************************************************** **************************
//если перехвачен пакет на сдачу манора то
if (ConnectName=Name) and FromClient and (pck[1]=#$D0) and (pck[2]=#$09) and (pck[3]=#$00) then
begin
//запоминаем его полностью
PaketManora:=pck;
end;
//************************************************** **************************
//если получен пакет об начале олимпиады то
if (ConnectName=Name) and FromServer and (pck[1]=#$64) and (pck[2]=#$69) and (pck[3]=#$06) then
begin
//засекаем текущее время
StartTime:=time;
//вычисляем время сдачи манора (прибавляем нужное время которое нужно засеч после получения сообщения об илимпиаде)
EndTime:=StartTime + EncodeTime(0,5,49,0); // изменяем и корректируем ето число в формате (ЧЧ,ММ,СС,МС)
//активируем таймер
timer1.enabled:=true;
//а ето- отправка сам себе сообщения о том что ВРЕМЯ ПОШЛО
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 32 04 40 04 35 04 3C 04 4F 04 20 00 3F 04 3E 04 48 04 3B 04 3E 04 00 00');
SendToClientEx(Name);
end;
end.

//xkor: Прошу скрипты заключать в [ HIGHLIGHT="delphi"]скрипт[ /HIGHLIGHT]

NLObP
01.05.2008, 23:22
Скрипт не мой, а VORONа!

Fifty
02.05.2008, 15:54
NLObP,

^^ сорь он не был подписан))Ну вообщем вот скрипт надо исправлять.......(
Но все равно спс большое

MIhei
30.08.2008, 14:27
дык надо и пакет о сдаче манора сохранять в разные переменные )
вобщем вот мои исправления скрипта чтоб здавать могло до 11 клиентов одновременно:
//by VORON
//СКРИПТ АВТОМАТИЧЕСКОЙ СДАЧИ МАНОРА
//использование: скрипт запускается за несколько минут до объявления об олимпиаде
//при получении системного сообщения об ее начале засекается системное время и вычисляется время
//сдачи манора, также активируется таймер с интервалом ХХХ МС для контроля системного времени.
//после этого пытаемся сдать свои всходы- вручную. при этом мы получим ошибку что-
//манор система: выключена в данный момент. но при етом пакет на сдачу манора- скрипт запомнит в
//память для дальнейшего использования. через заданное время скрипт отправит 10 раз запомненный
//пакет с интервалом 0,3сек.
//проверено что: если манор сдастся примерно на 4-й раз (4-й повтор пакета) то остальные 6 повторов
//сервер принимает без ошибок, хотя в инвенторе отсутствуют нужные всходы- сервер на это не ругается

//const
// Name='GManor'; //ник перса

var
PaketManora: array[0..10] of string; //Пакет на сдачу манора, который мы отправим серваку зараннее с помощью клиента
// и запомним его для того чтобы вручную не формировать его кодом.
//важно что оправлять его нужно после после объявления об олимпиаде.
//так как в пакете манора используются ИД сессии, которые изменяются
//каждый ровный час.

timer1: TTimer; //таймер контролирующий системное время

StartTime: array[0..10] of TDateTime;
EndTime: array[0..10] of TDateTime;


x: array[0..10] of integer;

procedure Init; //Вызывается при включении скрипта
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer; //
timer1.enabled:=false; // таймер по умолчанию выключен
timer1.interval:=400; // через каждые 0,4сек будем засекать контрольное время сдачи манора

x[ConnectID]:=0;
end;

procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free; //освобождаем занимаемую память таймером
end;

//вызывается при срабатывании таймера
procedure OnTimer(Sender: TObject);
begin
//если наступило время сдавать манор и скрипт пока еще не отправил 30 попыток его сдать то
if (time >= EndTime[ConnectID]) and (x[ConnectID]<30) then
begin
//пишем сами себе в чат - что "ПОПЫТКА"
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 3F 04 3E 04 3F 04 4B 04 42 04 3A 04 30 04 20 00 41 04 34 04 30 04 42 04 4C 04 00 00');
SendToClient;
// отправляем пакет на сдачу манора.
buf:=PaketManora[ConnectID];
SendToServer;
//счетчик попыток
x[ConnectID]:=x[ConnectID]+1;
end;
end;


begin

//если перехвачен пакет на сдачу манора то
if FromClient and {(ConnectName=Name) and} (pck[1]=#$D0) and (pck[2]=#$09) and (pck[3]=#$00) then
begin
//запоминаем его полностью
PaketManora[ConnectID]:=pck;
end;

//если получен пакет об начале олимпиады то
if FromServer and {(ConnectName=Name) and} (pck[1]=#$64) and (pck[2]=#$69) and (pck[3]=#$06) then
begin
//засекаем текущее время
StartTime[ConnectID]:=time;
//вычисляем время сдачи манора (прибавляем нужное время которое нужно засеч после получения сообщения об илимпиаде)
EndTime[ConnectID]:=StartTime[ConnectID] + EncodeTime(0,5,49,0); // изменяем и корректируем ето число в формате (ЧЧ,ММ,СС,МС)
//активируем таймер
timer1.enabled:=true;
//а ето- отправка сам себе сообщения о том что ВРЕМЯ ПОШЛО
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 32 04 40 04 35 04 3C 04 4F 04 20 00 3F 04 3E 04 48 04 3B 04 3E 04 00 00');
SendToClient;
end;

end.
тока я его не проверял, могут быть небольшие ляпы
дык надо и пакет о сдаче манора сохранять в разные переменные )
вобщем вот мои исправления скрипта чтоб здавать могло до 11 клиентов одновременно:

delphi Код:
//by VORON
//СКРИПТ АВТОМАТИЧЕСКОЙ СДАЧИ МАНОРА
//использование: скрипт запускается за несколько минут до объявления об олимпиаде
//при получении системного сообщения об ее начале засекается системное время и вычисляется время
//сдачи манора, также активируется таймер с интервалом ХХХ МС для контроля системного времени.
//после этого пытаемся сдать свои всходы- вручную. при этом мы получим ошибку что-
//манор система: выключена в данный момент. но при етом пакет на сдачу манора- скрипт запомнит в
//память для дальнейшего использования. через заданное время скрипт отправит 10 раз запомненный
//пакет с интервалом 0,3сек.
//проверено что: если манор сдастся примерно на 4-й раз (4-й повтор пакета) то остальные 6 повторов
//сервер принимает без ошибок, хотя в инвенторе отсутствуют нужные всходы- сервер на это не ругается

//const
// Name='GManor'; //ник перса

var
PaketManora: array[0..10] of string; //Пакет на сдачу манора, который мы отправим серваку зараннее с помощью клиента
// и запомним его для того чтобы вручную не формировать его кодом.
//важно что оправлять его нужно после после объявления об олимпиаде.
//так как в пакете манора используются ИД сессии, которые изменяются
//каждый ровный час.

timer1: TTimer; //таймер контролирующий системное время

StartTime: array[0..10] of TDateTime;
EndTime: array[0..10] of TDateTime;


x: array[0..10] of integer;

procedure Init; //Вызывается при включении скрипта
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer; //
timer1.enabled:=false; // таймер по умолчанию выключен
timer1.interval:=400; // через каждые 0,4сек будем засекать контрольное время сдачи манора

x[ConnectID]:=0;
end;

procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free; //освобождаем занимаемую память таймером
end;

//вызывается при срабатывании таймера
procedure OnTimer(Sender: TObject);
begin
//если наступило время сдавать манор и скрипт пока еще не отправил 30 попыток его сдать то
if (time >= EndTime[ConnectID]) and (x[ConnectID]<30) then
begin
//пишем сами себе в чат - что "ПОПЫТКА"
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 3F 04 3E 04 3F 04 4B 04 42 04 3A 04 30 04 20 00 41 04 34 04 30 04 42 04 4C 04 00 00');
SendToClient;
// отправляем пакет на сдачу манора.
buf:=PaketManora[ConnectID];
SendToServer;
//счетчик попыток
x[ConnectID]:=x[ConnectID]+1;
end;
end;


begin

//если перехвачен пакет на сдачу манора то
if FromClient and {(ConnectName=Name) and} (pck[1]=#$D0) and (pck[2]=#$09) and (pck[3]=#$00) then
begin
//запоминаем его полностью
PaketManora[ConnectID]:=pck;
end;

//если получен пакет об начале олимпиады то
if FromServer and {(ConnectName=Name) and} (pck[1]=#$64) and (pck[2]=#$69) and (pck[3]=#$06) then
begin
//засекаем текущее время
StartTime[ConnectID]:=time;
//вычисляем время сдачи манора (прибавляем нужное время которое нужно засеч после получения сообщения об илимпиаде)
EndTime[ConnectID]:=StartTime[ConnectID] + EncodeTime(0,5,49,0); // изменяем и корректируем ето число в формате (ЧЧ,ММ,СС,МС)
//активируем таймер
timer1.enabled:=true;
//а ето- отправка сам себе сообщения о том что ВРЕМЯ ПОШЛО
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 32 04 40 04 35 04 3C 04 4F 04 20 00 3F 04 3E 04 48 04 3B 04 3E 04 00 00');
SendToClient;
end;

end.тока я его не проверял, могут быть небольшие ляпы
Здравствуйте
Я так понял что этот скрипт запоминает и отправляет несколько пакетов серверу на сдачу манора?
И его можно использовать при сдаче манора одним пером в разные города?
Если я не прав поправте пожалуйста и обьясните как это можно реализовать.

QaK
01.09.2008, 10:42
щас Гринч придет и тебе все объяснит :spiteful:

MIhei
01.09.2008, 13:01
щас Гринч придет и тебе все объяснит
ага спасибо за разьяснение по теме, а про то что добавил работы по уборке админу форума и сам вижу - прошу прощения накопировал всяко разно, уже исправился

Opus
19.01.2009, 10:42
дык надо и пакет о сдаче манора сохранять в разные переменные )
вобщем вот мои исправления скрипта чтоб здавать могло до 11 клиентов одновременно:
//by VORON
//СКРИПТ АВТОМАТИЧЕСКОЙ СДАЧИ МАНОРА
//использование: скрипт запускается за несколько минут до объявления об олимпиаде
//при получении системного сообщения об ее начале засекается системное время и вычисляется время
//сдачи манора, также активируется таймер с интервалом ХХХ МС для контроля системного времени.
//после этого пытаемся сдать свои всходы- вручную. при этом мы получим ошибку что-
//манор система: выключена в данный момент. но при етом пакет на сдачу манора- скрипт запомнит в
//память для дальнейшего использования. через заданное время скрипт отправит 10 раз запомненный
//пакет с интервалом 0,3сек.
//проверено что: если манор сдастся примерно на 4-й раз (4-й повтор пакета) то остальные 6 повторов
//сервер принимает без ошибок, хотя в инвенторе отсутствуют нужные всходы- сервер на это не ругается

//const
// Name='GManor'; //ник перса

var
PaketManora: array[0..10] of string; //Пакет на сдачу манора, который мы отправим серваку зараннее с помощью клиента
// и запомним его для того чтобы вручную не формировать его кодом.
//важно что оправлять его нужно после после объявления об олимпиаде.
//так как в пакете манора используются ИД сессии, которые изменяются
//каждый ровный час.

timer1: TTimer; //таймер контролирующий системное время

StartTime: array[0..10] of TDateTime;
EndTime: array[0..10] of TDateTime;


x: array[0..10] of integer;

procedure Init; //Вызывается при включении скрипта
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer; //
timer1.enabled:=false; // таймер по умолчанию выключен
timer1.interval:=400; // через каждые 0,4сек будем засекать контрольное время сдачи манора

x[ConnectID]:=0;
end;

procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free; //освобождаем занимаемую память таймером
end;

//вызывается при срабатывании таймера
procedure OnTimer(Sender: TObject);
begin
//если наступило время сдавать манор и скрипт пока еще не отправил 30 попыток его сдать то
if (time >= EndTime[ConnectID]) and (x[ConnectID]<30) then
begin
//пишем сами себе в чат - что "ПОПЫТКА"
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 3F 04 3E 04 3F 04 4B 04 42 04 3A 04 30 04 20 00 41 04 34 04 30 04 42 04 4C 04 00 00');
SendToClient;
// отправляем пакет на сдачу манора.
buf:=PaketManora[ConnectID];
SendToServer;
//счетчик попыток
x[ConnectID]:=x[ConnectID]+1;
end;
end;


begin

//если перехвачен пакет на сдачу манора то
if FromClient and {(ConnectName=Name) and} (pck[1]=#$D0) and (pck[2]=#$09) and (pck[3]=#$00) then
begin
//запоминаем его полностью
PaketManora[ConnectID]:=pck;
end;

//если получен пакет об начале олимпиады то
if FromServer and {(ConnectName=Name) and} (pck[1]=#$64) and (pck[2]=#$69) and (pck[3]=#$06) then
begin
//засекаем текущее время
StartTime[ConnectID]:=time;
//вычисляем время сдачи манора (прибавляем нужное время которое нужно засеч после получения сообщения об илимпиаде)
EndTime[ConnectID]:=StartTime[ConnectID] + EncodeTime(0,5,49,0); // изменяем и корректируем ето число в формате (ЧЧ,ММ,СС,МС)
//активируем таймер
timer1.enabled:=true;
//а ето- отправка сам себе сообщения о том что ВРЕМЯ ПОШЛО
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 32 04 40 04 35 04 3C 04 4F 04 20 00 3F 04 3E 04 48 04 3B 04 3E 04 00 00');
SendToClient;
end;

end.
тока я его не проверял, могут быть небольшие ляпы

xkor, за скрипт спасибо! и поправь если я не прав: сей скрипт уже править не надо? просто добавляю его, включаю и он мне на несколько окон в разные города менят одни и теже семена?

Добавлено через 5 минут
кстате, у кого-нибудь есть соображения как можно подгадать пинг и быть первым в сдаче манора? или может есть какие то другие способы? просто я когда нашел скрипт Ворона на манор он у меня первый и последний раз поменял семена! после этого я сдавал раз 5 и ниразу не успевал((! если не трудно помогите!

QaK
19.01.2009, 10:46
как можно подгадать пинг и быть первым в сдаче манора?никак ... только если прийти к одминам, и запустить прогу на самом серваке =) тогда точно первый будешь

Добавлено через 43 секунды
Все зависит от того, как попрет, и только от этого, ибо скрипт ВОРОНа лежит уже давно, его уже все, кто хотел - нашли.

Opus
19.01.2009, 16:15
никак ... только если прийти к одминам, и запустить прогу на самом серваке =) тогда точно первый будешь
Еслиб я мог прийти к админам и что-то запустить на серваке мне бы и пакет хак нафиг не нужен был бы) и манор тоже был не актуален))

Добавлено через 43 секунды
Все зависит от того, как попрет, и только от этого, ибо скрипт ВОРОНа лежит уже давно, его уже все, кто хотел - нашли.

да но есть же счастливчики которы прет) а вообще где-то тут чувак писал что про время пока пакет дойдет до серва пока придет обратно с ответом, я думаю моно попробовать выгадать, перед тем как включать скрипт пропинговать высчитать и поставить время начало обмена в скрипте более точно ток для этого надо знать во сколько точно система дает обменять семена! думаю должно получиться! правда не с 100% шансом(( как считаешь?

Добавлено через 2 минуты
ах да скрипт переделаный xkor-ом ктонить проверял?))

Grinch
19.01.2009, 17:22
да но есть же счастливчики которы прет) а вообще где-то тут чувак писал что про время пока пакет дойдет до серва пока придет обратно с ответом, я думаю моно попробовать выгадать, перед тем как включать скрипт пропинговать высчитать и поставить время начало обмена в скрипте более точно ток для этого надо знать во сколько точно система дает обменять семена! думаю должно получиться! правда не с 100% шансом(( как считаешь?

Добавлено через 2 минуты
ах да скрипт переделаный xkor-ом ктонить проверял?))
шанс останется тем же пынг миняется от нагрузки на канал иногда сдается все когда он в районе 100, а все почему потому что серв лаганул и подрят высланые тобой пакеты обработал подряд, а не в перемешку с чужими. другими словами рандом

Opus
20.01.2009, 13:03
И все же мне интерестно: проверял ли кто-нибудь скрипт переделаный xkor-ом на сдачу манора 11-ю окнами?))) скоро наверное тоже се этот вопрос в коментарии добавлю!))

krivellos
25.01.2009, 21:36
Уважаемый NLObP, если есть время помоги проверить скрипт на манор для нескольких окон, происходит сдача манора сразу по приходу пакета о начале олимпа.

const
Name='NICK'; //ник перса
.....
//если перехвачен пакет на сдачу манора то
if FromClient and (ConnectName=Name) and (pck[1]=#$D0) and (pck[2]=#$09) and (pck[3]=#$00) then
begin
//запоминаем его полностью
PaketManora[ConnectID]:=pck;
end;

//если получен пакет об начале олимпиады то
if FromServer and (ConnectName=Name) and (pck[1]=#$64) and (pck[2]=#$69) and (pck[3]=#$06) then
begin
//засекаем текущее время
StartTime[ConnectID]:=time;
//вычисляем время сдачи манора (прибавляем нужное время которое нужно засеч после получения сообщения об илимпиаде)
EndTime[ConnectID]:=StartTime[ConnectID] + EncodeTime(0,5,49,0); // изменяем и корректируем ето число в формате (ЧЧ,ММ,СС,МС)
//активируем таймер
timer1.enabled:=true;
//а ето- отправка сам себе сообщения о том что ВРЕМЯ ПОШЛО
buf:=hstr('4A AB F6 A0 48 02 00 00 00 2D 00 3E 00 56 00 4F 00 52 00 4F 00 4E 00 37 00 00 00 32 04 40 04 35 04 3C 04 4F 04 20 00 3F 04 3E 04 48 04 3B 04 3E 04 00 00');
SendToClientEx(Name);
end;

end.

QaK
26.01.2009, 06:29
krivellos, где у тебя в скрипте задание интервала для таймера?

Grinch
26.01.2009, 13:36
krivellos, а сам не можешь, может за тебя еще семена посеять манор сдать и ресы выдать, так проще те дырку в башке сделать для вентиляции что б таких постов не писал.