26

Re: Квест грибницы, начало...

Напиши как правильно будет тогда smile))

Отредактировано nostra4life (2013-05-08 12:05:30)

Женщины - инквизиторы мужского сердца...

27

Re: Квест грибницы, начало...

anahronik пишет:

Серьёзно...я там кучу всяких методов защиты от поддельных ссылок вшил, а вы продолжаете устаревшие вещи практиковать.


Очеь бы хотелось видеть кликалку по картинке/тексту в одну строку, чтобы ничего не надо было вытягивать, грубо говоря: увидел текст - нажал

Вы обладаете Благодатью Алхимика  до 05.04.16

28

Re: Квест грибницы, начало...

1 Всегда добавляйте переменную на часто повторяющуюся длинную строку обращения к DOM.

var doc = get_mainframe().document.all[0].innerHTML;

Это, во-первых, сокращает дальнейшик код и его удобнее читать. Во-вторых, обращение к doc будет нагружать систему в разы меньше при повторных запросах.

2 При необходимости кликнуть по ссылке/кнопке/картинке используйте ТОЛЬКО
external.ClickLink("Текст",id) - нажимает ссылку и возвращает true/false была ли найдена ссылка, или нет.
Естественно с контролем видимости нажимаемого элемента. Всё делает за вас smile
Текст ищется в определенном месте в соответствии с указанным id:
1 - переход по картинке(поиск именно функции перехода), не чувствителен к регистру;
Например переход с ЦП на страшилкину улицу.
2 - поиск по текстовой ссылке,чувствителен к регистру;
Например в диалоге ответы выбирать.
3 - по найденному в картинке тексту(outerHTML), не чувствителен к регистру;
Т.е. это не только альт, но и онклик, и src и вобще всё содержимое тэга img
4 - поиск по value среди input-элементов,чувствителен к регистру;
Есть input, есть у него value. Всё просто
0 или 5 или ещё чего - поиск последовательно по всем этим алгоритмам.
Пример: external.ClickLink("Возврат",4); нажмет на кнопку с надписью "Возврат"(например выход из инвентаря)


Это то, что меня начинает раздражать в последнее время smile
По поводу нуйти текст и нажать на него, то идеалом должно быть так:

var path = "empty";
var type = 2; // по умолчанию ищем текстовую строку
var doc = get_mainframe().document.all[0].innerHTML;
 
if(doc.indexOf("известный текст, однозначно обозначающий, что надо нажать на ссылку №1. НЕ текст самой ссылки.") > -1)
    path = "Текст на ссылке №1";
else if(doc.indexOf("текст, явно принадлежавший другой странице, со второй ссылкой") > -1)
    path = "Текст на ссылке №2";
else if(doc.indexOf("между жылищем Шызожука и Рогача") > -1)
    {path = "завершить разговор"; external.DungeonLoadPath("Путь2");}
 
if(path!="empty")
    external.ClickLink(path,type);

Я честно устал писать одну и ту же структуру кода, но она эффективна.

Можно извратиться и писать в стиле(вроде qwerty такой вариант увидеть хотел):

var type = 2;
if(external.ClickLink("завершить разговор",type)) external.DungeonLoadPath("Путь2");

тут если есть ссылка, содержащая текст "завершить разговор" и бот её сумел вот прямо сейчас нажать - загружается новый маршрут с именем "Путь2.path". Вся проверка "Есть ли такая ссылка, видна и она, нажал ли бот в итоге по ней" - всё выполняется внутри external.ClickLink

Software is like sex: it's better when it's free! © LinusTorvalds

29

Re: Квест грибницы, начало...

несовсем, хотелось:
мракопус: ололо, иди тут рядом
Мы меняем маршрут(на ололо идем рядом)
Завершаем разговор

Но суть такая, да)

Вы обладаете Благодатью Алхимика  до 05.04.16

30

Re: Квест грибницы, начало...

вопрос такой а как юзать Клейкое вещество через файл маршрута из инвентаря прочее?
Макропус через юзербъект  что то перестал юзатся,попробовал по имени OrderedObjects("Макропус"); эффекта ноль.
Увсех так?