Пользователь
Регистрация: 08.03.2008
Сообщений: 77
Сказал Спасибо: 31
Имеет 19 спасибок в 15 сообщенях
|
Вот попробуй этот, на моем ХБэшном серве работает.
Единственно что, не переделал отключение клиента.
Скрипт не универсален, то есть работает тока под ХБ.
Delphi Код:
//Автоматизация ловли рыбы by NLObP для L2PacketHack v.3.1.8+ by Xkor
//version 0.10.7 от 26.07.2008г.
program Fishing_C4_IL;
{ А.Пушкин "Сказка о рыбном четверге"
********************************************************************************
Возможности скрипта:
--------------------
0.10.1
- Контроль рыбалки с панели управления;
- Статистика ловли;
- Может работать одновременно несколько скриптов для разных чаров;
- При нападении моба может атаковать его и может лечиться бутылками;
- Потрошит пойманную рыбу;
- Подбирает выпавшие предметы из убитого моба;
- Возвращается на место рыбалки после смерти;
- Когда закончатся крючки, бежит к фишермэну и продает/покупает/обменивает предметы
(продажа Fish Oil и Great Fish Oil не производится, см. ниже);
- Меняет место ловли при неудачных попытках (в скрипте три места ловли);
- В процессе рыбалки преобразует Fish Oil в Great Fish Oil, Great Fish Oil в Premium
Fish Oil (требуются соответствующие рецепты).
0.10.2
+ проверка на то, что мы действительно рыбачим, с репозицией;
+ проверка на застревание с возвратом на одну позицию назад;
0.10.3
+ правильно работает остановка рыбалки (Stop);
+ возобновляет рыбалку если моб исчез сам;
+ исправлено лечение бутылками;
+ исправлена репозиция;
+ показывает количество HP напавшего моба.
0.10.4
+ by MHz: Попробовав юзать твой скрипт с ботом L2Jes столкнулся с тем, что
полностью полагаться на пакет клиента 48 - ValidatePosition нельзя, поэтому
предлагаю дополнительно подтверждать свои координаты из пакета сервера
01 MoveBackwardToLocation.
0.10.5
+ сменил код выбора ItemID предметов;
+ если не выбрали продавца, то по окончанию крючков продовать не бежим;
0.10.6
+ рефакторинг кода;
+ вроде нашел место где после боя останавливается;
0.10.7
+ добавил отключение клиента (социал YES);
================================================================================
Проверялось на TheAbyss.ru x300(interlude) и локальном сервере (interlude)
================================================================================
Перед использованием скрипта изменяем под свой сервер, один раз:
- Name='имя своего чара';
- изменить перемещение к месту ловли (Mestolovli), смена места ловли (MenayemMesto),
репозицию после боя (Reposition);
- изменить константы при необходимости:
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false
java=false; //PTS - false, Java - true
debug=false; //если не хотим видеть отладочной информации
//оставить один из них или поставить свой
kID=1000000; //коэфф вычитаемый из NpcID C4 lagam.net
kID=1023000; //коэфф вычитаемый из NpcID C6 theAbyss.ru
1)
- покупаем удочку, крючки и при необходимости фишин-шоты;
- учим соответствующие скилы рыбалки;
- при желании защищаться - купить подходящее оружие, щит, соулшоты.
2) каждый раз для инициализации скрипта:
- запускаем скрипт (ставим галочку);
- ставим галочи в панели управления напротив необходимых позиций;
- становимся перед фишермэном, выбираем первое место ловли, жмем GO;
- чар сам идет на место рыбалки;
- дождавшись прихода на место ловли жмем START;
- при необходимости, включть соулшоты в автоматический режим.
Примечание:
- ловить лучше всего гномом;
- пути движения к местам ловли начинать от фишермэна;
- путь движения после смерти начинается с места появления после смерти.
На Абисе S>Пакет UserInfo #$04 очень тяжело дождаться, а он нужен для инициализации
скрипта. Нужно купить или продать не нужную вещицу и Пакет UserInfo #$04 прийдет от сервера.
На lagam.net(c4) проще, открываем инвентарь, сняли/одели оружие.
Скрипт настроен под определённое место. Для других мест нужно изменить перемещение
к месту рыбалки, смену места рыбалки, репозицию после боя, путь после смерти
(в скрипте зашито три места ловли). Теперь это сделать очень легко! Спасибо Alexsl!
Спасибо Xkor за пакетхак!
Спасибо участникам форума CoderX.ru за идеи для скрипта!
Скрипт распространяется как есть, и я не несу ответственности за то,
что ВЫ натворили у себя, его используя.
MyICQ 402988808
********************************************************************************}
const
//имя чара для которого включаем скрипт
Name='НикЧара'; //<------------------------------
//kID=1000000; //коэфф вычитаемый из NpcID C4 lagam.net
kID=1023000; //коэфф вычитаемый из NpcID C6 theAbyss.ru
//сюда вписываем ItemID предметов для автопродажи
TradeSellItem=[7686,7698,7697,6527,6521];
//количество предметов в массиве TradeSellItem
TradeSellItemCount=5;
//-----------------------------TradeBuyItem=[MyLureID];
TradeBuyItemCount=1;
//сюда вписываем ItemID предметов для автообмена
TradeMultiItem=[6908,6909,6910,6911,6912,6913,6914,6915,6916]; //нельзя изменять, собъется обмен!
//количество предметов в массиве TradeMultiItem
TradeMultiItemCount=9;//нельзя изменять, собъется обмен!
FO=6908; //запомним, чтобы отменять обен на пруфы
GFO=6909;
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false
java=false; //PTS - false, Java - true
debug=false; //если не хотим видеть отладочной информации
//эта переменная указывает уничтожить пакет или нет если он обработан
//может данные нужны для других скриптов
EraseCommandFromChat=true;
//***************************************************************
fish=1312; //ID fishing
pump=1313; //ID pumping
reel=1314; //ID reeling
//*******************************************************
// RecordFilesPath='.\scripts\fishing\TALKIN_ISLAND\'; //путь где хранятся наши файлы
RecordFilesPath='.\scripts\fishing\giran_harbor2\'; //путь где хранятся наши файлы
RecordPathName='Mestolovli1'; //файл по умолчанию
RecordFileExt='.txt';//расширение по умолчанию
RangeToCheckPoint=150;//дистанция до чекпоинта при которой считается , что мы достигли оного
MoveTrigerDelay=1000; //срабатывание таймера на движение 0,8 сек
cmdPrefix='==='; //с этих символов начинается команда
cmdDlm =' '; //разделитель параметров команды, параметры не должены содержать разделитель
//команды в общий чат
//пример
cmdRecordPath='rec'; //в общий чат "===rec giran1"
cmdSavePath='save'; //в общий чат "===save"
cmdMove='go'; //в общий чат "===go giran1"
cmdBack='back'; //в общий чат "===back giran1"
cmdStop='stop'; //останавливает следование по маршруту
maxitems=250; //max количество предметов в базе
maxnpc=50; //max количество контролируемых NPC
go=true; //бежать от продавца на место ловли
back=false; //бежать от места ловли к продавцу
//***************************************************************
var
getbuylist, getselllist, getmultisell : string;
PercentHP : integer; //при каком количестве HP в % юзать бутылку лечения
WeaponUse1 : boolean; //использовать оружие? true-да, false-нет
ShieldUse1 : boolean; //использовать щит? true-да, false-нет
HPuse1 : boolean; //использовать ли бутылки лечения? true-да, false-нет
ShotUse1 : boolean; //использовать ли фишин-шоты? true-да, false-нет
TradeBuyItem: array[0] of integer; //что надо купить [MyLureID];
NpcBase: array[1..2,1..maxnpc] of integer; //все NPC вокруг
KolvoNpc : integer; //количество Npc в базе
{
1 - OID
2 - ID
}
ItemBase: array[1..4,1..maxitems] of integer; //все предметы в инвентаре
ItemBase2: array[1..4,1..maxitems] of integer; //найденные по ItemID
{
1 - ObjectID
2 - ItemID
3 - ItemCount
4 - IsEquipped
}
MestoLovli, PMMesto, MMesto : integer;
isDie, isFishing, isEquipRod, isEquipLure, isEquipWpn: boolean;
NeedBuy, FishermanOID, ListID, ColvoItm, ColvoItm2, SocialID : integer;
ReadyToBuy, ReadyToSell, ReadyToMultiSell, add, CanFishHere : boolean;
trd, TradeCount, TradeID, EndTradeID, UpdType, ItemOID, ItemID, colv, trade: integer;
lucky1, failed1, fish1, fish2, mob1, death1: integer;
StartTime, EndTime: TDateTime;
fishin, ShowInf, MoveTimer, Trade1, CreatePFO: TTimer;
//здесь ID вещей которыми пользуемся при рыбалке
MyWeaponID : integer; //2500 (Dark Legion's Edge) 295 (Dwarven Trident)
MyShieldID : integer; //0 - не используем!
MyRodID : integer; //6529 (Baby Duck Rod)
MyLureID : integer; //7807 (Green Colored Lure - For Beginners)
MyShotID : integer; //6536 (Fishing Shot: D-grade)
MyHPID : integer; //1060=Lesser Healing Potion
FishermanID : integer; //8573; //Фишерман Monakan в Гиран-харборе
HPOID, ColvoHP, RodOID, LureOID, ColvoLure, ShotOID, ColvoShot : Integer;
iii, i, j: integer;
//защита от мобов
WeaponID, ShieldID, WeaponOID, ShieldOID : Integer;
but: integer ;
Lure1, Rod1, distanciya, status : boolean;
underAttack, HPuse2, Weapon2, Shield2, Lure2, Rod2, Shot2 : boolean;
//movement data
MovePath, //данные по которому мы будем двигатся в данный момент
RecordPath, //данные для записи пути
ItemsName, NpcsName, StringList, StringList2 : TStringList; //названия предметов, имена продавцов
Cmd, //команда на определенное действие 'fishing' 'trade' 'death' 'move'
RecordPathFileName: string; //название файла для записи
PointsCount: integer; //кол-во поинтов в процессе записи пути
SavePathEnabled: boolean; //флаг записи пути
MoveToPathEnabled: boolean; //флаг движения по пути
MoveToForward: boolean; //направление движения да-вперед, нет - назад
MoveStepIndex: integer; //текущ. чекпоинт (куды бежим сейчас)
old_X,old_Y,old_Z,old_time,chk_time: integer;
stop : boolean;
myX,myY,myZ: integer; //наши статы
myOID,myHP,myMP,myMaxHP,myMaxMP: integer;
AttackerID, AttackerOID,AttackerX,AttackerY,AttackerZ,AttackerMaxHP,AttackerHP : integer;
NetPing: string; // здесь запомним Нетпинг от клиента, будем сами его посылать
LogOutOk: boolean; // флаг показывающий, что мы отключили клиент
//............................................
//Список переменных формы
FormMain : TForm; //Создаваемая форма
Splitter1,Splitter2 : TSplitter;
Panel1 : TPanel;
ButtonPathBack,ButtonPathStop,ButtonPathGo,ButtonPathSave,ButtonPathRec,
ButtonFishingStart,ButtonFishingStop : TButton;
GroupBox1,GroupBox2,GroupBox3,GroupBox4 : TGroupBox;
Label1,Label2,Label4,Label5,Label6,Label7,Label12,Label13,Label8,Label9,Label17,
Label10,Label11,Label3,Label14,Label15 : TLabel;
CheckBoxRod,CheckBoxLure,CheckBoxWeapon,CheckBoxShield,CheckBoxFShot,CheckBoxFO,CheckBoxPU,
CheckBoxFisherman,CheckBoxHPotion : TCheckBox;
ComboBoxPath,ComboBoxRod,ComboBoxFShot,ComboBoxLure,ComboBoxWeapon,ComboBoxShield,
ComboBoxFisherman,ComboBoxHPotion : TComboBox;
EditPath,EditRodVal,EditLureVal,EditWeaponVal,EditShieldVal,EditFShotVal,
EditLureOID,EditWeaponOID,EditShieldOID,EditFShotOID,EditRodOID,EditFishermanOID,
EditLure,EditHealt,EditHpotionOID,EditHPotionVal : TEdit;
Stats, Msg : TMemo;
pbMyHP,pbMyMP,pbTargetHP:TProgressBar;
gbMyPanel,gbTargetPanel,gbMyCP,gbMyHP,gbMyMP,gbTargetHP:TGroupBox;
//............................................
//для Пакетхак v.3.1.9+
//***************************************************************
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin
// не срабатывает!
// NoFreeOnClientDisconnect;
// NoFreeOnServerDisconnect;
end;
//.....................
//.......................
//***************************************************************
//Вызывается при включении скрипта
//***************************************************************
procedure Init;
begin
FormMain:=Create_FormMain;
if not java then begin
//C4 lagam.net и C6 theAbyss.ru
getselllist:='menu_select?ask=-1&reply=8';
getbuylist:='menu_select?ask=-1&reply=0';
getmultisell:='menu_select?ask=-303&reply=517';
//для java getselllist в пакете NpcInfo
end;
PMMesto:=50; //количество сорвавшихся рыб, для начала смены места ловли
MMesto:=0; //здесь будем подсчитывать сорвавшуюся рыбу, для смены позиции
MestoLovli:=1; //номер места позиции ловли 1..3
lucky1:=0;
failed1:=0;
fish1:=0;
fish2:=0;
mob1:=0;
death1:=0;
FishermanOID:=0;
CanFishHere:=true; //здесь можно ловить
ReadyToBuy:=false;
ReadyToSell:=false;
ReadyToMultiSell:=false;
stop:=false; //нажали кнопку STOP?
isFishing:=false; //ловим?
StartTime:=time;
ShotOID:=0;
LureOID:=0;
Status:=false;
rod1:=true;
lure1:=true;
HPuse2:=false; //задействовано true-да, false-нет
weapon2:=false;
shield2:=false;
rod2:=false;
lure2:=false;
Shot2:=false;
underattack:=false; //атакован?
RecordPathFileName:='';
//RequestItemList вызываем инвентарь
buf:=hstr('14');///////////////////////////////////////////////////////////////////////////////////////
SendToServerEx(Name);
RecordPath:=TStringList.Create;
MovePath:=TStringList.Create;
ItemsName:=TStringList.Create;
NpcsName:=TStringList.Create;
StringList:=TStringList.Create;
StringList2:=TStringList.Create;
try
ItemsName.LoadFromFile(RecordFilesPath+'itemsid.ini');
except
msg.Lines.Add(RecordFilesPath+'itemsid.ini не найден!');
exit;
end;
try
NpcsName.LoadFromFile(RecordFilesPath+'npcsid.ini');
except
msg.Lines.Add(RecordFilesPath+'npcsid.ini не найден!');
exit;
end;
with ComboBoxFisherman do
begin
Items.Clear;
Items.Assign(NpcsName);
ItemIndex:=0;
end;
//таймеры, можно поправить время по обстоятельствам
MoveTimer:=TTimer.Create(nil);
MoveTimer.Enabled:=False;
MoveTimer.Interval:=MoveTrigerDelay;
MoveTimer.OnTimer:=@OnMove;
trade1:=TTimer.Create(nil);
trade1.OnTimer:=@OnTrade;
trade1.enabled:=false;
trade1.interval:=1000; //время задержки
fishin:=TTimer.Create(nil);
fishin.OnTimer:=@OnFishing;
fishin.enabled:=false;
fishin.interval:=3000; //время задержки
ShowInf:=TTimer.Create(nil);
ShowInf.OnTimer:=@OnShowInfo;
ShowInf.enabled:=true;
ShowInf.interval:=1000; //время задержки
CreatePFO:=TTimer.Create(nil);
CreatePFO.OnTimer:=@OnCreatePFO;
CreatePFO.enabled:=false;
CreatePFO.interval:=300000; //время задержки 5 мин
WeaponUse1:=false;
ShieldUse1:=false;
HPuse1:=false;
ShotUse1:=false;
//PercentHP:=70;
//здесь ID
MyWeaponID:=0;
MyShieldID:=0;
MyRodID:=0;
MyLureID:=0;
MyShotID:=0;
MyHPID:=0;
FishermanID:=0;
end;
//............................................
//***************************************************************
//Вызывается при выключении скрипта
//***************************************************************
procedure Free;
begin
ItemBase:=nil; ItemBase2:=nil;
//таймеры
ShowInf.Enabled:=false; ShowInf.Interval:=0; ShowInf.Free; ShowInf.OnTimer:=nil;
fishin.Enabled:=false; fishin.Interval:=0; fishin.Free; fishin.OnTimer:=nil;
trade1.Enabled:=false; trade1.Interval:=0; trade1.Free; trade1.OnTimer:=nil;
createpfo.Enabled:=false; createpfo.Interval:=0; createpfo.Free; createpfo.OnTimer:=nil;
movetimer.Enabled:=false; movetimer.Interval:=0; movetimer.Free; movetimer.OnTimer:=nil;
WeaponOID:=0; ShieldOID:=0; HPOID:=0; RodOID:=0; LureOID:=0; ShotOID:=0;
ColvoLure:=0; ColvoShot:=0;
if RecordPath<>nil then
try
RecordPath.Free;
except
debugmsg('error free RecordPath');
end;
if MovePath<>nil then
try
MovePath.Free;
except
debugmsg('error free MovePath');
end;
if ItemsName<>nil then
try
ItemsName.Free;
except
debugmsg('error free ItemsName');
end;
if NpcsName<>nil then
try
NpcsName.Free;
except
debugmsg('error free NpcName');
end;
if StringList<>nil then
try
StringList.Free;
except
debugmsg('error free StringList');
end;
if StringList2<>nil then
try
StringList2.Free;
except
debugmsg('error free StringList2');
end;
//достаточно освободить форму
Free_FormMain;
//отключение клиента
YesFreeOnClientDisconnect;
YesFreeOnServerDisconnect;
end;
//............................................
//***************************************************************
procedure Free_FormMain;
//Освобождаем ресурсы ...
begin
TRY
if FormMain<>NIL then begin
FormMain.Free;
FormMain:=NIL;
end;
FINALLY
END;
end; //Free_FormMain
//............................................
//***************************************************************
function Create_FormMain : TForm;
//Создаем форму и соотв. компоненты на ней ...
Var
Yes : boolean;
begin
Yes := FALSE;
Result := TForm.Create(nil);
TRY
//............................................
//Свойства формы
Result.Caption := 'FishingBot by NLObP v.0.10.7';
Result.Left := 397;
Result.Top := 233;
Result.Width := 620;
Result.Height := 730;
Result.FormStyle := fsNormal;
Result.Position := poDesigned;
Result.BorderStyle := bsSizeable;
Result.BorderWidth := 0;
Result.WindowState := wsNormal;
Result.Color := clBtnFace;
Result.Font.Name := 'Tahoma';
Result.Font.Size := 8;
Result.Font.Color := clWindowText;
Result.Font.CharSet:= 1;
//......................................
//......................................
//Panel1
Panel1 := TPanel.Create(Result);
Panel1.Parent := Result;
Panel1.Left := 0;
Panel1.Top := 0;
Panel1.Width := 425;
Panel1.Height := 471;
Panel1.Visible := TRUE;
Panel1.Tag := 0;
Panel1.Enabled := TRUE;
Panel1.Hint := '';
Panel1.ShowHint := FALSE;
Panel1.Caption := '';
Panel1.Align := alClient;
Panel1.Color := clBtnFace;
Panel1.Font.Name := 'Tahoma';
Panel1.Font.Size := 8;
Panel1.Font.Color := clWindowText;
Panel1.Font.CharSet := 1;
Panel1.BevelWidth := 1;
Panel1.BorderWidth := 0;
Panel1.BevelInner := bvNone;
Panel1.BevelOuter := bvRaised;
Panel1.TabOrder := 0;
Panel1.TabStop := FALSE;
Panel1.AutoSize := FALSE;
//......................................
//=============== My Attr Panel ========
gbMyPanel:=TGroupBox.Create(Panel1);
gbMyPanel.parent:=Panel1;
gbMyPanel.caption:=' ['+Name+'] ';
gbMyPanel.ShowHint:=true;
gbMyPanel.Hint:=' ['+Name+'] ';
gbMyPanel.height:=115;
gbMyPanel.width:=210;
gbMyPanel.left:=1;
gbMyPanel.top:=420;
//......................................
//==================== HP ==============
gbMyHP:=TGroupBox.Create(gbMyPanel);
gbMyHP.parent:=gbMyPanel;
gbMyHP.Color:=clRed;
gbMyHP.caption:=' HP: 0/0 ';
gbMyHP.height:=33;
gbMyHP.width:=200;
gbMyHP.left:=5;
gbMyHP.top:=14;
//......................................
pbMyHP:=TProgressBar.Create(gbMyPanel);
pbMyHP.parent:=gbMyPanel;
pbMyHP.smooth:=true;
pbMyHP.max:=1200;
pbMyHP.min:=0;
pbMyHP.position:=0;
pbMyHP.step:=10;
pbMyHP.height:=16;
pbMyHP.width:=190;
pbMyHP.left:=10;
pbMyHP.top:=26;
//......................................
//==================== MP ==============
gbMyMP:=TGroupBox.Create(gbMyPanel);
gbMyMP.parent:=gbMyPanel;
gbMyMP.Color:=$FF7000;
gbMyMP.caption:=' MP: 0/0 ';
gbMyMP.height:=33;
gbMyMP.width:=200;
gbMyMP.left:=5;
gbMyMP.top:=50;
//......................................
pbMyMP:=TProgressBar.Create(gbMyPanel);
pbMyMP.parent:=gbMyPanel;
pbMyMP.smooth:=true;
pbMyMP.max:=1200;
pbMyMP.min:=0;
pbMyMP.position:=0;
pbMyMP.step:=10;
pbMyMP.height:=16;
pbMyMP.width:=190;
pbMyMP.left:=10;
pbMyMP.top:=62;
//......................................
//================== Target Info Panel =
gbTargetPanel:=TGroupBox.Create(Panel1);
gbTargetPanel.parent:=Panel1;
gbTargetPanel.caption:=' [TargetName] ';
gbTargetPanel.ShowHint:=true;
gbTargetPanel.Hint:=' [TargetName] ';
gbTargetPanel.height:=115;
gbTargetPanel.width:=210;
gbTargetPanel.left:=212;
gbTargetPanel.top:=420;
//......................................
//==================== HP ==============
gbTargetHP:=TGroupBox.Create(gbTargetPanel);
gbTargetHP.parent:=gbTargetPanel;
gbTargetHP.Color:=clRed;
gbTargetHP.caption:=' HP: 0/0 ';
gbTargetHP.height:=33;
gbTargetHP.width:=200;
gbTargetHP.left:=5;
gbTargetHP.top:=14;
//......................................
pbTargetHP:=TProgressBar.Create(gbTargetPanel);
pbTargetHP.parent:=gbTargetPanel;
pbTargetHP.smooth:=true;
pbTargetHP.max:=1200;
pbTargetHP.min:=0;
pbTargetHP.position:=0;
pbTargetHP.step:=10;
pbTargetHP.height:=16;
pbTargetHP.width:=190;
pbTargetHP.left:=10;
pbTargetHP.top:=26;
//......................................
//......................................
//GroupBox1
GroupBox1 := TGroupBox.Create(Result);
GroupBox1.Parent := Panel1;
GroupBox1.Left := 1;
GroupBox1.Top := 343;
GroupBox1.Width := 421;
GroupBox1.Height := 76;
GroupBox1.Visible := TRUE;
GroupBox1.Tag := 0;
GroupBox1.Enabled := TRUE;
GroupBox1.Hint := '';
GroupBox1.ShowHint := FALSE;
GroupBox1.Caption := 'Создание путей движения';
GroupBox1.Align := alNone;
GroupBox1.Color := clBtnFace;
GroupBox1.Font.Name := 'Tahoma';
GroupBox1.Font.Size := 8;
GroupBox1.Font.Color := clWindowText;
GroupBox1.Font.CharSet := 1;
GroupBox1.TabOrder := 0;
GroupBox1.TabStop := FALSE;
//......................................
//......................................
//Label1
Label1 := TLabel.Create(Result);
Label1.Parent := GroupBox1;
Label1.Left := 3;
Label1.Top := 18;
Label1.Width := 58;
Label1.Height := 13;
Label1.Visible := TRUE;
Label1.Tag := 0;
Label1.Enabled := TRUE;
Label1.Hint := '';
Label1.ShowHint := FALSE;
Label1.Caption := 'Имя файла:';
Label1.Transparent := TRUE;
Label1.WordWrap := FALSE;
Label1.Alignment := taLeftJustify;
Label1.Layout := tlTop;
Label1.AutoSize := TRUE;
Label1.Align := alNone;
Label1.Font.Name := 'Tahoma';
Label1.Font.Size := 8;
Label1.Font.Color := clWindowText;
Label1.Color := clBtnFace;
//......................................
//......................................
//ButtonPathBack
ButtonPathBack := TButton.Create(Result);
ButtonPathBack.Parent := GroupBox1;
ButtonPathBack.Left := 265;
ButtonPathBack.Top := 42;
ButtonPathBack.Width := 75;
ButtonPathBack.Height := 25;
ButtonPathBack.Visible := TRUE;
ButtonPathBack.Tag := 0;
ButtonPathBack.Enabled := TRUE;
ButtonPathBack.Hint := '';
ButtonPathBack.ShowHint := FALSE;
ButtonPathBack.Caption := 'Back';
ButtonPathBack.Font.Name := 'Tahoma';
ButtonPathBack.Font.Size := 8;
ButtonPathBack.Font.Color := clWindowText;
ButtonPathBack.Font.CharSet := 1;
ButtonPathBack.TabOrder := 0;
ButtonPathBack.TabStop := TRUE;
ButtonPathBack.Cancel := FALSE;
ButtonPathBack.ModalResult := 0;
ButtonPathBack.OnClick := @ButtonPathBack_Click;
//......................................
//......................................
//ButtonPathStop
ButtonPathStop := TButton.Create(Result);
ButtonPathStop.Parent := GroupBox1;
ButtonPathStop.Left := 343;
ButtonPathStop.Top := 42;
ButtonPathStop.Width := 75;
ButtonPathStop.Height := 25;
ButtonPathStop.Visible := TRUE;
ButtonPathStop.Tag := 0;
ButtonPathStop.Enabled := TRUE;
ButtonPathStop.Hint := '';
ButtonPathStop.ShowHint := FALSE;
ButtonPathStop.Caption := 'Stop';
ButtonPathStop.Font.Name := 'Tahoma';
ButtonPathStop.Font.Size := 8;
ButtonPathStop.Font.Color := clWindowText;
ButtonPathStop.Font.CharSet := 1;
ButtonPathStop.TabOrder := 1;
ButtonPathStop.TabStop := TRUE;
ButtonPathStop.Cancel := FALSE;
ButtonPathStop.ModalResult := 0;
ButtonPathStop.OnClick := @ButtonPathStop_Click;
//......................................
//......................................
//ButtonPathGo
ButtonPathGo := TButton.Create(Result);
ButtonPathGo.Parent := GroupBox1;
ButtonPathGo.Left := 187;
ButtonPathGo.Top := 42;
ButtonPathGo.Width := 75;
ButtonPathGo.Height := 25;
ButtonPathGo.Visible := TRUE;
ButtonPathGo.Tag := 0;
ButtonPathGo.Enabled := TRUE;
ButtonPathGo.Hint := '';
ButtonPathGo.ShowHint := FALSE;
ButtonPathGo.Caption := 'Go';
ButtonPathGo.Font.Name := 'Tahoma';
ButtonPathGo.Font.Size := 8;
ButtonPathGo.Font.Color := clWindowText;
ButtonPathGo.Font.CharSet := 1;
ButtonPathGo.TabOrder := 2;
ButtonPathGo.TabStop := TRUE;
ButtonPathGo.Cancel := FALSE;
ButtonPathGo.ModalResult := 0;
ButtonPathGo.OnClick := @ButtonPathGo_Click;
//......................................
//......................................
//ButtonPathSave
ButtonPathSave := TButton.Create(Result);
ButtonPathSave.Parent := GroupBox1;
ButtonPathSave.Left := 101;
ButtonPathSave.Top := 42;
ButtonPathSave.Width := 75;
ButtonPathSave.Height := 25;
ButtonPathSave.Visible := TRUE;
ButtonPathSave.Tag := 0;
ButtonPathSave.Enabled := TRUE;
ButtonPathSave.Hint := '';
ButtonPathSave.ShowHint := FALSE;
ButtonPathSave.Caption := 'Save';
ButtonPathSave.Font.Name := 'Tahoma';
ButtonPathSave.Font.Size := 8;
ButtonPathSave.Font.Color := clWindowText;
ButtonPathSave.Font.CharSet := 1;
ButtonPathSave.TabOrder := 3;
ButtonPathSave.TabStop := TRUE;
ButtonPathSave.Cancel := FALSE;
ButtonPathSave.ModalResult := 0;
ButtonPathSave.OnClick := @ButtonPathSave_Click;
//......................................
//......................................
//ButtonPathRec
ButtonPathRec := TButton.Create(Result);
ButtonPathRec.Parent := GroupBox1;
ButtonPathRec.Left := 14;
ButtonPathRec.Top := 42;
ButtonPathRec.Width := 75;
ButtonPathRec.Height := 25;
ButtonPathRec.Visible := TRUE;
ButtonPathRec.Tag := 0;
ButtonPathRec.Enabled := TRUE;
ButtonPathRec.Hint := '';
ButtonPathRec.ShowHint := FALSE;
ButtonPathRec.Caption := 'Rec';
ButtonPathRec.Font.Name := 'Tahoma';
ButtonPathRec.Font.Size := 8;
ButtonPathRec.Font.Color := clWindowText;
ButtonPathRec.Font.CharSet := 1;
ButtonPathRec.TabOrder := 4;
ButtonPathRec.TabStop := TRUE;
ButtonPathRec.Cancel := FALSE;
ButtonPathRec.ModalResult := 0;
ButtonPathRec.OnClick := @ButtonPathRec_Click;
//......................................
//......................................
//EditPath
EditPath := TEdit.Create(Result);
EditPath.Parent := GroupBox1;
EditPath.Left := 67;
EditPath.Top := 15;
EditPath.Width := 109;
EditPath.Height := 21;
EditPath.Visible := TRUE;
EditPath.Tag := 0;
EditPath.Enabled := TRUE;
EditPath.Hint := 'Введи имя файла для сохранения пути';
EditPath.ShowHint := TRUE;
EditPath.Text := 'Mestolovli1';
EditPath.Font.Name := 'Tahoma';
EditPath.Font.Size := 8;
EditPath.Font.Color := clWindowText;
EditPath.Color := clWindow;
EditPath.TabOrder := 5;
EditPath.TabStop := TRUE;
EditPath.ReadOnly := FALSE;
EditPath.MaxLength := 0;
EditPath.AutoSize := TRUE;
// EditPath.OnChange := @EditPath_Change;
//......................................
//......................................
//ComboBoxPath
ComboBoxPath := TComboBox.Create(Result);
ComboBoxPath.Parent := GroupBox1;
ComboBoxPath.Left := 187;
ComboBoxPath.Top := 15;
ComboBoxPath.Width := 231;
ComboBoxPath.Height := 21;
ComboBoxPath.Visible := TRUE;
ComboBoxPath.Tag := 0;
ComboBoxPath.Enabled := TRUE;
ComboBoxPath.Hint := 'Выбери из списка путь для движения';
ComboBoxPath.ShowHint := TRUE;
ComboBoxPath.Text := 'Mestolovli1';
ComboBoxPath.Font.Name := 'Tahoma';
ComboBoxPath.Font.Size := 8;
ComboBoxPath.Font.Color := clWindowText;
ComboBoxPath.Color := clWindow;
ComboBoxPath.TabOrder := 6;
ComboBoxPath.TabStop := TRUE;
ComboBoxPath.Sorted := FALSE;
ComboBoxPath.ItemHeight := 13;
ComboBoxPath.OnChange := @ComboBoxPath_Change;
ComboBoxPath.Items.ADD('Mestolovli1');
ComboBoxPath.Items.ADD('Mestolovli2');
ComboBoxPath.Items.ADD('Mestolovli3');
ComboBoxPath.Items.ADD('MenayemMesto1');
ComboBoxPath.Items.ADD('MenayemMesto2');
ComboBoxPath.Items.ADD('MenayemMesto3');
ComboBoxPath.Items.ADD('Reposition1');
ComboBoxPath.Items.ADD('Reposition2');
ComboBoxPath.Items.ADD('Reposition3');
ComboBoxPath.Items.ADD('AfterDeath');
ComboBoxPath.ItemIndex := 0;
//......................................
//......................................
//GroupBox2
GroupBox2 := TGroupBox.Create(Result);
GroupBox2.Parent := Panel1;
GroupBox2.Left := 1;
GroupBox2.Top := -2;
GroupBox2.Width := 421;
GroupBox2.Height := 195;
GroupBox2.Visible := TRUE;
GroupBox2.Tag := 0;
GroupBox2.Enabled := TRUE;
GroupBox2.Hint := '';
GroupBox2.ShowHint := FALSE;
GroupBox2.Caption := 'Рыбалка';
GroupBox2.Align := alNone;
GroupBox2.Color := clBtnFace;
GroupBox2.Font.Name := 'Tahoma';
GroupBox2.Font.Size := 8;
GroupBox2.Font.Color := clWindowText;
GroupBox2.Font.CharSet := 1;
GroupBox2.TabOrder := 1;
GroupBox2.TabStop := FALSE;
//......................................
//......................................
//Label2
Label2 := TLabel.Create(Result);
Label2.Parent := GroupBox2;
Label2.Left := 400;
Label2.Top := 19;
Label2.Width := 18;
Label2.Height := 13;
Label2.Visible := TRUE;
Label2.Tag := 0;
Label2.Enabled := TRUE;
Label2.Hint := '';
Label2.ShowHint := FALSE;
Label2.Caption := 'шт.';
Label2.Transparent := TRUE;
Label2.WordWrap := FALSE;
Label2.Alignment := taLeftJustify;
Label2.Layout := tlTop;
Label2.AutoSize := TRUE;
Label2.Align := alNone;
Label2.Font.Name := 'Tahoma';
Label2.Font.Size := 8;
Label2.Font.Color := clWindowText;
Label2.Color := clBtnFace;
//......................................
//......................................
//Label4
Label4 := TLabel.Create(Result);
Label4.Parent := GroupBox2;
Label4.Left := 400;
Label4.Top := 43;
Label4.Width := 18;
Label4.Height := 13;
Label4.Visible := TRUE;
Label4.Tag := 0;
Label4.Enabled := TRUE;
Label4.Hint := '';
Label4.ShowHint := FALSE;
Label4.Caption := 'шт.';
Label4.Transparent := TRUE;
Label4.WordWrap := FALSE;
Label4.Alignment := taLeftJustify;
Label4.Layout := tlTop;
Label4.AutoSize := TRUE;
Label4.Align := alNone;
Label4.Font.Name := 'Tahoma';
Label4.Font.Size := 8;
Label4.Font.Color := clWindowText;
Label4.Color := clBtnFace;
//......................................
//......................................
//Label5
Label5 := TLabel.Create(Result);
Label5.Parent := GroupBox2;
Label5.Left := 400;
Label5.Top := 67;
Label5.Width := 18;
Label5.Height := 13;
Label5.Visible := TRUE;
Label5.Tag := 0;
Label5.Enabled := TRUE;
Label5.Hint := '';
Label5.ShowHint := FALSE;
Label5.Caption := 'шт.';
Label5.Transparent := TRUE;
Label5.WordWrap := FALSE;
Label5.Alignment := taLeftJustify;
Label5.Layout := tlTop;
Label5.AutoSize := TRUE;
Label5.Align := alNone;
Label5.Font.Name := 'Tahoma';
Label5.Font.Size := 8;
Label5.Font.Color := clWindowText;
Label5.Color := clBtnFace;
//......................................
//......................................
//Label6
Label6 := TLabel.Create(Result);
Label6.Parent := GroupBox2;
Label6.Left := 400;
Label6.Top := 91;
Label6.Width := 18;
Label6.Height := 13;
Label6.Visible := TRUE;
Label6.Tag := 0;
Label6.Enabled := TRUE;
Label6.Hint := '';
Label6.ShowHint := FALSE;
Label6.Caption := 'шт.';
Label6.Transparent := TRUE;
Label6.WordWrap := FALSE;
Label6.Alignment := taLeftJustify;
Label6.Layout := tlTop;
Label6.AutoSize := TRUE;
Label6.Align := alNone;
Label6.Font.Name := 'Tahoma';
Label6.Font.Size := 8;
Label6.Font.Color := clWindowText;
Label6.Color := clBtnFace;
//......................................
//......................................
//Label7
Label7 := TLabel.Create(Result);
Label7.Parent := GroupBox2;
Label7.Left := 400;
Label7.Top := 116;
Label7.Width := 18;
Label7.Height := 13;
Label7.Visible := TRUE;
Label7.Tag := 0;
Label7.Enabled := TRUE;
Label7.Hint := '';
Label7.ShowHint := FALSE;
Label7.Caption := 'шт.';
Label7.Transparent := TRUE;
Label7.WordWrap := FALSE;
Label7.Alignment := taLeftJustify;
Label7.Layout := tlTop;
Label7.AutoSize := TRUE;
Label7.Align := alNone;
Label7.Font.Name := 'Tahoma';
Label7.Font.Size := 8;
Label7.Font.Color := clWindowText;
Label7.Color := clBtnFace;
//......................................
//......................................
//Label12
Label12 := TLabel.Create(Result);
Label12.Parent := GroupBox2;
Label12.Left := 257;
Label12.Top := 3;
Label12.Width := 33;
Label12.Height := 13;
Label12.Visible := TRUE;
Label12.Tag := 0;
Label12.Enabled := TRUE;
Label12.Hint := '';
Label12.ShowHint := FALSE;
Label12.Caption := 'ItemID';
Label12.Transparent := TRUE;
Label12.WordWrap := FALSE;
Label12.Alignment := taLeftJustify;
Label12.Layout := tlTop;
Label12.AutoSize := TRUE;
Label12.Align := alNone;
Label12.Font.Name := 'Tahoma';
Label12.Font.Size := 8;
Label12.Font.Color := clWindowText;
Label12.Color := clBtnFace;
//......................................
//......................................
//Label13
Label13 := TLabel.Create(Result);
Label13.Parent := GroupBox2;
Label13.Left := 333;
Label13.Top := 3;
Label13.Width := 35;
Label13.Height := 13;
Label13.Visible := TRUE;
Label13.Tag := 0;
Label13.Enabled := TRUE;
Label13.Hint := '';
Label13.ShowHint := FALSE;
Label13.Caption := 'Кол-во';
Label13.Transparent := TRUE;
Label13.WordWrap := FALSE;
Label13.Alignment := taLeftJustify;
Label13.Layout := tlTop;
Label13.AutoSize := TRUE;
Label13.Align := alNone;
Label13.Font.Name := 'Tahoma';
Label13.Font.Size := 8;
Label13.Font.Color := clWindowText;
Label13.Color := clBtnFace;
//......................................
//......................................
//CheckBoxRod
CheckBoxRod := TCheckBox.Create(Result);
CheckBoxRod.Parent := GroupBox2;
CheckBoxRod.Left := 18;
CheckBoxRod.Top := 18;
CheckBoxRod.Width := 55;
CheckBoxRod.Height := 17;
CheckBoxRod.Visible := TRUE;
CheckBoxRod.Tag := 0;
CheckBoxRod.Enabled := TRUE;
CheckBoxRod.Hint := 'Поставить галочку если выбрали удочку';
CheckBoxRod.ShowHint := TRUE;
CheckBoxRod.Caption := 'Rod';
CheckBoxRod.Font.Name := 'Tahoma';
CheckBoxRod.Font.Size := 8;
CheckBoxRod.Font.Color := clWindowText;
CheckBoxRod.Color := clBtnFace;
CheckBoxRod.TabOrder := 0;
CheckBoxRod.TabStop := TRUE;
CheckBoxRod.Checked := FALSE;
CheckBoxRod.AllowGrayed := FALSE;
CheckBoxRod.State := cbUnchecked;
CheckBoxRod.OnClick := @CheckBoxRod_Click;
//......................................
//......................................
//ComboBoxRod
ComboBoxRod := TComboBox.Create(Result);
ComboBoxRod.Parent := GroupBox2;
ComboBoxRod.Left := 74;
ComboBoxRod.Top := 16;
ComboBoxRod.Width := 169;
ComboBoxRod.Height := 21;
ComboBoxRod.Visible := TRUE;
ComboBoxRod.Tag := 0;
ComboBoxRod.Enabled := TRUE;
ComboBoxRod.Hint := 'Выбери из списка удочку';
ComboBoxRod.ShowHint := TRUE;
ComboBoxRod.Text := 'ComboBoxRod';
ComboBoxRod.Font.Name := 'Tahoma';
ComboBoxRod.Font.Size := 8;
ComboBoxRod.Font.Color := clWindowText;
ComboBoxRod.Color := clWindow;
ComboBoxRod.TabOrder := 1;
ComboBoxRod.TabStop := TRUE;
ComboBoxRod.ItemIndex := -1;
ComboBoxRod.Sorted := FALSE;
ComboBoxRod.ItemHeight := 13;
ComboBoxRod.OnChange := @ComboBoxRod_Change;
//......................................
//......................................
//ComboBoxFShot
ComboBoxFShot := TComboBox.Create(Result);
ComboBoxFShot.Parent := GroupBox2;
ComboBoxFShot.Left := 74;
ComboBoxFShot.Top := 113;
ComboBoxFShot.Width := 169;
ComboBoxFShot.Height := 21;
ComboBoxFShot.Visible := TRUE;
ComboBoxFShot.Tag := 0;
ComboBoxFShot.Enabled := TRUE;
ComboBoxFShot.Hint := 'Выбери из списка фишиншоты';
ComboBoxFShot.ShowHint := TRUE;
ComboBoxFShot.Text := 'ComboBoxFShot';
ComboBoxFShot.Font.Name := 'Tahoma';
ComboBoxFShot.Font.Size := 8;
ComboBoxFShot.Font.Color := clWindowText;
ComboBoxFShot.Color := clWindow;
ComboBoxFShot.TabOrder := 2;
ComboBoxFShot.TabStop := TRUE;
ComboBoxFShot.ItemIndex := -1;
ComboBoxFShot.Sorted := FALSE;
ComboBoxFShot.ItemHeight := 13;
ComboBoxFShot.OnChange := @ComboBoxFShot_Change;
//......................................
//......................................
//ButtonFishingStart
ButtonFishingStart := TButton.Create(Result);
ButtonFishingStart.Parent := GroupBox2;
ButtonFishingStart.Left := 168;
ButtonFishingStart.Top := 159;
ButtonFishingStart.Width := 75;
ButtonFishingStart.Height := 25;
ButtonFishingStart.Visible := TRUE;
ButtonFishingStart.Tag := 0;
ButtonFishingStart.Enabled := TRUE;
ButtonFishingStart.Hint := 'Начать рыбалку';
ButtonFishingStart.ShowHint := TRUE;
ButtonFishingStart.Caption := 'Start';
ButtonFishingStart.Font.Name := 'Tahoma';
ButtonFishingStart.Font.Size := 8;
ButtonFishingStart.Font.Color := clWindowText;
ButtonFishingStart.Font.CharSet := 1;
ButtonFishingStart.TabOrder := 3;
ButtonFishingStart.TabStop := TRUE;
ButtonFishingStart.Cancel := FALSE;
ButtonFishingStart.ModalResult := 0;
ButtonFishingStart.OnClick := @ButtonFishingStart_Click;
//......................................
//......................................
//ButtonFishingStop
ButtonFishingStop := TButton.Create(Result);
ButtonFishingStop.Parent := GroupBox2;
ButtonFishingStop.Left := 306;
ButtonFishingStop.Top := 159;
ButtonFishingStop.Width := 75;
ButtonFishingStop.Height := 25;
ButtonFishingStop.Visible := TRUE;
ButtonFishingStop.Tag := 0;
ButtonFishingStop.Enabled := TRUE;
ButtonFishingStop.Hint := 'Остановить рыбалку';
ButtonFishingStop.ShowHint := TRUE;
ButtonFishingStop.Caption := 'Stop';
ButtonFishingStop.Font.Name := 'Tahoma';
ButtonFishingStop.Font.Size := 8;
ButtonFishingStop.Font.Color := clWindowText;
ButtonFishingStop.Font.CharSet := 1;
ButtonFishingStop.TabOrder := 4;
ButtonFishingStop.TabStop := TRUE;
ButtonFishingStop.Cancel := FALSE;
ButtonFishingStop.ModalResult := 0;
ButtonFishingStop.OnClick := @ButtonFishingStop_Click;
//......................................
//......................................
//CheckBoxLure
CheckBoxLure := TCheckBox.Create(Result);
CheckBoxLure.Parent := GroupBox2;
CheckBoxLure.Left := 18;
CheckBoxLure.Top := 41;
CheckBoxLure.Width := 55;
CheckBoxLure.Height := 23;
CheckBoxLure.Visible := TRUE;
CheckBoxLure.Tag := 0;
CheckBoxLure.Enabled := TRUE;
CheckBoxLure.Hint := 'Поставить галочку если выбрали крючёк';
CheckBoxLure.ShowHint := TRUE;
CheckBoxLure.Caption := 'Lure';
CheckBoxLure.Font.Name := 'Tahoma';
CheckBoxLure.Font.Size := 8;
CheckBoxLure.Font.Color := clWindowText;
CheckBoxLure.Color := clBtnFace;
CheckBoxLure.TabOrder := 5;
CheckBoxLure.TabStop := TRUE;
CheckBoxLure.Checked := FALSE;
CheckBoxLure.AllowGrayed := FALSE;
CheckBoxLure.State := cbUnchecked;
CheckBoxLure.OnClick := @CheckBoxLure_Click;
//......................................
//......................................
//CheckBoxWeapon
CheckBoxWeapon := TCheckBox.Create(Result);
CheckBoxWeapon.Parent := GroupBox2;
CheckBoxWeapon.Left := 18;
CheckBoxWeapon.Top := 64;
CheckBoxWeapon.Width := 55;
CheckBoxWeapon.Height := 22;
CheckBoxWeapon.Visible := TRUE;
CheckBoxWeapon.Tag := 0;
CheckBoxWeapon.Enabled := TRUE;
CheckBoxWeapon.Hint := 'Поставить галочку если выбрали оружие';
CheckBoxWeapon.ShowHint := TRUE;
CheckBoxWeapon.Caption := 'Weapon';
CheckBoxWeapon.Font.Name := 'Tahoma';
CheckBoxWeapon.Font.Size := 8;
CheckBoxWeapon.Font.Color := clWindowText;
CheckBoxWeapon.Color := clBtnFace;
CheckBoxWeapon.TabOrder := 6;
CheckBoxWeapon.TabStop := TRUE;
CheckBoxWeapon.Checked := FALSE;
CheckBoxWeapon.AllowGrayed := FALSE;
CheckBoxWeapon.State := cbUnchecked;
CheckBoxWeapon.OnClick := @CheckBoxWeapon_Click;
//......................................
//......................................
//CheckBoxShield
CheckBoxShield := TCheckBox.Create(Result);
CheckBoxShield.Parent := GroupBox2;
CheckBoxShield.Left := 18;
CheckBoxShield.Top := 92;
CheckBoxShield.Width := 52;
CheckBoxShield.Height := 17;
CheckBoxShield.Visible := TRUE;
CheckBoxShield.Tag := 0;
CheckBoxShield.Enabled := TRUE;
CheckBoxShield.Hint := 'Поставить галочку если выбрали щит';
CheckBoxShield.ShowHint := TRUE;
CheckBoxShield.Caption := 'Shield';
CheckBoxShield.Font.Name := 'Tahoma';
CheckBoxShield.Font.Size := 8;
CheckBoxShield.Font.Color := clWindowText;
CheckBoxShield.Color := clBtnFace;
CheckBoxShield.TabOrder := 7;
CheckBoxShield.TabStop := TRUE;
CheckBoxShield.Checked := FALSE;
CheckBoxShield.AllowGrayed := FALSE;
CheckBoxShield.State := cbUnchecked;
CheckBoxShield.OnClick := @CheckBoxShield_Click;
//......................................
//......................................
//CheckBoxFShot
CheckBoxFShot := TCheckBox.Create(Result);
CheckBoxFShot.Parent := GroupBox2;
CheckBoxFShot.Left := 18;
CheckBoxFShot.Top := 116;
CheckBoxFShot.Width := 52;
CheckBoxFShot.Height := 17;
CheckBoxFShot.Visible := TRUE;
CheckBoxFShot.Tag := 0;
CheckBoxFShot.Enabled := TRUE;
CheckBoxFShot.Hint := 'Поставить галочку если выбрали фишиншоты';
CheckBoxFShot.ShowHint := TRUE;
CheckBoxFShot.Caption := 'FShot';
CheckBoxFShot.Font.Name := 'Tahoma';
CheckBoxFShot.Font.Size := 8;
CheckBoxFShot.Font.Color := clWindowText;
CheckBoxFShot.Color := clBtnFace;
CheckBoxFShot.TabOrder := 8;
CheckBoxFShot.TabStop := TRUE;
CheckBoxFShot.Checked := FALSE;
CheckBoxFShot.AllowGrayed := FALSE;
CheckBoxFShot.State := cbUnchecked;
CheckBoxFShot.OnClick := @CheckBoxFShot_Click;
//......................................
//......................................
//ComboBoxLure
ComboBoxLure := TComboBox.Create(Result);
ComboBoxLure.Parent := GroupBox2;
ComboBoxLure.Left := 74;
ComboBoxLure.Top := 40;
ComboBoxLure.Width := 169;
ComboBoxLure.Height := 21;
ComboBoxLure.Visible := TRUE;
ComboBoxLure.Tag := 0;
ComboBoxLure.Enabled := TRUE;
ComboBoxLure.Hint := 'Выбери из списка крючёк';
ComboBoxLure.ShowHint := TRUE;
ComboBoxLure.Text := 'ComboBoxLure';
ComboBoxLure.Font.Name := 'Tahoma';
ComboBoxLure.Font.Size := 8;
ComboBoxLure.Font.Color := clWindowText;
ComboBoxLure.Color := clWindow;
ComboBoxLure.TabOrder := 9;
ComboBoxLure.TabStop := TRUE;
ComboBoxLure.ItemIndex := -1;
ComboBoxLure.Sorted := FALSE;
ComboBoxLure.ItemHeight := 13;
ComboBoxLure.OnChange := @ComboBoxLure_Change;
//......................................
//......................................
//ComboBoxWeapon
ComboBoxWeapon := TComboBox.Create(Result);
ComboBoxWeapon.Parent := GroupBox2;
ComboBoxWeapon.Left := 74;
ComboBoxWeapon.Top := 64;
ComboBoxWeapon.Width := 169;
ComboBoxWeapon.Height := 21;
ComboBoxWeapon.Visible := TRUE;
ComboBoxWeapon.Tag := 0;
ComboBoxWeapon.Enabled := TRUE;
ComboBoxWeapon.Hint := 'Выбери из списка оружие';
ComboBoxWeapon.ShowHint := TRUE;
ComboBoxWeapon.Text := 'ComboBoxWeapon';
ComboBoxWeapon.Font.Name := 'Tahoma';
ComboBoxWeapon.Font.Size := 8;
ComboBoxWeapon.Font.Color := clWindowText;
ComboBoxWeapon.Color := clWindow;
ComboBoxWeapon.TabOrder := 10;
ComboBoxWeapon.TabStop := TRUE;
ComboBoxWeapon.ItemIndex := -1;
ComboBoxWeapon.Sorted := FALSE;
ComboBoxWeapon.ItemHeight := 13;
ComboBoxWeapon.OnChange := @ComboBoxWeapon_Change;
//......................................
//......................................
//ComboBoxShield
ComboBoxShield := TComboBox.Create(Result);
ComboBoxShield.Parent := GroupBox2;
ComboBoxShield.Left := 74;
ComboBoxShield.Top := 88;
ComboBoxShield.Width := 169;
ComboBoxShield.Height := 21;
ComboBoxShield.Visible := TRUE;
ComboBoxShield.Tag := 0;
ComboBoxShield.Enabled := TRUE;
ComboBoxShield.Hint := 'Выбери из списка щит';
ComboBoxShield.ShowHint := TRUE;
ComboBoxShield.Text := 'ComboBoxShield';
ComboBoxShield.Font.Name := 'Tahoma';
ComboBoxShield.Font.Size := 8;
ComboBoxShield.Font.Color := clWindowText;
ComboBoxShield.Color := clWindow;
ComboBoxShield.TabOrder := 11;
ComboBoxShield.TabStop := TRUE;
ComboBoxShield.ItemIndex := -1;
ComboBoxShield.Sorted := FALSE;
ComboBoxShield.ItemHeight := 13;
ComboBoxShield.OnChange := @ComboBoxShield_Change;
//......................................
//......................................
//CheckBoxFO
CheckBoxFO := TCheckBox.Create(Result);
CheckBoxFO.Parent := GroupBox2;
CheckBoxFO.Left := 18;
CheckBoxFO.Top := 140;
CheckBoxFO.Width := 105;
CheckBoxFO.Height := 17;
CheckBoxFO.Visible := TRUE;
CheckBoxFO.Tag := 0;
CheckBoxFO.Enabled := TRUE;
CheckBoxFO.Hint := 'Поставить галочку если хотим преобразовывать масло';
CheckBoxFO.ShowHint := TRUE;
CheckBoxFO.Caption := 'FO->GFO->PFO';
CheckBoxFO.Font.Name := 'Tahoma';
CheckBoxFO.Font.Size := 8;
CheckBoxFO.Font.Color := clWindowText;
CheckBoxFO.Color := clBtnFace;
CheckBoxFO.TabOrder := 12;
CheckBoxFO.TabStop := TRUE;
CheckBoxFO.Checked := FALSE;
CheckBoxFO.AllowGrayed := FALSE;
CheckBoxFO.State := cbUnchecked;
CheckBoxFO.OnClick := @CheckBoxFO_Click;
//......................................
//......................................
//CheckBoxPU
CheckBoxPU := TCheckBox.Create(Result);
CheckBoxPU.Parent := GroupBox2;
CheckBoxPU.Left := 18;
CheckBoxPU.Top := 163;
CheckBoxPU.Width := 105;
CheckBoxPU.Height := 17;
CheckBoxPU.Visible := TRUE;
CheckBoxPU.Tag := 0;
CheckBoxPU.Enabled := TRUE;
CheckBoxPU.Hint := 'Поставить галочку если хотим потрошить улов';
CheckBoxPU.ShowHint := TRUE;
CheckBoxPU.Caption := 'Потрошить улов';
CheckBoxPU.Font.Name := 'Tahoma';
CheckBoxPU.Font.Size := 8;
CheckBoxPU.Font.Color := clWindowText;
CheckBoxPU.Color := clBtnFace;
CheckBoxPU.TabOrder := 13;
CheckBoxPU.TabStop := TRUE;
CheckBoxPU.Checked := FALSE;
CheckBoxPU.AllowGrayed := FALSE;
CheckBoxPU.State := cbUnchecked;
CheckBoxPU.OnClick := @CheckBoxPU_Click;
//......................................
//......................................
//EditRodVal
EditRodVal := TEdit.Create(Result);
EditRodVal.Parent := GroupBox2;
EditRodVal.Left := 325;
EditRodVal.Top := 16;
EditRodVal.Width := 72;
EditRodVal.Height := 21;
EditRodVal.Visible := TRUE;
EditRodVal.Tag := 0;
EditRodVal.Enabled := TRUE;
EditRodVal.Hint := '';
EditRodVal.ShowHint := FALSE;
EditRodVal.Text := '0';
EditRodVal.Font.Name := 'Tahoma';
EditRodVal.Font.Size := 8;
EditRodVal.Font.Color := clWindowText;
EditRodVal.Color := clWindow;
EditRodVal.TabOrder := 14;
EditRodVal.TabStop := TRUE;
EditRodVal.ReadOnly := TRUE;
EditRodVal.MaxLength := 0;
EditRodVal.AutoSize := TRUE;
//......................................
//......................................
//EditLureVal
EditLureVal := TEdit.Create(Result);
EditLureVal.Parent := GroupBox2;
EditLureVal.Left := 325;
EditLureVal.Top := 40;
EditLureVal.Width := 72;
EditLureVal.Height := 21;
EditLureVal.Visible := TRUE;
EditLureVal.Tag := 0;
EditLureVal.Enabled := TRUE;
EditLureVal.Hint := '';
EditLureVal.ShowHint := FALSE;
EditLureVal.Text := '0';
EditLureVal.Font.Name := 'Tahoma';
EditLureVal.Font.Size := 8;
EditLureVal.Font.Color := clWindowText;
EditLureVal.Color := clWindow;
EditLureVal.TabOrder := 15;
EditLureVal.TabStop := TRUE;
EditLureVal.ReadOnly := TRUE;
EditLureVal.MaxLength := 0;
EditLureVal.AutoSize := TRUE;
//......................................
//......................................
//EditWeaponVal
EditWeaponVal := TEdit.Create(Result);
EditWeaponVal.Parent := GroupBox2;
EditWeaponVal.Left := 325;
EditWeaponVal.Top := 64;
EditWeaponVal.Width := 72;
EditWeaponVal.Height := 21;
EditWeaponVal.Visible := TRUE;
EditWeaponVal.Tag := 0;
EditWeaponVal.Enabled := TRUE;
EditWeaponVal.Hint := '';
EditWeaponVal.ShowHint := FALSE;
EditWeaponVal.Text := '0';
EditWeaponVal.Font.Name := 'Tahoma';
EditWeaponVal.Font.Size := 8;
EditWeaponVal.Font.Color := clWindowText;
EditWeaponVal.Color := clWindow;
EditWeaponVal.TabOrder := 16;
EditWeaponVal.TabStop := TRUE;
EditWeaponVal.ReadOnly := TRUE;
EditWeaponVal.MaxLength := 0;
EditWeaponVal.AutoSize := TRUE;
//......................................
//......................................
//Edit6
EditShieldVal := TEdit.Create(Result);
EditShieldVal.Parent := GroupBox2;
EditShieldVal.Left := 325;
EditShieldVal.Top := 88;
EditShieldVal.Width := 72;
EditShieldVal.Height := 21;
EditShieldVal.Visible := TRUE;
EditShieldVal.Tag := 0;
EditShieldVal.Enabled := TRUE;
EditShieldVal.Hint := '';
EditShieldVal.ShowHint := FALSE;
EditShieldVal.Text := '0';
EditShieldVal.Font.Name := 'Tahoma';
EditShieldVal.Font.Size := 8;
EditShieldVal.Font.Color := clWindowText;
EditShieldVal.Color := clWindow;
EditShieldVal.TabOrder := 17;
EditShieldVal.TabStop := TRUE;
EditShieldVal.ReadOnly := TRUE;
EditShieldVal.MaxLength := 0;
EditShieldVal.AutoSize := TRUE;
//......................................
//......................................
//Edit7
EditFShotVal := TEdit.Create(Result);
EditFShotVal.Parent := GroupBox2;
EditFShotVal.Left := 325;
EditFShotVal.Top := 113;
EditFShotVal.Width := 72;
EditFShotVal.Height := 21;
EditFShotVal.Visible := TRUE;
EditFShotVal.Tag := 0;
EditFShotVal.Enabled := TRUE;
EditFShotVal.Hint := '';
EditFShotVal.ShowHint := FALSE;
EditFShotVal.Text := '0';
EditFShotVal.Font.Name := 'Tahoma';
EditFShotVal.Font.Size := 8;
EditFShotVal.Font.Color := clWindowText;
EditFShotVal.Color := clWindow;
EditFShotVal.TabOrder := 18;
EditFShotVal.TabStop := TRUE;
EditFShotVal.ReadOnly := TRUE;
EditFShotVal.MaxLength := 0;
EditFShotVal.AutoSize := TRUE;
//......................................
//......................................
//EditLureOID
EditLureOID := TEdit.Create(Result);
EditLureOID.Parent := GroupBox2;
EditLureOID.Left := 248;
EditLureOID.Top := 40;
EditLureOID.Width := 72;
EditLureOID.Height := 21;
EditLureOID.Visible := TRUE;
EditLureOID.Tag := 0;
EditLureOID.Enabled := TRUE;
EditLureOID.Hint := '';
EditLureOID.ShowHint := FALSE;
EditLureOID.Text := '0';
EditLureOID.Font.Name := 'Tahoma';
EditLureOID.Font.Size := 8;
EditLureOID.Font.Color := clWindowText;
EditLureOID.Color := clWindow;
EditLureOID.TabOrder := 19;
EditLureOID.TabStop := TRUE;
EditLureOID.ReadOnly := TRUE;
EditLureOID.MaxLength := 0;
EditLureOID.AutoSize := TRUE;
//......................................
//......................................
//EditWeaponOID
EditWeaponOID := TEdit.Create(Result);
EditWeaponOID.Parent := GroupBox2;
EditWeaponOID.Left := 248;
EditWeaponOID.Top := 64;
EditWeaponOID.Width := 72;
EditWeaponOID.Height := 21;
EditWeaponOID.Visible := TRUE;
EditWeaponOID.Tag := 0;
EditWeaponOID.Enabled := TRUE;
EditWeaponOID.Hint := '';
EditWeaponOID.ShowHint := FALSE;
EditWeaponOID.Text := '0';
EditWeaponOID.Font.Name := 'Tahoma';
EditWeaponOID.Font.Size := 8;
EditWeaponOID.Font.Color := clWindowText;
EditWeaponOID.Color := clWindow;
EditWeaponOID.TabOrder := 20;
EditWeaponOID.TabStop := TRUE;
EditWeaponOID.ReadOnly := TRUE;
EditWeaponOID.MaxLength := 0;
EditWeaponOID.AutoSize := TRUE;
//......................................
//......................................
//EditShieldOID
EditShieldOID := TEdit.Create(Result);
EditShieldOID.Parent := GroupBox2;
EditShieldOID.Left := 248;
EditShieldOID.Top := 88;
EditShieldOID.Width := 72;
EditShieldOID.Height := 21;
EditShieldOID.Visible := TRUE;
EditShieldOID.Tag := 0;
EditShieldOID.Enabled := TRUE;
EditShieldOID.Hint := '';
EditShieldOID.ShowHint := FALSE;
EditShieldOID.Text := '0';
EditShieldOID.Font.Name := 'Tahoma';
EditShieldOID.Font.Size := 8;
EditShieldOID.Font.Color := clWindowText;
EditShieldOID.Color := clWindow;
EditShieldOID.TabOrder := 21;
EditShieldOID.TabStop := TRUE;
EditShieldOID.ReadOnly := TRUE;
EditShieldOID.MaxLength := 0;
EditShieldOID.AutoSize := TRUE;
//......................................
//......................................
//EditFShotOID
EditFShotOID := TEdit.Create(Result);
EditFShotOID.Parent := GroupBox2;
EditFShotOID.Left := 248;
EditFShotOID.Top := 113;
EditFShotOID.Width := 72;
EditFShotOID.Height := 21;
EditFShotOID.Visible := TRUE;
EditFShotOID.Tag := 0;
EditFShotOID.Enabled := TRUE;
EditFShotOID.Hint := '';
EditFShotOID.ShowHint := FALSE;
EditFShotOID.Text := '0';
EditFShotOID.Font.Name := 'Tahoma';
EditFShotOID.Font.Size := 8;
EditFShotOID.Font.Color := clWindowText;
EditFShotOID.Color := clWindow;
EditFShotOID.TabOrder := 22;
EditFShotOID.TabStop := TRUE;
EditFShotOID.ReadOnly := TRUE;
EditFShotOID.MaxLength := 0;
EditFShotOID.AutoSize := TRUE;
//......................................
//......................................
//EditRodOID
EditRodOID := TEdit.Create(Result);
EditRodOID.Parent := GroupBox2;
EditRodOID.Left := 248;
EditRodOID.Top := 16;
EditRodOID.Width := 72;
EditRodOID.Height := 21;
EditRodOID.Visible := TRUE;
EditRodOID.Tag := 0;
EditRodOID.Enabled := TRUE;
EditRodOID.Hint := '';
EditRodOID.ShowHint := FALSE;
EditRodOID.Text := '0';
EditRodOID.Font.Name := 'Tahoma';
EditRodOID.Font.Size := 8;
EditRodOID.Font.Color := clWindowText;
EditRodOID.Color := clWindow;
EditRodOID.TabOrder := 23;
EditRodOID.TabStop := TRUE;
EditRodOID.ReadOnly := TRUE;
EditRodOID.MaxLength := 0;
EditRodOID.AutoSize := TRUE;
//......................................
//......................................
//GroupBox3
GroupBox3 := TGroupBox.Create(Result);
GroupBox3.Parent := Panel1;
GroupBox3.Left := 1;
GroupBox3.Top := 270;
GroupBox3.Width := 421;
GroupBox3.Height := 75;
GroupBox3.Visible := TRUE;
GroupBox3.Tag := 0;
GroupBox3.Enabled := TRUE;
GroupBox3.Hint := '';
GroupBox3.ShowHint := FALSE;
GroupBox3.Caption := 'Продать/купить';
GroupBox3.Align := alNone;
GroupBox3.Color := clBtnFace;
GroupBox3.Font.Name := 'Tahoma';
GroupBox3.Font.Size := 8;
GroupBox3.Font.Color := clWindowText;
GroupBox3.Font.CharSet := 1;
GroupBox3.TabOrder := 2;
GroupBox3.TabStop := FALSE;
//......................................
//......................................
//Label8
Label8 := TLabel.Create(Result);
Label8.Parent := GroupBox3;
Label8.Left := 18;
Label8.Top := 44;
Label8.Width := 77;
Label8.Height := 13;
Label8.Visible := TRUE;
Label8.Tag := 0;
Label8.Enabled := TRUE;
Label8.Hint := '';
Label8.ShowHint := FALSE;
Label8.Caption := 'Покупать Lure:';
Label8.Transparent := TRUE;
Label8.WordWrap := FALSE;
Label8.Alignment := taLeftJustify;
Label8.Layout := tlTop;
Label8.AutoSize := TRUE;
Label8.Align := alNone;
Label8.Font.Name := 'Tahoma';
Label8.Font.Size := 8;
Label8.Font.Color := clWindowText;
Label8.Color := clBtnFace;
//......................................
//......................................
//Label9
Label9 := TLabel.Create(Result);
Label9.Parent := GroupBox3;
Label9.Left := 175;
Label9.Top := 44;
Label9.Width := 18;
Label9.Height := 13;
Label9.Visible := TRUE;
Label9.Tag := 0;
Label9.Enabled := TRUE;
Label9.Hint := '';
Label9.ShowHint := FALSE;
Label9.Caption := 'шт.';
Label9.Transparent := TRUE;
Label9.WordWrap := FALSE;
Label9.Alignment := taLeftJustify;
Label9.Layout := tlTop;
Label9.AutoSize := TRUE;
Label9.Align := alNone;
Label9.Font.Name := 'Tahoma';
Label9.Font.Size := 8;
Label9.Font.Color := clWindowText;
Label9.Color := clBtnFace;
//......................................
//......................................
//Label17
Label17 := TLabel.Create(Result);
Label17.Parent := GroupBox3;
Label17.Left := 257;
Label17.Top := 3;
Label17.Width := 29;
Label17.Height := 13;
Label17.Visible := TRUE;
Label17.Tag := 0;
Label17.Enabled := TRUE;
Label17.Hint := '';
Label17.ShowHint := FALSE;
Label17.Caption := 'NpcOID';
Label17.Transparent := TRUE;
Label17.WordWrap := FALSE;
Label17.Alignment := taLeftJustify;
Label17.Layout := tlTop;
Label17.AutoSize := TRUE;
Label17.Align := alNone;
Label17.Font.Name := 'Tahoma';
Label17.Font.Size := 8;
Label17.Font.Color := clWindowText;
Label17.Color := clBtnFace;
//......................................
//......................................
//CheckBoxFisherman
CheckBoxFisherman := TCheckBox.Create(Result);
CheckBoxFisherman.Parent := GroupBox3;
CheckBoxFisherman.Left := 18;
CheckBoxFisherman.Top := 18;
CheckBoxFisherman.Width := 66;
CheckBoxFisherman.Height := 17;
CheckBoxFisherman.Visible := TRUE;
CheckBoxFisherman.Tag := 0;
CheckBoxFisherman.Enabled := TRUE;
CheckBoxFisherman.Hint := 'Поставить галочку если выбрали продавца';
CheckBoxFisherman.ShowHint := TRUE;
CheckBoxFisherman.Caption := 'Fisherman';
CheckBoxFisherman.Font.Name := 'Tahoma';
CheckBoxFisherman.Font.Size := 8;
CheckBoxFisherman.Font.Color := clWindowText;
CheckBoxFisherman.Color := clBtnFace;
CheckBoxFisherman.TabOrder := 0;
CheckBoxFisherman.TabStop := TRUE;
CheckBoxFisherman.Checked := FALSE;
CheckBoxFisherman.AllowGrayed := FALSE;
CheckBoxFisherman.State := cbUnchecked;
CheckBoxFisherman.OnClick := @CheckBoxFisherman_Click;
//......................................
//......................................
//ComboBoxFisherman
ComboBoxFisherman := TComboBox.Create(Result);
ComboBoxFisherman.Parent := GroupBox3;
ComboBoxFisherman.Left := 90;
ComboBoxFisherman.Top := 16;
ComboBoxFisherman.Width := 144;
ComboBoxFisherman.Height := 21;
ComboBoxFisherman.Visible := TRUE;
ComboBoxFisherman.Tag := 0;
ComboBoxFisherman.Enabled := TRUE;
ComboBoxFisherman.Hint := 'Выбери из списка продавца';
ComboBoxFisherman.ShowHint := TRUE;
ComboBoxFisherman.Text := 'ComboBoxFisherman';
ComboBoxFisherman.Font.Name := 'Tahoma';
ComboBoxFisherman.Font.Size := 8;
ComboBoxFisherman.Font.Color := clWindowText;
ComboBoxFisherman.Color := clWindow;
ComboBoxFisherman.TabOrder := 1;
ComboBoxFisherman.TabStop := TRUE;
ComboBoxFisherman.ItemIndex := -1;
ComboBoxFisherman.Sorted := FALSE;
ComboBoxFisherman.ItemHeight := 13;
ComboBoxFisherman.OnChange := @ComboBoxFisherman_Change;
//......................................
//......................................
//EditFishermanOID
EditFishermanOID := TEdit.Create(Result);
EditFishermanOID.Parent := GroupBox3;
EditFishermanOID.Left := 240;
EditFishermanOID.Top := 16;
EditFishermanOID.Width := 72;
EditFishermanOID.Height := 21;
EditFishermanOID.Visible := TRUE;
EditFishermanOID.Tag := 0;
EditFishermanOID.Enabled := TRUE;
EditFishermanOID.Hint := '';
EditFishermanOID.ShowHint := FALSE;
EditFishermanOID.Text := '0';
EditFishermanOID.Font.Name := 'Tahoma';
EditFishermanOID.Font.Size := 8;
EditFishermanOID.Font.Color := clWindowText;
EditFishermanOID.Color := clWindow;
EditFishermanOID.TabOrder := 2;
EditFishermanOID.TabStop := TRUE;
EditFishermanOID.ReadOnly := TRUE;
EditFishermanOID.MaxLength := 0;
EditFishermanOID.AutoSize := TRUE;
// EditFishermanOID.OnClick := @EditFishermanOID_Click;
//......................................
//......................................
//EditLure
EditLure := TEdit.Create(Result);
EditLure.Parent := GroupBox3;
EditLure.Left := 97;
EditLure.Top := 41;
EditLure.Width := 72;
EditLure.Height := 21;
EditLure.Visible := TRUE;
EditLure.Tag := 0;
EditLure.Enabled := TRUE;
EditLure.Hint := 'Введи количество крючков для закупки';
EditLure.ShowHint := TRUE;
EditLure.Text := '300';
EditLure.Font.Name := 'Tahoma';
EditLure.Font.Size := 8;
EditLure.Font.Color := clWindowText;
EditLure.Color := clWindow;
EditLure.TabOrder := 3;
EditLure.TabStop := TRUE;
EditLure.ReadOnly := FALSE;
EditLure.MaxLength := 0;
EditLure.AutoSize := TRUE;
// EditLure.OnClick := @EditLure_Click;
EditLure.OnEnter := @EditLure_Change;
//......................................
//......................................
//GroupBox4
GroupBox4 := TGroupBox.Create(Result);
GroupBox4.Parent := Panel1;
GroupBox4.Left := 1;
GroupBox4.Top := 194;
GroupBox4.Width := 421;
GroupBox4.Height := 78;
GroupBox4.Visible := TRUE;
GroupBox4.Tag := 0;
GroupBox4.Enabled := TRUE;
GroupBox4.Hint := '';
GroupBox4.ShowHint := FALSE;
GroupBox4.Caption := 'Лечение';
GroupBox4.Align := alNone;
GroupBox4.Color := clBtnFace;
GroupBox4.Font.Name := 'Tahoma';
GroupBox4.Font.Size := 8;
GroupBox4.Font.Color := clWindowText;
GroupBox4.Font.CharSet := 1;
GroupBox4.TabOrder := 3;
GroupBox4.TabStop := FALSE;
//......................................
//......................................
//Label10
Label10 := TLabel.Create(Result);
Label10.Parent := GroupBox4;
Label10.Left := 18;
Label10.Top := 44;
Label10.Width := 69;
Label10.Height := 13;
Label10.Visible := TRUE;
Label10.Tag := 0;
Label10.Enabled := TRUE;
Label10.Hint := '';
Label10.ShowHint := FALSE;
Label10.Caption := 'Лечиться при';
Label10.Transparent := TRUE;
Label10.WordWrap := FALSE;
Label10.Alignment := taLeftJustify;
Label10.Layout := tlTop;
Label10.AutoSize := TRUE;
Label10.Align := alNone;
Label10.Font.Name := 'Tahoma';
Label10.Font.Size := 8;
Label10.Font.Color := clWindowText;
Label10.Color := clBtnFace;
//......................................
//......................................
//Label11
Label11 := TLabel.Create(Result);
Label11.Parent := GroupBox4;
Label11.Left := 400;
Label11.Top := 17;
Label11.Width := 18;
Label11.Height := 13;
Label11.Visible := TRUE;
Label11.Tag := 0;
Label11.Enabled := TRUE;
Label11.Hint := '';
Label11.ShowHint := FALSE;
Label11.Caption := 'шт.';
Label11.Transparent := TRUE;
Label11.WordWrap := FALSE;
Label11.Alignment := taLeftJustify;
Label11.Layout := tlTop;
Label11.AutoSize := TRUE;
Label11.Align := alNone;
Label11.Font.Name := 'Tahoma';
Label11.Font.Size := 8;
Label11.Font.Color := clWindowText;
Label11.Color := clBtnFace;
//......................................
//......................................
//Label3
Label3 := TLabel.Create(Result);
Label3.Parent := GroupBox4;
Label3.Left := 171;
Label3.Top := 44;
Label3.Width := 11;
Label3.Height := 13;
Label3.Visible := TRUE;
Label3.Tag := 0;
Label3.Enabled := TRUE;
Label3.Hint := '';
Label3.ShowHint := FALSE;
Label3.Caption := '%';
Label3.Transparent := TRUE;
Label3.WordWrap := FALSE;
Label3.Alignment := taLeftJustify;
Label3.Layout := tlTop;
Label3.AutoSize := TRUE;
Label3.Align := alNone;
Label3.Font.Name := 'Tahoma';
Label3.Font.Size := 8;
Label3.Font.Color := clWindowText;
Label3.Color := clBtnFace;
//......................................
//......................................
//Label14
Label14 := TLabel.Create(Result);
Label14.Parent := GroupBox4;
Label14.Left := 333;
Label14.Top := 3;
Label14.Width := 35;
Label14.Height := 13;
Label14.Visible := TRUE;
Label14.Tag := 0;
Label14.Enabled := TRUE;
Label14.Hint := '';
Label14.ShowHint := FALSE;
Label14.Caption := 'Кол-во';
Label14.Transparent := TRUE;
Label14.WordWrap := FALSE;
Label14.Alignment := taLeftJustify;
Label14.Layout := tlTop;
Label14.AutoSize := TRUE;
Label14.Align := alNone;
Label14.Font.Name := 'Tahoma';
Label14.Font.Size := 8;
Label14.Font.Color := clWindowText;
Label14.Color := clBtnFace;
//......................................
//......................................
//Label15
Label15 := TLabel.Create(Result);
Label15.Parent := GroupBox4;
Label15.Left := 257;
Label15.Top := 3;
Label15.Width := 33;
Label15.Height := 13;
Label15.Visible := TRUE;
Label15.Tag := 0;
Label15.Enabled := TRUE;
Label15.Hint := '';
Label15.ShowHint := FALSE;
Label15.Caption := 'ItemID';
Label15.Transparent := TRUE;
Label15.WordWrap := FALSE;
Label15.Alignment := taLeftJustify;
Label15.Layout := tlTop;
Label15.AutoSize := TRUE;
Label15.Align := alNone;
Label15.Font.Name := 'Tahoma';
Label15.Font.Size := 8;
Label15.Font.Color := clWindowText;
Label15.Color := clBtnFace;
//......................................
//......................................
//CheckBoxHPotion
CheckBoxHPotion := TCheckBox.Create(Result);
CheckBoxHPotion.Parent := GroupBox4;
CheckBoxHPotion.Left := 18;
CheckBoxHPotion.Top := 16;
CheckBoxHPotion.Width := 52;
CheckBoxHPotion.Height := 17;
CheckBoxHPotion.Visible := TRUE;
CheckBoxHPotion.Tag := 0;
CheckBoxHPotion.Enabled := TRUE;
CheckBoxHPotion.Hint := 'Поставить галочку если выбрали бутылки лечения';
CheckBoxHPotion.ShowHint := TRUE;
CheckBoxHPotion.Caption := 'HPotion';
CheckBoxHPotion.Font.Name := 'Tahoma';
CheckBoxHPotion.Font.Size := 8;
CheckBoxHPotion.Font.Color := clWindowText;
CheckBoxHPotion.Color := clBtnFace;
CheckBoxHPotion.TabOrder := 0;
CheckBoxHPotion.TabStop := TRUE;
CheckBoxHPotion.Checked := FALSE;
CheckBoxHPotion.AllowGrayed := FALSE;
CheckBoxHPotion.State := cbUnchecked;
CheckBoxHPotion.OnClick := @CheckBoxHPotion_Click;
//......................................
//......................................
//EditHealt
EditHealt := TEdit.Create(Result);
EditHealt.Parent := GroupBox4;
EditHealt.Left := 93;
EditHealt.Top := 41;
EditHealt.Width := 72;
EditHealt.Height := 21;
EditHealt.Visible := TRUE;
EditHealt.Tag := 0;
EditHealt.Enabled := TRUE;
EditHealt.Hint := 'Введи процент при котором начинать пить бутылки';
EditHealt.ShowHint := TRUE;
EditHealt.Text := '80';
EditHealt.Font.Name := 'Tahoma';
EditHealt.Font.Size := 8;
EditHealt.Font.Color := clWindowText;
EditHealt.Color := clWindow;
EditHealt.TabOrder := 1;
EditHealt.TabStop := TRUE;
EditHealt.ReadOnly := FALSE;
EditHealt.MaxLength := 0;
EditHealt.AutoSize := TRUE;
// EditHealt.OnClick := @EditHealt_Click;
EditHealt.OnEnter := @EditHealt_Change;
//......................................
//......................................
//ComboBoxHPotion
ComboBoxHPotion := TComboBox.Create(Result);
ComboBoxHPotion.Parent := GroupBox4;
ComboBoxHPotion.Left := 74;
ComboBoxHPotion.Top := 14;
ComboBoxHPotion.Width := 169;
ComboBoxHPotion.Height := 21;
ComboBoxHPotion.Visible := TRUE;
ComboBoxHPotion.Tag := 0;
ComboBoxHPotion.Enabled := TRUE;
ComboBoxHPotion.Hint := 'Выбери из списка бутылку лечения';
ComboBoxHPotion.ShowHint := TRUE;
ComboBoxHPotion.Text := 'ComboBoxHPotion';
ComboBoxHPotion.Font.Name := 'Tahoma';
ComboBoxHPotion.Font.Size := 8;
ComboBoxHPotion.Font.Color := clWindowText;
ComboBoxHPotion.Color := clWindow;
ComboBoxHPotion.TabOrder := 2;
ComboBoxHPotion.TabStop := TRUE;
ComboBoxHPotion.ItemIndex := -1;
ComboBoxHPotion.Sorted := FALSE;
ComboBoxHPotion.ItemHeight := 13;
ComboBoxHPotion.OnChange := @ComboBoxHPotion_Change;
//......................................
//......................................
//EditHpotionOID
EditHpotionOID := TEdit.Create(Result);
EditHpotionOID.Parent := GroupBox4;
EditHpotionOID.Left := 248;
EditHpotionOID.Top := 14;
EditHpotionOID.Width := 72;
EditHpotionOID.Height := 21;
EditHpotionOID.Visible := TRUE;
EditHpotionOID.Tag := 0;
EditHpotionOID.Enabled := TRUE;
EditHpotionOID.Hint := '';
EditHpotionOID.ShowHint := FALSE;
EditHpotionOID.Text := '0';
EditHpotionOID.Font.Name := 'Tahoma';
EditHpotionOID.Font.Size := 8;
EditHpotionOID.Font.Color := clWindowText;
EditHpotionOID.Color := clWindow;
EditHpotionOID.TabOrder := 3;
EditHpotionOID.TabStop := TRUE;
EditHpotionOID.ReadOnly := TRUE;
EditHpotionOID.MaxLength := 0;
EditHpotionOID.AutoSize := TRUE;
//......................................
//......................................
//EditHPotionVal
EditHPotionVal := TEdit.Create(Result);
EditHPotionVal.Parent := GroupBox4;
EditHPotionVal.Left := 325;
EditHPotionVal.Top := 14;
EditHPotionVal.Width := 72;
EditHPotionVal.Height := 21;
EditHPotionVal.Visible := TRUE;
EditHPotionVal.Tag := 0;
EditHPotionVal.Enabled := TRUE;
EditHPotionVal.Hint := '';
EditHPotionVal.ShowHint := FALSE;
EditHPotionVal.Text := '0';
EditHPotionVal.Font.Name := 'Tahoma';
EditHPotionVal.Font.Size := 8;
EditHPotionVal.Font.Color := clWindowText;
EditHPotionVal.Color := clWindow;
EditHPotionVal.TabOrder := 4;
EditHPotionVal.TabStop := TRUE;
EditHPotionVal.ReadOnly := TRUE;
EditHPotionVal.MaxLength := 0;
EditHPotionVal.AutoSize := TRUE;
//......................................
//......................................
//Stats
Stats := TMemo.Create(Result);
Stats.Parent := Result;
Stats.Left := 428;
Stats.Top := 0;
Stats.Width := 185;
Stats.Height := 471;
Stats.Visible := TRUE;
Stats.Tag := 0;
Stats.Enabled := TRUE;
Stats.Hint := '';
Stats.ShowHint := FALSE;
Stats.Font.Name := 'Tahoma';
Stats.Font.Size := 8;
Stats.Font.Color := clWindowText;
Stats.Color := clWindow;
Stats.TabOrder := 1;
Stats.TabStop := TRUE;
Stats.Align := alRight;
Stats.WordWrap := TRUE;
Stats.Alignment := taLeftJustify;
Stats.WantTabs := FALSE;
Stats.WantReturns := TRUE;
Stats.HideSelection := TRUE;
Stats.MaxLength := 0;
Stats.OEMConvert := FALSE;
Stats.ReadOnly := FALSE;
Stats.ScrollBars := ssNone;
//......................................
//......................................
//Msg
Msg := TMemo.Create(Result);
Msg.Parent := Result;
Msg.Left := 0;
Msg.Top := 474;
Msg.Width := 613;
Msg.Height := 112;
Msg.Visible := TRUE;
Msg.Tag := 0;
Msg.Enabled := TRUE;
Msg.Hint := '';
Msg.ShowHint := FALSE;
Msg.Font.Name := 'Tahoma';
Msg.Font.Size := 8;
Msg.Font.Color := clWindowText;
Msg.Color := clWindow;
Msg.TabOrder := 2;
Msg.TabStop := TRUE;
Msg.Align := alBottom;
Msg.WordWrap := TRUE;
Msg.Alignment := taLeftJustify;
Msg.WantTabs := FALSE;
Msg.WantReturns := TRUE;
Msg.HideSelection := TRUE;
Msg.MaxLength := 0;
Msg.OEMConvert := FALSE;
Msg.ReadOnly := FALSE;
Msg.ScrollBars := ssNone;
//......................................
//......................................
//Splitter1
Splitter1 := TSplitter.Create(Result);
Splitter1.Parent := Result;
Splitter1.Align := alBottom;
Splitter1.Color := clBtnFace;
Splitter1.Left := 0;
Splitter1.Top := 471;
Splitter1.Width := 613;
Splitter1.Height := 3;
Splitter1.Visible := TRUE;
Splitter1.Tag := 0;
//......................................
//......................................
//Splitter2
Splitter2 := TSplitter.Create(Result);
Splitter2.Parent := Result;
Splitter2.Align := alRight;
Splitter2.Color := clBtnFace;
Splitter2.Left := 425;
Splitter2.Top := 0;
Splitter2.Width := 3;
Splitter2.Height := 471;
Splitter2.Visible := TRUE;
Splitter2.Tag := 0;
//......................................
Yes := TRUE;
FINALLY
if not Yes then begin
//Освобождаем ресурсы, если неудачно ...
if Result<>NIL then begin
Result.Free;
Result:=NIL;
end;
end;
END;
Result.Show;
msg.Lines.Add('Автоматизация ловли рыбы by NLObP!');
msg.Lines.Add('Для инициализации скрипта снять/одеть удочку, крючки!!!');
end;
//............................................
//***************************************************************
//Обработчики событий для элементов управления на форме
//***************************************************************
//ButtonPathBack
procedure ButtonPathBack_Click(Sender: TButton);
//Event : OnClick
begin
//идти в начало пути
RecordPathFileName:=EditPath.text;
try
MovePath.LoadFromFile(RecordFilesPath+RecordPathFileName+RecordFileExt);
except
SendMsg('файл пути не найден');
exit;
end;
cmd:='move'; GoToPath(back);
end;
//......................................
//......................................
//ButtonPathStop
procedure ButtonPathStop_Click(Sender: TButton);
//Event : OnClick
begin
MoveToPathEnabled:=False;
end;
//......................................
//......................................
//ButtonPathGo
procedure ButtonPathGo_Click(Sender: TButton);
//Event : OnClick
begin
//идти в конец пути
RecordPathFileName:=EditPath.text;
try
MovePath.LoadFromFile(RecordFilesPath+RecordPathFileName+RecordFileExt);
except
SendMsg('файл пути не найден');
exit;
end;
cmd:='move'; GoToPath(go);
end;
//......................................
//......................................
//ButtonPathSave
procedure ButtonPathSave_Click(Sender: TButton);
//Event : OnClick
begin
StopRecord;
end;
//......................................
//......................................
//ButtonPathRec
procedure ButtonPathRec_Click(Sender: TButton);
//Event : OnClick
begin
RecordPathFileName:=EditPath.text;
StartRecord;
end;
//......................................
//......................................
//EditPath
procedure EditPath_Change(Sender: TEdit);
//Event : OnChange
begin
RecordPathFileName:=EditPath.text;
end;
//......................................
//......................................
//ComboBoxPath
procedure ComboBoxPath_Change(Sender: TComboBox);
//Event : OnChange
begin
EditPath.text:=ComboBoxPath.Items.Strings[ComboBoxPath.ItemIndex];
end;
//......................................
//......................................
//ButtonFishingStart
procedure ButtonFishingStart_Click(Sender: TButton);
//Event : OnClick
begin
if not status then begin
msg.Lines.Add('Скрипт не инициализирован...');
exit;
end;
if not isEquip(MyRodID) then giverod;
if not isEquip(MyLureID) then givelure;
fishin.enabled:=true;
stop:=false; //нажали Sart
msg.Lines.Add('Начнем рыбачить...');
end;
//......................................
//......................................
//ButtonFishingStop
procedure ButtonFishingStop_Click(Sender: TButton);
//Event : OnClick
begin
// Status:=false;
fishin.enabled:=false;
trade1.enabled:=false;
CreatePFO.enabled:=false;
MoveTimer.Enabled:=False;
MoveToPathEnabled:=False;
stop:=true;
if isEquip(MyRodID) and isFishing then MagicSkillUse(fish);
isFishing:=false; //ловим?
msg.Lines.Add('Останавливаем всё! Хватит на сегодня!');
end;
//......................................
//......................................
//CheckBoxRod
procedure CheckBoxRod_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxRod.Checked
then begin
ComboBoxRod.Enabled:=false; //выключаем
end else begin
MyRodID:=0; //отмена
RodOID:=0;
ComboBoxRod.Enabled:=true; //включаем
//Пакет RequestItemList
buf:=hstr('14');/////////////////////////////////////////////////////////////////////////////////////////////////////////
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//ComboBoxRod
procedure ComboBoxRod_Change(Sender: TComboBox);
//Event : OnChange
begin
RodOID:=ItemBase[1,ComboBoxRod.ItemIndex+1];
myRodID:=ItemBase[2,ComboBoxRod.ItemIndex+1];
EditRodOID.Text:=Inttostr(myRodID);
EditRodVal.text:=inttostr(sumitem(myRodID));
end;
//......................................
//......................................
//CheckBoxLure
procedure CheckBoxLure_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxLure.Checked
then begin
ComboBoxLure.Enabled:=false; //выключаем
TradeBuyItem[0]:=MyLureID; //что будем покупать?
end else begin
MyLureID:=0; //отмена
LureOID:=0;
TradeBuyItem[0]:=MyLureID; //что будем покупать?
ComboBoxLure.Enabled:=true; //включаем
//Пакет RequestItemList
buf:=hstr('14');//////////////////////////////////////////////////////////////////////////////////////////
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//ComboBoxLure
procedure ComboBoxLure_Change(Sender: TComboBox);
//Event : OnChange
begin
LureOID:=ItemBase[1,ComboBoxLure.ItemIndex+1];
myLureID:=ItemBase[2,ComboBoxLure.ItemIndex+1];
EditLureOID.Text:=Inttostr(myLureID);
EditLureVal.text:=inttostr(sumitem(myLureID));
end;
//......................................
//......................................
//CheckBoxWeapon
procedure CheckBoxWeapon_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxWeapon.Checked
then begin
ComboBoxWeapon.Enabled:=false; //выключаем
WeaponUse1:=true;
end else begin
WeaponUse1:=false;
MyWeaponID:=0; //отмена
WeaponOID:=0;
ComboBoxWeapon.Enabled:=true; //включаем
//Пакет RequestItemList
buf:=hstr('14');/////////////////////////////////////////////////////////////////////////////////////
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//ComboBoxWeapon
procedure ComboBoxWeapon_Change(Sender: TComboBox);
//Event : OnChange
begin
WeaponOID:=ItemBase[1,ComboBoxWeapon.ItemIndex+1];
myWeaponID:=ItemBase[2,ComboBoxWeapon.ItemIndex+1];
EditWeaponOID.Text:=Inttostr(myWeaponID);
EditWeaponVal.text:=inttostr(sumitem(myWeaponID));
end;
//......................................
//......................................
//CheckBoxShield
procedure CheckBoxShield_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxShield.Checked
then begin
ComboBoxShield.Enabled:=false; //выключаем
ShieldUse1:=true;
end else begin
ShieldUse1:=false;
MyShieldID:=0; //отмена
ShieldOID:=0;
ComboBoxShield.Enabled:=true; //включаем
//Пакет RequestItemList
buf:=hstr('14');////////////////////////////////////////////////////////////////////////////
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//ComboBoxShield
procedure ComboBoxShield_Change(Sender: TComboBox);
//Event : OnChange
begin
ShieldOID:=ItemBase[1,ComboBoxShield.ItemIndex+1];
myShieldID:=ItemBase[2,ComboBoxShield.ItemIndex+1];
EditShieldOID.Text:=Inttostr(myShieldID);
EditShieldVal.text:=inttostr(sumitem(myShieldID));
end;
//......................................
//......................................
//CheckBoxFShot
procedure CheckBoxFShot_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxFShot.Checked
then begin
ComboBoxFShot.Enabled:=false; //выключаем
ShotUse1:=true;
end else begin
ShotUse1:=false;
MyShotID:=0; //отмена
ShotOID:=0;
ComboBoxFShot.Enabled:=true; //включаем
//Пакет RequestItemList
buf:=hstr('14');//////////////////////////////////////////////////////////////////////////////////////////////////
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//ComboBoxFShot
procedure ComboBoxFShot_Change(Sender: TComboBox);
//Event : OnChange
begin
ShotOID:=ItemBase[1,ComboBoxFShot.ItemIndex+1];
myShotID:=ItemBase[2,ComboBoxFShot.ItemIndex+1];
EditFShotOID.Text:=Inttostr(myShotID);
EditFShotVal.text:=inttostr(sumitem(myShotID));
end;
//......................................
//......................................
//EditLure
//procedure EditLure_Click(Sender: TEdit);
procedure EditLure_Change(Sender: TEdit);
//Event : OnChange
begin
NeedBuy:=strtoint(EditLure.Text);
end;
//......................................
//......................................
//CheckBoxFO
procedure CheckBoxFO_Click(Sender: TCheckBox);
//Event : OnClick
begin
//FO->GFO-PFO
if CheckBoxFO.Checked
then CreatePFO.enabled:=true
else CreatePFO.enabled:=false;
if CreatePFO.enabled then begin
buf:=hstr('39 2A 05 00 00 00 00 00 00 00'); //common craft/////////////////////////////////////////////////////
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//CheckBoxPU
procedure CheckBoxPU_Click(Sender: TCheckBox);
//Event : OnClick
begin
end;
//......................................
//......................................
//CheckBoxFisherman
procedure CheckBoxFisherman_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxFisherman.Checked
then begin
FishermanID:=ExtractIDValues(ComboBoxFisherman.Items.Strings[ComboBoxFisherman.ItemIndex]); //берем ID
ComboBoxFisherman.Enabled:=false; //выключаем
FishermanOID:=strtoint(EditFishermanOID.text);
end else begin
FishermanID:=0; //отмена
FishermanOID:=0;
ComboBoxFisherman.Enabled:=true; //включаем
end;
end;
//......................................
//......................................
//ComboBoxFisherman
procedure ComboBoxFisherman_Change(Sender: TComboBox);
//Event : OnChange
begin
FishermanID:=ExtractIDValues(ComboBoxFisherman.Items.Strings[ComboBoxFisherman.ItemIndex]);
for i:=1 to maxnpc do begin
// msg.Lines.Add('i='+inttostr(i)+'ID='+inttostr(NpcBase[2,i])+' FishermanID='+inttostr(FishermanID));
if NpcBase[2,i]=FishermanID then begin
EditFishermanOID.text:=inttostr(NpcBase[1,i]);
break;
end;
// else EditFishermanOID.text:='000';
end;
end;
//......................................
//......................................
//EditFishermanOID
procedure EditFishermanOID_Click(Sender: TEdit);
//Event : OnClick
begin
end;
//......................................
//......................................
//CheckBoxHPotion
procedure CheckBoxHPotion_Click(Sender: TCheckBox);
//Event : OnClick
begin
if CheckBoxHPotion.Checked
then begin
ComboBoxHPotion.Enabled:=false; //выключаем
PercentHP:=strtoint(EditHealt.Text);
ColvoHP:=strtoint(EditHPotionVal.Text);
HPUse1:=true;
end else begin
HPUse1:=false;
MyHPID:=0; //отмена
PercentHP:=0;
HPOID:=0;
ColvoHP:=0;
ComboBoxHPotion.Enabled:=true; //включаем
//Пакет RequestItemList
buf:=hstr('14');/////////////////////////////////////////////////////////////////////////
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//ComboBoxHPotion
procedure ComboBoxHPotion_Change(Sender: TComboBox);
//Event : OnChange
begin
HPOID:=ItemBase[1,ComboBoxHPotion.ItemIndex+1];
myHPID:=ItemBase[2,ComboBoxHPotion.ItemIndex+1];
EditHPotionOID.Text:=Inttostr(myHPID);
EditHPotionVal.text:=inttostr(sumitem(myHPID));
end;
//......................................
//......................................
//EditHealt
//procedure EditHealt_Click(Sender: TEdit);
procedure EditHealt_Change(Sender: TEdit);
//Event : OnChange
begin
PercentHP:=strtoint(EditHealt.Text);
end;
//......................................
//......................................
procedure CheckBox11Click(Sender: TObject);
begin
//потрошить улов
end;
//......................................
//......................................
procedure CheckBox7Click(Sender: TObject);
begin
//
end;
//......................................
//......................................
procedure CheckBox8Click(Sender: TObject);
begin
//
end;
procedure CheckBox9Click(Sender: TObject);
begin
//
end;
//......................................
//......................................
procedure ComboBox1Change(Sender: TObject);
begin
//
end;
//......................................
//......................................
procedure ComboBox2Change(Sender: TObject);
begin
//
end;
//......................................
//......................................
procedure ComboBox3Change(Sender: TObject);
begin
//
end;
//......................................
//......................................
procedure ComboBox4Change(Sender: TObject);
begin
//
end;
//......................................
//......................................
procedure ComboBox5Change(Sender: TObject);
begin
//
end;
//......................................
//......................................
procedure ComboBox6Change(Sender: TObject);
begin
//
end;
//......................................
//......................................
procedure ComboBox7Change(Sender: TObject);
begin
//
end;
//......................................
//......................................
procedure ComboBox8Change(Sender: TObject);
begin
//
end;
//......................................
//******************************************************************************
procedure FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Action:=caNone;
end;
//......................................
//***************************************************************
procedure debugmsg(msg: string);
begin
if debug then SendMsg(msg);
end;
//......................................
{//***************************************************************
procedure SendMsg(msg:string); //отправка системных сообщений клиенту
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClientEx(Name);
end;
//...................................... }
//***************************************************************
function GetValue(ValName: string): string;
begin
result:=RecordPath.Values[ValName];
end;
//......................................
//***************************************************************
procedure SetValue(ValName: string; Value: string);
begin
RecordPath.Values[ValName]:=Value;
end;
//......................................
//***************************************************************
procedure StartRecord;
begin
if SavePathEnabled then exit;
if MoveToPathEnabled then
begin
SendMsg('Во время следования по маршруту запись не возможна');
msg.Lines.Add('Во время следования по маршруту запись не возможна');
exit;
end;
RecordPath.Clear;
PointsCount:=0;
SendMsg('Начата запись маршрута');
msg.Lines.Add('Начата запись маршрута');
SavePathEnabled:=True
end;
//......................................
//***************************************************************
procedure StopRecord;
begin
if not SavePathEnabled then exit;
//записываем
RecordPath.SaveToFile(GetRecordFileName);
SendMsg('Запись маршрута завершена');
msg.Lines.Add('Запись маршрута завершена');
SavePathEnabled:=False;
end;
//......................................
//***************************************************************
function GetRecordFileName: string;
begin
result:=RecordFilesPath+RecordPathFileName+RecordFileExt;
end;
//......................................
//***************************************************************
procedure ParseMoveClient;
var
i,x,y,z: integer; s: string;
begin
if not SavePathEnabled then
exit;
i:=2;
x:=readd(i);
y:=readd(i);
z:=readd(i);
inc(PointsCount);
s:='|'+inttostr(x)+'|'+inttostr(y)+'|'+inttostr(z)+'|';
RecordPath.Add(s);
SendMsg('добавлен чекпоинт № '+inttostr(PointsCount));
msg.Lines.Add('добавлен чекпоинт № '+inttostr(PointsCount));
end;
//......................................
//***************************************************************
function delta(xpos1, ypos1, xpos2, ypos2:extended):integer; //возвращает растоянием между 2 точками
var
dx,dy,summa: extended;
begin
try
dx:=xpos1-xpos2;
dy:=ypos1-ypos2;
summa:=dx*dx+dy*dy;
if summa=0 then result:=0 else result:=Round(sqrt(summa));
debugmsg('delta='+inttostr(result));
except
debugmsg('error in delta');
end;
end;
{function delta(xpos1, ypos1, xpos2, ypos2:extended):integer; //возвращает растоянием между 2 точками
begin
result:= Round(Sqrt(((xpos1-xpos2)*(xpos1-xpos2))+((ypos1-ypos2)*(ypos1-ypos2))));
end;}
//......................................
//***************************************************************
function GetMinCheckPoint(PointsList: TStringList): integer;
var
i,m,min_dist: integer;
s: string;
x,y,z: integer;
begin
result:=-1;
min_dist:=-1;
//проверка на наличие маршрута
if PointsList.Count=0 then
begin
exit;
MoveTimer.Enabled:=False;
MoveToPathEnabled:=False;
SendMsg('Нет данных по маршруту');
msg.Lines.Add('Нет данных по маршруту');
exit;
end;
try
for i:=0 to PointsList.count-1 do
begin
s:=PointsList[i];
y:=ExtractValue(s,2);
x:=ExtractValue(s,1);
debugMsg('GetMinCheckPoint:'+s+' x:='+inttostr(x)+' y:='+inttostr(y)+' myx:='+inttostr(myx)+' myy:='+inttostr(myy));
m:=delta(x,y,myx,myy);
if m>0 then begin
if (result=-1) then begin
min_dist:=m;
result:=i;
end else
if m<min_dist then begin
min_dist:=m;
result:=i;
end;
end;
end;
except
debugMsg('error in GetMinCheckPoint');
msg.Lines.Add('error in GetMinCheckPoint');
end;//try
end;
//......................................
//***************************************************************
procedure GoToPath(ToForward: boolean);
var
x,y,z,i: integer;
s: string;
begin
MoveToPathEnabled:=not MoveToPathEnabled;
MoveToForward:=ToForward;
if not MoveToPathEnabled then
begin
MoveTimer.Enabled:=False;
SendMsg('Следование по маршруту остановлено');
msg.Lines.Add('Следование по маршруту остановлено');
exit;
end;
//
//предположительно путь уже прописан в MovePath
//
SendMsg('Пробуем выйти на путь...');
msg.Lines.Add('Пробуем выйти на путь...');
//сперва идем к ближайшему чекпоинту
i:=GetMinCheckPoint(MovePath);
if i<0 then
begin
SendMsg('чекпоинт не найден');
msg.Lines.Add('чекпоинт не найден');
MoveToPathEnabled:=False;
end else
begin
SendMsg('найден ближайший чекпоинт #'+inttostr(i)+' бежим туды');
msg.Lines.Add('найден ближайший чекпоинт #'+inttostr(i)+' бежим туды');
MoveToPathEnabled:=True;
MoveStepIndex:=i;
if debug then SendMsg('checkpoint #'+inttostr(i));
s:=MovePath[MoveStepIndex];
x:=ExtractValue(s,1);
y:=ExtractValue(s,2);
z:=ExtractValue(s,3);
if (old_x<>x) and (old_y<>y) and (old_z<>z) then
begin
MoveTo(x,y,z);
old_x:=x;
old_y:=y;
old_z:=z;
old_time:=0;
end;
end;
MoveTimer.Enabled:=True;
chk_time:=0;
end;
//......................................
//******************************************************************
//Идти в точку с координатами x,y,z
procedure MoveTo(TargetX,TargetY,TargetZ:integer);
begin
//проверка на допустимость координат
if not PosInRange(targetx,targety,targetz,5000) then begin
MoveTimer.Enabled:=False;
MoveTimer.Enabled:=False;
SendMsg('Слишком большая Дельта! Проверить папку с файлами перемещения! Движение остановлено!');
msg.Lines.Add('Слишком большая Дельта! Проверить папку с файлами перемещения! Движение остановлено!');
end else begin
//01=MoveBackwardToLocation:d(targetX)d(targetY)d(targetZ)d(originX)d(originY)d(originZ)d(moveByMouse)
buf:=#$0F;
WriteD(targetx); //куда
WriteD(targety);
WriteD(targetz);
WriteD(MyX); //откуда
WriteD(MyY);
WriteD(MyZ);
WriteD(1); //используем 1-мышь 0-клавиатура
SendToServerEx(Name);
end;
end;
//......................................
//***************************************************************
//Проверка находится ли заданная точка в пределах досягаемости.
function PosInRange(targetx,targety,targetz,distanciya:integer):boolean;
begin
if delta(targetx, targety, MyX, MyY)<=distanciya
then result:=true else result:=false;
end;
//......................................
//***************************************************************
procedure OnMove(Sender: TObject);
var
x,y,z: integer; s: string;
begin
inc(old_time);//счетчик, сколько тиков прошло с последнего клика. исп. при следованию по маршруту
inc(chk_time);//счетчик
if not MoveToPathEnabled then begin
try
TTimer(Sender).Enabled:=False;
except
end;
SendMsg('Движение остановлено');
msg.Lines.Add('Движение остановлено');
exit;
end;
{ //возможно мы пали смертью храбрых, то не дергаемся пока
if myHP<=0 then begin
sendmsg('Die!');
msg.Lines.Add('Умерли!');
MoveToPathEnabled:=False;
exit;
end;}
MoveTimer.Interval:=MoveTrigerDelay;
debugmsg('MoveTrigerDelay:'+inttostr(MoveTimer.Interval));
try
//проверяем на существ. объекта
//при отладке всякое может быть
MovePath.Count;
except
TTimer(Sender).Enabled:=False;
exit;
end;
s:=MovePath[MoveStepIndex];
x:=ExtractValue(s,1);
y:=ExtractValue(s,2);
z:=ExtractValue(s,3);
if PosInRange(x,y,z,RangeToCheckPoint) then begin
if MoveToForward then begin
if MoveStepIndex=MovePath.Count-1 then begin
MoveToPathEnabled:=False;
//эта точка на месте рыбалки или у фишермэна если после смерти
SendMsg('Мы по идее в конечной точке');
case cmd of
'move': begin {просто идем по маршруту} end;
'fishing': begin //ловим
CanFishHere:=true; //здесь можно ловить
fishin.enabled:=true; //продолжим ловить рыбу
msg.Lines.Add('Продолжим ловить рыбу!!!');
debugmsg('Продолжим ловить рыбу!!!');
end;
'death': begin //продаём
msg.Lines.Add('Мы у фишермэна, бежим рыбачить...');
SendMsg('Мы у фишермэна, бежим рыбачить...');
case MestoLovli of
1: begin cmd:='fishing'; MestoLovli1; end;
2: begin cmd:='fishing'; MestoLovli2; end;
3: begin cmd:='fishing'; MestoLovli3; end;
end;
end;
end;
exit;
end
else begin
inc(MoveStepIndex);
end;
end
else begin
if MoveStepIndex>0 then dec(MoveStepIndex)
else begin
MoveToPathEnabled:=False;
//эта точка у фишермэна
SendMsg('Мы по идее в начальной точке');
case cmd of
'move': begin {просто идем по маршруту} end;
'fishing': begin //ловим
CanFishHere:=true; //здесь можно ловить
fishin.enabled:=true; //продолжим ловить рыбу
msg.Lines.Add('Продолжим ловить рыбу!!!');
SendMsg('Продолжим ловить рыбу!!!');
end;
'trade': begin //продаём
trade:=200;
trade1.enabled:=true;
TradeCount:=0;
msg.Lines.Add('Продадим/купим/обменяем...');
SendMsg('Продадим/купим/обменяем...');
end;
end;
exit;
end;
end;
//мы достигли чекпоинта идем далее
debugMsg('бежим к #'+inttostr(MoveStepIndex));
msg.Lines.Add('бежим к #'+inttostr(MoveStepIndex));
s:=MovePath[MoveStepIndex];
x:=ExtractValue(s,1);
y:=ExtractValue(s,2);
z:=ExtractValue(s,3);
MoveTo(x,y,z);
chk_time:=0; //сбрасываем если дошли до чекпоинта
end else begin
MoveTo(x,y,z); //тыкаем ещё раз, чтобы не стоял
debugMsg('тыкаем ещё раз:'+s+' x:='+inttostr(x)+' y:='+inttostr(y)+' myx:='+inttostr(myx)+' myy:='+inttostr(myy));
msg.Lines.Add('тыкаем ещё раз:'+s+' x:='+inttostr(x)+' y:='+inttostr(y)+' myx:='+inttostr(myx)+' myy:='+inttostr(myy));
end;
//проверка на застревание
if chk_time=7 then //сколько ждем секунд, чтобы решить что застряли
if MoveToForward and (MoveStepIndex>0) then begin
dec(MoveStepIndex);
SendMsg('Проверка на застревание - бежим к #'+inttostr(MoveStepIndex));
msg.Lines.Add('Проверка на застревание - бежим к #'+inttostr(MoveStepIndex));
end else if MoveStepIndex<MovePath.Count then begin
inc(MoveStepIndex);
SendMsg('Проверка на застревание - бежим к #'+inttostr(MoveStepIndex));
msg.Lines.Add('Проверка на застревание - бежим к #'+inttostr(MoveStepIndex));
end;
end;
//......................................
//***************************************************************
function ExtractValue(sData: string;nIndex: integer): integer;
var
s: string;
i,j: integer;
begin
i:=0;j:=0;s:='';
s:=sData;
while j<nIndex do
begin
i:=pos('|',S);
if i>=0 then
begin
s:=copy(s,i+1,length(s)-i);
inc(j);
end
else
break;
end;
i:=pos('|',s);
if i>=0 then
s:=copy(s,1,i-1);
try
result:=strtoint(s);
except
end;
end;
//......................................
//***************************************************************
function ExtractIDValues(sData: string): integer;
var
s: string;
i,j: integer;
begin
i:=0;s:='';
s:=sData;
i:=pos('=',s);
if i>=0 then
s:=copy(s,1,i-1);
try
result:=strtoint(s);
except
result:=110;
end;
end;
//......................................
//***************************************************************
// Все перемещения чара здесь!!!
//***************************************************************
//1 бежим от фишермана на берег в Гиран-харбор
//-------------------------------------------------
procedure Mestolovli1;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'Mestolovli1'+RecordFileExt);
msg.Lines.Add('Место ловли: Mestolovli1');
except
SendMsg('файл пути не найден');
exit;
end;
case cmd of
'fishing': GoToPath(go); //бежим ловить
'trade': GoToPath(back); //бежим продавать
end;
end;
//......................................
//-------------------------------------------------
//2 бежим от фишермана на берег в Гиран-харбор
//-------------------------------------------------
procedure Mestolovli2;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'Mestolovli2'+RecordFileExt);
msg.Lines.Add('Место ловли: Mestolovli2');
except
SendMsg('файл пути не найден');
exit;
end;
case cmd of
'fishing': GoToPath(go); //бежим ловить
'trade': GoToPath(back); //бежим продавать
end;
end;
//......................................
//-------------------------------------------------
//3 бежим от фишермана на берег в Гиран-харбор
//-------------------------------------------------
procedure Mestolovli3;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'Mestolovli3'+RecordFileExt);
msg.Lines.Add('Место ловли: Mestolovli3');
except
SendMsg('файл пути не найден');
exit;
end;
case cmd of
'fishing': GoToPath(go); //бежим ловить
'trade': GoToPath(back); //бежим продавать
end;
end;
//......................................
//-------------------------------------------------
//1 меняем место
//-------------------------------------------------
procedure MenayemMesto1;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'MenayemMesto1'+RecordFileExt);
msg.Lines.Add('Меняю место ловли: MenayemMesto1');
except
SendMsg('файл пути не найден');
exit;
end;
GoToPath(go); //бежим ловить
{ MoveToForward:=go;
MoveStepIndex:=0;
MoveToPathEnabled:=True;
MoveTimer.Enabled:=True;
msg.Lines.Add('Репозиция...');
}
end;
//......................................
//-------------------------------------------------
//2 меняем место
//-------------------------------------------------
procedure MenayemMesto2;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'MenayemMesto2'+RecordFileExt);
msg.Lines.Add('Меняю место ловли: MenayemMesto2');
except
SendMsg('файл пути не найден');
exit;
end;
GoToPath(go); //бежим ловить
end;
//......................................
//-------------------------------------------------
//3 меняем место
//-------------------------------------------------
procedure MenayemMesto3;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'MenayemMesto3'+RecordFileExt);
msg.Lines.Add('Меняю место ловли: MenayemMesto3');
except
SendMsg('файл пути не найден');
exit;
end;
GoToPath(go); //бежим ловить
end;
//......................................
//-------------------------------------------------
//1 Репозиция на месте рыбалки после боя с мобом
//-------------------------------------------------
procedure Reposition1;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'Reposition1'+RecordFileExt);
msg.Lines.Add('->Reposition1');
except
SendMsg('файл пути не найден');
exit;
end;
//GoToPath(go); //бежим ловить
MoveToForward:=go;
MoveStepIndex:=0;
MoveToPathEnabled:=True;
MoveTimer.Enabled:=True;
end;
//......................................
//-------------------------------------------------
//2 Репозиция на месте рыбалки после боя с мобом
//-------------------------------------------------
procedure Reposition2;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'Reposition2'+RecordFileExt);
msg.Lines.Add('Репозиция после боя: Reposition2');
except
SendMsg('файл пути не найден');
exit;
end;
// GoToPath(go); //бежим ловить
MoveToForward:=go;
MoveStepIndex:=0;
MoveToPathEnabled:=True;
MoveTimer.Enabled:=True;
end;
//......................................
//-------------------------------------------------
//3 Репозиция на месте рыбалки после боя с мобом
//-------------------------------------------------
procedure Reposition3;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'Reposition3'+RecordFileExt);
msg.Lines.Add('Репозиция после боя: Reposition3');
except
SendMsg('файл пути не найден');
exit;
end;
// GoToPath(go); //бежим ловить
MoveToForward:=go;
MoveStepIndex:=0;
MoveToPathEnabled:=True;
MoveTimer.Enabled:=True;
end;
//......................................
//-------------------------------------------------
//Оживаем после боя с мобом
//-------------------------------------------------
procedure AfterDeath;
var
s:string;
x,y,z : integer;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'afterdeath'+RecordFileExt);
msg.Lines.Add('После смерти: AfterDeath');
except
SendMsg('файл пути не найден');
exit;
end;
//GoToPath(go); //бежим ловить
MoveToForward:=go;
MoveStepIndex:=0;
MoveToPathEnabled:=True;
MoveTimer.Enabled:=True;
msg.Lines.Add('Бежим к фишермэну...');
end;
//......................................
//***************************************************************
procedure UserInfo; //обновление данных о себе
var
i:word;
begin
MyOID:=ReadD(18);
MyX:=ReadD(2);
MyY:=ReadD(6);
MyZ:=ReadD(10);
i:=22;
ReadS(i);
if interlude then inc(i,48) else inc(i,44);
MyMaxHP:=ReadD(i);
MyHP:=ReadD(i);
MyMaxMP:=ReadD(i); //чисто информативно
MyMP:=ReadD(i);
pbMyHP.max:=MyMaxHP;
pbMyHP.position:=MyHP;
pbMyMP.max:=MyMaxMP;
pbMyMP.position:=MyMP;
gbMyHP.caption:=' HP: '+inttostr(MyHP)+'/'+inttostr(MyMaxHP)+' ';
gbMyMP.caption:=' MP: '+inttostr(MyMP)+'/'+inttostr(MyMaxMP)+' ';
end;
//......................................
//***************************************************************
procedure StatusUpdate; //обновление данных о себе
var
i: integer;
begin
for i:=0 to ReadD(6)-1 do
case pck[i*8+10] of
#$09: MyHP:=ReadD(i*8+14);
#$0A: MyMaxHP:=ReadD(i*8+14);
#$0B: MyMP:=ReadD(i*8+14);
#$0C: MyMaxMP:=ReadD(i*8+14);
end;
pbMyHP.max:=MyMaxHP;
pbMyHP.position:=MyHP;
pbMyMP.max:=MyMaxMP;
pbMyMP.position:=MyMP;
gbMyHP.caption:=' HP: '+inttostr(MyHP)+'/'+inttostr(MyMaxHP)+' ';
gbMyMP.caption:=' MP: '+inttostr(MyMP)+'/'+inttostr(MyMaxMP)+' ';
if (MyMaxHP<>0) then //вычисляем процентное соотношение хп
begin
PercentHP:=strtoint(EditHealt.Text);
NeedBuy:=strtoint(EditLure.Text);
but:=Round((MyMaxHP/100)*PercentHP); //при каком количестве хп юзать бутылку лечения
end;
end;
//......................................
//***************************************************************
//04=UserInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Name)d(Race)d(Sex)d(ClassID)d(Level)f(Exp)d(STR)d(DEX)d(CON)d(INT)d(WIT)d(MEN)d(MaxHP)d(CurHP)d(MaxMP)d(CurMP)d(SP)d(CurLoad)d(MaxLoad)d(d)d(DHair)d(Rear)d(Lear)d(Neck)d(RFinger)d(LFinger)d(Head)d(RHand)d(LHand)d(Gloves)d(Chest)d(Legs)d(Feet)d(Back)d(LRHand)d(Hair)d(Face)d(DHair)d(Rear)d(Lear)d(Neck)d(RFinger)d(LFinger)d(Head)d(RHand)d(LHand)d(Gloves)d(Chest)d(Legs)d(Feet)d(Back)d(LRHand)d(Hair)d(Face)-(0068)d(Patk)d(Paspd)d(Pdef)d(evasion)d(accur)d(crithit)d(Matk)d(Maspd)d(Paspd)d(Mdef)d(PvpFlag)d(Karma)d(runSpd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRSpd)d(flWSpd)d(flyRSpd)d(flyWSpd)f(MoveMul)f(aspdMul)f(collisRadius)f(collisHeight)d(HairStyle)d(HairColor)d(Face)d(AccessLvl)s(Title)d(clanID)d(clanCrestId)d(AllyID)d(AllyCrestId)d(ClanLeader)b(Mount)b(shop)b(DwarfCraft)d(PKkills)d(PVPkills)w(cubics)w(cubID)b(findparty)d(abnEffects)b(c)d(clanPrivil)w(RecomLeft)w(RecomHave)d(d)w(InventLimit)d(classId)d(sEff)d(maxCP)d(curCP)b(Mount)b(Team)d(clanBigCrestId)b(Noble)b(Hero)b(Fishing)d(fishX)d(fishY)d(fishZ)d(NameColor)b(isRun)d(PledgeClass)d(d)d(TitleColor)d(d)d(CurseWeap)
//03=CharInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Name)d(Race)d(Sex)h(ClassID)d(DHair)i(Head)i(RHand)i(LHand)i(Gloves)i(Chest)i(Legs)i(Feet)i(Back)i(LRHand)i(Hair)i(PvpFlag)d(Karma)d(MSpeed)d(PSpeed)d(PvpFlag)d(Karma)d(runSpd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRunSpd)d(flWalkSpd)d(flyRSpd)d(flyWSpd)f(SpdMul)f(ASpdMul)f(collisRadius)f(collisHeight)d(HairStyle)d(HairColor)d(Face)s(Title)d(clanID)d(clanCrest)d(allyID)d(allyCrest)d(siegeFlag)b(isStand)b(isRun)b(isInFight)b(isAlikeDead)b(Invis)b(Mount)b(shop)w(cubics)w(cubID)b(findparty)d(abnEffects)b(RecomLeft)w(RecomHave)h(ClassID)d(maxCP)d(curCP)b(isMounted)b(Team)d(clanBigCrestId)b(isNoble)b(isHero)b(isFishing)d(fishX)d(fishY)d(fishZ)d(NameColor)b(isRun)d(d)d(PItem)d(PledgeClass)d(PledgeColor)d(TitleColor)d(Cursed)
procedure TargetInfo; //обновление данных о цели
var
i:word;
begin
AttackerOID:=ReadD(18);
AttackerX:=ReadD(2);
AttackerY:=ReadD(6);
AttackerZ:=ReadD(10);
i:=22;
ReadS(i);
if interlude then inc(i,48) else inc(i,44);
AttackerMaxHP:=ReadD(i);
AttackerHP:=ReadD(i);
pbTargetHP.max:=AttackerMaxHP;
pbTargetHP.position:=AttackerHP;
gbTargetHP.caption:=' HP: '+inttostr(AttackerHP)+'/'+inttostr(AttackerMaxHP)+' ';
end;
//......................................
//***************************************************************
procedure TargetStatusUpdate; //обновление данных о цели
var
i: integer;
begin
for i:=0 to ReadD(6)-1 do
case pck[i*8+10] of
#$09: AttackerHP:=ReadD(i*8+14);
#$0A: AttackerMaxHP:=ReadD(i*8+14);
end;
pbTargetHP.max:=AttackerMaxHP;
pbTargetHP.position:=AttackerHP;
gbTargetHP.caption:=' HP: '+inttostr(AttackerHP)+'/'+inttostr(AttackerMaxHP)+' ';
end;
//......................................
//***************************************************************
function ParseCmd(cmd: string):boolean;
var
s: string;
i,j,k: integer;
params: array[0..9] of string; //до 10 параметров, должно хватить
begin
result:=False;
try
j:=-1;
i:=pos(cmdPrefix,trim(cmd));
if i=0 then
exit;
debugmsg('start ParseCmd: idx:'+inttostr(i)+' cmd: '+cmd);
result:=true;
k:=length(cmdPrefix);
s:=trim(lowercase(cmd));
s:=trim(copy(s,i+k,length(cmd)-i));
debugmsg('trim:'+s);
repeat
inc(j);
k:=pos(cmdDlm,s);
if k>0 then
begin
params[j]:=copy(s,1,k-1);
s:=trim(copy(s,k+length(cmdDlm),length(s)-k));
debugmsg('extract idx:'+inttostr(j) +' param:'+params[j]);
end
else
begin
params[j]:=s;
debugmsg('parm is one');
end;
until pos(cmdDlm,S)=0;
if j>-1 then
begin
inc(j);
params[j]:=s;
debugmsg('extract idx:'+inttostr(j) +' param:'+params[j]);
end;
if j=-1 then
exit;
//*******************************************************
//пропарсили команду
//теперь выполняем
//*******************************************************
if params[0]=cmdRecordPath then
begin
if params[1]<>'' then
RecordPathFileName:=params[1]
else
RecordPathFileName:=RecordPathName;
StartRecord;
end
else
if params[0]=cmdSavePath then
begin
StopRecord;
end
else
if params[0]=cmdMove then
begin
if params[1]='' then
begin
SendMsg('хз куда бежать, укажите имя');
exit;
end;
try
MovePath.LoadFromFile(RecordFilesPath+params[1]+RecordFileExt);
except
SendMsg('файл пути не найден');
exit;
end;
GoToPath(true);
end
else
if params[0]=cmdBack then
begin
if params[1]='' then
begin
SendMsg('хз куда бежать, укажите имя');
exit;
end;
try
MovePath.LoadFromFile(RecordFilesPath+params[1]+RecordFileExt);
except
SendMsg('файл пути не найден');
exit;
end;
GoToPath(false);
end
else
if (params[0]=cmdStop) and MoveToPathEnabled then
MoveToPathEnabled:=False;
except
debugmsg('error in ParseCmd,params='+cmd);
end;
end;
//......................................
//***************************************************************
procedure ShowInfo;
var
i: integer;
begin
stats.Lines.Clear;
stats.Lines.Add('Имя чара :'+Name);
stats.Lines.Add('Время старта :'+TimeToStr(starttime));
stats.Lines.Add('Время ловли :'+TimeToStr(time-starttime));
stats.Lines.Add('Поймали: '+IntToStr(fish1));
stats.Lines.Add('Сорвалось: '+IntToStr(fish2));
stats.Lines.Add('Преобр. успешно: '+IntToStr(lucky1));
stats.Lines.Add('Преобр. неуспешно: '+IntToStr(failed1));
stats.Lines.Add('На нас напали: '+IntToStr(mob1)+' раз');
stats.Lines.Add('Погибли: '+IntToStr(death1)+' раз');
stats.Lines.Add('');
stats.Lines.Add('MyMaxHP: '+IntToStr(MyMaxHP));
stats.Lines.Add('MyHP: '+IntToStr(MyHP));
stats.Lines.Add('MyOID: '+IntToStr(MyOID));
stats.Lines.Add('MyXpos: '+IntToStr(MyX));
stats.Lines.Add('MyYpos: '+IntToStr(MyY));
stats.Lines.Add('MyZpos: '+IntToStr(MyZ));
stats.Lines.Add('');
stats.Lines.Add('ReadyToSell: '+VarToStr(ReadyToSell));
stats.Lines.Add('ReadyToBuy: '+VarToStr(ReadyToBuy));
stats.Lines.Add('ReadyToMultiSell: '+VarToStr(ReadyToMultiSell));
stats.Lines.Add('');
stats.Lines.Add('PMMesto: '+IntToStr(PMMesto));
stats.Lines.Add('MMesto: '+IntToStr(MMesto));
stats.Lines.Add('MestoLovli: '+IntToStr(MestoLovli));
stats.Lines.Add('');
stats.Lines.Add('old_time: '+IntToStr(old_time));
stats.Lines.Add('chk_time: '+IntToStr(chk_time));
stats.Lines.Add('CanFishHere: '+VarToStr(CanFishHere));
stats.Lines.Add('');
stats.Lines.Add('but: '+IntToStr(but));
stats.Lines.Add('PercentHP: '+IntToStr(PercentHP));
stats.Lines.Add('Colvohp: '+VarToStr(Colvohp));
stats.Lines.Add('NeedBuy: '+VarToStr(NeedBuy));
stats.Lines.Add('isDie: '+VarToStr(isDie));
stats.Lines.Add('isFishing: '+VarToStr(isFishing));
stats.Lines.Add('iii: '+IntToStr(iii));
stats.Lines.Add('');
if (WeaponUse1=false) then stats.Lines.Add('Юзать оружие?: НЕТ!') else stats.Lines.Add('Юзать оружие?: ДА!');
if (ShieldUse1=false) then stats.Lines.Add('Юзать щит?: НЕТ!') else stats.Lines.Add('Юзать щит?: ДА!');
if (HPuse1=false) then stats.Lines.Add('Юзать бутылки?: НЕТ!') else stats.Lines.Add('Юзать бутылки?: ДА!');
if (ShotUse1=false) then stats.Lines.Add('Юзать фишин-шоты?: НЕТ!') else stats.Lines.Add('Юзать фишин-шоты?: ДА!');
if not CheckBoxPU.Checked then stats.Lines.Add('Потрошим?: НЕТ!') else stats.Lines.Add('Потрошим?: ДА!');
if not CheckBoxFO.Checked then stats.Lines.Add('FO->PFO: НЕТ!') else stats.Lines.Add('FO->PFO?: ДА!');
end;
//......................................
//***************************************************************
procedure OnShowInfo(Sender: TObject); //выводим в форму
begin
ShowInfo;
if (MyHP<but) and HPuse1 then begin //если разрешено использование бутылок, то используем
if (iii>=5) and (colvohp>0) then begin
UseItem(HPOID); //проверка количества бутылок
iii:=0; //счетчик для личилок, чтобы не спамить
end else inc(iii)
end;
end;
//......................................
//***************************************************************
procedure OnCreatePFO(Sender: TObject); //выводим в форму
begin
buf:=hstr('B8 A8 02 00 00'); //create GFO///////////////////////////////////////////////////////////////////////////////
SendToServerEx(Name);
delay(2000);
buf:=hstr('B8 A9 02 00 00'); //create PFO ////////////////////////////////////////////////////////////////////////////
SendToServerEx(Name);
end;
//......................................
//***************************************************************
procedure RequestRestartPoint;
begin
buf:=#$7D;//////////////////////////////////////////////////////////////////////////////////////
WriteD(00);
SendToServerEx(Name);
MoveTimer.Interval:=10000;
end;
//......................................
//***************************************************************
//21=RequestBypassToServer:s(Cmd)
//посылаем, чтобы получить пакет BuyItem с ListID
procedure RequestByPassToServer(cmd:string);
begin
buf:=#$23;///////////////////////////////////////////////////////////////////////////////////////
WriteS(cmd);
SendToServerEx(Name);
end;
//......................................
//***************************************************************
//s10=SellList:d(Money)h(ListID)w(ListCount)w(ItemType1)h(ObjectID)i(ItemID)d(Count)w(ItemType2)w(h)d(ItemBodyPart)w(EnchantLevel)w(h)w(h)d(refPrice)
//c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectID)i(ItemID)d(Count)
//продаем по одному типу
procedure RequestSellItem(ItemOID,ItemID,Count:integer);
begin
if ReadyToSell then begin
msg.Lines.Add('Продадим предмет OID:'+inttostr(ItemOID)+' ID:'+inttostr(ItemID)+' в кол-ве:'+inttostr(count));
buf:=#$37;//////////////////////////////////////////////////////////////////////////////////
WriteD(ListID);
WriteD(1);
WriteD(ItemOID);
WriteD(ItemID);
WriteD(Count);
SendToServerEx(Name);
end;
end;
//......................................
//***************************************************************
//c1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d(Count)
//купим по одному типу
procedure RequestBuyItem(ItemID,Count:integer);
begin
if ReadyToBuy then begin
msg.Lines.Add('Купим предмет ID:'+inttostr(ItemID)+' в кол-ве:'+inttostr(count));
buf:=#$40;/////////////////////////////////////////////////////////////////////////////////////////////////////////
WriteD(ListID);
WriteD(1);
WriteD(ItemID);
WriteD(Count);
SendToServerEx(Name);
end;
end;
//......................................
//***************************************************************
//cA7=RequestMultiSellChoose:h(ListID)d(EntryID)d(Amount)
//продаем по одному типу
procedure RequestMultiSellItem(ListId,EntryID,Count:integer);
begin
msg.Lines.Add('Обменяем предмет ListID:'+inttostr(ListID)+' EntryID:'+inttostr(EntryID)+' в кол-ве:'+inttostr(count));
if ReadyToMultiSell then begin
buf:=#$B0;////////////////////////////////////////////////////////////////////////////////////////////
WriteD(ListID);
WriteD(EntryId);
WriteD(Count);
SendToServerEx(Name);
end;
end;
//......................................
//***************************************************************
procedure UseItem(OID:integer);
begin
buf:=#$19;///////////////////////////////////////////////////////////////////////////////////////////////
WriteD(OID);
WriteD(00);
SendToServerEx(Name);
end;
//......................................
//***************************************************************
//2F=RequestMagicSkillUse:dMagicID)d(CtrlPressed)b(ShiftPressed)
procedure MagicSkillUse(MagicID:integer);
begin
buf:=#$39;//////////////////////////////////////////////////////////////////////////////////
WriteD(MagicID);
WriteD(00);
WriteC(00);
SendToServerEx(Name);
end;
//......................................
//***************************************************************
procedure Pumping;
begin
if (ShotOID<>0) and (strtoint(EditFShotVal.text)>0) then UseItem(ShotOID)
else if shotuse1 then msg.Lines.Add('Кончились шоты!'); //просто сообщаем, без шотов можно ловить
MagicSkillUse(pump);
end;
//......................................
//***************************************************************
procedure Reeling;
begin
if (ShotOID<>0) and (strtoint(EditFShotVal.text)>0) then UseItem(ShotOID)
else if shotuse1 then msg.Lines.Add('Кончились шоты!'); //просто сообщаем, без шотов можно ловить
MagicSkillUse(reel);
end;
//......................................
//***************************************************************
procedure Fishing;
begin
if strtoint(EditLureVal.text)>1 then begin //оставляем один крючек, чтобы не сбился ItemOID
if not CanFishHere then begin
msg.Lines.Add('Здесь нельзя ловить...');
case MestoLovli of
1: begin cmd:='fishing'; Reposition1; end;
2: begin cmd:='fishing'; Reposition2; end;
3: begin cmd:='fishing'; Reposition3; end;
end;
exit;
end;
MagicSkillUse(fish);
end
else begin
msg.Lines.Add('Кончились крючки!');
fishin.enabled:=false;
if CheckBoxFisherman.Checked then begin
case MestoLovli of
1: begin cmd:='trade'; MestoLovli1; end;
2: begin cmd:='trade'; MestoLovli2; end;
3: begin cmd:='trade'; MestoLovli3; end;
end;
msg.Lines.Add('Бежим в магазин...');
end;
end;
end;
//......................................
//***************************************************************
procedure OnFishing(Sender: TObject);
begin
if not isEquip(MyRodID) then begin giverod; exit; end;
if not isEquip(MyLureID) then begin givelure; exit; end;
fishin.enabled:=false;
Fishing;
isFishing:=true; //ловим
end;
//......................................
//***************************************************************
//04=Action:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ)b(ShiftFlag)
procedure Target(Attacker: Integer);
begin
buf:=#$1F;/////////////////////////////////////////////////////////////////////////////
WriteD(Attacker);
WriteD(MyX);
WriteD(MyY);
WriteD(MyZ);
WriteC(00);
SendToServerEx(Name);
end;
//......................................
//***************************************************************
//0A=Attack:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ)b(ShiftFlag)
procedure Attack(Attacker: Integer);
begin
buf:=#$01;////////////////////////////////////////////////////////////////////////////
WriteD(Attacker);
WriteD(MyX);
WriteD(MyY);
WriteD(MyZ);
WriteC(00);
SendToServerEx(Name);
end;
//......................................
//***************************************************************
procedure TargetAttacker(Attacker: Integer);
begin
msg.Lines.Add('Attacker='+IntToStr(Attacker)+' Player='+IntToStr(MyOID));
fishin.enabled:=false;
Target(Attacker);
delay(800);
Target(Attacker);
delay(800);
end;
//......................................
//***************************************************************
procedure GiveWeapon;
begin
if WeaponOID=0 then exit;
delay(1000);
msg.Lines.Add('Берём='+IntToStr(WeaponOID));
if not isEquip(MyWeaponID) then UseItem(WeaponOID); //попробуем одеть снова
end;
//......................................
//***************************************************************
procedure GiveShield;
begin
if ShieldOID=0 then exit;
delay(1000);
msg.Lines.Add('Берём='+IntToStr(ShieldOID));
if not isEquip(MyShieldID) then UseItem(ShieldOID); //попробуем одеть снова
end;
//......................................
//***************************************************************
procedure GiveRod;
begin
if RodOID=0 then exit;
delay(1000);
msg.Lines.Add('Берём='+IntToStr(RodOID));
if not isEquip(MyRodID) then UseItem(RodOID); //попробуем одеть снова
end;
//......................................
//***************************************************************
procedure GiveLure;
begin
if LureOID=0 then exit;
delay(1000);
msg.Lines.Add('Берём='+IntToStr(LureOID));
if not isEquip(MyLureID) then UseItem(LureOID); //попробуем одеть снова
end;
//......................................
//***************************************************************
function isEquip(ItemID:integer): boolean;
begin
FindItem(ItemId);
if ItemBase2[4,1]=0 then Result:=false else Result:=true;
end;
//......................................
//***************************************************************
// Вся торговля здесь!!!
//***************************************************************
procedure OnTrade(Sender: TObject);
begin
case trade of
//-------------------------------------------------
//продаем фишерману из массива TradeSellItem
//-------------------------------------------------
200: begin
if ReadyToSell then exit; //если еще не продали предыдущую вещь, то выходим сразу
//мы у фишермана, продаем всё ненужное
if FishermanOID=0 then begin
Trade1.enabled:=false; //останавливаем торговлю
msg.Lines.Add('Не готовы к торговле, нет OID фишермана! Требуется отбежать подальше и вернуться.');
exit; //выходим
end;
if (TradeCount=TradeSellItemCount) then begin //проверка на выход из массива
trade:=300;
msg.Lines.Add('Всё продали!');
msg.Lines.Add('Переход к покупкам...');
TradeCount:=0; //начнем сначала массива
end else begin
if FindItem(TradeSellItem[TradeCount])<>0 then begin //проверка, что предмет есть в инвентаре и его можно продать
TargetAttacker(FishermanOID); //фишермана в таргет
msg.Lines.Add('Готовы продать:'+inttostr(TradeSellItem[TradeCount]));
ReadyToSell:=true; //готовы продавать
end else msg.Lines.Add('Нет такого предмета:'+inttostr(TradeSellItem[TradeCount]));
inc(TradeCount); //выбираем следующий предмет
msg.Lines.Add('TradeCount/TradeSellItemCount:'+inttostr(TradeCount)+'/'+inttostr(TradeSellItemCount-1));
end;
end;
//-------------------------------------------------
//покупаем у фишермана из массива TradeBuyItem
//-------------------------------------------------
300: begin
if ReadyToBuy then exit; //если еще купили предыдущую вещь, то выходим сразу
//мы у фишермана, покупаем крючки
if FishermanOID=0 then begin
Trade1.enabled:=false; //останавливаем торговлю
msg.Lines.Add('Не готовы к торговле, нет OID фишермана! Требуется отбежать подальше и вернуться.');
exit; //выходим
end;
if TradeCount=TradeBuyItemCount then begin //проверка на выход из массива
trade:=400;
msg.Lines.Add('Всё купили!');
msg.Lines.Add('Переход к обмену...');
TradeCount:=0; //начнем сначала массива
end else begin
if FindItem(TradeBuyItem[TradeCount])<strtoint(EditLure.text) then begin
TargetAttacker(FishermanOID); //фишермана в таргет
msg.Lines.Add('Готовы купить:'+inttostr(TradeBuyItem[TradeCount]));
ReadyToBuy:=true; //готовы продавать
NeedBuy:=strtoint(EditLure.text)-colvoitm2; //докупаем до 50
msg.Lines.Add('Требуется докупит крючков:'+inttostr(NeedBuy));
end else msg.Lines.Add('Не надо покупать, уже есть:'+inttostr(colvoitm2));
Trd:=TradeCount;
inc(TradeCount);
msg.Lines.Add('TradeCount/TradeBuyItemCount:'+inttostr(TradeCount)+'/'+inttostr(TradeBuyItemCount-1));
end;
end;
//-------------------------------------------------
//обмениваем у фишермана на пруфы
//-------------------------------------------------
400: begin
if ReadyToMultiSell then exit; //если еще не обменяли предыдущую вещь, то выходим сразу
//мы у фишермана, обмениваем всё на пруфы
if FishermanOID=0 then begin
Trade1.enabled:=false; //останавливаем торговлю
msg.Lines.Add('Не готовы к торговле, нет OID фишермана! Требуется отбежать подальше и вернуться.');
exit; //выходим
end;
if TradeCount=TradeMultiItemCount then begin //проверка на выход из массива
Trade1.enabled:=false; //останавливаем торговлю
msg.Lines.Add('Всё обменяли!');
case MestoLovli of
1: begin cmd:='fishing'; MestoLovli1; end;
2: begin cmd:='fishing'; MestoLovli2; end;
3: begin cmd:='fishing'; MestoLovli3; end;
end;
msg.Lines.Add('Бежим на берег...');
TradeCount:=0;
end else begin
if (TradeMultiItem[TradeCount]<>FO) and (TradeMultiItem[TradeCount]<>GFO) then begin
if FindItem(TradeMultiItem[TradeCount])<>0 then begin
TargetAttacker(FishermanOID); //фишермана в таргет
msg.Lines.Add('Готовы обменять:'+inttostr(TradeMultiItem[TradeCount]));
ReadyToMultiSell:=true; //готовы обменивать
end else msg.Lines.Add('Нет такого предмета:'+inttostr(TradeMultiItem[TradeCount]));
Trd:=TradeCount;
end;
inc(TradeCount);
msg.Lines.Add('TradeCount/TradeMultiItemCount:'+inttostr(TradeCount)+'/'+inttostr(TradeMultiItemCount-1));
end;
end;
end;
end;
//......................................
//***************************************************************
procedure CreateItemBase; //пакет 1B, Создает базу ObjectID по ItemID
//1B=ItemListPacket:w(window)w(ListCount)w(itemType1)h(ObjectID)i(ItemID)d(count)w(itemType2)w(CustType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(CustType2)d(Augment)d(--)
var
i, j, ListCount: integer;
begin
for i:=1 to maxitems do begin
//очищаем масив
ItemBase[1,i]:=0; //OID
ItemBase[2,i]:=0; //ID
ItemBase[3,i]:=0; //кол-во
ItemBase[4,i]:=0; //isEquipped
end;
ColvoItm:=0;
ListCount:=ReadH(4); //количество итемов не должно превышать max!
if ListCount>maxitems then msg.Lines.Add('Внимание! Не все вещи влезли в массив. ListCount>Max='+IntToStr(ListCount)+'/'+IntToStr(maxitems));
//Пробегаем по Инвентарю и сохраняем ObjectID соответствующие необходимым ItemID
for i:=1 to ListCount do begin ///////////////////////////////////////////////////////////
itemBase[1,i]:=ReadD((i-1)*72+8); //OID //////////////////////////////////////////////////////////////////////
itemBase[2,i]:=ReadD((i-1)*72+8+4); //ItemID ///////////////////////////////////////////////////////////
itemBase[3,i]:=ReadD((i-1)*72+8+4+4+4); //ItemCount ////////////////////////////////////////////////////////////////////
itemBase[4,i]:=ReadH((i-1)*72+8+4+4+4+4+2+2); //isEquipped ///////////////////////////////////////////////////////////////
//Say('i='+inttostr(i)+' ItemBase[1,i]='+IntToStr(ItemBase[1,i])+' ItemBase[2,i]='+IntToStr(ItemBase[2,i])+' ItemBase[3,i]='+IntToStr(ItemBase[3,i]));
//1B=ItemListPacket:w(window)w(ListCount)w(itemType1)h(ObjectID)i(ItemID)d(count)w(itemType2)w(CustType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(CustType2)
//собираем ID и OID предметов и оружия
case itemBase[2,i] of
MyWeaponID : begin
WeaponOId:=itemBase[1,i];
WeaponId:=itemBase[2,i];
end;
MyShieldID : begin
ShieldOId:=itemBase[1,i];
ShieldId:=itemBase[2,i];
end;
MyShotID : begin
ShotOID:=itemBase[1,i];
ColvoShot:=itemBase[3,i];
EditFShotVal.Text:=inttostr(itemBase[3,i]);
end;
MyRodID : begin
RodOId:=itemBase[1,i];
end;
MyLureID : begin
LureOId:=itemBase[1,i];
ColvoLure:=itemBase[3,i];
EditLureVal.Text:=inttostr(itemBase[3,i]);
end;
MyHPID : begin
HPOId:=itemBase[1,i];
ColvoHP:=itemBase[3,i];
EditHPotionVal.Text:=inttostr(itemBase[3,i]);
end;
end;
end;
ColvoItm:=ListCount;
if debug then msg.Lines.Add('>ColvoItm='+IntToStr(Colvoitm));
//вносим изменения в массив
StringList.Clear;
try
for i:=1 to ListCount do begin
try
StringList.Add(ItemsName.Values[IntToStr(ItemBase[2,i])]); //записываем название вещей из инвентаря
except;
msg.Lines.Add('Пропускаем! Нет ItemID='+inttostr(ItemBase[2,i])+' в itemsid.ini');
end
end;
except;
msg.Lines.Add('ошибка в CreateItemBase->StringList.Add()');
msg.Lines.Add(inttostr(ItemBase[2,i]));
exit;
end;
if not CheckBoxRod.Checked then begin //наполняем комбобокс
with ComboBoxRod do
begin
Items.Clear;
Items.Assign(StringList);
ItemIndex:=0;
end;
end;
if not CheckBoxLure.Checked then begin //наполняем комбобокс
with ComboBoxLure do
begin
Items.Clear;
Items.Assign(StringList);
ItemIndex:=0;
end;
end;
if not CheckBoxWeapon.Checked then begin //наполняем комбобокс
with ComboBoxWeapon do
begin
Items.Clear;
Items.Assign(StringList);
ItemIndex:=0;
end;
end;
if not CheckBoxShield.Checked then begin //наполняем комбобокс
with ComboBoxShield do
begin
Items.Clear;
Items.Assign(StringList);
ItemIndex:=0;
end;
end;
if not CheckBoxFShot.Checked then begin //наполняем комбобокс
with ComboBoxFShot do
begin
Items.Clear;
Items.Assign(StringList);
ItemIndex:=0;
end;
end;
if not CheckBoxHPotion.Checked then begin //наполняем комбобокс
with ComboBoxHPotion do
begin
Items.Clear;
Items.Assign(StringList);
ItemIndex:=0;
end;
end; ///////////////////////////////////////////////////////////////////////////////////////////////////
end;
//......................................
//******************************************************************************
//27=InventoryUpdate:w(count)w(1add2mod3remove)w(itemType1)d(ObjectID)i(ItemId)d(Count)w(itemType2)w(cusType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(cusType2)
procedure UpdateItemBase; //пакет 27, Создает базу ObjectID по ItemID
var
i, ii, j, ObjID, ItemID, ItemCount, ListCount, UpdType, isEquipped: integer;
add : boolean;
begin
add:=false;
ListCount:=ReadH(2); //количество итемов////////////////////////////////////////////////////////////////////
//Пробегаем по Инвентарю и сохраняем пары ObjectID - colv
for i:=1 to ListCount do begin
UpdType:=ReadH((i-1)*74+4); /////////////////////////////////////////////////////////////////////////
ItemOID:=ReadD((i-1)*74+8); //ObjectID///////////////////////////////////////////////////////////////////
ItemID:=ReadD((i-1)*74+12); //ItemID//////////////////////////////////////////////////////////////////////////////
ItemCount:=ReadD((i-1)*74+20); //Count //////////////////////////////////////////////////////////////////////////
isEquipped:=ReadH((i-1)*74+28);
case UpdType of
//добавлен
1: begin
for ii:=1 to maxitems do begin
if (ItemBase[1,ii]=0) and (add=false) then begin
ItemBase[1,ii]:=ItemOID;
ItemBase[2,ii]:=ItemID;
ItemBase[3,ii]:=ItemCount;
ItemBase[4,ii]:=isEquipped;
//msg.Lines.Add('Добавили предмет!');
//msg.Lines.Add('i='+inttostr(ii)+' ItemBase[1,ii]='+IntToStr(ItemBase[1,ii])+' ItemBase[2,ii]='+IntToStr(ItemBase[2,ii])+' ItemBase[3,ii]='+IntToStr(ItemBase[3,ii]));
ColvoItm:=ColvoItm+ItemCount;
add:=true;
end;
end;
case ItemID of
6411..6518,7726..7806,8351..8359,8403..8483: begin
if not CheckBoxPU.Checked then exit;
delay(500); //стоит здесь и меньше нельзя
msg.Lines.Add('Потрошим! ObjectID='+IntToStr(ItemOID)+' ItemID='+IntToStr(ItemID)+' ColvoItem='+IntToStr(colv));
UseItem(ItemOID);//потрошим рыбу
end;
7807..7809,6519..6527: begin
if ItemID=MyLureID then begin
LureOID:=ItemOID;
ColvoLure:=ItemCount;
EditLureVal.Text:=inttostr(ItemCount);
end;
end;
6535..6540: begin
if ItemID=MyShotID then begin
ShotOID:=ItemOID;
ColvoShot:=ItemCount;
EditFShotVal.Text:=inttostr(ItemCount);
end;
end;
1060..1061: begin
if not CheckBoxHPotion.Checked then exit;
if ItemID=MyHPID then begin
HPOID:=ItemOID;
ColvoHP:=ItemCount;
EditHPotionVal.Text:=inttostr(ItemCount);
end;
end;
end;
end;
//изменен
2: begin
for ii:=1 to maxitems do begin
if ItemBase[1,ii]=ItemOID then begin
ItemBase[3,ii]:=ItemCount;
ItemBase[4,ii]:=isEquipped;
//msg.Lines.Add('Изменяем параметры предмета!');
//msg.Lines.Add('i='+inttostr(ii)+' ItemBase[1,ii]='+IntToStr(ItemBase[1,ii])+' ItemBase[2,ii]='+IntToStr(ItemBase[2,ii])+' ItemBase[3,ii]='+IntToStr(ItemBase[3,ii]));
end;
end;
case ItemID of
6411..6518,7726..7806,8351..8359,8403..8483: begin
if not CheckBoxPU.Checked then exit;
delay(500); //стоит здесь и меньше нельзя
msg.Lines.Add('Потрошим! ObjectID='+IntToStr(ItemOID)+' ItemID='+IntToStr(ItemID)+' ColvoItem='+IntToStr(colv));
UseItem(ItemOID);//потрошим рыбу
end;
7807..7809,6519..6527: begin
if ItemID=MyLureID then begin
LureOID:=ItemOID;
ColvoLure:=ItemCount;
EditLureVal.Text:=inttostr(ItemCount);
end;
end;
6535..6540: begin
if ItemID=MyShotID then begin
ShotOID:=ItemOID;
ColvoShot:=ItemCount;
EditFShotVal.Text:=inttostr(ItemCount);
end;
end;
1060..1061: begin
if ItemID=MyHPID then begin
HPOID:=ItemOID;
ColvoHP:=ItemCount;
EditHPotionVal.Text:=inttostr(ItemCount);
end;
end;
end;
end;
//удален
3: begin
for ii:=1 to maxitems do begin
if ItemBase[1,ii]=ItemOID then begin
//msg.Lines.Add('Удаляем предмет!');
//msg.Lines.Add('i='+inttostr(ii)+' ItemBase[1,ii]='+IntToStr(ItemBase[1,ii])+' ItemBase[2,ii]='+IntToStr(ItemBase[2,ii])+' ItemBase[3,ii]='+IntToStr(ItemBase[3,ii]));
ItemBase[1,ii]:=0;
ItemBase[2,ii]:=0;
ItemBase[3,ii]:=0;
ItemBase[4,ii]:=0;
ColvoItm:=ColvoItm-ItemCount;
end;
end;
case ItemID of
7807..7806,6519..6527: begin
if ItemID=MyLureID then begin
LureOID:=ItemOID;
ColvoLure:=ItemCount;
EditLureVal.Text:=inttostr(ItemCount);
end;
end;
6535..6540: begin
if ItemID=MyShotID then begin
ShotOID:=ItemOID;
ColvoShot:=ItemCount;
EditFShotVal.Text:=inttostr(ItemCount);
end;
end;
1060..1061: begin
if ItemID=MyHPID then begin
HPOID:=ItemOID;
ColvoHP:=ItemCount;
EditHPotionVal.Text:=inttostr(ItemCount);
end;
end;
end; /////////////////////////////////////////////////////////////////////////////////////////
end;
end;
end;
end;
//......................................
//******************************************************************************
function SumItem(Item: integer):integer;
var
sum, i : integer;
begin
result:=0;
//находим подходящий предмет по ItemID
for i:=1 to maxitems do begin
if (ItemBase[2,i]=item) then begin
msg.Lines.Add('Нашли предмет ItemOID='+inttostr(ItemBase[1,i])+' ItemID='+inttostr(ItemBase[2,i])+' ItemCol='+inttostr(ItemBase[3,i])+' EnchantLvl='+inttostr(ItemBase[4,i]));
msg.Lines.Add('i='+inttostr(i));
result:=result+ItemBase[3,i];
//inc(result);
end;
end;
end;
//......................................
//******************************************************************************
function FindItem(item:integer) : integer; //находим в инвентаре все предметы с ItemID
var
i, j : integer;
begin
for i:=1 to maxitems do begin
//очищаем масив
ItemBase2[1,i]:=0;
ItemBase2[2,i]:=0;
ItemBase2[3,i]:=0;
ItemBase2[4,i]:=0;
end;
ColvoItm2:=0;
j:=1;
for i:=1 to maxitems do begin
//находим подходящий предмет
if (ItemBase[2,i]=item) then begin
//Say('i='+inttostr(i)+' ItemBase[1,i]='+IntToStr(ItemBase[1,i])+' ItemBase[2,i]='+IntToStr(ItemBase[2,i])+' ItemBase[3,i]='+IntToStr(ItemBase[3,i]));
ItemBase2[1,j]:=ItemBase[1,i];
ItemBase2[2,j]:=ItemBase[2,i];
ItemBase2[3,j]:=ItemBase[3,i];
ItemBase2[4,j]:=ItemBase[4,i];
ColvoItm2:=ColvoItm2+ItemBase[3,i];
inc(j);
end;
end;
result:=colvoitm2;
// msg.Lines.Add('ColvoItm2='+IntToStr(Colvoitm2));
end;
//......................................
//***************************************************************
procedure AppendNpc(OID, ID : integer);
//добавляем в базу данных мобов с коррекцией расстояния до них
var
i: integer;
ispovtor:boolean;
begin
isPovtor:=false;
for i:=1 to maxnpc do begin
//если нашли в базе, то коректируем его координаты на новые
if (NpcBase[1,i]=OID) and (MyOID<>OID) then begin
NpcBase[2,i]:=ID-kID; //ID
isPovtor:=true;
//msg.Lines.Add('Корректируем координаты Npc '+IntToStr(i)+' OID:'+IntToStr(NpcBase[1,i])+' ID:'+IntToStr(NpcBase[2,i]));
//msg.Lines.Add('KolvoNpc='+inttostr(kolvonpc));
end;
end;
if not isPovtor then
begin //иначе, перебираем базу, ищем свободную ячейку в ней и добавляем нового
for i:=1 to maxnpc do begin
if (NpcBase[1,i]=0) and (MyOID<>OID) then begin
//запоминаем моба в свободную ячейку
NpcBase[1,i]:=OID; //OID
NpcBase[2,i]:=ID-kID; //ID
inc(kolvonpc);
//добавляем имя Npc
//msg.Lines.Add('Вносим координаты Npc '+IntToStr(i)+' OID:'+IntToStr(NpcBase[1,i])+' ID:'+IntToStr(NpcBase[2,i]));
break;
end;
end;
end;
end;
//......................................
//***************************************************************
procedure DeleteNpc(OID : integer); //удаляем Npc
var
i : integer;
begin
for i:=1 to maxnpc do begin
//если нашли в базе, то удаляем его
if (NpcBase[1,i]=OID) then begin
//msg.Lines.Add('Удаляем '+inttostr(NpcBase[1,i])+' '+inttostr(NpcBase[2,i]));
NpcBase[1,i]:=0; //OID
NpcBase[2,i]:=0; //ID
dec(kolvonpc);
//msg.Lines.Add('Удаляем Npc'+' KolvoNpc='+inttostr(kolvonpc));
break;
end;
end;
end;
//......................................
//***************************************************************
// вызывается при приходе каждого пакета, если скрипт включен
//***************************************************************
begin
//****************************************************************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//****************************************************************************
//проверка на готовность скрипта
if (MyOID<>0) and (LureOID<>0) and (RodOID<>0) and not status then begin
msg.Lines.Add('Скрипт инициализирован!');
status:=true;
end;
//****************************************************************************
//продажа состоит из следующих шагов:
//1. таргет на продавце, пауза, снова таргет c04=Action, c04=Action
//2. приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
//3. шлем выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)
//4. приходит s10=SellList:d(Money)h(ListID)w(ListCount)w(ItemType1)h(ObjectID)i(ItemID)d(Count)w(ItemType2)w(h)d(ItemBodyPart)w(EnchantLevel)w(h)w(h)d(refPrice)
//5. FindItem(ID) найдем OID, Count нужной вещи по ID
//6. шлем c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectID)i(ItemID)d(Count)
//****************************************************************************
if ReadyToSell and (FishermanOID<>0) then begin
if (ConnectName=Name) and FromServer then begin
case pck[1] of
//после того, как мы взяли в таргет продавца приходит этот пакет (#$0F)
//s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
#$19: begin///////////////////////////////////////////////////////////////////////////////////////////
msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');
if ReadD(2)=FishermanOID then begin
delay(1000); //делаем небольшую паузу, чтобы пакеты шли в правильном порядке
//шлем запрос выбора пункта - продажа
//c21=RequestBypassToServer:s(Cmd)
RequestByPassToServer(GetSellList);
msg.Lines.Add('C>Пакет RequestBypassToServer #$21 (sell)');
end;
end;
//после выбора пункта - продажа, приходит этот пакет (#$10)
//s10=SellList:d(Money)h(ListID)w(ListCount)w(ItemType1)h(ObjectID)i(ItemID)d(Count)w(ItemType2)w(h)d(ItemBodyPart)w(EnchantLevel)w(h)w(h)d(refPrice)
#$06: begin/////////////////////////////////////////////////////////////////////////
delay(1000); //делаем небольшую паузу, чтобы пакеты шли в правильном порядке
msg.Lines.Add('S>Пакет SellList #$10');
ListID:=ReadD(6); //запоминаем, он все время разный
msg.Lines.Add('ListID='+inttostr(ListID));
//шлем запрос на продажу
//c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectID)i(ItemID)d(Count)
msg.Lines.Add('C>Пакет RequestSellItem #$1E');
//продадим первый из списка
msg.Lines.Add('FindItem: OID:'+IntToStr(ItemBase2[1,1])+' ID:'+IntToStr(ItemBase2[2,1])+' Count:'+IntToStr(ItemBase2[3,1]));
RequestSellItem(ItemBase2[1,1],ItemBase2[2,1],ItemBase2[3,1]);
ReadyToSell:=false; //закончили с предметом
end;
end;
end;
end;
//****************************************************************************
//покупка состоит из следующих шагов:
//1. таргет на продавце, пауза, снова таргет c04=Action, c04=Action
//2. приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
//3. шлем выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)
//4. приходит s11=BuyList:d(Money)h(ListID)w(ListCount)w(ItemType1)h(ObjectID)i(ItemID)d(maxcnt)w(ItemType2)w(h)d(ItemBodyPart)
//5. FindItem(ID) найдем OID, Count нужной вещи по ID
//6. шлем c1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d(Count)
//****************************************************************************
if ReadyToBuy and (FishermanOID<>0) then begin
if (ConnectName=Name) and FromServer then begin
case pck[1] of
//после того как мы взяли в таргет продавца приходит этот пакет
//s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
#$19: begin///////////////////////////////////////////////////////////////////////////////////////
msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');
if ReadD(2)=FishermanOID then begin
//шлем запрос выбора пункта - продажа
//c21=RequestBypassToServer:s(Cmd)
delay(1000);
RequestByPassToServer(getbuylist);
msg.Lines.Add('C>Пакет RequestBypassToServer #$21 (sell)');
end;
end;
//после выбора пункта - продажа, приходит этот пакет
//s11=BuyList:d(Money)h(ListID)w(ListCount)w(ItemType1)h(ObjectID)i(ItemID)d(maxcnt)w(ItemType2)w(h)d(ItemBodyPart)
#$07: begin//////////////////////////////////////////////////////////////////////////////
msg.Lines.Add('S>Пакет BuyList #$11');
ListID:=ReadD(6); //запоминаем, он все время разный
msg.Lines.Add('ListID='+inttostr(ListID));
//шлем запрос на продажу
//1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d(Count)
msg.Lines.Add('C>Пакет RequestBuyItem #$1F');
//продадим первый из списка
msg.Lines.Add('Item: ID:'+IntToStr(TradeBuyItem[Trd])+' Count:'+IntToStr(NeedBuy));
delay(1000);
RequestBuyItem(TradeBuyItem[Trd],NeedBuy);
ReadyToBuy:=false;
end;
end;
end;
end;
//****************************************************************************
//обмен состоит из следующих шагов:
//1. таргет на продавце, пауза, снова таргет c04=Action, c04=Action
//2. приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
//3. шлем выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)
//4. приходит sD0=MultiSellList:d(listId)d(page_beg)d(page_end)d(onpage)d(entrycount)d(EntryId)b(?)w(prodcount)w(itemcount<)w(pItemId)d(?)w(ptype2)d(pcount)w(penchant)w(iItemId)w(itype2)d(icount)w(ienchant)
//5. FindItem(ID) найдем OID, Count нужной вещи по ID
//6. шлем cA7=RequestMultiSellChoose:h(ListID)d(EntryID)d(Amount)
//****************************************************************************
if ReadyToMultiSell and (FishermanOID<>0) then begin
if (ConnectName=Name) and FromServer then begin
case pck[1] of
//после того как мы взяли в таргет продавца приходит этот пакет
//s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
#$19: begin
msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');
if ReadD(2)=FishermanOID then begin
//шлем запрос выбора пункта - продажа
//c21=RequestBypassToServer:s(Cmd)
delay(1000);
RequestByPassToServer(getmultisell);
msg.Lines.Add('C>Пакет RequestBypassToServer #$21 (multisell)');
end;
end;
//после выбора пункта - обмен, приходит этот пакет
//sD0=MultiSellList:d(listId)d(page_beg)d(page_end)d(onpage)d(entrycount)d(EntryId)b(?)w(prodcount)w(itemcount<)w(pItemId)d(?)w(ptype2)d(pcount)w(penchant)w(iItemId)w(itype2)d(icount)w(ienchant)
#$D0: begin
msg.Lines.Add('S>Пакет MultiSellList #$D0');
ListID:=ReadD(2); //запоминаем, он все время разный
msg.Lines.Add('ListID='+inttostr(ListID));
//шлем запрос на обмен
//cA7=RequestMultiSellChoose:h(ListID)d(EntryID)d(Amount)
msg.Lines.Add('C>Пакет RequestMultiSellChoose #$A7(ListId:'+IntToStr(ListId)+' EntryId:'+IntToStr(Trd*2+1)+' Count:'+IntToStr(ItemBase2[3,1])+')');
delay(1000);
//в java -> EntryId * k=100000
RequestMultiSellItem(ListId,Trd*2+1,ItemBase2[3,1]);
ReadyToMultiSell:=false;
end;
end;
end;
end;
//****************************************************************************
if (ConnectName=Name) and FromServer then begin
case pck[1] of
//***************************************************************
#$2F: begin // MoveBackwardToLocation////////////////////////////////////////////////////////////
if ReadD(2) = MyOID then begin
MyX := ReadD(18);
MyY := ReadD(22);
MyZ := ReadD(26);
end;
end;
//***************************************************************
#$32: begin //пакет с инфой о моём чаре/////////////////////////////////////////////////////////////
//msg.Lines.Add('S>Пакет UserInfo #$04');
UserInfo;
end;
//***************************************************************
//05=Attack:d(AttackerID)h(targetID)d(Damage)b(Flags)d(X)d(Y)d(Z)d(ListHits)h(targetID)d(damage)b(flags)
#$33: begin
msg.Lines.Add('S>Пакет Attack #$05');
if (MyOID=ReadD(6)) and (MyOID<>ReadD(2)) then begin
fishin.enabled:=false;
isFishing:=false; //сейчас не ловим
if MoveToPathEnabled then MoveTimer.Enabled:=false; //если бежали, то остановимся
if not underattack then begin
AttackerOID:=ReadD(2);
msg.Lines.Add('На нас напали! ObjectID='+IntToStr(AttackerOID));
if WeaponUse1 and not isEquip(MyWeaponID) then begin
if ShieldUse1 and not isEquip(MyShieldID) then giveshield;
giveweapon;
end;
TargetAttacker(AttackerOID);
underattack:=true;
inc(mob1);
end;
end;
end;
//***************************************************************
//пакет Die (моб умер)
//06=Die:h(CharID)d(d)d(HAsHideout)d(HasCastle)d(flags)d(sweepable)d(access)
#$00: begin////////////////////////////////////////////////////////////////////
msg.Lines.Add('S>Пакет Die #$06 ObjectID='+IntToStr(ReadD(2)));
if (AttackerOID=ReadD(2)) then begin
pbTargetHP.min:=0;
msg.Lines.Add('Убили моба ObjectID='+IntToStr(AttackerOID)+' в '+TimeToStr(time));
isDie:=true; //мы убили моба
if MoveToPathEnabled then MoveTimer.Enabled:=True; //если бежали, то продолжим путь
underattack:=false;
if not isEquip(MyRodID) then giverod;
if not isEquip(MyLureID) then givelure;
//репозиция
fishin.enabled:=false;
isFishing:=false; //сейчас не ловим
case MestoLovli of
1: begin cmd:='fishing'; Reposition1; end;
2: begin cmd:='fishing'; Reposition2; end;
3: begin cmd:='fishing'; Reposition3; end;
end;
msg.Lines.Add('Репозиция на месте рыбалки после боя с мобом...');
end;
if (MyOID=ReadD(2)) then begin
msg.Lines.Add('Нас убили в '+TimeToStr(time));
underattack:=false;
inc(death1);
fishin.enabled:=false;
isFishing:=false; //сейчас не ловим
RequestRestartPoint; //оживаем после смерти в городе
end;
end;
//***************************************************************
#$01: begin //пакет Revive
msg.Lines.Add('S>Пакет Revive #$07');
if (MyOID=ReadD(2)) then begin
cmd:='death'; AfterDeath;
end;
end;
//***************************************************************
//0C=DropItem:h(PlayerID)h(ObjectID)i(ItemID)d(X)d(Y)d(Z)d(Stackable)d(Count)d(d)
#$16: begin
msg.Lines.Add('S>Пакет DropItem #$0C');
if (AttackerOID=ReadD(2)) then begin //дроп только с наших мобов
if (delta(MyX, MyY, ReadD(14), ReadD(18))<=200) then begin
//по ItemID здесь можно отсеивать ненужные предметы
//if ReadD(10)=57 then exit; //не поднимать адену
//msg.Lines.Add('Выпала вещь!!!');
fishin.enabled:=false;
isFishing:=false; //сейчас не ловим
Target(ReadD(6));
msg.Lines.Add(' Пробую поднять дроп!!!');
delay(1000);
fishin.enabled:=true;
end;
end;
end;
//***************************************************************
#$18: begin////////////////////////////////////////////////////////////////////////////
//msg.Lines.Add('S>Пакет StatusUpdate #$0E');
if (MyOID=ReadD(2)) then StatusUpdate; //обновление информации о хп
if (AttackerOID=ReadD(2)) then TargetStatusUpdate; //обновление информации о хп
end;
//***************************************************************
//12=DeleteObject:d(ObjectID)d(d)
#$08: begin///////////////////////////////////////////////////////////////////////////////
msg.Lines.Add('S>C $12 DeleteObject '+inttostr(ReadD(2)));
DeleteNpc(ReadD(2));
// if (AttackerOID=ReadD(2)) and not isDie then begin
if (AttackerOID=ReadD(2)) then begin
pbTargetHP.min:=0;
msg.Lines.Add('Исчез напавший на нас ObjectID='+IntToStr(AttackerOID)+' в '+TimeToStr(time));
if MoveToPathEnabled then MoveTimer.Enabled:=True; //если бежали, то продолжим путь
underattack:=false;
if not isEquip(MyRodID) then giverod;
if not isEquip(MyLureID) then givelure;
//репозиция
fishin.enabled:=false;
isFishing:=false; //сейчас не ловим
case MestoLovli of
1: begin cmd:='fishing'; Reposition1; end;
2: begin cmd:='fishing'; Reposition2; end;
3: begin cmd:='fishing'; Reposition3; end;
end;
msg.Lines.Add('Репозиция на месте рыбалки после боя с мобом...');
isDie:=false; //мы убили моба
end;
end;
//***************************************************************
//16=NpcInfo:d(ObjectID)d(NpcTypeID)d(IsAttackable)d(X)d(Y)d(Z)d(Heading)
//d(d)d(Maspd)d(Paspd)d(runSpd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRSpd)
//d(flWSpd)d(FlyRSpd)d(FlyWSpd)f(ProperMul)f(Paspd)f(CollisRadius)
//f(CollisHeight)d(RHand)d(d)d(LHand)b(nameabove)b(isRun)b(isInFight)
//b(isAlikeDead)b(isSummoned)s(Name)s(Title)d(d)d(d)d(karma)d(abnEffect)
//d(d)d(d)d(d)d(d)b(c)b(Team)f(collisRadius)f(collisHeight)d(d)
#$0C: begin//////////////////////////////////////////////////////////////////////
msg.Lines.Add('S>Пакет NpcInfo #$16'+inttostr(ReadD(2)));
// OID ID
AppendNpc(ReadD(2), ReadD(6)); //добавляем в базу данных
if (FishermanID=ReadD(6)-kID) then begin
EditFishermanOID.text:=inttostr(ReadD(2));
FishermanOID:=strtoint(EditFishermanOID.text);
if java then begin
//java
getbuylist:='npc_'+inttostr(FishermanOID)+'_Buy 411';
getselllist:='npc_'+inttostr(FishermanOID)+'_Sell';
getmultisell:='npc_'+inttostr(FishermanOID)+'_multisell 009';
end;
end;
end;
//***************************************************************
//1B=ItemListPacket:w(window)w(ListCount)w(itemType1)h(ObjectID)i(ItemID)d(count)w(itemType2)w(CustType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(CustType2)d(Augment)d(--)
#$11: begin//////////////////////////////////////////////////////////////////////
//msg.Lines.Add('S>Пакет ItemListPacket #$1B');
CreateItemBase; //создание базы предметов
end;
//***************************************************************
//27=InventoryUpdate:w(count)w(1add2mod3remove)w(itemType1)d(ObjectID)i(ItemId)d(Count)w(itemType2)w(cusType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(cusType2)-(8)
#$21: begin // 41(42) для IL, 32(34) для С4///////////////////////////////////////////////////////////////////////
//msg.Lines.Add('S>Пакет InventoryUpdate #$27');
UpdateItemBase; //Обновление базы
end;
//***************************************************************
#$62: begin//////////////////////////////////////////////////////////////////////////////////////////////////
//msg.Lines.Add('S>Пакет Messages #$64');
if (pck[2]+pck[3]=#$85#$06) then inc(failed1); //ничего не нашли в рыбе
if (pck[2]+pck[3]=#$35#$00) then inc(lucky1);//lucky1:=fish1-failed1; //удачно вскрыли
if (pck[2]+pck[3]=#$B1#$05) then begin //You can't fish here
//репозиция
fishin.enabled:=false;
isFishing:=false; //сейчас не ловим
CanFishHere:=false; //можно тут ловить?
msg.Lines.Add('Здесь нельзя ловить...');
case MestoLovli of
1: begin cmd:='fishing'; Reposition1; end;
2: begin cmd:='fishing'; Reposition2; end;
3: begin cmd:='fishing'; Reposition3; end;
end;
end;
end;
//***************************************************************
//ловим рыбу
//FE1300=ExFishingStart:h(charOID)d(fishType)d(X)d(Y)d(Z)b(isNightLure)b(c)
//FE1400=ExFishingEnd:h(charObjtId)b(isWin)
//FE1500=ExFishingStartCombat:h(charOID)d(time)d(HP)b(Fighting)b(LureType)b(isFishDeceptive)
//FE1600=ExFishingHpRegen:h(charOID)d(time)d(fish_HP)b(HPstop/rise)b(GoodUse)b(anim)d(penalty)b(BarColor)
#$FE: begin
if Status and (MyOID<>0) then begin
case pck[2] of
//FE1400=ExFishingEnd:h(charObjtId)b(isWin)
#$1F: begin/////////////////////////////////////////////////////////////////////////////////
//msg.Lines.Add('S>Пакет ExFishingEnd #$FE1400');
isFishing:=false; //сейчас не ловим
if MyOID=ReadD(4) then begin
if ReadC(8)=1 then begin
inc(fish1); //счетчик пойманых
msg.Lines.Add('Поймали!');
//MMesto:=0; //сбрасываем готовность смены места
end else begin
if stop then exit; //нажали кнопку стоп!
inc(fish2); //счетчик потеряных
msg.Lines.Add('Сорвалась!');
inc (MMesto); //не пора ли поменять место ловли?
if (MMesto=PMMesto) then begin
MMesto:=0; //сбрасываем готовность смены места
inc(MestoLovli);
if (MestoLovli>3) then MestoLovli:=1;
fishin.enabled:=false;
case MestoLovli of
1: begin cmd:='fishing'; MenayemMesto1; end;
2: begin cmd:='fishing'; MenayemMesto2; end;
3: begin cmd:='fishing'; MenayemMesto3; end;
end;
//moveto1.enabled:=true;
msg.Lines.Add('Бежим на новое место...');
exit;
end;
end;
fishin.enabled:=true;
end;
end;
//FE1600=ExFishingHpRegen:h(charOID)d(time)d(fish_HP)b(HPstop/rise)b(GoodUse)b(anim)d(penalty)b(BarColor)
#$28: begin///////////////////////////////////////////////////////////////////////////////////////////
//msg.Lines.Add('S>Пакет ExFishingHpRegen #$FE1600');
if MyOID=ReadD(4) then begin
if (pck[16]+pck[18]=#$00#$00) then begin
pumping;
//msg.Lines.Add('Pumping!');
end; // else if (pck[16]+pck[17]=#$01#$01) then msg.Lines.Add('Pumping прошёл!');
if (pck[16]+pck[18]=#$01#$00) then begin
reeling;
//msg.Lines.Add('Reeling!');
end; // else if (pck[16]+pck[17]=#$01#$01) then msg.Lines.Add('Reeling прошёл!');
end;
end;
end;
end;
end;
{#$D3: begin // D3=NetPing:d(kID) на Нетпинг сервера шлем сохранённый пакет Нетпинга от клиента
msg.Lines.Add('S>Пакет NetPing #$D3');
if LogOutOk then begin
buf:=NetPing;
SendToServerEx(Name);
msg.Lines.Add('C>Пакет NetPing #$A8');
end;
end;}////////////////////////////////////////////////////////////////////////////////////////////////////////////////
end;
end;
//****************************************************************************
if (ConnectName=Name) and FromClient then begin
case pck[1] of
{#$00: begin //C>09=LogoutRequest - выходим ручками из клиента////////////////////////////////////////////////////////
msg.Lines.Add('S>Пакет LogoutRequest #$09');
// вроде не надо тут их ставить?
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
pck:='';
// шлем s7E=LogOutOk, для отключения клиента
msg.Lines.Add('S>Пакет LogOutOk #$7E');
buf:=#$7E;
SendToClientEx(Name);
LogOutOk:=true;
end;
#$A8: begin // C>A8=NetPing:d(kID)d(PING)d(dta)
msg.Lines.Add('C>Пакет NetPing #$A8');
NetPing:=pck; // запомним его
pck:='';
end;}
#$0F: ParseMoveClient; //move//////////////////////////////////////////////////////////////////
#$49: //say2///////////////////////////////////////////////////////////////////////////////////////////////////////
//если это команда и она обработана и надо очистить чат
if ParseCmd(ReadS(2)) and EraseCommandFromChat then pck:='';//kill packet
//ValidatePosition пакет от клиента с моими кординатами
#$59: begin
//msg.Lines.Add('C>Пакет ValidatePosition #$48');
MyX:=ReadD(2); //получаю координату х моего чара
MyY:=ReadD(6); //получаю координату у моего чара
MyZ:=ReadD(10); //получаю координату z моего чара
end;
{#$1B: begin
msg.Lines.Add('C>Пакет RequestSicialAction #$1B');
case ReadD(2) of
//социальное действие Yes для начала ловли
6: begin
msg.Lines.Add('Отключили клиент из скрипта...');
//для версии 3.1.9+ можно попробовать отключить клиента
//Варнинг! Опасно для жизни! =)
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
LogOutOk:=true;
buf:=#$7E;
SendToClientEx(Name); // отключаем клиент
msg.Lines.Add('S>Пакет LogOutOk #$7E');
//не передаем серверу социальное действие
pck:='';
end;
end;
end;}
end; //case
end;
end.
Последний раз редактировалось APXAHGEJI, 03.10.2008 в 23:05.
|