Рыцарь
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
|
Цитата:
Сообщение от Dimka
Будь добр, выложи этот скрипт. Именно под кривую Грацию Абисса буду признателен.
|
Скрипт рыбалки by NLObP для Абисс
delphi Код:
//Автоматизация ловли рыбы by NLObP для L2PacketHack v.3.5.4 (C)CoderX.ru
//version 0.10.10 от 06.05.2009г. для мага или воина
//специально для TheAbyss.ru
program Fishing_Abyss_ru;
{
А.Пушкин "Сказка о рыбном четверге"
==============================================================================
Проверялось на L2.RU в течении 2-х часов
==============================================================================
Перед использованием скрипта изменяем:
- Name='имя своего чара';
По необходимости:
- изменить перемещение к месту ловли (Mestolovli), смена места ловли (MenayemMesto),
репозицию после боя (Reposition), перемещение после смерти (AfterDeath);
1)
- покупаем удочку, крючки и при необходимости фишин-шоты;
- учим соответствующие скилы рыбалки;
- при желании защищаться - купить подходящее оружие, щит, соулшоты.
2) каждый раз для инициализации скрипта:
- запускаем скрипт (ставим галочку);
- ставим галочи в панели управления напротив необходимых позиций (обязательно
выбрать удочку и крючки);
- становимся перед фишермэном, выбираем первое место ловли, жмем GO;
- чар сам идет на место рыбалки;
- дождавшись прихода на место ловли жмем START;
- при необходимости, включть соулшоты в автоматический режим.
Примечание:
- ловить лучше всего гномом;
- пути движения к местам ловли начинать от фишермэна;
- путь движения после смерти начинается с места появления после смерти.
Скрипт настроен под определённое место. Для других мест нужно изменить перемещение
к месту рыбалки, смену места рыбалки, репозицию после боя, путь после смерти
(в скрипте зашито три места ловли). Теперь это сделать очень легко! Спасибо Alexsl!
******************************************************************************
Спасибо Xkor за пакетхак!
Спасибо участникам форума CoderX.ru за идеи для скрипта!
Скрипт распространяется как есть, и я не несу ответственности за то,
что ВЫ натворили у себя, его используя.
MyICQ 402988808
******************************************************************************
Возможности скрипта:
--------------------
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);
0.10.7.1
+ маг теперь атакует магической атакой (воином лучше не ловить);
настройки:
Hurricane=1239; //ID MagicSkill Hurricane
OnTimerA.Interval:=3000; //время задержки
0.10.7.2
+ исправил таргет на фишермана при торговле;
0.10.8
+ для русского оффа l2.ru;
+ небольшая правка кода;
0.10.8.1
+ использование с6E=RequestRecordInfo, спс Xelat;
0.10.8.2
+ использование GoodUse при рыбалке;
+ оптимизация кода;
0.10.9
+ делаю для Абисс;
+ серверные ID пакетов поменял на ID от интерлюдии;
0.10.10
+ Спасибо StekloReZ за предоставленных чаров для тестирования;
+ поменял работу с инвентарем;
+ поменял работу продажа/покупка/обмен;
+ удочку/крючок, оружие чар должен брать нормально;
*****************************************************************************}
const
//v---------НЕ ЗАБУДЬТЕ ИСПРАВИТЬ ПОД СВОИ НУЖДЫ----v
Name='NLObP'; //имя чара для которого включаем скрипт
//если используем мага, то ставим ID желаемого скила, иначе поставить =0 для воина
Hurricane=0; //ID MagicSkill Hurricane
//путь где хранятся наши файлы
//RecordFilesPath='.\scripts\fishing\TALKIN_ISLAND\'; //путь где хранятся наши файлы
RecordFilesPath='.\scripts\fishing\giran_harbor\';
IniFilesPath='.\settings\';
//^---------НЕ ЗАБУДЬТЕ ИСПРАВИТЬ ПОД СВОИ НУЖДЫ----^
//v--------- изменять при необходимости ----v
//сюда вписываем ItemID предметов для автопродажи
TradeSellItem=[6904,6905,6906,6907,6920,6921,6922,6923,6924,6925,7686,7695,7696,7697,7698,7699,7700];
//количество предметов в массиве TradeSellItem
TradeSellItemCount=17;
//-----------------------------
//сюда вписываем ItemID предметов для автообмена
TradeMultiItem=[6908,6909,6910,6911,6912,6913,6914,6915,6916]; //нельзя изменять, собъется обмен!
//-----------------------------
//количество предметов в массиве TradeMultiItem
TradeMultiItemCount=9;//нельзя изменять, собъется обмен!
//-----------------------------
//требуется если используем преобразования масла, иначе поставить =0
FO=6908; //запомним, чтобы отменять обен на пруфы
GFO=6909;
//-----------------------------
debug=false; //если не хотим видеть отладочной информации
//^--------- изменять при необходимости ----^
//*************ниже лучше не трогать****************************************
//эта переменная указывает уничтожить пакет или нет если он обработан
//может данные нужны для других скриптов
EraseCommandFromChat=true;
kID=1000000; //коэфф вычитаемый из NpcID
//покупаем только выбранные крючки для ловли
TradeBuyItemCount=1;
//*******************************************************
fish=1312; //ID fishing
pump=1313; //ID pumping
reel=1314; //ID reeling
//*******************************************************
// RecordFilesPath='.\scripts\fishing\TALKIN_ISLAND\'; //путь где хранятся наши файлы
// RecordFilesPath='.\scripts\fishing\giran_harbor\'; //путь где хранятся наши файлы
RecordPathName='Mestolovli1'; //файл по умолчанию
RecordFileExt='.txt';//расширение по умолчанию
RangeToCheckPoint=150;//дистанция до чекпоинта при которой считается , что мы достигли оного
MoveTrigerDelay=800; //срабатывание таймера на движение 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
HtmlRcv, //сигнал, что пакета NpcHtmlMessage получен
SellListRcv,
BuyListRcv,
MultiSellListRcv : boolean;
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
}
//ITEMs
BaseItems: array[1..maxitems, 1..12] of integer; //все предметы в инвентаре
MestoLovli, PMMesto, MMesto : integer;
isFishing : 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;
GoodUse: integer; //пора reeling/pumping
StartTime, EndTime: TDateTime;
fishin, ShowInf, MoveTimer, Trade1, CreatePFO, OnTimerA: TTimer;
//ID вещей которыми пользуемся при рыбалке
MyWeaponID : integer;
MyShieldID : integer;
MyRodID : integer;
MyLureID : integer;
MyRodEq : integer;
MyLureEq : integer;
MyShotID : integer;
MyHPID : integer;
FishermanID : integer;
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;
//............................................
procedure OnAttack(Sender: TObject);
begin
MagicSkillUse(Hurricane); //магическая атака
end;
//............................................
//***************************************************************
//Вызывается при включении скрипта
//***************************************************************
procedure Init;
begin
gooduse:=0;
HtmlRcv:=false;
FormMain:=Create_FormMain;
//RequestBypassToServer(command)
//off
getselllist:='menu_select?ask=-1&reply=8'; //sell
//local server
//getselllist:='npc_268469209_Sell';
//off
getbuylist:='menu_select?ask=-1&reply=0'; //buy
//local server
//getbuylist:='npc_268469209_Buy 3157300';
//off
getmultisell:='menu_select?ask=-303&reply=517'; //multisell
//local server
//getmultisell:='npc_268469209_multisell 009';
//Управление сменой места рыбалки. Скрипт считает всех сорвавшихся с крючка.
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:='';
RecordPath:=TStringList.Create;
MovePath:=TStringList.Create;
ItemsName:=TStringList.Create;
NpcsName:=TStringList.Create;
StringList:=TStringList.Create;
StringList2:=TStringList.Create;
NpcsName.LoadFromFile(RecordFilesPath+'npcsid.ini');
ItemsName.LoadFromFile(IniFilesPath+'ItemsID.ini');
with ComboBoxFisherman do
begin
Items.Clear;
Items.Assign(NpcsName);
ItemIndex:=0;
end;
//таймеры, можно поправить время по обстоятельствам
OnTimerA:=TTimer.Create(nil);
OnTimerA.Enabled:=False;
OnTimerA.Interval:=3000; //время задержки
OnTimerA.OnTimer:=@OnAttack;
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:=5000; //время задержки
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;
MyWeaponID:=0;
MyShieldID:=0;
MyRodID:=0;
MyLureID:=0;
MyShotID:=0;
MyHPID:=0;
FishermanID:=0;
//RequestItemList вызываем инвентарь
buf:=hstr('14');
SendToServerEx(Name);
//delay(350);
end;
//............................................
//***************************************************************
//Вызывается при выключении скрипта
//***************************************************************
procedure Free;
begin
//таймеры
ShowInf.Enabled:=false; ShowInf.Interval:=0; ShowInf.Free;
fishin.Enabled:=false; fishin.Interval:=0; fishin.Free;
trade1.Enabled:=false; trade1.Interval:=0; trade1.Free;
createpfo.Enabled:=false; createpfo.Interval:=0; createpfo.Free;
movetimer.Enabled:=false; movetimer.Interval:=0; movetimer.Free;
WeaponOID:=0; ShieldOID:=0; HPOID:=0; RodOID:=0; LureOID:=0; ShotOID:=0;
ColvoLure:=0; ColvoShot:=0;
RecordPath.Free; MovePath.Free; ItemsName.Free; NpcsName.Free; StringList.Free; StringList2.Free;
//достаточно освободить форму
FormMain.Free;
//отключение клиента
// YesFreeOnClientDisconnect;
// YesFreeOnServerDisconnect;
end;
//............................................
//***************************************************************
function Create_FormMain : TForm;
//Создаем форму и соотв. компоненты на ней ...
Var
Yes : boolean;
begin
Yes := FALSE;
Result := TForm.Create(nil);
TRY
//............................................
//Свойства формы
Result.Caption := 'FishingBot by NLObP v.0.10.10 for TheAbyss';
Result.Left := 0;
Result.Top := 0;
Result.Width := 620;
Result.Height := 730;
// Result.FormStyle := fsNormal;
Result.FormStyle := FsStayOnTop;
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('AfterDeath1');
ComboBoxPath.Items.ADD('AfterDeath2');
ComboBoxPath.Items.ADD('AfterDeath3');
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
SendMsg2('файл пути не найден');
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
SendMsg2('файл пути не найден');
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;
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(RodOID) 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:=BaseItems[ComboBoxRod.ItemIndex+1,2];
myRodID:=BaseItems[ComboBoxRod.ItemIndex+1,3];
EditRodOID.Text:=Inttostr(myRodID);
EditRodVal.text:=inttostr(GetItem(RodOID,2,5));
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; //включаем
//Пакет c0F=RequestItemList c4
//Пакет c14=RequestItemList gracia
buf:=hstr('14'); //
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//ComboBoxLure
procedure ComboBoxLure_Change(Sender: TComboBox);
//Event : OnChange
begin
LureOID:=BaseItems[ComboBoxLure.ItemIndex+1,2];
myLureID:=BaseItems[ComboBoxLure.ItemIndex+1,3];
EditLureOID.Text:=Inttostr(myLureID);
EditLureVal.text:=inttostr(getitem(LureOID,2,5));
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; //включаем
//Пакет c0F=RequestItemList c4
//Пакет c14=RequestItemList gracia
buf:=hstr('14');
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//ComboBoxWeapon
procedure ComboBoxWeapon_Change(Sender: TComboBox);
//Event : OnChange
begin
WeaponOID:=BaseItems[ComboBoxWeapon.ItemIndex+1,2];
myWeaponID:=BaseItems[ComboBoxWeapon.ItemIndex+1,3];
EditWeaponOID.Text:=Inttostr(myWeaponID);
EditWeaponVal.text:=inttostr(getitem(WeaponOID,2,5));
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; //включаем
//Пакет c0F=RequestItemList c4
//Пакет c14=RequestItemList gracia
buf:=hstr('14');
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//ComboBoxShield
procedure ComboBoxShield_Change(Sender: TComboBox);
//Event : OnChange
begin
ShieldOID:=BaseItems[ComboBoxShield.ItemIndex+1,2];
myShieldID:=BaseItems[ComboBoxShield.ItemIndex+1,3];
EditShieldOID.Text:=Inttostr(myShieldID);
EditShieldVal.text:=inttostr(getitem(ShieldOID,2,5));
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; //включаем
//Пакет c0F=RequestItemList c4
//Пакет c14=RequestItemList gracia
buf:=hstr('14');
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//ComboBoxFShot
procedure ComboBoxFShot_Change(Sender: TComboBox);
//Event : OnChange
begin
ShotOID:=BaseItems[ComboBoxFShot.ItemIndex+1,2];
myShotID:=BaseItems[ComboBoxFShot.ItemIndex+1,3];
EditFShotOID.Text:=Inttostr(myShotID);
EditFShotVal.text:=inttostr(getitem(ShotOID,2,5));
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('2F 2A 05 00 00 00 00 00 00 00'); //common craft
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
//by Xelat
{я видел у тебя там проблемы с пакетом UserInfo - отправляешь на сервер пакет 6E
- RequestRecordInfo и тебе придёт и юзеринфо, и инфа о всех нпц и игроках,
которые тут есть}
buf:=#$6E;
SendToServerEx(Name);
delay(1000);
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; //включаем
//Пакет c0F=RequestItemList c4
//Пакет c14=RequestItemList gracia
buf:=hstr('14');
SendToServerEx(Name);
end;
end;
//......................................
//......................................
//ComboBoxHPotion
procedure ComboBoxHPotion_Change(Sender: TComboBox);
//Event : OnChange
begin
HPOID:=BaseItems[ComboBoxHPotion.ItemIndex+1,2];
myHPID:=BaseItems[ComboBoxHPotion.ItemIndex+1,3];
EditHPotionOID.Text:=Inttostr(myHPID);
EditHPotionVal.text:=inttostr(getitem(HPOID,2,5));
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 SendMsg2(msg);
end;
//......................................
//***************************************************************
procedure SendMsg2(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
SendMsg2('Во время следования по маршруту запись не возможна');
msg.Lines.Add('Во время следования по маршруту запись не возможна');
exit;
end;
RecordPath.Clear;
PointsCount:=0;
SendMsg2('Начата запись маршрута');
msg.Lines.Add('Начата запись маршрута');
SavePathEnabled:=True
end;
//......................................
//***************************************************************
procedure StopRecord;
begin
if not SavePathEnabled then exit;
//записываем
RecordPath.SaveToFile(GetRecordFileName);
SendMsg2('Запись маршрута завершена');
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);
SendMsg2('добавлен чекпоинт № '+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
MoveTimer.Enabled:=False;
MoveToPathEnabled:=False;
SendMsg2('Нет данных по маршруту');
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;
SendMsg2('Следование по маршруту остановлено');
msg.Lines.Add('Следование по маршруту остановлено');
exit;
end;
//
//предположительно путь уже прописан в MovePath
//
SendMsg2('Пробуем выйти на путь...');
msg.Lines.Add('Пробуем выйти на путь...');
//сперва идем к ближайшему чекпоинту
i:=GetMinCheckPoint(MovePath);
if i<0 then
begin
SendMsg2('чекпоинт не найден');
msg.Lines.Add('чекпоинт не найден');
MoveToPathEnabled:=False;
end else
begin
SendMsg2('найден ближайший чекпоинт #'+inttostr(i)+' бежим туда');
msg.Lines.Add('найден ближайший чекпоинт #'+inttostr(i)+' бежим туда');
MoveToPathEnabled:=True;
MoveStepIndex:=i;
if debug then SendMsg2('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;
SendMsg2('Слишком большая Дельта! Проверить папку с файлами перемещения! Движение остановлено!');
msg.Lines.Add('Слишком большая Дельта! Проверить папку с файлами перемещения! Движение остановлено!');
end else begin
//c01=MoveBackwardToLocation:d(targetX)d(targetY)d(targetZ)d(originX)d(originY)d(originZ)d(moveByMouse)
//c0F=MoveBackwardToLocation:d(ToX)d(ToY)d(ToZ)d(OrigX)d(OrigY)d(OrigZ)d(MoveMovement)
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;
SendMsg2('Движение остановлено');
msg.Lines.Add('Движение остановлено');
exit;
end;
{ //возможно мы пали смертью храбрых, то не дергаемся пока
if myHP<=0 then begin
SendMsg2('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;
//эта точка на месте рыбалки или у фишермэна если после смерти
SendMsg2('Мы по идее в конечной точке');
case cmd of
'move': begin {просто идем по маршруту} end;
'fishing': begin //ловим
CanFishHere:=true; //здесь можно ловить
fishin.enabled:=true; //продолжим ловить рыбу
msg.Lines.Add('Продолжим ловить рыбу!!!');
debugmsg('Продолжим ловить рыбу!!!');
end;
'death': begin //продаём
msg.Lines.Add('Мы у фишермэна, бежим рыбачить...');
SendMsg2('Мы у фишермэна, бежим рыбачить...');
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;
//эта точка у фишермэна
SendMsg2('Мы по идее в начальной точке');
case cmd of
'move': begin {просто идем по маршруту} end;
'fishing': begin //ловим
CanFishHere:=true; //здесь можно ловить
fishin.enabled:=true; //продолжим ловить рыбу
msg.Lines.Add('Продолжим ловить рыбу!!!');
SendMsg2('Продолжим ловить рыбу!!!');
end;
'trade': begin //продаём
trade:=200;
trade1.enabled:=true;
TradeCount:=0;
msg.Lines.Add('Продадим/купим/обменяем...');
SendMsg2('Продадим/купим/обменяем...');
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;
//проверка на застревание1
if chk_time=15 then //сколько ждем секунд, чтобы решить что застряли
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;
//проверка на застревание2
if chk_time=30 then //сколько ещё ждем секунд, чтобы решить что застряли и вернуться на точку назад
begin
chk_time:=0;
if MoveToForward and (MoveStepIndex>0) then begin
dec(MoveStepIndex);
SendMsg2('Проверка на застревание - бежим к #'+inttostr(MoveStepIndex));
msg.Lines.Add('Проверка на застревание - бежим к #'+inttostr(MoveStepIndex));
end else if MoveStepIndex<MovePath.Count then begin
inc(MoveStepIndex);
SendMsg2('Проверка на застревание - бежим к #'+inttostr(MoveStepIndex));
msg.Lines.Add('Проверка на застревание - бежим к #'+inttostr(MoveStepIndex));
end;
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
SendMsg2('файл пути не найден');
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
SendMsg2('файл пути не найден');
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
SendMsg2('файл пути не найден');
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
SendMsg2('файл пути не найден');
exit;
end;
GoToPath(go); //бежим ловить
end;
//......................................
//-------------------------------------------------
//2 меняем место
//-------------------------------------------------
procedure MenayemMesto2;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'MenayemMesto2'+RecordFileExt);
msg.Lines.Add('Меняю место ловли: MenayemMesto2');
except
SendMsg2('файл пути не найден');
exit;
end;
GoToPath(go); //бежим ловить
end;
//......................................
//-------------------------------------------------
//3 меняем место
//-------------------------------------------------
procedure MenayemMesto3;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'MenayemMesto3'+RecordFileExt);
msg.Lines.Add('Меняю место ловли: MenayemMesto3');
except
SendMsg2('файл пути не найден');
exit;
end;
GoToPath(go); //бежим ловить
end;
//......................................
//-------------------------------------------------
//1 Репозиция на месте рыбалки после боя с мобом
//-------------------------------------------------
procedure Reposition1;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'Reposition1'+RecordFileExt);
msg.Lines.Add('->Reposition1');
except
SendMsg2('файл пути не найден');
exit;
end;
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
SendMsg2('файл пути не найден');
exit;
end;
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
SendMsg2('файл пути не найден');
exit;
end;
MoveToForward:=go;
MoveStepIndex:=0;
MoveToPathEnabled:=True;
MoveTimer.Enabled:=True;
end;
//......................................
//-------------------------------------------------
//Оживаем после боя с мобом
//-------------------------------------------------
procedure AfterDeath;
var
s:string;
x,y,z : integer;
begin
//загружаем маршрут
try
MovePath.LoadFromFile(RecordFilesPath+'afterdeath1'+RecordFileExt);
msg.Lines.Add('После смерти: AfterDeath1');
except
SendMsg2('файл пути не найден');
exit;
end;
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);
inc(i,48);
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);
inc(i,48);
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('param 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
SendMsg2('хз куда бежать, укажите имя');
exit;
end;
try
MovePath.LoadFromFile(RecordFilesPath+params[1]+RecordFileExt);
except
SendMsg2('файл пути не найден');
exit;
end;
GoToPath(true);
end
else
if params[0]=cmdBack then
begin
if params[1]='' then
begin
SendMsg2('хз куда бежать, укажите имя');
exit;
end;
try
MovePath.LoadFromFile(RecordFilesPath+params[1]+RecordFileExt);
except
SendMsg2('файл пути не найден');
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('NeedBuy: '+VarToStr(NeedBuy));
stats.Lines.Add('');
stats.Lines.Add('PMMesto: '+IntToStr(PMMesto));
stats.Lines.Add('MMesto: '+IntToStr(MMesto));
stats.Lines.Add('MestoLovli: '+IntToStr(MestoLovli));
stats.Lines.Add('CanFishHere: '+VarToStr(CanFishHere));
stats.Lines.Add('isFishing: '+VarToStr(isFishing));
// stats.Lines.Add('old_time: '+IntToStr(old_time));
// stats.Lines.Add('chk_time: '+IntToStr(chk_time));
// stats.Lines.Add('');
// stats.Lines.Add('but: '+IntToStr(but));
// stats.Lines.Add('PercentHP: '+IntToStr(PercentHP));
// stats.Lines.Add('Colvohp: '+VarToStr(Colvohp));
// 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;
//c7D=RequestRestartPoint
begin
buf:=#$7D;
WriteD(00); //00-в город
SendToServerEx(Name);
MoveTimer.Interval:=10000;
delay(150);
end;
//......................................
//***************************************************************
//RequestBypassToServer:s(Cmd)
//c23=RequestBypassToServer gracia
//посылаем, чтобы получить пакет BuyItem с ListID
procedure RequestByPassToServer(cmd:string);
begin
buf:=#$23;
WriteS(cmd);
SendToServerEx(Name);
delay(150);
end;
//......................................
//***************************************************************
//s06=SellList:d(Money)d(Lease)h(ListSize:Loop.01.0018)h(ItemType1)d(ObjectID)d(ItemID:Get.Func01)d(Count)h(ItemType2)h(0)d(ItemBodyPart)h(EnchantLevel)h(0)h(0)d(ReferencePrice/2)d(AttackAttrElement)d(AttackAttrElementVal)d(DefAttrFire)d(DefAttrWater)d(DefAttrWind)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)
//c37=RequestSellItem:d(ListID)d(ListSize:Loop.01.0003)d(ObjectID)d(ItemID:Get.Func01)d(Count)
//продаем по одному типу
procedure RequestSellItem(ListID,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);
delay(150);
end;
end;
//......................................
//***************************************************************
//c40=RequestBuyItem:d(ListID)d(ListSize:Loop.01.0002)d(ItemID:Get.Func01)d(Count)
//купим по одному типу
procedure RequestBuyItem(ListID,ItemID,Count:integer);
begin
if ReadyToBuy then begin
msg.Lines.Add('Купим предмет ID:'+inttostr(ItemID)+' в кол-ве:'+inttostr(count));
buf:=#$40;
WriteD(ListID); //ListID
WriteD(1); //ListSize
//повторять ListSize раз
WriteD(ItemID); //ItemID
WriteD(Count); //Count
//
SendToServerEx(Name);
delay(150);
end;
end;
//......................................
//***************************************************************
//cB0=MultiSellChoose:d(ListID)d(EntryID)d(Amount)h(Enchantment)
//продаем по одному типу
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);
//buf:=buf+hstr('00 00 00 00 00 00 FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00');
buf:=buf+hstr('00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00');
SendToServerEx(Name);
delay(150);
end;
end;
//......................................
//***************************************************************
procedure UseItem(OID:integer);
//c19=UseItem:d(ObjectID)d(Unknown)
begin
buf:=#$19;
WriteD(OID);
WriteD(0);
SendToServerEx(Name);
delay(150);
end;
//......................................
//***************************************************************
//c39=RequestMagicSkillUse:dMagicID)d(CtrlPressed)b(ShiftPressed)
procedure MagicSkillUse(MagicID:integer);
begin
buf:=#$39;
WriteD(MagicID);
WriteD(00); //CtrlPressed
WriteC(00); //ShiftPressed
SendToServerEx(Name);
delay(150);
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(RodOID) then begin
msg.Lines.Add('Берем удочку');
giverod;
exit;
end else
msg.Lines.Add('Уже взята удочка');
if not isEquip(LureOID) then begin
msg.Lines.Add('Цепляем крючок');
givelure;
exit;
end else
msg.Lines.Add('Уже прицеплен крючок');
fishin.enabled:=false;
isFishing:=true; //ловим
Fishing;
end;
//......................................
//***************************************************************
//c1F=Action:d(ObjectID)d(OriginX)d(OriginY)d(OriginZ)c(ActionID)
procedure Target(Attacker: Integer);
begin
buf:=#$1F;
WriteD(Attacker);
WriteD(MyX);
WriteD(MyY);
WriteD(MyZ);
WriteC(00);
SendToServerEx(Name);
delay(800);
end;
//......................................
//***************************************************************
//c01=AttackRequest:d(ObjectID)d(OriginX)d(OriginY)d(OriginZ)c(AttackID)
procedure Attack(Attacker: Integer);
begin
buf:=#$01;
WriteD(Attacker);
WriteD(MyX);
WriteD(MyY);
WriteD(MyZ);
WriteC(00);
SendToServerEx(Name);
delay(800);
end;
//......................................
//***************************************************************
procedure TargetAttacker(Attacker: Integer);
begin
msg.Lines.Add('Attacker='+IntToStr(Attacker)+' Player='+IntToStr(MyOID));
fishin.enabled:=false;
Target(Attacker);
delay(150);
end;
//......................................
//***************************************************************
procedure TargetFisherman;
begin
fishin.enabled:=false;
Target(FishermanOID);
delay(150);
Target(FishermanOID);
delay(150);
end;
//......................................
//***************************************************************
procedure GiveWeapon;
begin
msg.Lines.Add('Берём='+IntToStr(WeaponOID)+' ID='+inttostr(MyWeaponID)+' Equip='+inttostr(GetItem(MyWeaponID,3,8)));
if WeaponOID=0 then exit;
if not isEquip(WeaponOID) then begin
UseItem(WeaponOID); //попробуем одеть снова
delay(650);
end;
end;
//......................................
//***************************************************************
procedure GiveShield;
begin
msg.Lines.Add('Берём='+IntToStr(ShieldOID)+' ID='+inttostr(MyShieldID)+' Equip='+inttostr(GetItem(MyShieldID,3,8)));
if ShieldOID=0 then exit;
if not isEquip(ShieldOID) then begin
UseItem(ShieldOID); //попробуем одеть снова
delay(650);
end;
end;
//......................................
//***************************************************************
procedure GiveRod;
begin
msg.Lines.Add('Берём='+IntToStr(RodOID)+' ID='+inttostr(MyRodID)+' Equip='+inttostr(GetItem(MyRodID,3,8)));
if RodOID=0 then exit;
if not isEquip(RodOID) then begin
UseItem(RodOID); //попробуем одеть снова
delay(650);
end;
end;
//......................................
//***************************************************************
procedure GiveLure;
begin
msg.Lines.Add('Берём='+IntToStr(LureOID)+' ID='+inttostr(MyLureID)+' Equip='+inttostr(GetItem(MyLureID,3,8)));
if LureOID=0 then exit;
if not isEquip(LureOID) then begin
UseItem(LureOID); //попробуем одеть снова
delay(650);
end;
end;
//......................................
//***************************************************************
function isEquip(ItemID:integer): boolean;
begin
if GetItem(ItemID,2,8)=0 then Result:=false else Result:=true;
end;
//......................................
//***************************************************************
// Вся торговля здесь!!!
//***************************************************************
procedure OnTrade(Sender: TObject);
begin
case trade of
//-------------------------------------------------
//продаем фишерману из массива TradeSellItem
//-------------------------------------------------
200: begin
//мы у фишермана, продаем всё ненужное
if FishermanOID=0 then begin
//RequestRecordInfo и тебе придёт и юзеринфо, и инфа о всех нпц и игроках, которые тут есть
buf:=#$6E;
SendToServerEx(Name);
//Trade1.enabled:=false; //останавливаем торговлю
msg.Lines.Add('Не готовы к торговле, нет OID фишермана! Запросили сервер OID фишермана.');
exit; //выходим
end;
if ReadyToSell and (FishermanOID<>0) then begin //exit; //если мы в процессе продажи (еще не продали предыдущую вещь), то выходим сразу
if HtmlRcv then begin //ReadD(2)=FishermanOID then begin
RequestByPassToServer(GetSellList);
msg.Lines.Add('C>Пакет RequestBypassToServer #$23 (sell)');
HtmlRcv:=false;
//exit;
end;
if SellListRcv then begin
msg.Lines.Add('FindItem: OID:'+IntToStr(GetItem(TradeSellItem[Trd],3,2))+' ID:'+IntToStr(TradeSellItem[Trd])+' Count:'+IntToStr(GetItem(TradeSellItem[Trd],3,5)));
RequestSellItem(ListID,GetItem(TradeSellItem[Trd],3,2),TradeSellItem[Trd],GetItem(TradeSellItem[Trd],3,5));
msg.Lines.Add('C>Пакет RequestSellItem #$37');
ReadyToSell:=false; //закончили с предметом
SellListRcv:=false;
//exit;
end;
end else begin
if (TradeCount=TradeSellItemCount) then begin //проверка на выход из массива
trade:=300;
msg.Lines.Add('Всё продали!');
msg.Lines.Add('Переход к покупкам...');
TradeCount:=0; //начнем сначала массива
end else begin
if GetItem(TradeSellItem[TradeCount],3,5)>0 then begin //проверка, что предмет есть в инвентаре и его можно продать
TargetFisherman; //фишермана в таргет
msg.Lines.Add('Готовы продать:'+inttostr(TradeSellItem[TradeCount]));
ReadyToSell:=true; //готовы продавать
Trd:=TradeCount;
end else msg.Lines.Add('Нет такого предмета:'+inttostr(TradeSellItem[TradeCount]));
inc(TradeCount); //выбираем следующий предмет
msg.Lines.Add('TradeCount/TradeSellItemCount:'+inttostr(TradeCount)+'/'+inttostr(TradeSellItemCount-1));
end;
end;
end;
//-------------------------------------------------
//покупаем у фишермана из массива TradeBuyItem
//-------------------------------------------------
300: begin
//мы у фишермана, покупаем крючки
if FishermanOID=0 then begin
//RequestRecordInfo и тебе придёт и юзеринфо, и инфа о всех нпц и игроках, которые тут есть
buf:=#$6E;
SendToServerEx(Name);
// Trade1.enabled:=false; //останавливаем торговлю
msg.Lines.Add('Не готовы к торговле, нет OID фишермана! Запросили сервер OID фишермана.');
exit; //выходим
end;
if ReadyToBuy and (FishermanOID<>0) then begin //exit; //если мы в процессе покупки (еще не купили предыдущую вещь), то выходим сразу
if HtmlRcv then begin //ReadD(2)=FishermanOID then begin
//шлем запрос выбора пункта - продажа
//c23=RequestBypassToServer:s(Cmd)
RequestByPassToServer(getbuylist);
msg.Lines.Add('C>Пакет RequestBypassToServer #$23 (buy)');
HtmlRcv:=false;
//exit;
end;
if BuyListRcv then begin
//после выбора пункта - продажа, приходит этот пакет
//s07=BuyList:d(Money)d(ListID)h(ListSize:Loop.01.0019)h(ItemType1)d(0)d(ItemID:Get.Func01)d(CurrentCount)h(ItemType2)h(0)d(BodyPart)d(0)d(0)d(0)d(Price*TaxRate)d(-2)d(0)d(0)d(0)d(0)d(0)d(0)d(0) #$11: begin
//формируем запрос на покупку
//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));
RequestBuyItem(ListID,TradeBuyItem[Trd],NeedBuy);
ReadyToBuy:=false;
BuyListRcv:=false;
//exit;
end;
end else begin
if TradeCount=TradeBuyItemCount then begin //проверка на выход из массива
trade:=400;
msg.Lines.Add('Всё купили!');
msg.Lines.Add('Переход к обмену...');
TradeCount:=0; //начнем сначала массива
end else begin
if GetItem(TradeBuyItem[TradeCount],3,5)<strtoint(EditLure.text) then begin
TargetFisherman; //фишермана в таргет
msg.Lines.Add('Готовы купить:'+inttostr(TradeBuyItem[TradeCount]));
ReadyToBuy:=true; //готовы покупать
Trd:=TradeCount;
NeedBuy:=strtoint(EditLure.text)-strtoint(EditLureVal.Text); //докупаем до нужного количества
msg.Lines.Add('Требуется докупит крючков:'+inttostr(NeedBuy));
end else msg.Lines.Add('Не надо покупать, уже есть:'+EditLureVal.Text);
inc(TradeCount);
msg.Lines.Add('TradeCount/TradeBuyItemCount:'+inttostr(TradeCount)+'/'+inttostr(TradeBuyItemCount-1));
end;
end;
end;
//-------------------------------------------------
//обмениваем у фишермана на пруфы
//-------------------------------------------------
400: begin
//мы у фишермана, обмениваем всё на пруфы
if FishermanOID=0 then begin
// Trade1.enabled:=false; //останавливаем торговлю
//RequestRecordInfo и тебе придёт и юзеринфо, и инфа о всех нпц и игроках, которые тут есть
buf:=#$6E;
SendToServerEx(Name);
msg.Lines.Add('Не готовы к торговле, нет OID фишермана! Запросили сервер OID фишермана.');
exit; //выходим
end;
if ReadyToMultiSell and (FishermanOID<>0) then begin //exit; //если еще не обменяли предыдущую вещь, то выходим сразу
if HtmlRcv then begin //ReadD(2)=FishermanOID then begin
//шлем запрос выбора пункта - продажа
//c23=RequestBypassToServer:s(Cmd)
RequestByPassToServer(getmultisell);
msg.Lines.Add('C>Пакет RequestBypassToServer #$23 (multisell)');
HtmlRcv:=false;
//exit;
end;
if MultiSellListRcv then begin
//шлем запрос на обмен
//cA7=RequestMultiSellChoose:h(ListID)d(EntryID)d(Amount)
msg.Lines.Add('C>Пакет RequestMultiSellChoose #$A7(ListId:'+IntToStr(ListId)+' EntryId:'+IntToStr(Trd*2+1)+' Count:'+IntToStr(GetItem(TradeMultiItem[Trd],3,5))+')');
RequestMultiSellItem(ListId,(Trd*2+1),GetItem(TradeMultiItem[Trd],3,5));
ReadyToMultiSell:=false;
MultiSellListRcv:=false;
//exit;
end;
end else begin
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 GetItem(TradeMultiItem[TradeCount],3,5)>0 then begin
TargetFisherman; //фишермана в таргет
msg.Lines.Add('Готовы обменять:'+inttostr(TradeMultiItem[TradeCount]));
ReadyToMultiSell:=true; //готовы обменивать
Trd:=TradeCount;
end else msg.Lines.Add('Нет такого предмета:'+inttostr(TradeMultiItem[TradeCount]));
end;
inc(TradeCount);
msg.Lines.Add('TradeCount/TradeMultiItemCount:'+inttostr(TradeCount)+'/'+inttostr(TradeMultiItemCount-1));
end;
end;
end;
end;
end;
//......................................
//******************************************************************************
procedure ItemList;
{Создаем базу Items}
//11=ItemList:h(ShowWindow)h(ListSize:Loop.01.0021)h(ItemType1)d(ObjectID)
// d(ItemID:Get.Func01)d(LocationSlot)d(Count)h(ItemType2)h(CustomType1)
// h(isEquipped)d(BodyPart)h(EnchantLevel)h(CustType2)d(AugmentationID)
// d(Mana)d(AttackAttrElement)d(AttackAttrElementVal)d(DefAttrFire)
// d(DefAttrWater)d(DefAttrWind)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)
var
i, j, k: integer;
ListCount: integer;
begin
j:=4; //смещение для ListCount
ListCount:=ReadH(j); //количество итемов не должно превышать max!
for i:=1 to maxitems do
begin
if (i<=ListCount) then
begin
BaseItems[i,1]:=ReadH(j); //ItemType1
BaseItems[i,2]:=ReadD(j); //ObjectID
BaseItems[i,3]:=ReadD(j); //ItemID
BaseItems[i,4]:=ReadD(j); //LocationSlot
BaseItems[i,5]:=ReadD(j); //Count
BaseItems[i,6]:=ReadH(j); //ItemType2
BaseItems[i,7]:=ReadH(j); //CustomType1
BaseItems[i,8]:=ReadH(j); //isEquipped
BaseItems[i,9]:=ReadD(j); //BodyPart
BaseItems[i,10]:=ReadH(j); //EnchantLevel
BaseItems[i,11]:=ReadH(j); //CustType2
BaseItems[i,12]:=ReadD(j); //AugmentationID
//debugmsg('OID='+inttostr(BaseItems[i,2])+' ID='+inttostr(BaseItems[i,3]));
//собираем ID и OID предметов и оружия
case BaseItems[i,3] of //ID
//MyWeaponID : begin
//WeaponOId:=BaseItems[i,2];
//WeaponId:=itemBase[i,3];
//end;
//MyShieldID : begin
//ShieldOId:=BaseItems[i,2];
//ShieldId:=itemBase[i,3];
//end;
MyShotID : begin
//ShotOID:=BaseItems[i,2];
ColvoShot:=BaseItems[i,5];
EditFShotVal.Text:=inttostr(BaseItems[i,5]);
end;
//MyRodID : begin
//RodOId:=BaseItems[i,2];
//MyRodEq:=BaseItems[i,8];
//end;
MyLureID : begin
//LureOId:=BaseItems[i,2];
ColvoLure:=BaseItems[i,5];
EditLureVal.Text:=inttostr(BaseItems[i,5]);
//MyLureEq:=BaseItems[i,8];
end;
MyHPID : begin
//HPOId:=BaseItems[i,2];
ColvoHP:=BaseItems[i,5];
EditHPotionVal.Text:=inttostr(BaseItems[i,5]);
end;
end;
inc(j,40);
end else
for k:=1 to 12 do BaseItems[i,k]:=0; // забиваем нулями
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(BaseItems[i,3])]); //записываем название вещей из инвентаря
except;
msg.Lines.Add('Пропускаем! Нет ItemID='+inttostr(BaseItems[i,3])+' в itemsid.ini');
end
end;
except;
msg.Lines.Add('ошибка в CreateItemBase->StringList.Add()');
msg.Lines.Add(inttostr(BaseItems[i,3]));
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;
//......................................
//******************************************************************************
procedure InventoryUpdate; //пакет 21, Создает базу ObjectID по ItemID
var
i, ii, j, k, ListCount, UpdType : integer;
ItemType1, ObjectID, ItemID, LocationSlot, Count, ItemType2, CustomType1,
isEquipped, BodyPart, EnchantLevel, CustType2, AugmentationID :integer;
additem : boolean;
begin
additem:=true;
ListCount:=ReadH(2); //количество итемов
// debugmsg('ListCount='+inttostr(ListCount));
j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
for i:=1 to ListCount do
begin
UpdType:=ReadH(j);
ItemType1:=ReadH(j);
ObjectID:=ReadD(j);
ItemID:=ReadD(j);
LocationSlot:=ReadD(j);
Count:=ReadD(j);
ItemType2:=ReadH(j);
CustomType1:=ReadH(j);
isEquipped:=ReadH(j);
BodyPart:=ReadD(j);
EnchantLevel:=ReadH(j);
CustType2:=ReadH(j);
AugmentationID:=ReadD(j);
case UpdType of
1: k:=0; //добавлен новый предмет
2: k:=ObjectID; //изменен предмет в инвентаре
3: begin //удален
for ii:=1 to maxitems do
if (BaseItems[ii,2]=ObjectID) then
begin
//debugmsg('удаляем OID='+inttostr(BaseItems[ii,2])+' ID='+inttostr(BaseItems[ii,3]));
for k:=1 to 12 do BaseItems[ii,k]:=0;
break;
end;
end;
end;
for ii:=1 to maxitems do
begin
if (BaseItems[ii,2]=k) then
begin
BaseItems[ii,1]:=ItemType1;
BaseItems[ii,2]:=ObjectID;
BaseItems[ii,3]:=ItemID;
BaseItems[ii,4]:=LocationSlot;
BaseItems[ii,5]:=Count;
BaseItems[ii,6]:=ItemType2;
BaseItems[ii,7]:=CustomType1;
BaseItems[ii,8]:=isEquipped;
BaseItems[ii,9]:=BodyPart;
BaseItems[ii,10]:=EnchantLevel;
BaseItems[ii,11]:=CustType2;
BaseItems[ii,12]:=AugmentationID;
msg.Lines.Add('доб/изм OID='+inttostr(ObjectID)+' ID='+inttostr(ItemID)+' Equip='+inttostr(isEquipped));
break;
end;
end;
inc(j,40);
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(ObjectID)+' ItemID='+IntToStr(ItemID)+' ColvoItem='+IntToStr(colv));
UseItem(ObjectID);//потрошим рыбу
end;
7807..7809,6519..6527: begin
if ItemID=MyLureID then begin
//LureOID:=ItemOID;
ColvoLure:=Count;
EditLureVal.Text:=inttostr(Count);
//MyLureEq:=isEquipped;
end;
end;
6535..6540: begin
if ItemID=MyShotID then begin
//ShotOID:=ItemOID;
ColvoShot:=Count;
EditFShotVal.Text:=inttostr(Count);
end;
end;
1060..1061: begin
if not CheckBoxHPotion.Checked then exit;
if ItemID=MyHPID then begin
//HPOID:=ItemOID;
ColvoHP:=Count;
EditHPotionVal.Text:=inttostr(Count);
end;
end;
end;
end;
end;
//..............................................................................
function GetItem(ID, FieldIn, FieldOut : integer): integer;
{GetInv(по чему будем искать, номер того по чему будем искать, номер того что надо найти)
где:
ID - искомый код;
FieldIn - по какому полю ищем;
FieldOut - какое поле возвращаем;
1=ItemType1; 2=ObjectID;3=ItemID;4=LocationSlot;5=Count;6=ItemType2;7=CustomType1;
8=isEquipped;9=BodyPart;10=EnchantLevel;11=CustType2;12=AugmentationID;
ex1: GetInv(6408,2,1) - вернет ObjectID свадебного платья, если онное лежит в
инвентаре, иначе вернет -1
ex2: GetInv(6408,2,8) - вернет уровень заточки первого попавшегося в инвентаре
свадебного платья, если свадебного платья нет, то вернет -1
}
var
i: integer;
begin
for i:=1 to maxitems do
if (BaseItems[i,FieldIn]=ID) then begin
Result:=BaseItems[i,FieldOut];
debugmsg('Нашли='+inttostr(result));
exit;
end;
Result:=-1;
end;
//......................................
//******************************************************************************
function SumItem(Item: integer):integer;
var
sum, i : integer;
begin
result:=0;
//находим подходящий предмет по ItemID
for i:=1 to maxitems do begin
if (BaseItems[i,3]=item) then begin
msg.Lines.Add('Нашли предмет ItemOID='+inttostr(BaseItems[i,2])+' ItemID='+inttostr(BaseItems[i,3])+' ItemCol='+inttostr(BaseItems[i,5])+' Equip='+inttostr(BaseItems[i,8]));
msg.Lines.Add('i='+inttostr(i));
result:=result+BaseItems[i,5];
end;
end;
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;
//****************************************************************************
//серверные пакеты с ID - от хроник Интерлюдия
if (ConnectName=Name) and FromServer then begin
case pck[1] of
//************************************************************************
//01=MoveBackwardToLocation:d(ToX)d(ToY)d(ToZ)d(OrigX)d(OrigY)d(OrigZ)d(MoveMovement)
#$01: begin // MoveBackwardToLocation
//msg.Lines.Add('S>Пакет MoveBackwardToLocation #$01');
if ReadD(2) = MyOID then
begin
MyX := ReadD(18);
MyY := ReadD(22);
MyZ := ReadD(26);
end;
end;
//************************************************************************
#$04: begin //пакет с инфой о моём чаре
//msg.Lines.Add('S>Пакет UserInfo #$04');
UserInfo;
end;
//************************************************************************
//s05=Attack:d(AttackerID)d(TargetID)d(Damage)c(Flags)d(X)d(Y)d(Z)h(HitsSize:Loop.01.0003)d(TargetID)d(Damage)c(Flags)
#$05: 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
//сохраним OID напавшего
AttackerOID:=ReadD(2);
msg.Lines.Add('На нас напали! ObjectID='+IntToStr(AttackerOID));
//берем в руки оружие
if WeaponUse1 and not isEquip(WeaponOID) then giveweapon;
delay(650);
//берем в руки щит
if ShieldUse1 and not isEquip(ShieldOID) then giveshield;
delay(650);
//ставим таргет на врага
TargetAttacker(AttackerOID);
inc(mob1);
underattack:=true;
//выбираем воин или маг
if Hurricane=0
then TargetAttacker(AttackerOID) //атакуем оружием
else OnTimerA.Enabled:=True; //включаем магическую атаку
end;
//берем в руки оружие
//if WeaponUse1 and not isEquip(WeaponOID) then giveweapon;
//delay(650);
//берем в руки щит
//if ShieldUse1 and not isEquip(ShieldOID) then giveshield;
//delay(650);
end;
end;
//************************************************************************
//пакет Die (моб умер)
//06=Die:d(CharID)d(1)d(HasHideout)d(HasCastle)d(Flags)d(Sweepable)d(Access)
#$06: 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));
OnTimerA.Enabled:=false; //выключаем магическую атаку
if MoveToPathEnabled then MoveTimer.Enabled:=True; //если бежали, то продолжим путь
underattack:=false;
//репозиция
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);
OnTimerA.Enabled:=false; //выключаем магическую атаку
fishin.enabled:=false;
isFishing:=false; //сейчас не ловим
RequestRestartPoint; //оживаем после смерти в городе
end;
end;
//************************************************************************
#$07: begin //пакет Revive
//07=Revive:d(ObjectID)
msg.Lines.Add('S>Пакет Revive #$07');
if (MyOID=ReadD(2)) then begin
cmd:='death'; AfterDeath;
end;
end;
//************************************************************************
//0C=DropItem:d(PlayerID)d(ObjectID)d(ItemID:Get.Func01)d(X)d(Y)d(Z)d(Stackable)d(Count)d(1)
#$0C: 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;
//************************************************************************
#$0E: begin
//msg.Lines.Add('S>Пакет StatusUpdate #$0E');
//0E=StatusUpdate:d(ObjectID)d(ListSize:Loop.01.0002)d(AttrID:Get.FSup)d(Value)
if (MyOID=ReadD(2)) then StatusUpdate; //обновление информации о хп
if (AttackerOID=ReadD(2)) then TargetStatusUpdate; //обновление информации о хп
end;
//************************************************************************
//19 (NpcHtmlMessage)
#$0F: begin //abyss
//#$19: begin
//debugmsg('S>C Пакет NpcHtmlMessage #$19');
if ReadD(2)=FishermanOID then begin
HtmlRcv:=true; // сигналим, что был нужный HTML
end;
end;
//************************************************************************
#$10: begin //abyss
msg.Lines.Add('S>Пакет SellList #$10');
ListID:=ReadD(6); //запоминаем, он все время разный
msg.Lines.Add('ListID='+inttostr(ListID));
SellListRcv:=true; // сигналим, что был нужный пакет
end;
//************************************************************************
#$11: begin //abyss
msg.Lines.Add('S>Пакет BuyList #$11');
ListID:=ReadD(6); //запоминаем, он все время разный
msg.Lines.Add('ListID='+inttostr(ListID));
BuyListRcv:=true; // сигналим, что был нужный пакет
end;
//************************************************************************
#$D0: begin //abyss
msg.Lines.Add('S>Пакет MultiSellList #$D0');
ListID:=ReadD(2); //запоминаем, он все время разный
msg.Lines.Add('ListID='+inttostr(ListID));
MultiSellListRcv:=true; // сигналим, что был нужный пакет
end;
//************************************************************************
//12=DeleteObject:d(ObjectID)d(0)
#$12: begin
msg.Lines.Add('S>C $12 DeleteObject '+inttostr(ReadD(2)));
DeleteNpc(ReadD(2));
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;
OnTimerA.Enabled:=false; //выключае магическую атаку
//репозиция
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;
end;
//************************************************************************
//16=NpcInfo:d(ObjectID)d(NpcTypeId:Get.NpcId)d(IsAttackable)d(X)d(Y)d(Z)
#$16: 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);
end;
end;
//************************************************************************
//1B=ItemList:h(ShowWindow)h(ListSize:Loop.01.0021)h(ItemType1)d(ObjectID)d(ItemID:Get.Func01)d(LocationSlot)d(Count)h(ItemType2)h(CustomType1)h(isEquipped)d(BodyPart)h(EnchantLevel)h(CustType2)d(AugmentationID)d(Mana)d(AttackAttrElement)d(AttackAttrElementVal)d(DefAttrFire)d(DefAttrWater)d(DefAttrWind)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)
#$1B: begin
msg.Lines.Add('S>Пакет ItemListPacket #$1B');
ItemList; //создание базы предметов
end;
//************************************************************************
//27=InventoryUpdate:h(ListSize:Loop.01.0021)h(Change)h(ItemType1)d(ObjectID)d(ItemID:Get.Func01)d(Location)d(Count)h(ItemType2)h(CustomType1)h(isEquipped)d(BodyPart)h(EnchantLevel)h(CustType2)d(AugmentationBonus)d(Mana)d(AttackAttrElement)d(AttackAttrElementVal)d(DefAttrFire)d(DefAttrWater)d(DefAttrWind)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)
#$27: begin // 41(42) для IL, 32(34) для С4
msg.Lines.Add('S>Пакет InventoryUpdate #$27');
InventoryUpdate; //Обновление базы
end;
//************************************************************************
#$64: begin
//64=SystemMessage:d(MsgID:Get.MsgID)d(typesCount)
//msg.Lines.Add('S>Пакет Messages #$64');
//сорвалась или вышло время
if ((pck[2]+pck[3]=#$AC#$05)) or ((pck[2]+pck[3]=#$AA#$05)) then begin
inc(fish2);
exit;
end;
//что-то поймали
if (pck[2]+pck[3]=#$AD#$05) then //проверка, что мы начали ловить без удочки
begin
fishin.enabled:=true;
isFishing:=false;
giverod;
givelure;
end;
if (pck[2]+pck[3]=#$36#$00) then inc(fish1); //поймали рыбу
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
//репозиция
if isEquip(RodOID) and isFishing then MagicSkillUse(fish);
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;
exit;
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;
//************************************************************************
//ловим рыбу
//FE1300=ExFishingStart:h(charOID)d(fishType)d(X)d(Y)d(Z)b(isNightLure)b(c)
//-----FE1E00=ExFishingStart:h(subID)d(ObjectID)d(FishType)d(X)d(Y)d(Z)c(0)c(0)c(isNightLure)c(0)
//FE1400=ExFishingEnd:h(charObjtId)b(isWin)
//-----FE1F00=ExFishingEnd:h(subID)d(CharID)c(isWin)
//FE1500=ExFishingStartCombat:h(charOID)d(time)d(HP)b(Fighting)b(LureType)b(isFishDeceptive)
//FE16=ExFishingHpRegen:h(subID)d(charObjID)d(time)d(fish_HP)c(HPstop/rise)c(GoodUse)c(anim)d(penalty)c(BarColor)
//-----FE2800=ExFishingHPRegen:h(subID)d(ObjectID)d(Time)d(FishHP)c(HPstop/Rise)c(GoodUse)c(Anim)d(Penalty)c(BarColor)
#$FE: begin
if Status and (MyOID<>0) then begin
case pck[2] of
//FE1400=ExFishingEnd:h(charObjtId)b(isWin)
#$14: begin
//msg.Lines.Add('S>Пакет ExFishingEnd #$FE1400');
if MyOID=ReadD(4) then begin
gooduse:=0;
isFishing:=false; //сейчас не ловим
inc (MMesto);
if ReadC(8)=1 then begin
msg.Lines.Add('Поймали!');
end else begin
if stop then exit; //нажали кнопку стоп!
msg.Lines.Add('Сорвалась!');
end;
//не пора ли поменять место ловли?
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;
msg.Lines.Add('Бежим на новое место...');
exit;
end;
fishin.enabled:=true;
end;
end;
//FE1600=ExFishingHPRegen:h(subID)d(ObjectID)d(Time)d(FishHP)c(HPstop/Rise)c(GoodUse)c(Anim)d(Penalty)c(BarColor)
#$16: begin
//msg.Lines.Add('S>Пакет ExFishingHpRegen #$FE1600');
if MyOID=ReadD(4) then begin
if (pck[16]+pck[17]=#$00#$00) then begin
inc(gooduse);
if gooduse>=1 then pumping;
exit;
end;
if (pck[16]+pck[17]=#$01#$00) then begin
inc(gooduse);
if gooduse>=1 then reeling;
exit;
end;
if (pck[17]=#$01) then gooduse:=0;
end;
end;
end;
end;
end;
end;
end;
//****************************************************************************
//клиентские пакеты с ID - от хроник Грация
if (ConnectName=Name) and FromClient then begin
case pck[1] of
//************************************************************************
#$09: 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;
//************************************************************************
//0F=MoveBackwardToLocation:d(ToX)d(ToY)d(ToZ)d(OrigX)d(OrigY)d(OrigZ)d(MoveMovement)
#$0F: ParseMoveClient; //move
//************************************************************************
//34=RequestSocialAction:d(Action:Get.Func09)
#$34: begin
//msg.Lines.Add('C>Пакет RequestSicialAction #$1B');
case ReadD(2) of
//социальное действие Yes для начала ловли
6: begin
//msg.Lines.Add('Отключили клиент из скрипта...');
//для версии 3.1.9+ можно попробовать отключить клиента
//Варнинг! Опасно для жизни! =)
LogOutOk:=true;
buf:=#$7E;
SendToClientEx(Name); // отключаем клиент
//msg.Lines.Add('S>Пакет LogOutOk #$7E');
//не передаем серверу социальное действие
pck:='';
end;
end;
end;
//************************************************************************
//49=Say2:s(Text)d(Type)s(Target)
#$49: //say2
//если это команда и она обработана и надо очистить чат
if ParseCmd(ReadS(2)) and EraseCommandFromChat then pck:='';//kill packet
//ValidatePosition пакет от клиента с моими кординатами
//59=ValidatePosition:d(X)d(Y)d(Z)d(Heading)d(Data)
//************************************************************************
#$59: begin
//msg.Lines.Add('C>Пакет ValidatePosition #$48');
MyX:=ReadD(2); //получаю координату х моего чара
MyY:=ReadD(6); //получаю координату у моего чара
MyZ:=ReadD(10); //получаю координату z моего чара
end;
//************************************************************************
#$A8: begin // C>A8=NetPing:d(kID)d(PING)d(dta)
//msg.Lines.Add('C>Пакет NetPing #$A8');
NetPing:=pck; // запомним его
pck:='';
end;
end; //case
end;
end.
Последний раз редактировалось NLObP, 06.05.2009 в 03:42.
Причина: исправления в скрипте
|