Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

Авто заточка Adrenalin

SARCAZM

Это что за покемон?
Команда форума
Рег
5 Июн 2015
Сообщения
1,446
Реакции
1
Trovo
SARCAZM
Автор iR_. Название темы может немного​
не совпадать с действительным назначением скрипта.​
За шару огромное спасибо @NeonEye
post-1-0-00585900-1440226263.png
Скрипт автоматической заточки эквипа от iR_. Только активное окно.
uses
SysUtils, Classes, SettingsModule;

function SetCursorPos(x, y : integer): boolean; stdcall; external 'user32.dll';
function mouse_event(dwFlags, dx, dy, dwData: byte; dwExtraInfo: integer): void; stdcall; external 'user32.dll';

const
enchantOperationDelay = 3000; // 3000 ms
perActionDelay = 200; // 200 ms
insertedLifeStoneDelay = 500; // 500 ms
mouseEventDelay = 300; // 200 ms
configPath = 'EnchantConfig.ini';

var

//objectName : array (x_coord, y_coord);

setWeapon : array [0..1] of integer = (100, 82); // weapon insert holder coord
invWeapon : array [0..1] of integer = (100, 82); // weapon at inventory
submitBtn : array [0..1] of integer = (100, 82);

weaponID: integer;
scrollID: integer;
enchantLevel: integer;
exitItemId: integer;

isTest: string;

MySet: TSettings;

//winapi
procedure mouseClick(point: array of integer; _delay : integer = mouseEventDelay); //base mouse delay
begin
SetCursorPos(point[0], point[1]);
mouse_event($2, 0, 0, 0, 0);
delay(_delay);
mouse_event($4, 0, 0, 0, 0);
end;

procedure moveFromTo(start: array of integer; finish: array of integer); //если isCustomCheckTime, в таком случае выставляем кастомную задержку(возможность просмотра лса);
begin
SetCursorPos(start[0], start[1]);
delay(perActionDelay);
mouse_event($2, 0, 0, 0, 0);
delay(perActionDelay);
SetCursorPos(finish[0], finish[1]);
delay(perActionDelay);
mouse_event($4, 0, 0, 0, 0);
delay(perActionDelay);
end;


//etc
function itemCount(ID: integer): integer;
var
tmpItem: TL2Item;
begin
Result := 0;
if (Inventory.User.ByID(Id, tmpItem)) then
Result := tmpItem.Count;
end;

function getItemById(id: integer): TL2Item;
var
tmpItem: TL2Item;
i: integer;
begin
Result := nil;
if Inventory.User.ByID(id, tmpItem) then
Result := tmpItem;
end;

function isEnchanted(id: integer; enchantLevel: integer): boolean;
begin
Result := true;
if (Assigned(getItemById(id))) then
Result := getItemById(id).EnchantLevel = enchantLevel;
end;

function isEnoughItems: boolean;
begin
Result := (itemCount(weaponID) > 0) and (itemCount(scrollID) > 0);
if not Result then
Engine.MSG('[Script stop]', 'Not enough items', 255);
end;

//augmentation bools
function shouldExit(itemId: integer): boolean;
var
item: TL2Item;
begin
if Inventory.User.ById(itemId, item) then
begin
Result := (User.Target = nil) or item.Equipped;
if (Result) then
Engine.MSG('[Script stop]', 'No target or exit item is equipped', 255);
exit;
end;
if User.Target = nil then
Engine.MSG('[Script stop]', 'Character target is empty', 255);
Result := (User.Target = nil);
end;

procedure loadConfig; //выгрузка из конфига в массив
begin
MySet.SetFile(Script.Path + configPath);

weaponID := MySet.Load('Params', 'Weapon ID', 0);
scrollID := MySet.Load('Params', 'Scroll ID', 0);
enchantLevel := MySet.Load('Params', 'Enchant level', 0);
exitItemId := MySet.Load('Params', 'Exit itemId', 14164);
isTest := MySet.Load('Params', 'Cursor test', 'false');

//coordinates
setWeapon[0] := MySet.Load('Coordinates', 'Set weapon slot X', 175);
setWeapon[1] := MySet.Load('Coordinates', 'Set weapon slot Y', 175);

invWeapon[0] := MySet.Load('Coordinates', 'Inventory weapon X', 250);
invWeapon[1] := MySet.Load('Coordinates', 'Inventory weapon Y', 361);

submitBtn[1] := MySet.Load('Coordinates', 'Submit button X', 90);
submitBtn[1] := MySet.Load('Coordinates', 'Submit button Y', 250);

Engine.MSG('[Settings]', 'Weapon ID: ' + IntToStr(weaponID), 8388736);
Engine.MSG('[Settings]', 'Scroll ID: ' + IntToStr(scrollID), 8388736);
Engine.MSG('[Settings]', 'Enchant level: ' + IntToStr(enchantLevel), 8388736);
Engine.MSG('[Settings]', 'Exit itemId: ' + IntToStr(exitItemId), 8388736);
Engine.MSG('[Settings]', 'Cursor test: ' + isTest, 8388736);
Engine.MSG('[Settings]', 'Config loaded', 8388736);


end;

//threads
procedure doEnchant;
begin
//select weapon & move to holder
moveFromTo(invWeapon, setWeapon);
delay(perActionDelay);
// submit | double click
mouseClick(submitBtn);
delay(enchantOperationDelay);
end;

procedure setLifeStone; //main thread
begin
while Engine.Status = lsOnline do
begin

if isEnchanted(weaponID, enchantLevel) or shouldExit(exitItemId) or not isEnoughItems then
exit;

Engine.UseItem(scrollID);
delay(500);
doEnchant;

delay(200);
end;
end;

procedure cursorVerifier;
begin
SetCursorPos(setWeapon[0], setWeapon[1]);
delay(1000);
SetCursorPos(invWeapon[0], invWeapon[1]);
delay(1000);
SetCursorPos(submitBtn[0], submitBtn[1]);
delay(1000);
end;


begin
loadConfig;

if (AnsiSameText(isTest, 'true')) then
cursorVerifier
else
setLifeStone;

end.

 
Как бы тут реализовать заточку обычными скроллами и блесс?)
Что бы если значение инчлвл<3, то точим обычными, если инчлвл=3, то блесс?)
Не могу догнать где инч лвл там) Или он смотрим пошла заточка или нет?(тру\фолс)
Не оч силен в этих вещах ))
 
Скрипт на ил пашет? чет не получилось в самом начале ошибка
 
@joingog, вот же функция сравнивающая текущую точку с забитой в конфиге
Код:
function isEnchanted(id: integer; enchantLevel: integer): boolean;
begin
	Result := true;
	if (Assigned(getItemById(id))) then
		Result := getItemById(id).EnchantLevel = enchantLevel;
end;
 
Сарказмик, дорогой:) Можешь под ИЛ его переделать?:) И объяснить как его настроить под свое расположение шмота и т.д.?:)
 
@vipkreisis, точи кликером, а адреналином проверяй уровень заточки и если заточка достигнута, выкидывай скриптом чара в релог чтобы не переточиться.
На пвп серверах ИЛа точки делают стопковыми, проблем с кликером возникнуть не должно. А я сам давно уже скрипты не пишу.
Код:
  if getItemById(id).EnchantLevel>=16 then engine.restart;
 
На ил вообще изи сделать...
на координаты оружия в инв, а куда его якобы тащить сделать 1 точку "да" и все. Время поставить по 10 мс везде.

а, и нужно в таргет брать кого-то.
 
SARCAZM написал(а):
@vipkreisis, точи кликером, а адреналином проверяй уровень заточки и если заточка достигнута, выкидывай скриптом чара в релог чтобы не переточиться.
На пвп серверах ИЛа точки делают стопковыми, проблем с кликером возникнуть не должно. А я сам давно уже скрипты не пишу.

if getItemById(id).EnchantLevel>=16 then engine.restart;
undeclared identifier "getItemById" :( :( Как исправить?
 
@IvaLeoN, функция описана в скрипте.
Если пишешь свой, вставь
Код:
function getItemById(id: integer): TL2Item;
var
	tmpItem: TL2Item;
	i: integer;
begin
	Result := nil;
	if Inventory.User.ByID(id, tmpItem) then
		Result := tmpItem;
end;
 
SARCAZM написал(а):
@IvaLeoN, функция описана в скрипте.
Если пишешь свой, вставь

function getItemById(id: integer): TL2Item;
var
tmpItem: TL2Item;
i: integer;
begin
Result := nil;
if Inventory.User.ByID(id, tmpItem) then
Result := tmpItem;
end;
Да я хочу найти скрипт на проверку заточки. (Точить кликером, проверять ботом) Все никак разобраться не могу..
 
Какой смысл точить кликером и проверять ботом? Если можно точить и проверять ботом? К тому же ты не сможешь связать две программы. Ведь бот не для кликера.
 
NeonEye написал(а):
Какой смысл точить кликером и проверять ботом? Если можно точить и проверять ботом? К тому же ты не сможешь связать две программы. Ведь бот не для кликера.
Бот будет просто чекать заточку и при достижении необходимой сразу закрывать клиент.
Если есть готовый скрипт под ил, то поделись)
 
IvaLeoN написал(а):
Бот будет просто чекать заточку и при достижении необходимой сразу закрывать клиент.
Если есть готовый скрипт под ил, то поделись)
как вы любите все усложнять :pandaredlol: :Kappa:
 
S(o)NG написал(а):
как вы любите все усложнять :pandaredlol: :Kappa:
Так не вижу я простого выхода) Этот скрипт в теме я запустил, но он явно не под ИЛ. Да и координаты сложновато выставить под него..
Есть более простое решение?
 
IvaLeoN написал(а):
Так не вижу я простого выхода) Этот скрипт в теме я запустил, но он явно не под ИЛ. Да и координаты сложновато выставить под него..
Есть более простое решение?
Под ИЛ ни чего сложно нету подогнать этот скрипт, если интересно, в личку. Помогу.
 
увидел сборники скриптов от Автор iR_. я чуть ли не прыгал от радсти! потому как среди них был скрипт на вставку ЛС..... долго пытался вкурить что да как))) в итоге где то прочел, что данный скрипт сделан под хроники Хай Фай и выше.... но ни как ни под ИЛ... моей печали не было границ.
Огромная просьба нашим ребятам форумным, рукастым и головастым! ) немного по шаманить над скриптами, и сделать их под ИЛ хроники!
А именно Скрипт на вставку ЛС, и авто точку без использования дополнительных кликеров.
Стуканите пожалуйста в личку! в долгу не останусь. :zalubov:
 
мой простой скрипт на заточку, 6577 - id bews, 6608 - арка акум, конец заточки по достижению заданного уровня точки либо если зажать и держать шифт, кому надо тот разберется короче.

вопрос: можно ли сделать выбор итема в окне автоматически, а не кликом, и можно ли запрограммировать нажатие кнопки? в этом окне:
Ac4h9.jpg
Код:
function SetCursorPos(x, y : integer): boolean; stdcall; external 'user32.dll';
function mouse_event(dwFlags, dx, dy, dwData: byte; dwExtraInfo: integer): void; stdcall; external 'user32.dll';
function GetAsyncKeyState(vKey: integer): integer; stdcall; external 'user32.dll';

var
  Ench: cardinal;
  p2,p1,p: pointer;    
  action: TL2Action;    
  inv: TInventory;
  e, endEnch: Integer;

procedure mouseClick(_delay : integer = 100);
begin
mouse_event($2, 0, 0, 0, 0);
delay(_delay);
mouse_event($4, 0, 0, 0, 0);
end;

function CheckItemEnchantLevel(const itemID: Integer; const quest: Boolean = False) : Integer;
var tempItem: TL2Item;
begin
   if quest then Inventory.Quest.ByID(itemID, tempItem)
   else Inventory.User.ByID(itemID, tempItem);
   Result := tempItem.EnchantLevel;
end;

function CheckItemCount(const itemID: Integer; const quest: Boolean = False) : Integer;
var tempItem: TL2Item;
begin
   if quest then Inventory.Quest.ByID(itemID, tempItem)
   else Inventory.User.ByID(itemID, tempItem);
   Result := tempItem.Count;
end;

begin

Delay(5000);

endEnch := 15;

while engine.status = lsOnline do
  begin           
  Engine.UseItem(6577);  
  Delay(200);
  SetCursorPos(1000,400); 
  mouseClick();         
  Delay(200); 
  SetCursorPos(940,580);  
  Delay(200);
  mouseClick();
  Delay(200);
  e := CheckItemEnchantLevel(6608);    
  
  if (e = endEnch) then
    break;
  if (CheckItemCount(6577)=1) then
    break;
  if (GetAsyncKeyState(160)<>0) then
    break;
    
  end;

end.
 
Насчет выбора итема в окне - приъходит только мысль положить в вх все шмотки, кроме тех что будешь точить.и скриптом уже тыкать на координаты первого итема в окне заточки. потом на кнопку Заточить.
 
SARCAZM написал(а):
Насчет выбора итема в окне - приъходит только мысль положить в вх все шмотки, кроме тех что будешь точить.и скриптом уже тыкать на координаты первого итема в окне заточки. потом на кнопку Заточить.
я о том, чтобы выбирать итем без движений мыши вообще, в фоне. типа selectWindowItem(1). должна же быть такая возможность. другое дело что разрабы api адреналина её (вохможно) не сделали. ну и нажать кнопку "Да" тоже не ясно как, т.к это не диалог.
если бы эти функции были реализованы, можно было бы сделать нормальные скрипты на заточку без извращений с движениями мыши.
 
При запуске скрипта:

(2): File "SettingsModule.PCU" not found

Подскажите как исправить?
 
Назад
Сверху