Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Определение ID нпц по нику
Определение ID нпц по нику
Всем привет.
Я тут подумываю написать нормальный скрипт для автозакупки по РБ, но хочу сделать максимально четко и по уму - обойтись без массива с айдишниками вендоров. Уверен, что сделать это можно, подскажите какие использовать функции, и если можно киньте пример где нечто подобное было уже реализовано- дальше я сам разберусь.
Суть такая - вбиваешь в массив все названия вендоров которые нужны для текущей закупки (допустим скупаем реги- тогда массив будет по типу ['The Mage', 'The Alchemiest', 'The Scribe'].
У нас 1 руна на магазин. Чар прилетает, и в области экрана либо определенного количество тайлов вокруг себя сканирует все живое, находит ники, в которых содержится один из элементов нашего массива, определяет его координаты, подходит и закупает со списка покупок.
Собственно говоря, жирным я выделил то что не знаю как сделать.
Спасибо за помощь!
Я тут подумываю написать нормальный скрипт для автозакупки по РБ, но хочу сделать максимально четко и по уму - обойтись без массива с айдишниками вендоров. Уверен, что сделать это можно, подскажите какие использовать функции, и если можно киньте пример где нечто подобное было уже реализовано- дальше я сам разберусь.
Суть такая - вбиваешь в массив все названия вендоров которые нужны для текущей закупки (допустим скупаем реги- тогда массив будет по типу ['The Mage', 'The Alchemiest', 'The Scribe'].
У нас 1 руна на магазин. Чар прилетает, и в области экрана либо определенного количество тайлов вокруг себя сканирует все живое, находит ники, в которых содержится один из элементов нашего массива, определяет его координаты, подходит и закупает со списка покупок.
Собственно говоря, жирным я выделил то что не знаю как сделать.
Спасибо за помощь!
Re: Определение ID нпц по нику
Blade wrote:Всем привет.
Я тут подумываю написать нормальный скрипт для автозакупки по РБ, но хочу сделать максимально четко и по уму - обойтись без массива с айдишниками вендоров. Уверен, что сделать это можно, подскажите какие использовать функции, и если можно киньте пример где нечто подобное было уже реализовано- дальше я сам разберусь.
Суть такая - вбиваешь в массив все названия вендоров которые нужны для текущей закупки (допустим скупаем реги- тогда массив будет по типу ['The Mage', 'The Alchemiest', 'The Scribe'].
У нас 1 руна на магазин. Чар прилетает, и в области экрана либо определенного количество тайлов вокруг себя сканирует все живое, находит ники, в которых содержится один из элементов нашего массива, определяет его координаты, подходит и закупает со списка покупок.
Собственно говоря, жирным я выделил то что не знаю как сделать.
Спасибо за помощь!
Code: Select all
var VendorList : Array of Cardinal;
function GetVendors(ofType : String; AllThatFound : Array of Cardinal) : Integer;
var
i : Integer;
begin
SetLength(VendorList, 0);
for i := Low(AllThatFound) to High(AllThatFound) do
if(Pos(ofType, GetToolTip(AllThatFound[i]) > 0) then begin
SetLength(VendorList, Length(VendorList) + 1);
VendorList[High(VendorList)] := AllThatFound[i];
end;
Result := Length(VendorList);
end;
Re: Определение ID нпц по нику
Не ранка, Пол. Идею примерно понял, только надо будет сделать наверно чтобы функция возвращала сам массив, а не его длину, и в идеале еще бы как-то получать результирующий массив со всех названий вендоров для скупки, по которому уже делать обход-скупку. Я не помню, в стелсе (паскале) как-то можно складывать массивы, как в пхп например?drabadan wrote: Примерно так, если ето ранка. Если не ранка то там чуток по другому надо делать. Писал "на коленке" прям здесь, не компилил.
Code: Select all
$a = array('1');
$b = array('2');
$c = array();
$c = array_merge($a, $b) // c ['1','2']
Last edited by Blade on 17.05.2016 23:30, edited 1 time in total.
Re: Определение ID нпц по нику
я не правильно прочитал... Увиделось, что жирным выделено то, что вы как раз знаете как реализовать. Ну проверять же вендоров, а они как минимум 2х типов. Ищите в ренже 20 $190 $191 заполняйте массивчик. Вообще по хорошему, если идти в ногу со временем и использовать стелс 7 - то лучше реализовывать через класс со своими функциями, если просто паскальскрипт то я базовый функционал заполнения написал вам выше.Blade wrote:Не ранка, Пол. Идею примерно понял, только надо будет сделать наверно чтобы функция возвращала сам массив, а не его длину. Главный вопрос - как при каждом рекалле для этой функции наполнять массив AllThatFound?drabadan wrote: Примерно так, если ето ранка. Если не ранка то там чуток по другому надо делать. Писал "на коленке" прям здесь, не компилил.
Давайте будем последовательно двигаться, попробуйте нам сюда написать что вам вернет в сисжорнал следующий скрипт.
Code: Select all
program GetTTip;
begin
AddToSystemJournal(GetToolTip(Self));
end.
//лучше, конечно, чтоб вы вместо селф использовали айдишник любого вендора.
program GetTTip;
begin
AddToSystemJournal(GetToolTip($0000011) +' ' + GetName($0000001));
end.
Re: Определение ID нпц по нику
Что такое 190 и 191, тип вендоров мужчины и женщины человека? А как забить этот массив, если FindType возвращает только одно значение?
Ну вернет по всей видимости ваша функция Name The Scribe (Human) или типа того.
В паскальные ООП дебри макаться не хочу, цель написать простой скриптик, единственную часть которого я не понимаю - как раз где и как брать на каждый рекалл динамический массив из айдишников нужных мне вендоров
Ну вернет по всей видимости ваша функция Name The Scribe (Human) или типа того.
В паскальные ООП дебри макаться не хочу, цель написать простой скриптик, единственную часть которого я не понимаю - как раз где и как брать на каждый рекалл динамический массив из айдишников нужных мне вендоров
Re: Определение ID нпц по нику
Рабочий трешачек.
Code: Select all
program getVendors;
var
VendorTypes : Array of String;
VendorFound : Array of Cardinal;
procedure Initialize();
begin
VendorTypes := ['Scribe', 'Mage', 'Putin', 'Ninja'];
FindDistance := 20;
MoveOpenDoor := True;
end;
function GetFoundItems(OfType : Word): Integer;
var
List: TStringList;
i, k: Integer;
tmpBitch : Cardinal;
begin
FindType(OfType, Ground);
List := TStringList.Create;
if GetFindedList(List) = False then Result := 0
else begin
for i := 0 to List.Count-1 do begin
tmpBitch := StrToInt('$'+List.Strings[i]);
for k := Low(VendorTypes) to High(VendorTypes) do
if(Pos(VendorTypes[k], GetToolTip(tmpBitch)) > 0) then begin
SetLength(VendorFound, Length(VendorFound) + 1);
VendorFound[High(VendorFound)] := tmpBitch;
end;
end;
Result := 0;
end;
List.Free;
end;
procedure ShopActions;
var i : Ineteger;
begin
GetFoundItems($0190);
GetFoundItems($0191);
AddTOSystemJournal(IntTOStr(Length(VendorFound)));
for i := Low(VendorFound) to High(VendorFound) do begin
newMoveXY(GetX(VendorFound[i]), GetY(VendorFound[i]), true, 1, true);
{Купи у етого вендора чо там надо}
end;
Length(VendorFound, 0);
end;
begin
Initialize();
ShopActions();
end.
Last edited by drabadan on 18.05.2016 9:08, edited 1 time in total.
Re: Определение ID нпц по нику
Спасибо еще раз огромное
Все работает
Все работает
Re: Определение ID нпц по нику
Обозначу проблему - опять же, может кто-то сталкивался и знает решение.
Скрипт готов, все отлично, но проблема в самом шарде
Короче говоря, бывает что вендоров заглючивает, и покупаемый товар у них не появляется. Притом когда им повторно сказать buy, это не помогает. Нужно проскролить меню их покупок до конца, и уже потом еще раз сказать buy.
Какие могут быть решения с точки зрения стелса? Не знаю какой именно сигнал дает серверу этот проскролл до конца на клиенте, но может его можно вызвать какими-то манипуляциями?
Пробовал элементарно перед покупкой продавать вендору золото - чтобы он сказал "это не продается" и тогда может он расчехлится и обновит свои закрома - не помогло.
Скрипт готов, все отлично, но проблема в самом шарде
Короче говоря, бывает что вендоров заглючивает, и покупаемый товар у них не появляется. Притом когда им повторно сказать buy, это не помогает. Нужно проскролить меню их покупок до конца, и уже потом еще раз сказать buy.
Какие могут быть решения с точки зрения стелса? Не знаю какой именно сигнал дает серверу этот проскролл до конца на клиенте, но может его можно вызвать какими-то манипуляциями?
Пробовал элементарно перед покупкой продавать вендору золото - чтобы он сказал "это не продается" и тогда может он расчехлится и обновит свои закрома - не помогло.
Re: Определение ID нпц по нику
аж никакого, сервер присылает список товаров, а клиент уже под них создает гамп который присылает тебе. То есть "проскралливание" происходит на стороне клиента.Blade wrote:Обозначу проблему - опять же, может кто-то сталкивался и знает решение.
Скрипт готов, все отлично, но проблема в самом шарде
Короче говоря, бывает что вендоров заглючивает, и покупаемый товар у них не появляется. Притом когда им повторно сказать buy, это не помогает. Нужно проскролить меню их покупок до конца, и уже потом еще раз сказать buy.
Какие могут быть решения с точки зрения стелса? Не знаю какой именно сигнал дает серверу этот проскролл до конца на клиенте, но может его можно вызвать какими-то манипуляциями?
Пробовал элементарно перед покупкой продавать вендору золото - чтобы он сказал "это не продается" и тогда может он расчехлится и обновит свои закрома - не помогло.
Re: Определение ID нпц по нику
Однако товар по факту не покупается, потому что его в списке нет, и через секунду если проскролить и снова нажать buy- уже появляется и покупается. Мистика?drabadan wrote:аж никакого, сервер присылает список товаров, а клиент уже под них создает гамп который присылает тебе. То есть "проскралливание" происходит на стороне клиента.Blade wrote:Обозначу проблему - опять же, может кто-то сталкивался и знает решение.
Скрипт готов, все отлично, но проблема в самом шарде
Короче говоря, бывает что вендоров заглючивает, и покупаемый товар у них не появляется. Притом когда им повторно сказать buy, это не помогает. Нужно проскролить меню их покупок до конца, и уже потом еще раз сказать buy.
Какие могут быть решения с точки зрения стелса? Не знаю какой именно сигнал дает серверу этот проскролл до конца на клиенте, но может его можно вызвать какими-то манипуляциями?
Пробовал элементарно перед покупкой продавать вендору золото - чтобы он сказал "это не продается" и тогда может он расчехлится и обновит свои закрома - не помогло.
Что с этим можно сделать?