Перейти к содержанию

Универсальный скрипт: Автофарм + Баф(Alt+b) + Релог при дисконекте


Рекомендуемые сообщения

Описание: 

Стартует с любой точки мира л2.  Если не на точке фарма, то через Alt+B делает телепорт в центр Годдарда, далее бафф заданной схемы, после чего бафает ЛС бафы.

Бежит к ГК и делает телепорт. Можете назначить свои схемы телепортов, телепорт в любой город и далее в нужную локацию. После телепорта бежит на спот и начинает фармить(Предварительно не забудьте настроить бота на точку фарма). Перед началом фарма и во время фарма проверка дисконекта и  не умер ли по пути на спот. Во время фарма если адена в инвентаре в течении 2 минут не изменилась, значит делает релогин окна. Так же проверяет баф на споте во время фарма, если бaф спал, летит в город на ребаф и возврат на точку фарма и проверка смерти. если умер, летит в город на ребаф и возврат на точку фарма. В скрипте подробные описания для чайников. Пользуемся и говорим мне спасибо: SNAIP. 😉 И самое главное не ставьте друг у друга на головах. А пофиг. Ставьте 🙂

uses SysUtils;
var obj: TL2NPC;
buff: TL2Effect;
loggedIn:boolean;
x, y : integer;
adena1: TL2Item;
adena2: TL2Item;
function ShellExecuteW(hwnd: integer; lpOperation, lpFile, lpParameters, lpDirectory: PChar;  nShowCmd: integer): integer; stdcall;
external 'Shell32.dll';
function keybd_event(bVk, bScan: byte; dwFlags, dwExtraInfo: integer): integer; stdcall;
external 'user32.dll';
function ShowWindow(hwnd:cardinal; action:integer):boolean; stdcall;
external 'user32.dll';
const
login = 'LOGIN';//логин    
password = 'PASS';//пароль
//namePath = 'C:\Games\L2Intrelude\ACC-Pain-x5\Original.BAT';//ссылка BAT файл для изменения названия окна л2
gamePath = 'c:\Games\L2-cat-x5-pain\system\l2.exe';//ссылка на клиент
///Проверка дисконекта///
procedure disconnectMonitor;
begin
if loggedIn=false then begin
loggedIn:=true;
Engine.FaceControl(0,false);
Delay(1000);
Engine.GameClose;
Delay(2000); 
//ShellExecuteW(0, 'open', PChar(namePath), nil, nil, 0);
Delay(2000); // тут для каждого окна нужны разные данные, чтобы бот успевал вводить логин и пароль в своё окно
ShellExecuteW(0, 'open', PChar(gamePath), nil, nil, 0);
Delay(30000); // Время загрузки клиента   
enterText(login);
Engine.UseKey('Tab');                       
Delay(500);
enterText(password);
Delay(500);
Engine.UseKey('Enter');
Delay(3000);
Engine.UseKey('Enter');
Delay(3000);
Engine.UseKey('Enter');                         
Delay(10000);
Engine.UseKey('Enter');
Engine.FaceControl(0,true);
Delay(15000);//Время загрузки персонажа
///Проверка на дисконекта///
if (Engine.Status = lsOffline) or (Engine.Status = lsOff) then begin
loggedIn:= false;
Script.NewThread(@disconnectMonitor);
end;
end;
end;
procedure enterText(const text: string);
var
i: cardinal;
upperCase: boolean;
begin
for i:= 1 to length(text) do begin
if isDigit(text[i]) then
Engine.UseKey(text[i])
else begin
upperCase:= text[i] = UpCase(text[i]);      
if upperCase then begin
keybd_event($A0, 0, 0, 0);          
end;
delay(20);      
Engine.UseKey(text[i]);      
end;
delay(20);
keybd_event($A0, 0, 2, 0);
delay(50);
end;
end;
function isDigit(ch: char): boolean;
const digits = '0123456789';
var i: cardinal;
begin
result:= true;
for i:= 0 to length(digits)-1 do
if digits[i] = ch then 
exit;
result:= false;
end;
begin
///Старт Фарм///
///Проверка на дисконекта///
if (Engine.Status = lsOffline) or (Engine.Status = lsOff) then begin
loggedIn:= false;
Script.NewThread(@disconnectMonitor);
end;
///Проверка на смерть///
if User.Dead then begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(30000);
end;
while 1<>2 do begin
Engine.FaceControl(0,false);
inventory.User.ByID(57, adena1);
///Проверка зоны фарма и старт фарма///
if user.inrange(125176, -40008, -3776, 10000, 10000) then begin // Поставить последнюю точку пути к точке фарма
while 1<>2 do begin
inventory.User.ByID(57, adena1);
///Проверка смерти и в Город///
if User.Dead then begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(30000);
break;
end;
///Проверка бафа///
if not User.Buffs.ById(1204, Buff) then  // Проверка есть ли на нас бафф ВВ по ID
begin
Engine.FaceControl(0,false);
//Engine.UseItem(736); //Юзаем СоЕ если нет бафа ВВ
Engine.entertext('/unstuck');
delay(40000);
break;
end;
//engine.LoadZone('Ketra.zmap'); // Загрузить карту фарма
Engine.FaceControl(0,true);
delay (120000); //Время проверки дисконекта и смерти бота во время фарма, ставить больше чем время на убийство одного моба
///Проверка смерти и в Город///
if User.Dead then
begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(30000);
break;
end;
///Проверка бафа///
if not User.Buffs.ById(1204, Buff) then  // Проверка есть ли на нас бафф ВВ по ID
begin
Engine.FaceControl(0,false);
//Engine.UseItem(736); //Юзаем СоЕ если нет бафа ВВ
Engine.entertext('/unstuck');
delay(40000);
break;
end;
inventory.User.ByID(57, adena2);
if (adena1.count = adena2.count) then begin
loggedIn:=false; 
disconnectMonitor;
end;
end;
end;
///Старт Город///
Engine.FaceControl(0,false);
///Телепорт Alt+B///
engine.bypasstoserver('_bbsloc');
delay(2000);
engine.bypasstoserver( '_bbstop;51');
delay(2000);
engine.bypasstoserver('_bbstop;517');
delay(2000);
engine.bypasstoserver('_bbsteleport;teleport; 147725 -56517 -2780 5000');
delay(10000);
////БАФ Alt+B////
engine.bypasstoserver('_bbshome');
delay(2000);
engine.bypasstoserver('_bbsbuff;');          
delay(2000);
engine.bypasstoserver( '_bbsbuff;restore;kach'); //Здесь указать название вашего шаблона бафа - заменить kach на ваше название.
delay(2000);
///БАФ ЛС - Если нет можно удалить///
Engine.FaceControl(0,True);
delay(20000); //Время требуемое для бафа лс, если мало, увеличить.
Engine.FaceControl(0,False);
////Телепорт ГК////
Engine.MoveTo(147960, -55272, -2728);
Engine.SetTarget(31275);
Engine.DlgOpen();
delay(2000);
Engine.DlgSel(1);
delay(2000);
Engine.DlgSel(9);
delay(10000);
///Здесь Путь к точке фарма///
Engine.MoveTo(125176, -40008, -3776);
///Проверка смерти и дисконекта по пути к точке фарма, если убили, в город///
if User.Dead then
begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(30000);
end;
inventory.User.ByID(57, adena2);
if (adena1.count = adena2.count) then  begin
loggedIn:=false; 
disconnectMonitor;
end;
end;
end.
 

  • Like 2
Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...
On 21.06.2023 at 04:26, P5LD2SE said:

Описание: 

Стартует с любой точки мира л2.  Если не на точке фарма, то через Alt+B делает телепорт в центр Годдарда, далее бафф заданной схемы, после чего бафает ЛС бафы.

Бежит к ГК и делает телепорт. Можете назначить свои схемы телепортов, телепорт в любой город и далее в нужную локацию. После телепорта бежит на спот и начинает фармить(Предварительно не забудьте настроить бота на точку фарма). Перед началом фарма и во время фарма проверка дисконекта и  не умер ли по пути на спот. Во время фарма если адена в инвентаре в течении 2 минут не изменилась, значит делает релогин окна. Так же проверяет баф на споте во время фарма, если бaф спал, летит в город на ребаф и возврат на точку фарма и проверка смерти. если умер, летит в город на ребаф и возврат на точку фарма. В скрипте подробные описания для чайников. Пользуемся и говорим мне спасибо: SNAIP. 😉 И самое главное не ставьте друг у друга на головах. А пофиг. Ставьте 🙂

uses SysUtils;
var obj: TL2NPC;
buff: TL2Effect;
loggedIn:boolean;
x, y : integer;
adena1: TL2Item;
adena2: TL2Item;
function ShellExecuteW(hwnd: integer; lpOperation, lpFile, lpParameters, lpDirectory: PChar;  nShowCmd: integer): integer; stdcall;
external 'Shell32.dll';
function keybd_event(bVk, bScan: byte; dwFlags, dwExtraInfo: integer): integer; stdcall;
external 'user32.dll';
function ShowWindow(hwnd:cardinal; action:integer):boolean; stdcall;
external 'user32.dll';
const
login = 'LOGIN';//логин    
password = 'PASS';//пароль
//namePath = 'C:\Games\L2Intrelude\ACC-Pain-x5\Original.BAT';//ссылка BAT файл для изменения названия окна л2
gamePath = 'c:\Games\L2-cat-x5-pain\system\l2.exe';//ссылка на клиент
///Проверка дисконекта///
procedure disconnectMonitor;
begin
if loggedIn=false then begin
loggedIn:=true;
Engine.FaceControl(0,false);
Delay(1000);
Engine.GameClose;
Delay(2000); 
//ShellExecuteW(0, 'open', PChar(namePath), nil, nil, 0);
Delay(2000); // тут для каждого окна нужны разные данные, чтобы бот успевал вводить логин и пароль в своё окно
ShellExecuteW(0, 'open', PChar(gamePath), nil, nil, 0);
Delay(30000); // Время загрузки клиента   
enterText(login);
Engine.UseKey('Tab');                       
Delay(500);
enterText(password);
Delay(500);
Engine.UseKey('Enter');
Delay(3000);
Engine.UseKey('Enter');
Delay(3000);
Engine.UseKey('Enter');                         
Delay(10000);
Engine.UseKey('Enter');
Engine.FaceControl(0,true);
Delay(15000);//Время загрузки персонажа
///Проверка на дисконекта///
if (Engine.Status = lsOffline) or (Engine.Status = lsOff) then begin
loggedIn:= false;
Script.NewThread(@disconnectMonitor);
end;
end;
end;
procedure enterText(const text: string);
var
i: cardinal;
upperCase: boolean;
begin
for i:= 1 to length(text) do begin
if isDigit(text[i]) then
Engine.UseKey(text[i])
else begin
upperCase:= text[i] = UpCase(text[i]);      
if upperCase then begin
keybd_event($A0, 0, 0, 0);          
end;
delay(20);      
Engine.UseKey(text[i]);      
end;
delay(20);
keybd_event($A0, 0, 2, 0);
delay(50);
end;
end;
function isDigit(ch: char): boolean;
const digits = '0123456789';
var i: cardinal;
begin
result:= true;
for i:= 0 to length(digits)-1 do
if digits[i] = ch then 
exit;
result:= false;
end;
begin
///Старт Фарм///
///Проверка на дисконекта///
if (Engine.Status = lsOffline) or (Engine.Status = lsOff) then begin
loggedIn:= false;
Script.NewThread(@disconnectMonitor);
end;
///Проверка на смерть///
if User.Dead then begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(30000);
end;
while 1<>2 do begin
Engine.FaceControl(0,false);
inventory.User.ByID(57, adena1);
///Проверка зоны фарма и старт фарма///
if user.inrange(125176, -40008, -3776, 10000, 10000) then begin // Поставить последнюю точку пути к точке фарма
while 1<>2 do begin
inventory.User.ByID(57, adena1);
///Проверка смерти и в Город///
if User.Dead then begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(30000);
break;
end;
///Проверка бафа///
if not User.Buffs.ById(1204, Buff) then  // Проверка есть ли на нас бафф ВВ по ID
begin
Engine.FaceControl(0,false);
//Engine.UseItem(736); //Юзаем СоЕ если нет бафа ВВ
Engine.entertext('/unstuck');
delay(40000);
break;
end;
//engine.LoadZone('Ketra.zmap'); // Загрузить карту фарма
Engine.FaceControl(0,true);
delay (120000); //Время проверки дисконекта и смерти бота во время фарма, ставить больше чем время на убийство одного моба
///Проверка смерти и в Город///
if User.Dead then
begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(30000);
break;
end;
///Проверка бафа///
if not User.Buffs.ById(1204, Buff) then  // Проверка есть ли на нас бафф ВВ по ID
begin
Engine.FaceControl(0,false);
//Engine.UseItem(736); //Юзаем СоЕ если нет бафа ВВ
Engine.entertext('/unstuck');
delay(40000);
break;
end;
inventory.User.ByID(57, adena2);
if (adena1.count = adena2.count) then begin
loggedIn:=false; 
disconnectMonitor;
end;
end;
end;
///Старт Город///
Engine.FaceControl(0,false);
///Телепорт Alt+B///
engine.bypasstoserver('_bbsloc');
delay(2000);
engine.bypasstoserver( '_bbstop;51');
delay(2000);
engine.bypasstoserver('_bbstop;517');
delay(2000);
engine.bypasstoserver('_bbsteleport;teleport; 147725 -56517 -2780 5000');
delay(10000);
////БАФ Alt+B////
engine.bypasstoserver('_bbshome');
delay(2000);
engine.bypasstoserver('_bbsbuff;');          
delay(2000);
engine.bypasstoserver( '_bbsbuff;restore;kach'); //Здесь указать название вашего шаблона бафа - заменить kach на ваше название.
delay(2000);
///БАФ ЛС - Если нет можно удалить///
Engine.FaceControl(0,True);
delay(20000); //Время требуемое для бафа лс, если мало, увеличить.
Engine.FaceControl(0,False);
////Телепорт ГК////
Engine.MoveTo(147960, -55272, -2728);
Engine.SetTarget(31275);
Engine.DlgOpen();
delay(2000);
Engine.DlgSel(1);
delay(2000);
Engine.DlgSel(9);
delay(10000);
///Здесь Путь к точке фарма///
Engine.MoveTo(125176, -40008, -3776);
///Проверка смерти и дисконекта по пути к точке фарма, если убили, в город///
if User.Dead then
begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(30000);
end;
inventory.User.ByID(57, adena2);
if (adena1.count = adena2.count) then  begin
loggedIn:=false; 
disconnectMonitor;
end;
end;
end.
 

немного не понятно что тут нужно указать 

//namePath = 'C:\Games\L2Intrelude\ACC-Pain-x5\Original.BAT';//ссылка BAT файл для изменения названия окна л2

что за BAT  файл, перерыл весь клиент, не нашел. 

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...

Парсить CBtext (community board dialog) - там html с байпассами. Я писал процедуру для парсинга =). Скинул пример, функция ТП может не заработать, но байпасы можно взять).

uses sysutils, classes; 

type
	TPLocation = record
        Index: integer;
		BBs: string;
        Name : string;
	end; 

const
    BpsSteps: array [0 .. 2] of string = (
      '_bbshome',
      '_bbsloc',
      '_bbstop;51'
    ); 

    Locations: array[0..141] of TPLocation = (
    (0, '_bbstop;511,_bbsteleport;teleport; 147450 27120 -2208 5000', '[ Aden ] Broadcasting Tower / Center'),
    (1, '_bbstop;511,_bbsteleport;teleport; 146086 26302 -2195 5000', '[ Aden ] Weapons and Armor Shop'),
    (2, '_bbstop;511,_bbsteleport;teleport; 146754 28968 -2259 5000', '[ Aden ] Grocery Shop'),
    (3, '_bbstop;511,_bbsteleport;teleport; 148205 28984 -2259 5000', '[ Aden ] Accessory Shop'),
    (4, '_bbstop;511,_bbsteleport;teleport; 150569 28221 -2274 5000', '[ Aden ] Blacksmith Shop'),
    (5, '_bbstop;511,_bbsteleport;teleport; 148925 26664 -2195 5000', '[ Aden ] Warehouse'),
    (6, '_bbstop;511,_bbsteleport;teleport; 144179 25574 -2180 5000', '[ Aden ] Orc Guild'),
    (7, '_bbstop;511,_bbsteleport;teleport; 143961 23944 -2124 5000', '[ Aden ] Dark Elven Guild'),
    (8, '_bbstop;511,_bbsteleport;teleport; 149200 25193 -2127 5000', '[ Aden ] Warrior Guild'),
    (9, '_bbstop;511,_bbsteleport;teleport; 145661 23154 -2122 5000', '[ Aden ] Magic Guild'),
    (10, '_bbstop;511,_bbsteleport;teleport; 147441 22883 -1996 5000', '[ Aden ] Einhasad Temple'),
    (11, '_bbstop;512,_bbsteleport;teleport; 82698 148638 -3473 5000', '[ Giran ] Broadcasting Tower / Center'),
    (12, '_bbstop;512,_bbsteleport;teleport; 79711 145488 -3499 5000', '[ Giran ] Prestigious Items Hall'),
    (13, '_bbstop;512,_bbsteleport;teleport; 79768 146559 -3525 5000', '[ Giran ] Weapons Shop'),
    (14, '_bbstop;512,_bbsteleport;teleport; 80385 147867 -3512 5000', '[ Giran ] Grocery Shop'),
    (15, '_bbstop;512,_bbsteleport;teleport; 77543 148231 -3622 5000', '[ Giran ] Blacksmith Shop'),
    (16, '_bbstop;512,_bbsteleport;teleport; 79681 150641 -3524 5000', '[ Giran ] Armor Shop'),
    (17, '_bbstop;512,_bbsteleport;teleport; 83102 150544 -3521 5000', '[ Giran ] Magic Shop'),
    (18, '_bbstop;512,_bbsteleport;teleport; 83096 146659 -3469 5000', '[ Giran ] Warehouse'),
    (19, '_bbstop;512,_bbsteleport;teleport; 80518 144416 -3537 5000', '[ Giran ] Orc Guild'),
    (20, '_bbstop;512,_bbsteleport;teleport; 78790 149358 -3601 5000', '[ Giran ] Dark Elven Guild'),
    (21, '_bbstop;512,_bbsteleport;teleport; 85439 146446 -3405 5000', '[ Giran ] Warrior Guild'),
    (22, '_bbstop;512,_bbsteleport;teleport; 86674 148630 -3406 5000', '[ Giran ] Einhasad Temple'),
    (23, '_bbstop;512,_bbsteleport;teleport; 85824 153086 -3500 5000', '[ Giran ] Magic Guild'),
    (24, '_bbstop;512,_bbsteleport;teleport; 47362 187768 -3582 5000', '[ Giran ] Harbor'),
    (25, '_bbstop;513,_bbsteleport;teleport; 82321 55139 -1529 5000', '[ Oren ] Broadcasting Tower / Center'),
    (26, '_bbstop;513,_bbsteleport;teleport; 79297 53618 -1550 5000', '[ Oren ] Weapons and Armor Shop'),
    (27, '_bbstop;513,_bbsteleport;teleport; 79581 54930 -1551 5000', '[ Oren ] Grocery Shop'),
    (28, '_bbstop;513,_bbsteleport;teleport; 83666 55537 -1516 5000', '[ Oren ] Blacksmith Shop'),
    (29, '_bbstop;513,_bbsteleport;teleport; 81660 54855 -1514 5000', '[ Oren ] Warehouse'),
    (30, '_bbstop;513,_bbsteleport;teleport; 83656 56079 -1529 5000', '[ Oren ] Orc Guild'),
    (31, '_bbstop;513,_bbsteleport;teleport; 83189 54961 -1515 5000', '[ Oren ] Dark Elven Guild'),
    (32, '_bbstop;513,_bbsteleport;teleport; 79288 56771 -1516 5000', '[ Oren ] Warrior Guild'),
    (33, '_bbstop;513,_bbsteleport;teleport; 83636 53103 -1461 5000', '[ Oren ] Einhasad Temple'),
    (34, '_bbstop;514,_bbsteleport;teleport; 18748 145437 -3132 5000', '[ Dion ] Broadcasting Tower / Center'),
    (35, '_bbstop;514,_bbsteleport;teleport; 18087 144594 -3051 5000', '[ Dion ] Weapons and Armor Shop'),
    (36, '_bbstop;514,_bbsteleport;teleport; 19274 146132 -3074 5000', '[ Dion ] Grocery Shop'),
    (37, '_bbstop;514,_bbsteleport;teleport; 19675 143153 -3032 5000', '[ Dion ] Blacksmith Shop'),
    (38, '_bbstop;514,_bbsteleport;teleport; 20861 144576 -3074 5000', '[ Dion ] Warehouse'),
    (39, '_bbstop;514,_bbsteleport;teleport; 20062 143178 -3053 5000', '[ Dion ] Orc Guild'),
    (40, '_bbstop;514,_bbsteleport;teleport; 17229 146773 -3091 5000', '[ Dion ] Dark Elven Guild'),
    (41, '_bbstop;514,_bbsteleport;teleport; 19565 144624 -3094 5000', '[ Dion ] Warrior Guild'),
    (42, '_bbstop;514,_bbsteleport;teleport; 16028 142329 -2697 5000', '[ Dion ] Einhasad Temple'),
    (43, '_bbstop;515,_bbsteleport;teleport; 111115 219017 -3547 5000', '[ Heine ] Broadcasting Tower / Center'),
    (44, '_bbstop;515,_bbsteleport;teleport; 115783 217942 -3587 5000', '[ Heine ] Weapons and Armor Shop'),
    (45, '_bbstop;515,_bbsteleport;teleport; 107107 216871 -3600 5000', '[ Heine ] Grocery Shop'),
    (46, '_bbstop;515,_bbsteleport;teleport; 107905 218858 -3663 5000', '[ Heine ] Blacksmith Shop'),
    (47, '_bbstop;515,_bbsteleport;teleport; 109759 220155 -3520 5000', '[ Heine ] Warehouse'),
    (48, '_bbstop;515,_bbsteleport;teleport; 107528 220990 -3618 5000', '[ Heine ] Orc Guild'),
    (49, '_bbstop;515,_bbsteleport;teleport; 115775 219952 -3631 5000', '[ Heine ] Dark Elven Guild'),
    (50, '_bbstop;515,_bbsteleport;teleport; 114164 218612 -3630 5000', '[ Heine ] Warrior Guild'),
    (51, '_bbstop;515,_bbsteleport;teleport; 111374 217010 -3463 5000', '[ Heine ] Einhasad Temple'),
    (52, '_bbstop;515,_bbsteleport;teleport; 111332 224636 -3555 5000', '[ Heine ] Evas Temple'),
    (53, '_bbstop;516,_bbsteleport;teleport; -14225 123540 -3121 5000', '[ Gludio ] Broadcasting Tower / Center'),
    (54, '_bbstop;516,_bbsteleport;teleport; -15176 123389 -3112 5000', '[ Gludio ] Weapons and Armor Shop'),
    (55, '_bbstop;516,_bbsteleport;teleport; -14831 124488 -3118 5000', '[ Gludio ] Grocery Shop'),
    (56, '_bbstop;516,_bbsteleport;teleport; -15258 124736 -3119 5000', '[ Gludio ] Blacksmith Shop'),
    (57, '_bbstop;516,_bbsteleport;teleport; -13136 124848 -3122 5000', '[ Gludio ] Warehouse'),
    (58, '_bbstop;516,_bbsteleport;teleport; -12762 124771 -3131 5000', '[ Gludio ] Orc Guild'),
    (59, '_bbstop;516,_bbsteleport;teleport; -12698 123146 -3106 5000', '[ Gludio ] Dark Elven Guild'),
    (60, '_bbstop;516,_bbsteleport;teleport; -13587 122840 -3109 5000', '[ Gludio ] Warrior Guild'),
    (61, '_bbstop;516,_bbsteleport;teleport; -12982 121706 -2972 5000', '[ Gludio ] Einhasad Temple'),
    (62, '_bbstop;517,_bbsteleport;teleport; 147725 -56517 -2780 5000', '[ Goddard ] Broadcasting Tower / Center'),
    (63, '_bbstop;517,_bbsteleport;teleport; 148909 -58773 -2966 5000', '[ Goddard ] Weapon and Armor Shop'),
    (64, '_bbstop;517,_bbsteleport;teleport; 146603 -58858 -2973 5000', '[ Goddard ] Blacksmith Shop'),
    (65, '_bbstop;517,_bbsteleport;teleport; 149216 -57550 -2967 5000', '[ Goddard ] Magic Shop'),
    (66, '_bbstop;517,_bbsteleport;teleport; 146329 -57662 -2966 5000', '[ Goddard ] Warehouse'),
    (67, '_bbstop;517,_bbsteleport;teleport; 144360 -55751 -2966 5000', '[ Goddard ] Orc Guild'),
    (68, '_bbstop;517,_bbsteleport;teleport; 145015 -54680 -2966 5000', '[ Goddard ] Dark Elven Guild'),
    (69, '_bbstop;517,_bbsteleport;teleport; 148783 -53170 -2732 5000', '[ Goddard ] Warrior Guild'),
    (70, '_bbstop;517,_bbsteleport;teleport; 147705 -53066 -2731 5000', '[ Goddard ] Einhasad Temple'),
    (71, '_bbstop;517,_bbsteleport;teleport; 146577 -53114 -2732 5000', '[ Goddard ] Magic Guild'),
    (72, '_bbstop;518,_bbsteleport;teleport; 87360 -142585 -1340 5000', '[ Schuttgart ] Broadcasting Tower / Center'),
    (73, '_bbstop;518,_bbsteleport;teleport; 86367 -139815 -1527 5000', '[ Schuttgart ] Weapons and Armor Shop'),
    (74, '_bbstop;518,_bbsteleport;teleport; 85884 -141117 -1527 5000', '[ Schuttgart ] Grocery Shop'),
    (75, '_bbstop;518,_bbsteleport;teleport; 88244 -139693 -1534 5000', '[ Schuttgart ] Blacksmith Shop'),
    (76, '_bbstop;518,_bbsteleport;teleport; 88736 -141027 -1527 5000', '[ Schuttgart ] Warehouse'),
    (77, '_bbstop;518,_bbsteleport;teleport; 90155 -143190 -1523 5000', '[ Schuttgart ] Orc Guild'),
    (78, '_bbstop;518,_bbsteleport;teleport; 90393 -141985 -1527 5000', '[ Schuttgart ] Dark Elven Guild'),
    (79, '_bbstop;518,_bbsteleport;teleport; 86205 -145336 -1293 5000', '[ Schuttgart ] Warrior Guild'),
    (80, '_bbstop;518,_bbsteleport;teleport; 88508 -145336 -1293 5000', '[ Schuttgart ] Magic Guild'),
    (81, '_bbstop;518,_bbsteleport;teleport; 87361 -145777 -1293 5000', '[ Schuttgart ] Einhasad Temple'),
    (82, '_bbstop;522,_bbsteleport;teleport; 44070 -50243 -796 5000', '[ Rune ] Broadcasting Tower / Center'),
    (83, '_bbstop;522,_bbsteleport;teleport; 44770 -47412 -796 5000', '[ Rune ] Weapon and Armor Shop'),
    (84, '_bbstop;522,_bbsteleport;teleport; 45342 -49374 -796 5000', '[ Rune ] Blacksmith Shop'),
    (85, '_bbstop;522,_bbsteleport;teleport; 45093 -47447 -796 5000', '[ Rune ] Magic Shop'),
    (86, '_bbstop;522,_bbsteleport;teleport; 43532 -49123 -796 5000', '[ Rune ] Warehouse'),
    (87, '_bbstop;522,_bbsteleport;teleport; 37350 -47043 -1144 5000', '[ Rune ] Warrior Guild'),
    (88, '_bbstop;522,_bbsteleport;teleport; 37342 -49538 -1128 5000', '[ Rune ] Mystic Guild'),
    (89, '_bbstop;522,_bbsteleport;teleport; 37956 -38420 -3610 5000', '[ Rune ] Harbor'),
    (90, '_bbstop;519,_bbsteleport;teleport; -83063 150791 -3133 5000', '[ Gludin ] Broadcasting Tower / Center'),
    (91, '_bbstop;519,_bbsteleport;teleport; -80392 155301 -3165 5000', '[ Gludin ] Weapons and Armor Shop'),
    (92, '_bbstop;519,_bbsteleport;teleport; -79423 153550 -3165 5000', '[ Gludin ] Grocery Shop'),
    (93, '_bbstop;519,_bbsteleport;teleport; -82971 155479 -3180 5000', '[ Gludin ] Blacksmith Shop'),
    (94, '_bbstop;519,_bbsteleport;teleport; -81783 152079 -3128 5000', '[ Gludin ] Magic Shop'),
    (95, '_bbstop;519,_bbsteleport;teleport; -81970 153402 -3178 5000', '[ Gludin ] Warehouse'),
    (96, '_bbstop;519,_bbsteleport;teleport; -80466 153281 -3182 5000', '[ Gludin ] Orc Guild'),
    (97, '_bbstop;519,_bbsteleport;teleport; -84534 149772 -3132 5000', '[ Gludin ] Dark Elven Guild'),
    (98, '_bbstop;519,_bbsteleport;teleport; -82085 149369 -3129 5000', '[ Gludin ] Warrior Guild'),
    (99, '_bbstop;519,_bbsteleport;teleport; -79310 150930 -3045 5000', '[ Gludin ] Einhasad Temple'),
    (100, '_bbstop;519,_bbsteleport;teleport; -91597 150517 -3653 5000', '[ Gludin ] Harbor'),
    (101, '_bbstop;520,_bbsteleport;teleport; 116589 76268 -2734 5000', '[ Hunter ] Broadcasting Tower / Center'),
    (102, '_bbstop;520,_bbsteleport;teleport; 115344 75620 -2587 5000', '[ Hunter ] Weapons and Armor Shop'),
    (103, '_bbstop;520,_bbsteleport;teleport; 116270 74838 -2588 5000', '[ Hunter ] Grocery Shop'),
    (104, '_bbstop;520,_bbsteleport;teleport; 117540 75360 -2654 5000', '[ Hunter ] Blacksmith Shop'),
    (105, '_bbstop;520,_bbsteleport;teleport; 115429 76754 -2656 5000', '[ Hunter ] Warehouse'),
    (106, '_bbstop;520,_bbsteleport;teleport; 119986 74742 -2378 5000', '[ Hunter ] Orc Guild'),
    (107, '_bbstop;520,_bbsteleport;teleport; 120120 76018 -2268 5000', '[ Hunter ] Dark Elven Guild'),
    (108, '_bbstop;520,_bbsteleport;teleport; 119652 77450 -2249 5000', '[ Hunter ] Warrior Guild'),
    (109, '_bbstop;520,_bbsteleport;teleport; 118924 78397 -2166 5000', '[ Hunter ] Magic Guild'),
    (110, '_bbstop;523,_bbsteleport;teleport; 45873 49288 -3064 5000', '[ Elven Village ] Broadcasting Tower / Center'),
    (111, '_bbstop;523,_bbsteleport;teleport; 44535 47000 -3010 5000', '[ Elven Village ] Weapons and Armor Shop'),
    (112, '_bbstop;523,_bbsteleport;teleport; 42784 50218 -2988 5000', '[ Elven Village ] Grocery Shop'),
    (113, '_bbstop;523,_bbsteleport;teleport; 47897 50005 -2989 5000', '[ Elven Village ] Warehouse'),
    (114, '_bbstop;523,_bbsteleport;teleport; 45280 52281 -2801 5000', '[ Elven Village ] Temple of Eva'),
    (115, '_bbstop;524,_bbsteleport;teleport; 12428 16551 -4588 5000', '[ Dark Elven Village ] Broadcasting Tower / Center'),
    (116, '_bbstop;524,_bbsteleport;teleport; 10842 17909 -4562 5000', '[ Dark Elven Village ] Weapons and Armor Shop'),
    (117, '_bbstop;524,_bbsteleport;teleport; 11914 15786 -4559 5000', '[ Dark Elven Village ] Grocery Shop'),
    (118, '_bbstop;524,_bbsteleport;teleport; 13545 17555 -4546 5000', '[ Dark Elven Village ] Warehouse'),
    (119, '_bbstop;524,_bbsteleport;teleport; 10793 14287 -4246 5000', '[ Dark Elven Village ] Temple of Shilen'),
    (120, '_bbstop;525,_bbsteleport;teleport; -82687 243157 -3734 5000', '[ Talking Island Village ] Broadcasting Tower / Center'),
    (121, '_bbstop;525,_bbsteleport;teleport; -86475 242946 -3726 5000', '[ Talking Island Village ] Weapons and Armor Shop'),
    (122, '_bbstop;525,_bbsteleport;teleport; -84165 240670 -3724 5000', '[ Talking Island Village ] Grocery Shop'),
    (123, '_bbstop;525,_bbsteleport;teleport; -84981 242677 -3734 5000', '[ Talking Island Village ] Blacksmith Shop'),
    (124, '_bbstop;525,_bbsteleport;teleport; -81785 243664 -3720 5000', '[ Talking Island Village ] Warehouse'),
    (125, '_bbstop;525,_bbsteleport;teleport; -83159 242858 -3726 5000', '[ Talking Island Village ] Warrior Guild'),
    (126, '_bbstop;525,_bbsteleport;teleport; -84626 245314 -3731 5000', '[ Talking Island Village ] Einhasad Temple'),
    (127, '_bbstop;525,_bbsteleport;teleport; -96806 259436 -3649 5000', '[ Talking Island Village ] Harbor'),
    (128, '_bbstop;526,_bbsteleport;teleport; 116551 -182493 -1525 5000', '[ Dwarven Village ] Broadcasting Tower / Center'),
    (129, '_bbstop;526,_bbsteleport;teleport; 115843 -181207 -1344 5000', '[ Dwarven Village ] Weapons and Armor Shop'),
    (130, '_bbstop;526,_bbsteleport;teleport; 116005 -177377 -889 5000', '[ Dwarven Village ] Grocery Shop'),
    (131, '_bbstop;526,_bbsteleport;teleport; 115347 -182386 -1446 5000', '[ Dwarven Village ] Blacksmith Shop'),
    (132, '_bbstop;526,_bbsteleport;teleport; 114846 -179977 -876 5000', '[ Dwarven Village ] Warehouse'),
    (133, '_bbstop;526,_bbsteleport;teleport; 114445 -178535 -818 5000', '[ Dwarven Village ] Maphr Temple'),
    (134, '_bbstop;526,_bbsteleport;teleport; 116117 -178532 -954 5000', '[ Dwarven Village ] Elder Council'),
    (135, '_bbstop;526,_bbsteleport;teleport; 115765 -183422 -1483 5000', '[ Dwarven Village ] Bronze Key Guild'),
    (136, '_bbstop;527,_bbsteleport;teleport; -44133 -113911 -244 5000', '[ Orc Village ] Broadcasting Tower / Center'),
    (137, '_bbstop;527,_bbsteleport;teleport; -44290 -111618 -227 5000', '[ Orc Village ] Weapons and Armor Shop'),
    (138, '_bbstop;527,_bbsteleport;teleport; -44011 -115535 -227 5000', '[ Orc Village ] Grocery Shop'),
    (139, '_bbstop;527,_bbsteleport;teleport; -43355 -112483 -226 5000', '[ Orc Village ] Blacksmith Shop'),
    (140, '_bbstop;527,_bbsteleport;teleport; -43248 -113517 -227 5000', '[ Orc Village ] Warehouse'),
    (141, '_bbstop;527,_bbsteleport;teleport; -46422 -113608 -22 5000', '[ Orc Village ] Kings Hall')
    );

procedure SlistSplitText(aDelimiter: Char; const s: String; aList: TStrings);
begin
  aList.Clear;
  aList.Delimiter := aDelimiter;
  aList.StrictDelimiter := True; // Spaces excluded from being a delimiter
  aList.DelimitedText := s;
end;

// Usage - L2CatTeleport(0);
function L2CatTeleport(Location: integer; CurrentEngine: TL2Control = nil): boolean;
var
    TeleportSplit: TStringList;
    i: integer;
    CurrentLocation: TPLocation;
begin
    if CurrentEngine = nil then CurrentEngine := Engine;

    Result := False;
    // Open global TP menu
    for i := Low(BpsSteps) to High(BpsSteps) do
        if CurrentEngine.BypassToServer(BpsSteps[i]) then delay(555);

    CurrentLocation := Locations[Location];

    if CurrentLocation.BBs = '' then begin
      CurrentEngine.Msg('L2CatTeleport', format('Location with %d index not found!', [Location]), $000080);
      Exit;
    end;

    TeleportSplit := TStringList.Create;
    CurrentEngine.Msg('L2CatTeleport', format('Teleport to %s', [CurrentLocation.Name]));
    SlistSplitText(',', CurrentLocation.BBs, TeleportSplit);

    for i := 0 to TeleportSplit.Count - 1 do
        if CurrentEngine.BypassToServer(TeleportSplit[i]) then CurrentEngine.delay(555);

    TeleportSplit.Free;
    CurrentEngine.Delay(10000); // Delay after TP, need parametrize
end;
                   

 

Изменено пользователем nixer
  • Like 2
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...