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

о пати (команды для пати)

Рег
15 Мар 2016
Сообщения
19
Реакции
0
необходима помощь)
ситуация такая. есть 2 окна бота. нужно сделать проверки по пати.
допустим чтобы один бот проверил где находится второй. user.inrange пашет на себя. как сделать по второму боту в пати (можно по плу, если проще будет)

и еще. на сервере невозможно с помощью скрипта написать сообщение. сразу выкидывает. какими еще способами можно писать сообщение.
или вариант тыкнуть макрос. через скрипты реально?
 
Автоматическое сообщение.
Данная тема перемещена из "Adrenalin" в "Помощь в настройке/скриптах".
По одной из причин:
1) Тема создана не в том разделе
2) Нарушены правила размещения тем в форумах.
3) Тема перемещена по усмотрению Администрации.
4) Тема перемещена по Вашей просьбе.
 
ошибся разделом) после написания уже заметил.
вот еще 3я просьба.
как пользоваться командой GetControl. просто пару примеров киньте и разберусь.
как понял примерно тоже самое что engine на чара, у которого пишешь скрипт, а тут на другого бота с определенным ником
(допустим проверка бафа\находится ли он в определенном месте. про место особенно интересует что то типо inrange на 2го бота)
 
@DragonShard, вот пример использования GetControl http://rawr.su/topic/124-okna-teleportiruyutsya-za-vami/
Из мануала:
Jtr4IP3.jpg

По поводу нажатия на макрос:
Например

Engine.UseKey('f5');
Не знаю механику работы UseKey, но стоит попробовать разбить строку для посылки в чат на символы и каждый символ отправлять через UseKey
 
if (user.distto('Char name') < 600) then begin
if (user.distto(Party.Chars.Items(i)) < 600) then begin
Пробуй =) Дерзай может помог =)
Запелить цикл на проверку всей пати возле себя



SARCAZM написал(а):
DragonShard, вот пример использования GetControl http://rawr.su/topic...yutsya-za-vami/Из мануала: По поводу нажатия на макрос: Например Engine.UseKey('f5'); Не знаю механику работы UseKey, но стоит попробовать разбить строку для посылки в чат на символы и каждый символ отправлять через UseKey
Брат ты решил мою проблему СПС огромное =)
 
SARCAZM написал(а):
Тыкнуть макрос на панели - например Engine.UseKey('f5'); Не знаю механику работы UseKey, но стоит попробовать разбить строку для посылки в чат на символы и каждый символ отправлять каждый через UseKey
хм, приду домой и опробую несколько вариантов с этой командой) уже что то)

а на счет GetControl из мануала и взял инфу о ней и что делает примерно. только ПРАВИЛЬНО пользоваться пока не понял как ей. пробовал писать скрипт с ней, иногда выдавало ошибку что не правильно, иногда нет (но и не работало что надо)
вот и хочу мелкую процедурку с этой командой как пример. дальше уже разберусь. то что находил с этой командой в инете - там слишком уж мудрено сделано. попроще бы пока =)
 
@magogs, distto вроде как не может принимать строку в качестве параметра. Но может принимать Obj, поэтому


if (user.distto(GetControl('Имя второго окна с ботом').GetUser) < 600) then begin
// CODE
end;

больше похоже на правду. Не тестил
 
magogs написал(а):
Брат ты решил мою проблему СПС огромное =)
тоже что ли сервер где выкидывает при написании в чат? (смартгвард) xDD
если уже написал процедуру и пашет нажатие макроса - кинь сюда, тоже вечером попробую.


if (user.distto('Char name') < 600) then begin
у меня так не сработало. тк как я разобрался то user.distto пашет конкретно на твоего чара. а приписка ника не решила проблему. (ну или я накосячил)

if (user.distto(GetControl('Имя второго окна с ботом').User) < 600) then begin

вот это уже больше на правду похоже) опробуем. (user.distto только казалось это берет только со своего чара. надеюсь будет считываться нормльно то что дальше идет GetControl)

чую еще нужно будет лучше разобраться с GetControl и побольше примеров просмотреть.. эта команда многое может решить =)
 
DragonShard написал(а):
если уже написал процедуру и пашет нажатие макроса - кинь сюда, тоже вечером попробую.
Макросы юзаются нажатием на кнопку, проверял на днях

Engine.UseKey('f5');

По поводу узнать расстояние до второго бота, пробуй

if (user.distto(GetControl('Имя второго окна с ботом').GetUser) < 600) then begin
// CODE
end;

Может, я неправильно понимаю работу GetUser, но вроде все ок
 
SARCAZM написал(а):
Макросы юзаются нажатием на кнопку, проверял на днях Engine.UseKey('f5');
@SARCAZM, спасибо за ответы) вечером все попробую, но чую вопрос не будет решен))) обрадовал нажатием макросов)
крч поеду ка я домой ) уже не терпится испытать и потестить все это) позже закину скрипт, на который надо проверки по пати. мб понятнее будет что нужно.
 
Ну я так понял что мы с автором варимся в одном котле =)
Интерлюд фиришки =)

if (user.distto(Party.Chars.Items(i)) < 600) then begin
Я таким скриптом разбафывал весь клан нублесами =)

for i := 0 to CharList.Count - 1 do begin
if (user.distto(charlist.items(i)) < 600) then begin
Delay(1000);
print(charlist.items(i).name);
Engine.CancelTarget;
Engine.SetTarget(CharList.Items(i));
Engine.UseSkill(1323);
end;
end;

Ща попробую найти тебе примеры гет контрооль

Вот нашел Причем что чарм и выкладывал =)
Код:
uses
Classes, SysUtils;

var
myChars: TStringList;

procedure allDlgOpen;
var
remoteControl: TL2Control;
i: integer;
begin
for i:=0 to myChars.Count-1 do
begin
remoteControl := GetControl(myChars[i]);
if Assigned(remoteControl) then
begin
remoteControl.DlgOpen; //открыли диалог окном
end;
end;

Engine.DlgOpen; // открыли диалог мейном
end;

procedure allDlgSel(index: integer);
var
remoteControl: TL2Control;
i: integer;
begin
for i:=0 to myChars.Count-1 do
begin
remoteControl := GetControl(myChars[i]);
if Assigned(remoteControl) then
begin
remoteControl.DlgSel(index); //открыли диалог окном
end;
end;
Engine.DlgSel(index); // выбрали строку мейном
end;

begin
myChars := TStringList.Create;
myChars.add('Char1');
myChars.add('Char2');

allDlgOpen;
allDlgSel(1);
allDlgSel(2);
end.
 
magogs написал(а):
Ну я так понял что мы с автором варимся в одном котле =) Интерлюд фиришки =)

if (user.distto(Party.Chars.Items(i)) < 600) then begin
Я таким скриптом разбафывал весь клан нублесами =)
чую у тебя фп и нужно тыкнуть макрос для блока опыта? xDD (написать .expoff) (если выяснится что там же и еще и свой чел\или соклан, го друг другу в лк скриптики писать xDD)

if (user.distto(charlist.items(i)) < 600)
в чем суть то. она смотрит в радиусе от тебя. просто всех подряд. а хотелось бы чтоб конкретного. и желательно даже чтоб тот бот был в определенной точке. (второй бот может быть даже в другом городе) ники вбивал вместо charlist.items(i) - не помогало. пробовал наоборот getcontrol.user.distto какой то вариант не выдал ошибку, но и не работало (много вариантов перепробовал. уже и не помню как реагировало на все)
 
DragonShard написал(а):
в чем суть то. она смотрит в радиусе от тебя. просто всех подряд. а хотелось бы чтоб конкретного. и желательно даже чтоб тот бот был в определенной точке. (второй бот может быть даже в другом городе) ники вбивал вместо charlist.items(i) - не помогало. пробовал наоборот getcontrol.user.distto какой то вариант не выдал ошибку, но и не работало (много вариантов перепробовал. уже и не помню как реагировало на все)
Смотри меняем charlist.items(i) на Party.Chars.Items(i) и мы уже проверяем рядом собой людей с пати.


if user.InRange(116589, 76268, -2720,15000,15000)
Давай попробуем это с гет контролем

for i:=0 to myChars.Count-1 do
begin
remoteControl := GetControl(myChars);
if Assigned(remoteControl) then
begin
if remoteControl.user.InRange(116589, 76268, -2720,15000,15000) then
begin
//Tvoi KOD
end;
end;
end;
DragonShard написал(а):
чую у тебя фп и нужно тыкнуть макрос для блока опыта? xDD (написать .expoff) (если выяснится что там же и еще и свой чел\или соклан, го друг другу в лк скриптики писать xDD)
Я ливнул с ФП убогий сервер если честно , я сейчас на ГВ.
 
на счет GetControl
есть идеи как можно проверить этой командой наличие квестовых итемов у конкретного бота (ник) в пати (не всю патьку смотреть)?
 
SARCAZM написал(а):
Макросы юзаются нажатием на кнопку, проверял на днях Engine.UseKey('f5');
не пашет ( самое основное. =\ если решить проблему с написанием в чат - то и GetControl даже можно не использовать ))


if (user.distto(GetControl('Имя второго окна с ботом').GetUser) < 600) then begin
// CODE
end;

Код:
if GetControl('name').GetInventory.quest.ByID(ID, obj)...
на основе этих двух примеров правильно так писать?
Код:
if GetControl('name').GetUser.inrange(123123, 123123, 123123, 111, 111)
 
новую тему плодить не стал, ради легкого вопроса (заодно и эту апну)
как сделать проверку по классу?
чтоб было

если ты некр, тогда загрузить конфг "некр"
если спойл, тогда конфиг "спойл"

что то типо того)
 
DragonShard написал(а):
не пашет ( самое основное. =\ если решить проблему с написанием в чат - то и GetControl даже можно не использовать ))
попробуй engine.entertext, работало раньше на СГ
 
@DragonShard,
Опережая вопрос про загрузку зон
Код:
if user.classid=42 then begin
Engine.LoadConfig ('SE');
Engine.LoadZone('1.zmap');
Engine.FaceControl(0,True);
end;
 
Назад
Сверху