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

Паравозы. Атакуют ли нас мобы?

SARCAZM

Это что за покемон?
Команда форума
Рег
5 Июн 2015
Сообщения
1,446
Реакции
1
Trovo
SARCAZM
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;
Уже не работает.
Автор скрипта: Ivanius
 
Хотел вставить Данный скрипт в скрипт на кач , но не понимаю как его связать с решением , например, одеть пику?
 
Если есть паравоз возле нас, юзаем (одеваем) итем

Engine.UseItem(ИД пухи);
Желательно сразу проверять, одета ли пуха, чтобы случайно ее не снять:
Код:
if inventory.user.byid(10771, item) and not (Item.Equipped) then begin // Меняем 10771 на id своей пухи
    Delay(500);
    Engine.UseItem(10771); // Меняем 10771 на id своей пухи
    Delay(800);
  end;
 
SARCAZM написал(а):
Если есть паравоз возле нас, юзаем (одеваем) итем

Engine.UseItem(ИД пухи);
Желательно сразу проверять, одета ли пуха, чтобы случайно ее не снять:

if inventory.user.byid(10771, item) and not (Item.Equipped) then begin // Меняем 10771 на id своей пухи
Delay(500);
Engine.UseItem(10771); // Меняем 10771 на id своей пухи
Delay(800);
end;
Это то понятно , как связать проверку и одевание, через какую переменную так сказать
что то вроде этого
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
Engine.UseItem(ИД пухи);
exit;
end;
end;
end;
end;
end;
Или это и есть правильно?
 
Это не читабельно.. оформляй, пожалуйста, код скрипта в специальный тег 3F1b89CB.jpg
По теме - в первом посте приведено 2 функции -
MobsAttacking, говорящий о том, атакую ли нас мобы или нет и вторая функция -
inDanger, сообщающая нам о том, что рядом паровоз.

Следовательно, стоит, наверное, проверять так:

if (inDanger = true) then begin
if inventory.user.byid(10771, item) and not (Item.Equipped) then begin // Меняем 10771 на id своей пухи
Delay(500);
Engine.UseItem(10771); // Меняем 10771 на id своей пухи
Delay(800);
end;
end;

Думаю, так будет верней. Ожидаю дополнительных вопросов типа "Сарказм, сделай уже готовый скрипт, чтобы просто вставить его в адреналин и все было за*бись"
 
SARCAZM написал(а):
Это не читабельно.. оформляй, пожалуйста, код скрипта в специальный тег
attachicon.gif
3F1b89CB.jpg
По теме - в первом посте приведено 2 функции -
MobsAttacking, говорящий о том, атакую ли нас мобы или нет и вторая функция -
inDanger, сообщающая нам о том, что рядом паровоз.

Следовательно, стоит, наверное, проверять так:

if (inDanger = true) then begin
if inventory.user.byid(10771, item) and not (Item.Equipped) then begin // Меняем 10771 на id своей пухи
Delay(500);
Engine.UseItem(10771); // Меняем 10771 на id своей пухи
Delay(800);
end;
end;

Думаю, так будет верней. Ожидаю дополнительных вопросов типа "Сарказм, сделай уже готовый скрипт, чтобы просто вставить его в адреналин и все было за*бись"

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
Engine.UseItem(ИД пухи);
exit;
end;
end;
end;
end;
end;
было бы слишком легко взять и просто попросить готовый скрипт ,мне интересней разобраться и потом делать самому
 
@decibel, За это, несомненно, плюс ;) как я писал выше, в первом посте лишь две функции для проверки на атаку мобов и количество мобов рядом с нами. в сообщении выше я привел пример как отрегаировать на то, что возле нас 3+ моба и одеть пику. Хотя, желательно проверить еще что они сагрены на нас
 
Тоесть достаточно функции inDanger и MobsAttacking, Для того что бы проверить веду я за собой паравоз или нет?


Всё понял

Ещё раз удоставерюсь первая функция это продвинутая версия второй ? а как можно связать первую с одеванием пики?
 
SARCAZM написал(а):
@decibel, За это, несомненно, плюс ;) как я писал выше, в первом посте лишь две функции для проверки на атаку мобов и количество мобов рядом с нами. в сообщении выше я привел пример как отрегаировать на то, что возле нас 3+ моба и одеть пику. Хотя, желательно проверить еще что они сагрены на нас
Хм я думаю , одевание изначальной пушки сделать через

if (inDanger = False) then begin
Engine.UseItem(9447)

или лучше просто через задержку в 15 ,допустим, секунд
 
@decibel, я бы сделал так:
блин, уже забыл делфи, может я неверно обращался к функциям

if ( inDanger() and MobsAttacking() ) then begin
if inventory.user.byid(10771, item) and not (Item.Equipped) then begin // Меняем 10771 на id своей пухи
Delay(500);
Engine.UseItem(10771); // Меняем 10771 на id своей пухи
Delay(800);
end;
end;
По-моему, все предельно просто.
 
SARCAZM написал(а):
@decibel, я бы сделал так:
блин, уже забыл делфи, может я неверно обращался к функциям

if ( inDanger() and MobsAttacking() ) then begin
if inventory.user.byid(10771, item) and not (Item.Equipped) then begin // Меняем 10771 на id своей пухи
Delay(500);
Engine.UseItem(10771); // Меняем 10771 на id своей пухи
Delay(800);
end;
end;
По-моему, все предельно просто.
Да просто , но скрипт может начать менять пушки слишком часто
 
@decibel, он проверяет, одета ли пуха

inventory.user.byid(10771, item) and not (Item.Equipped)

так что если рядом парик - то в руках сразу будет пика. ну а обратное переключение можно додумать
 
http://coderx.ru/asi/update/xbt/Adrenalin/ScriptHelp.pdf
Не нашёл там ни 1 упоминания и функциях INDANGER и MOBSATTACKING
Да и бот не понимает ни 1 из функций , я так пологаю нужно дополнить var

var Item:TL2Item ;

Или этого достаточно?
sg5n1O3UcnI.jpg
 
А ничего, что эти функции и их реализация описаны в первом посте? :facepalm:
 
@decibel, Ну перестань :DDD Со всеми бывает)
 
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 := 10;//кол-во мобов
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;
var Item:TL2Item;
Begin

while 1<>2 do
begin
Engine.ConfirmDialog(false);//ответ на запрос
if (inDanger = true) then begin
if inventory.user.byid(9447, item) and not (Item.Equipped) then begin // Меняем 10771 на id своей пухи
Delay(500);
Engine.UseItem(9447); // Меняем 10771 на id своей пухи
Delay(800);
end;
end;
if User.Dead then
begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(15000);
end;
delay(1000);
if user.InRange(119862, 76603, -2256,31700) then
begin // проверка на место в городе
Engine.BypassToServer('_bbshome', True) ;
delay(1000);
Engine.BypassToServer('_bbsbuffer', True) ;
delay(1000);
Engine.BypassToServer('_bbsbufferuse ккуеуке Player', True);
delay(3000);
Engine.BypassToServer('_bbsbufferheal HP Player', True) ;
delay(1000);
Engine.BypassToServer('_bbsbufferheal MP Player', True) ;
delay(1000);
Engine.BypassToServer('_bbsbufferheal CP Player', True) ;
delay(1000);
Engine.BypassToServer('_bbshome', True) ; // тп в дв
delay(1000);
Engine.BypassToServer('_cbbsteleportlist', True) ;
delay(1000);
Engine.BypassToServer('_bbspage:teleport/teleports-hf', True) ;
delay(1000);
Engine.BypassToServer('_cbbsteleport_8_1', True) ;
delay(1000);
Engine.BypassToServer('_bbshome', True) ;
Delay(12000);
end;
Delay(1000);
if user.InRange(73128, 118280, -3696, 777) then
begin // проверка на место в дв
Engine.MoveTo(73982, 117879, -3701);
Engine.MoveTo(75320, 117512, -3744);
Engine.MoveTo(77316, 117125, -3772);
Engine.MoveTo(79544, 115608, -3712);
Engine.MoveTo(79208, 113160, -3224);
engine.facecontrol(0, true); //включаем инт
delay(3000);
engine.facecontrol(0, false); //выключаем инт
Engine.MoveTo(79016, 112440, -3056);
Engine.MoveTo(79224, 111352, -2960);
Engine.MoveTo(79589, 110995, -2975);
Engine.MoveTo(80520, 110040, -3040);
Engine.MoveTo(82988, 110310, -3186);
engine.facecontrol(0, true); //включаем инт
end;
end;
end.

Вообщем слепил такой скрипт , всё работает без ошибок , но функции не распространяются на мобов бьющих маг скилом , тоесть под моих DVшных некромантов это не подходит , а агрятся в основном они , ладно , оставлю, вдруг дракосы налетят

Кстати походу даже так не работает , или я его неправильно в скрипт вставил
 
@decibel, Я думаю, можно переписать функцию

function MobsAttacking : integer; //Сколько мобов нас атакует?
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;
end;

и переписать проверку на атаку париком:

if ( inDanger() = true and MobsAttacking()>3 ) then begin
if inventory.user.byid(10771, item) and not (Item.Equipped) then begin // Меняем 10771 на id своей пухи
Delay(500);
Engine.UseItem(10771); // Меняем 10771 на id своей пухи
Delay(800);
end;
end;

, что будет проверять количество мобов рядом и количество сагренных мобов > 3. Думаю, можно удалить проверку inDanger(), но не знаю чем это обернется на практике. Попробуй, вручу медальку)
 
хм рукается на >3 , странно , тип на нём стоит integer , но ругается
Yk5YDRkwUAU.jpg


может сделать String?
 
Назад
Сверху