Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 19.05.2008, 23:49   #1
Новичок
 
Регистрация: 17.05.2008
Сообщений: 2
Сказал Спасибо: 3
Имеет 1 спасибку в 1 сообщении
iablondinko пока неопределено
По умолчанию скрипт на покупку, глючит

есть один сервачек, где можно покупать за 1 адену 100кк, так вот пытаюсь сделать скрипт чтобы он автоматически при получении пакета 27 и итем ИД=57 закупал адену до 1ккк, но что то он непашет так как надо) помогите наити ошибку)

delphi Код:
const name='name'//nick msg1='04 31 19 10 48 C1 C1 01 00 9D 47 FD FF 76 FC FF FF 00'; //пакеты закупки адены msg2='21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 36 00 32 00 37 00 00 00'; msg3='A7 73 02 00 00 01 00 00 00 01 00 00 00'; var d,i,k,l,x: integer; f :TStringList; m,t :String; timer: TTimer; procedure by(Sender: TObject)//сама процедура покупки адены begin   case x of      1: begin              buf:=hstr(msg1);              SendToServerEx(name);              x:=x+1;         end;      2: begin              buf:=hstr(msg1);              SendToServerEx(name);              x:=x+1;         end;      3: begin              buf:=hstr(msg2);              SendToServerEx(name);              x:=x+1;         end;      4: begin              buf:=hstr(msg3);              SendToServerEx(name);              x:=x+1;              timer.enabled:=false;         end;     end; end; procedure Init; //вызывается при включении begin      timer:=TTimer.Create(nil);      timer.OnTimer:=@by;      timer.enabled:=false;      timer.interval:=600;      x:=0; end; begin       if FromServer and (ConnectName=name)and (pck[1]=#$27)and (pck[12]=#$39)then       begin            i:=12;            k:=ReadD(i);    //item ID            l:=ReadD(i);    //количество адены            //=IntToStr(l);            //=IntToStr(k);            //=TStringList.Create();            //Add(t+': '+m);            //SaveToFile('c:\adena.txt');            //Free;       end;       if l<100000000 then          begin               timer.enabled:=true;               x:=1;          end; end.

при включении скрипта чар тупа начинает брать в тагер нпс, т.е. постоянно отправляется первый пакет, а при выключении он все таки покупает 1 раз 100кк, непойму в чем дело

Последний раз редактировалось iablondinko, 19.05.2008 в 23:54.
iablondinko вне форума   Ответить с цитированием
За это сообщение iablondinko нажился спасибкой от:
Старый 20.05.2008, 00:19   #2
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 52
Сказал Спасибо: 22
Имеет 16 спасибок в 9 сообщенях
ChiterEPT
По умолчанию

Обрати внимание на последнее If в твоем скрипте оно выполняется при каждом приходящем пакете.. так что х:=1 при каждом приходящем пакете... поэтому выполняется первый цикл постоянно . Попробуй последнее условие засунуть в обработку пакета #$27 или ввести дополнительную переменную лучше Boolean. Например так:

Добавлено через 3 минуты
delphi Код:
const name='name'//nick msg1='04 31 19 10 48 C1 C1 01 00 9D 47 FD FF 76 FC FF FF 00'; //пакеты закупки адены msg2='21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 36 00 32 00 37 00 00 00'; msg3='A7 73 02 00 00 01 00 00 00 01 00 00 00'; var d,i,k,l,x: integer; f :TStringList; m,t :String; timer: TTimer; Zanyat: Boolean; procedure by(Sender: TObject)//сама процедура покупки адены begin   case x of      1: begin              buf:=hstr(msg1);              SendToServerEx(name);              x:=x+1;         end;      2: begin              buf:=hstr(msg1);              SendToServerEx(name);              x:=x+1;         end;      3: begin              buf:=hstr(msg2);              SendToServerEx(name);              x:=x+1;         end;      4: begin              buf:=hstr(msg3);              SendToServerEx(name);              x:=x+1;              Zanyat:=false;              timer.enabled:=false;         end;     end; end; procedure Init; //вызывается при включении begin      timer:=TTimer.Create(nil);      timer.OnTimer:=@by;      timer.enabled:=false;      timer.interval:=600;      x:=0;     Zanyat:=false; end; begin       if FromServer and (ConnectName=name)and (pck[1]=#$27)and (pck[12]=#$39)then       begin            i:=12;            k:=ReadD(i);    //item ID            l:=ReadD(i);    //количество адены            //=IntToStr(l);            //=IntToStr(k);            //=TStringList.Create();            //Add(t+': '+m);            //SaveToFile('c:\adena.txt');            //Free;       end;       if (l<100000000) and (Zanyat=false) then          begin               timer.enabled:=true;               x:=1;               Zanyat:=true;          end; end.

Последний раз редактировалось ChiterEPT, 20.05.2008 в 01:01. Причина: Добавлено сообщение
ChiterEPT вне форума   Ответить с цитированием
За это сообщение ChiterEPT нажился 3 спасибками от:
Старый 20.05.2008, 00:47   #3
Новичок
 
Регистрация: 17.05.2008
Сообщений: 2
Сказал Спасибо: 3
Имеет 1 спасибку в 1 сообщении
iablondinko пока неопределено
По умолчанию

во, скрипт заработал как надо, только он начинает докупать при включении скрипта. почему? пакет 27 не приходит, каждый раз как включаю скрипт он начинает докупать
iablondinko вне форума   Ответить с цитированием
Старый 20.05.2008, 00:59   #4
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 52
Сказал Спасибо: 22
Имеет 16 спасибок в 9 сообщенях
ChiterEPT
По умолчанию

В процедуру Free пропиши "timer.free;"

Добавлено через 1 минуту
и L:=0;

Добавлено через 4 минуты
Все понятно... как же я сразу не заметил Все таки обработку переменной L переставь в обработку пакета 27. Дело в том что L у тебя изначально = 0 а нуль как ты понимаешь меньше 1000000 и таймер у тебя будет включатся как только цикл завершится и флаг Zanyat вернется в значение false

Добавлено через 1 минуту
delphi Код:
begin       if FromServer and (ConnectName=name)and (pck[1]=#$27)and (pck[12]=#$39)then       begin            i:=12;            k:=ReadD(i);    //item ID            l:=ReadD(i);    //количество адены            //=IntToStr(l);            //=IntToStr(k);            //=TStringList.Create();            //Add(t+': '+m);            //SaveToFile('c:\adena.txt');            //Free; if (l<100000000) and (Zanyat=false) then          begin               timer.enabled:=true;               x:=1;               Zanyat:=true;          end;       end;       end.

Последний раз редактировалось ChiterEPT, 20.05.2008 в 01:01. Причина: Добавлено сообщение
ChiterEPT вне форума   Ответить с цитированием
За это сообщение ChiterEPT нажился 3 спасибками от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:01.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!