Вход

Просмотр полной версии : Скрипты для... L2Shadow


CptMcMillan
09.10.2014, 20:54
Всем привет, прошу прощения у Алекса что пишу тут соовсем не по теме, но так как скриптовые языки у экста и шадова абсолютно идентичны думаю тут найдется пара человек которые смогут подсказать. Так вот, как в шадове проверить МР/НР/СР/ персонажа или количество итемов в инвентаре??? Я просто не втыкаю, всмысле вообще никак, как юзать эти функции: Количество итемов (http://l2bot.net/smanual/output/frames.html?frmname=topic&frmfile=TL2Item_Count.html), Количество СР (http://l2bot.net/smanual/output/frames.html?frmname=topic&frmfile=TL2Char_CP.html), Количество НР (http://l2bot.net/smanual/output/frames.html?frmname=topic&frmfile=TL2Live_HP.html)???
Вот тут (http://reference.l2ext.com/TEngineObject_ItemCount@integer.html), например, все прозрачно и ясно.
Пробовал в шадове делать так:
begin
if(Engine.Count(1464)<3000) then // Если Ц сосок меньше 3к
begin
Engine.MoveTo(146339, 25354, -2039);
end;
end.
И так:
begin
if(Count:1464)<3000) then
begin
Engine.MoveTo(146339, 25354, -2039);
end;
end.
И так:
begin
if(Engine(Count:1464)<3000) then
begin
Engine.MoveTo(146339, 25354, -2039);
end;
end.
но везде выдает ошибку Undeclared identifier Count. Подскажите пожалуйста как надо?

Владимир Курамшин
10.10.2014, 21:05
Не разбирался ни в чем этом, но мне кажется, что он жалуется на необъявленную переменную Count. Возможно, ее нужно где-то объявить, типа var Count: integer;
или не знаю... Вон у Джунглера был C# с подключаемыми DLLками... Красота

Antharas
11.10.2014, 16:43
Разберитесь в Паскале, с самого начало. Тут даже 1 словом не сказать в чем вы не правы.
А функция про которую вы говорите я написал вот так:
function ItemCount(ID : cardinal) : int64;
var
NovObj : TL2Item;
begin
Result := 0;
if Inventory.User.ByID(ID, NovObj) then
Result := NovObj.Count
Else if Inventory.Quest.ByID(ID, NovObj) then
Result := NovObj.Count;
end;

Добавлено через 1 минуту
И использование ее под ваши задачи:
begin
if (ItemCount(1464) < 3000) then // Если Ц сосок меньше 3к
begin
Engine.MoveTo(146339, 25354, -2039);
end;
end.

CptMcMillan
13.10.2014, 00:41
Спасибо за ответ, я кое-что понял, хотя Вы, очевидно, не совсем поняли меня. Функция такая уже есть в скриптовом движке бота, просто я хз как её правильно применять. Хотя, после Вашего ответа, кое-что прояснилось. Видимо нам сначала необходимо получить экземпляр нужного итема, а затем к нему применить сей функцию. Только тут возникает вопрос: доступ к инвентарю происходит через класс TInventory, в скриптах через имя Inventory. Экземпляр нужного объекта можно получить при помощи функции ByID (http://l2bot.net/smanual/output/frames.html?frmname=topic&frmfile=TL2List_ByID@Cardinal@.html), которая входит в класс TItemList, а функция же Count (http://l2bot.net/smanual/output/frames.html?frmname=topic&frmfile=TL2Item_Count.html), которая меня интересует, входит в класс TL2Item. И, вроде как, надпись Inventory.User.ByID не имеет смысла, ведь в классе инвентаря нет метода ByID? Или я чего-то не понимаю?
Да, я в паскале не особо силен, но скрипты для экста, например, писал без особых проблем, все было понятно. А тут... вообще не понимаю что куда и зачем.

Antharas
15.10.2014, 14:50
все правильно поняли, но:
" доступ к инвентарю происходит через класс TInventory"
" Экземпляр нужного объекта можно получить при помощи функции ByID, которая входит в класс TItemList"

Пропущена явно связь Tinventory и TItemList

у TInventory есть поля User, Quest, Pet. Это списки к разным инвентарям, что подсказывает их название. Вот как раз они и есть тип TItemList.

Добавлено через 3 минуты
Вон у Джунглера был C# с подключаемыми DLLками... Красота

Что за джунглер? Это для АА бот только?

Владимир Курамшин
15.10.2014, 16:52
Джунглер радар, а не бот даже, но апи было хорошее, да и в MS Visual Studio писать с intellisense, их компилятором, приятно. Хотя и в Notepad ++ тоже терпимо

Добавлено через 3 минуты
Как одеть сережки или кольца? Если useitem - оно оденет и снимет. Проверять, одето ли?

Antharas
17.10.2014, 00:30
Джунглер радар, а не бот даже, но апи было хорошее, да и в MS Visual Studio писать с intellisense, их компилятором, приятно. Хотя и в Notepad ++ тоже терпимо


То есть разработчик радара выдавал библиотеку классов? И ты уже сам компилировал что хочешь?


Добавлено через 3 минуты
Как одеть сережки или кольца? Если useitem - оно оденет и снимет. Проверять, одето ли?

Это вопрос по шадоу?
Перебрать все итемы, и одевать не надетое. Хоть одинаковый хоть нет.

Владимир Курамшин
17.10.2014, 11:07
Да, была библиотека, которую подключали (references) к скрипту. Сам скрипт - dll, выбирался из списка.
Хотя даже платные скрипты легко просматриваются из байт-кода...