IvaniuS
28.08.2015, 15:24
Думаю всем будет полезно понять и почитать, здесь будет готовый сборник всех моих полезных примеров или полезных примеров в принципе.
Т.к. на данном форуме нету споилеров, буду делать отдельными сообщениями и давать на них ссылки тут, для того чтобы это хорошо смотрелось!
>>>Скрипты Adrenaline, L2, AA, BDO Наш Сайт<<< ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
Хотите больше полезных примеров? - ставим ЛАЙК!
Функция Антипаравоз + функция проверки атаки чара мобами.
function MobsAttacking : Boolean;//Атакуют ли нас мобы?
var i, n: Integer;
begin
n := 0;
for i := 0 to NpcList.Count - 1 do
if (NpcList.Items(i).Target = User) and not NpcList.Items(i).Dead then inc(n);
Result := n > 0;
end;
function inDanger: boolean;//Есть ли рядом с нами паравоз : работает только на 50%!!!!!
var mobsInTrain,minMobs,i,j: integer;
begin
Result := false;
minMobs := 3;//кол-во мобов
for i:=0 to charlist.count-1 do begin
mobsInTrain := 0;
if (user.distto(charlist.items(i)) < 3000) and charlist.items(i).moved then begin //close, runing
for j:=0 to npclist.count-1 do begin
if (npclist.items(j).target = charlist.items(i)) and (charlist.items(i).distto(npclist.items(j)) < 1500) then inc(mobsInTrain);
if (mobsInTrain >= minMobs) then begin
Result := true;
exit;
end;
end;
end;
end;
end;
Функция Проверки на смерть
function CheckDeath: Boolean;//Проверка на смерть
begin
Result:=false;
if User.Dead then //умерли
begin
Print('Bot Umer');//печатаем в лог
Delay(3000);//ждать реса
if User.Dead then
begin
Result:=true;
Engine.FaceControl(0,false);//выключаем бота
Engine.GoHome;//встаем в город
Delay(10000);//отдыхаем
end;
end;
end;
Скрипт или процедура(поток) для принятия\отмены диалогов (ивенты)
begin
while delay(500) do
begin
Engine.ConfirmDialog(false); // отказ true согласие
//Также именно ЭТА команда отвечает за принятие\отказ (респа,трейда и т.д. не только ивенты)
delay(10000);
end;
end.
#Процедура отправки почты по условию
procedure SendMail;
begin
if inventory.User.ByID(57, Item) and (Item.count > 250000) then
begin
Engine.SendMail('Ник', 'тема', 'комент',[id,кол-во,id,кол-во,id,кол-во,id,кол-во,id,кол-во,id,кол-во]);
delay(1000);
end;
end;
#Скрипт. Часто спрашивают, как дать команду боту по чату, вот так:
uses sysutils,classes;
begin
while Engine.Status = lsOnline do begin
if (ChatMessage.ChatType = mtPrivate) and ChatMessage.Unread then //непрочитанное сообщение тип чата mtPrivate=ПМ mtParty mtAll=белый
begin
if (ChatMessage.Text = 'пати плз') then Engine.InviteParty(ChatMessage.Sender, ldRandom); //текстом - делаем
if (ChatMessage.Text = 'бпк') then engine.useskill(3521); //текстом - делаем
end;
delay(2000);
end;
end.
#Скрипт\Поток АнтиДизарм
const
WeaponID:=4233;//ID Itema оружия
var
item: TL2Item;
begin
while delay(500) do //Два раза в секунду
if inventory.user.byid(WeaponID, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(WeaponID);
Delay(800);
end;
end.
#Процедура\скрипт проверки шагов квеста
procedure CheckQuestStatus(ID:integer=-1);
Var
i:integer;
stat:string;
begin
Print('Инфо по квесту '+IntToStr(ID));
for i:=1 to 32 do
begin
if Engine.QuestStatus(ID,i) then stat:='OK' else stat:=' -- ';
Print('Шаг '+IntToStr(i)+' - '+stat);
end;
end;
begin
CheckQuestStatus(10323); // вместо 10323 вписываем ID квеста
end.
#Для Опытных пользователей. Пример импорта и работы WinAPI функций
function MessageBoxW(hWnd: integer; Text, Caption: PChar; uType: integer): integer; stdcall; external 'user32.dll';
function ShellExecuteW(hwnd: integer; lpOperation, lpFile, lpParameters, lpDirectory: PChar; nShowCmd: integer): integer; stdcall; external 'Shell32.dll';
function FindWindowW(lpClassName, lpWindowName: PChar): integer; stdcall; external 'user32.dll';
function SetWindowTextW(hWnd: integer; lpString: PChar): boolean; stdcall; external 'user32.dll';
var
H: integer;//Handle
begin
MessageBoxW(0, 'HELLO !', 'Пример WinAPI', 0);
ShellExecuteW(0, 'open', 'calc', nil, nil, 0);
Delay(500); // даем время запуститься калькулятору
H := FindWindowW(nil,'Калькулятор');
SetWindowTextW(H, 'Shadow - WinAPI]DEMO');
end.
Хотите больше полезных примеров? - ставим ЛАЙК!
>>>Скрипты Adrenaline, L2, AA, BDO Наш Сайт<<< ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
П.С. Большинство скриптов авторские и при размещении в других местах ссылка на источник и указание авторства ОБЯЗАТЕЛЬНО!
Т.к. на данном форуме нету споилеров, буду делать отдельными сообщениями и давать на них ссылки тут, для того чтобы это хорошо смотрелось!
>>>Скрипты Adrenaline, L2, AA, BDO Наш Сайт<<< ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
Хотите больше полезных примеров? - ставим ЛАЙК!
Функция Антипаравоз + функция проверки атаки чара мобами.
function MobsAttacking : Boolean;//Атакуют ли нас мобы?
var i, n: Integer;
begin
n := 0;
for i := 0 to NpcList.Count - 1 do
if (NpcList.Items(i).Target = User) and not NpcList.Items(i).Dead then inc(n);
Result := n > 0;
end;
function inDanger: boolean;//Есть ли рядом с нами паравоз : работает только на 50%!!!!!
var mobsInTrain,minMobs,i,j: integer;
begin
Result := false;
minMobs := 3;//кол-во мобов
for i:=0 to charlist.count-1 do begin
mobsInTrain := 0;
if (user.distto(charlist.items(i)) < 3000) and charlist.items(i).moved then begin //close, runing
for j:=0 to npclist.count-1 do begin
if (npclist.items(j).target = charlist.items(i)) and (charlist.items(i).distto(npclist.items(j)) < 1500) then inc(mobsInTrain);
if (mobsInTrain >= minMobs) then begin
Result := true;
exit;
end;
end;
end;
end;
end;
Функция Проверки на смерть
function CheckDeath: Boolean;//Проверка на смерть
begin
Result:=false;
if User.Dead then //умерли
begin
Print('Bot Umer');//печатаем в лог
Delay(3000);//ждать реса
if User.Dead then
begin
Result:=true;
Engine.FaceControl(0,false);//выключаем бота
Engine.GoHome;//встаем в город
Delay(10000);//отдыхаем
end;
end;
end;
Скрипт или процедура(поток) для принятия\отмены диалогов (ивенты)
begin
while delay(500) do
begin
Engine.ConfirmDialog(false); // отказ true согласие
//Также именно ЭТА команда отвечает за принятие\отказ (респа,трейда и т.д. не только ивенты)
delay(10000);
end;
end.
#Процедура отправки почты по условию
procedure SendMail;
begin
if inventory.User.ByID(57, Item) and (Item.count > 250000) then
begin
Engine.SendMail('Ник', 'тема', 'комент',[id,кол-во,id,кол-во,id,кол-во,id,кол-во,id,кол-во,id,кол-во]);
delay(1000);
end;
end;
#Скрипт. Часто спрашивают, как дать команду боту по чату, вот так:
uses sysutils,classes;
begin
while Engine.Status = lsOnline do begin
if (ChatMessage.ChatType = mtPrivate) and ChatMessage.Unread then //непрочитанное сообщение тип чата mtPrivate=ПМ mtParty mtAll=белый
begin
if (ChatMessage.Text = 'пати плз') then Engine.InviteParty(ChatMessage.Sender, ldRandom); //текстом - делаем
if (ChatMessage.Text = 'бпк') then engine.useskill(3521); //текстом - делаем
end;
delay(2000);
end;
end.
#Скрипт\Поток АнтиДизарм
const
WeaponID:=4233;//ID Itema оружия
var
item: TL2Item;
begin
while delay(500) do //Два раза в секунду
if inventory.user.byid(WeaponID, item) and not (Item.Equipped) then begin
Delay(500);
Engine.UseItem(WeaponID);
Delay(800);
end;
end.
#Процедура\скрипт проверки шагов квеста
procedure CheckQuestStatus(ID:integer=-1);
Var
i:integer;
stat:string;
begin
Print('Инфо по квесту '+IntToStr(ID));
for i:=1 to 32 do
begin
if Engine.QuestStatus(ID,i) then stat:='OK' else stat:=' -- ';
Print('Шаг '+IntToStr(i)+' - '+stat);
end;
end;
begin
CheckQuestStatus(10323); // вместо 10323 вписываем ID квеста
end.
#Для Опытных пользователей. Пример импорта и работы WinAPI функций
function MessageBoxW(hWnd: integer; Text, Caption: PChar; uType: integer): integer; stdcall; external 'user32.dll';
function ShellExecuteW(hwnd: integer; lpOperation, lpFile, lpParameters, lpDirectory: PChar; nShowCmd: integer): integer; stdcall; external 'Shell32.dll';
function FindWindowW(lpClassName, lpWindowName: PChar): integer; stdcall; external 'user32.dll';
function SetWindowTextW(hWnd: integer; lpString: PChar): boolean; stdcall; external 'user32.dll';
var
H: integer;//Handle
begin
MessageBoxW(0, 'HELLO !', 'Пример WinAPI', 0);
ShellExecuteW(0, 'open', 'calc', nil, nil, 0);
Delay(500); // даем время запуститься калькулятору
H := FindWindowW(nil,'Калькулятор');
SetWindowTextW(H, 'Shadow - WinAPI]DEMO');
end.
Хотите больше полезных примеров? - ставим ЛАЙК!
>>>Скрипты Adrenaline, L2, AA, BDO Наш Сайт<<< ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
П.С. Большинство скриптов авторские и при размещении в других местах ссылка на источник и указание авторства ОБЯЗАТЕЛЬНО!