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