L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
//QaK:отдельная тема по подкючению пакетхака к серверу >>>>>>>>тут
любые вопросы по данной тематике в этом топе будут удаляться без предупреждения.
Код:
const
mp='8A 1B 15 01 10';
hp='8A 1A 15 01 10';
begin
if fromclient and (pck[1]=#$38#$F5#$00#$EF#$00#$00#$00#$03#$00#$00#$00) then
begin
buf:=hstr(hp);
SendToServer;
end;
if fromclient and (pck[2]=#$33#$F5#$00#$EF#$00#$40#$00#$03#$00#$00#$00) then
begin
buf:=hstr(mp);
SendToServer;
end;
end.
где я ошибся?
Последний раз редактировалось QaK, 30.08.2010 в 18:56.
искал так и не нашел
где то встречал описание функции для вызова
паузы в любом месте скрипта
может кто эту функцию мне опишет и на
примере покажет как действует.
Yegor,
Код:
TAMBIK, паузу делать в теле скрипта нельзя ни в коем случае. Нужно просто сравнивать время и по нему ориентироваться выполнять команду или нет. Посмотри как реализована задержка в старом скрипте на здачу манора.
а вот что я нашел
Код:
Таймер со сквозным проходом
Если ставить sleep() то скрипт останавливается на время, но и пакеты тоже не принимаются и не отправляются, так вот эта функция позваляет избежать этого
Код:
//(c)dmitry501
var
tick: Integer;
procedure Init;
begin
end;
function Pause(Timewait: Integer):Boolean;
// сквозная проверка без остановки скрипта (c)dmitry501
var
t : integer;
begin
result := false;
t := Round(Time*86400);
if t > (tick + Timewait) then
begin
tick := t;
result := true;
end;
end;
пример использования
Код:
if (NoEarned=1) and pause(2) then //+ 2 секунды ожидания
begin
...........
end;
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
SeregaZ, какой ты массив используешь?
Если свой обычный то напиши функцию которая будет удалять эелемент массива и сразу эе делать сдвиг, это легко.
Можешь для массива использовать класс TstringList там есть методы добавления, изменения, удаления элемента массива, но правда тогда данные для каждого дропа прийдеться либо хранить в объекта или преоброзовывать все данные в строку. А свои классы наверно фаст скрипт не поддерживает, поэтому сделай как я написал вначале.
Добавлено через 12 минут TAMBIK, это и есть сравнение с текущем временем, только недостаток в том что ты такую паузу должен вызывать только в 1 месте за проход не больше. Если паузы поанируеться ставить в разных местах то надо ещё добавить что то вроде pauseid. И не везде так удобно будет делать. Если ты делаешь на пакетхаке что то сложнее чем блокировка и модификация неукоторых пакетов советую поставить делфи и писать скрипт в виде длл модуля для пакет хака. Там создашь отдельный поток для выполняемого действия и можно лепить обычную паузу в виде Sleep(xxxx).
Последний раз редактировалось Yegor, 17.08.2009 в 16:56.
Причина: Добавлено сообщение
SeregaZ, а не проще добавить условие типа, если ид=0 то ниче подбирать не надо и переходить к следующему элементу массива
и образуется утечка памяти. представляешь что будет через час-два-три после старта скрипта? индекс в массиве будет ууууууууууууу... а сам масив просто огромный
написано на коленке, могут быть ошибки синтаксиса (я не ходячий компилатор и спеллчеккер) но идея понятна.
delphi Код:
var
itemcount:integer;// - колво вещей в очереди при инициализации скрипта установить равным нулю.!!
itemarray:array[0..255] ofinteger;
Function GetItemIdAndMove(index:integer):integer;
var
i:integer;
begin
result := 0;
if index >= itemcount thenexit;
result := itemarray[index];
i := index;
while i < itemcount -1dobegin
itemarray[i] := itemarray[i+1];
inc(i);
end;
itemarray[i] := 0;
dec(itemcount);
end;
procedure additemtoarray(itemobjid:integer);
begin
itemarray[itemcount] := itemobjid;
inc(itemcount);
end;
подымать:
var
PickupItemId : integer
begin
pickupitemid := GetItemIdAndMove(0); //получаем первый элемент массива и смещаем все последующие
if pickupitemid <> 0 then
begin
//подымаем тут. ориентируясь на pickupitemid
end;
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 17.08.2009 в 17:46.
Причина: Добавлено сообщение