Цитата:
Сообщение от Azhole
Раз на то пошло, основы программирования у меня есть но только на языке C++.
Многие функции я просто не перевариваю(здесь нужна помошь, где мне получить эту базу епрст).Что то я находил но там явно не для новичков гайд.
|
В прикрепленных темах есть вся нужная информация. Конечно она сделана не в виде гайдов, а как справочник. Вот тот прокоментирую тот скрипт что вы скинули:
Код:
const
nik='xxxx'; //константа с именем чара
Enchant=16; //константа с желаемым уровнем заточки
var
Useitem2:string; //переменная в скрипте не используется. Кажется автор скрипта просто забыл ее убрать, строку вообще можно удалить
UseItem, SelectItem, EnchantItem: string;//обьявляем переменные , которые будут изьяты и потока строкой
CurrentEnch: integer;//уровень заточки предмета в данный момент
key: boolean;//так как вы и написали, либо тру, либо фелс
Timer01, Timer02: TTimer; //два таймера
procedure Init; //это не главный модуль скрипта, это процедура которая выполняется при старте скрипта. В данном случаи в ней задаются парамерты работы 2-х таймеров.
begin
Timer01:=TTimer.Create(nil);
Timer01.OnTimer:=@OnTimer01;
Timer01.enabled:=false; //таймер сначала выключен
Timer01.interval:=3000;
Timer02:=TTimer.Create(nil);
Timer02.OnTimer:=@OnTimer02;
Timer02.enabled:=false; //таймер сначала выключен
Timer02.interval:=500;
end;
procedure OnTimer01(Sender: TObject); //процеруда которая вылняется первым таймером
begin
case key of
false: begin
buf:=UseItem;//переменная buf испоьзуется для отправки пакета, что в этой переменной бубет находится то и отправится на сервер/клиент
SendToServerEx(nik); // отправка buf на сервер
Timer02.enabled:=true; //вклчюаем второй таймер
end;
true: begin
buf:=EnchantItem;
SendToServerEx(nik);//отправка buf на сервер
end;
end;
key:=not(key); // меняем значение переменной, с тру на фелс или с фелс на тру
end;
procedure OnTimer02(Sender: TObject); //процеруда которая вылняется первым таймером
begin
buf:=SelectItem;
SendToServerEx(nik);
Timer02.enabled:=false; //выклчюем второй таймер
end;
procedure Free; //процедура которая выполняется при остановке скрипта, в данном случаи освобождаем память от таймеров
begin
Timer01.free;
Timer02.free;
CurrentEnch:=0; //не нужная строка, при закрытии скрипта переменная исчезнет
key:=false; //не нужная строка, при закрытии скрипта переменная исчезнет
end;
//все ниже написанные строки будут выполнятся при перхвате каждого пакета
//это значит что за секунду они будут выпонятся раз 20-30, в зависимости от количества пакетов что придут от сервера и которые отправит клиент
//материал есть и не спрятанный. абсолютно вся нужная информация находится в закреплнных темах этого и соседних разделов, а также в справке к программе
begin
if FromServer and (pck[1]=#$87) then case ReadD(2) of
0: begin
CurrentEnch:=CurrentEnch+1;
if CurrentEnch=Enchant then Timer01.enabled:=false;
end;
3: CurrentEnch:=0;
end;
if FromClient and (pck[1]=#$19) then UseItem:=pck;
if FromClient and (pck[1]=#$D0) then SelectItem:=pck;
if FromClient and (pck[1]=#$5F) then EnchantItem:=pck;
if FromClient and (pck[1]+pck[2]=#$56#$0C) then
begin
pck:='';
Timer01.enabled:=not(Timer01.enabled);
end;
end.