пару сек отправляются пакеты но КОПМ ЖУТКО ЛАГАЕТ ЛАГАЕТ и мну дисконнектит от серва подскажите плиз в чём причина или напишите скрипт на посылку 3х пакетов с задержкой ПЛИИИЗ
П.С. Если не писать begin end после каждого то комп ещё быстрее залагивает.....
У тебя принудительньнная остановка пакетхака на 1,8 секунды.
Что бы не тормозить работу пакетхака кури в сторону выполнения скрипта в отдельном потоке с помощью TTimer. Примеров в "ДА БУДЕТ БОТ" предостаточно. Там же где то есть отправка с задержкой.
И да, научись уже писать на Pascal.
возник еще один вопрос. prodecure Action
вызывается, когда отправляется пакет, первый байт которого соответствует 'Action' ?
и если в основном(когда при поступлении любого пакета действующего) бегинэнде напишу фигню, то этим я просто блокирую все исходящие и входящие пакеты ?
например
Код:
var
n : integer;
procedure Init; //will be called on script initialization
begin
end;
procedure Free; //This method calls when script don't need anymore
begin
end;
//Primary part of dcript
//calls alltime when l2ph got new packet
begin
n:= n + 1;
end.
Последний раз редактировалось joersun, 30.01.2012 в 22:23.
Причина: возник второй вопрос
Надо задать начальное значение для n, тогда этим скриптом вы будете считать количество пакетов что прошли через пакетхак.
n тут просто взял, не планирую считать количество пакетов
Цитата:
Сообщение от SeregaZ
неа. этим ты будешь просто вести учет общего количества пакетов
чтобы блокировать нужно дописать будет:
Код:
pck:='';
вопрос был вот такой:
тоесть, сервер отправляет пакет pck, а этот pck залетает в l2ph, и если я с этим пакетом ниче не делаю, пакет дальше идет к клиенту.
в обратном направлении тоже самое
или если я поменяю пакет, и не буду отправлять. то это не блокировка?
В переменной pck находится пакет который пришел в пакетхак. Чтобы заблокировать пакет, надо очистить переменную pck (pck:='', соответственно из пакетхака выйдет пустая переменная, тоесть ничего.
Чтобы что-то изменить пакете, надо изменить переменную pck. В любом случаи содержимое этой переменной выйдет из пакетхака, отправлять ее не надо.
__________________
В любом из нас спит гений. И с каждым днем все крепче.
Не работает подмена пакетов, тоесть надо писать ЦЕЛЫЙ пакет чтоб он заменился, а по первому байту - хрен, тоесть
(pck[1]=#$56) - это соц действие, нифига не заменяет, а если написать конкретное
(pck=HStr('56 0C....')) то всё ок
в чем может быть проблема???
//J-Fobos: Какая версия пакетхака? Что-то схожее уже было. Подождите немного, разберусь и отвечу...
Последний раз редактировалось J-Fobos, 09.04.2012 в 11:52.
Не работает данный скрипт на интерлюд серверах. Phx коннектится свободно, скрипт на автовставку лсов работает.
const
nik='xxxxx';
Enchant=13;
var
SubID, SkillID, SkillLvl, CurrEnch: integer;
procedure Init; //Вызывается при включении скрипта
begin
end;
procedure OnTimer01(Sender: TObject);
begin
end;
procedure Free; //Вызывается при выключении скрипта
begin
CurrEnch:=0;
end;
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin
end;
procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromServer and (pck[1]=#$62) then case pck[2] of
#$A0: //точнулся
if CurrEnch<Enchant then
begin
CurrEnch:=CurrEnch+1;
Buf:=#$D0;
WriteH(SubID);
WriteD(SkillID);
WriteD(SkillLvl+CurrEnch);
SendToServerEx(nik);
end;
#$A1: //не точнулся
begin
CurrEnch:=1;