Re: Квест грибницы, начало...
Напиши как правильно будет тогда ))
Отредактировано nostra4life (2013-05-08 12:05:30)
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Чтобы отправить ответ, вы должны вход или регистрация
Напиши как правильно будет тогда ))
Отредактировано nostra4life (2013-05-08 12:05:30)
Серьёзно...я там кучу всяких методов защиты от поддельных ссылок вшил, а вы продолжаете устаревшие вещи практиковать.
Очеь бы хотелось видеть кликалку по картинке/тексту в одну строку, чтобы ничего не надо было вытягивать, грубо говоря: увидел текст - нажал
1 Всегда добавляйте переменную на часто повторяющуюся длинную строку обращения к DOM.
var doc = get_mainframe().document.all[0].innerHTML;
Это, во-первых, сокращает дальнейшик код и его удобнее читать. Во-вторых, обращение к doc будет нагружать систему в разы меньше при повторных запросах.
2 При необходимости кликнуть по ссылке/кнопке/картинке используйте ТОЛЬКО
external.ClickLink("Текст",id) - нажимает ссылку и возвращает true/false была ли найдена ссылка, или нет.
Естественно с контролем видимости нажимаемого элемента. Всё делает за вас
Текст ищется в определенном месте в соответствии с указанным id:
1 - переход по картинке(поиск именно функции перехода), не чувствителен к регистру;
Например переход с ЦП на страшилкину улицу.
2 - поиск по текстовой ссылке,чувствителен к регистру;
Например в диалоге ответы выбирать.
3 - по найденному в картинке тексту(outerHTML), не чувствителен к регистру;
Т.е. это не только альт, но и онклик, и src и вобще всё содержимое тэга img
4 - поиск по value среди input-элементов,чувствителен к регистру;
Есть input, есть у него value. Всё просто
0 или 5 или ещё чего - поиск последовательно по всем этим алгоритмам.
Пример: external.ClickLink("Возврат",4); нажмет на кнопку с надписью "Возврат"(например выход из инвентаря)
Это то, что меня начинает раздражать в последнее время
По поводу нуйти текст и нажать на него, то идеалом должно быть так:
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
несовсем, хотелось:
мракопус: ололо, иди тут рядом
Мы меняем маршрут(на ололо идем рядом)
Завершаем разговор
Но суть такая, да)
вопрос такой а как юзать Клейкое вещество через файл маршрута из инвентаря прочее?
Макропус через юзербъект что то перестал юзатся,попробовал по имени OrderedObjects("Макропус"); эффекта ноль.
Увсех так?
Чтобы отправить ответ, вы должны вход или регистрация