1

Тема: Вопросы от hyppo

Требуется рандомный шаг в маршруте.
Как реализовать в одну строку?

Что-то вроде:

123456789012345667890 : UseObjects(); AttackMobs(); Выбрать_случайное_из [Walk("rr"), Walk("m1"), Walk("m1")]; 
 
или
 
123456789012345667890 : UseObjects(); AttackMobs(); Walk(случайное_из: "m1","rr","rl");

Есть такая возможность в языке?
С условиями получаются какие-то трёхэтажные конструкции у мну sad

(Please log in or register to see this URL)

2

Re: Вопросы от hyppo

просто функцию маз рандом юзай, я когда то так делал, все работало.

123456789012345667890 : UseObjects(); AttackMobs(); if(Math.random()>0.66 Walk("m1"); if(Math.random()<0.33 Walk("m1"); if(Math.random()>0.33 Walk("m1");

Я проверял все с помощью top.Chat.Self.AddMessage("работает");

У меня все работает, что я делаю не так ?

3

Re: Вопросы от hyppo

ZhEkA_BK это не совсем то что нужно. Тут три разных числа генерируется. И срабатывать будет не одна команда, а возможно что и ни одно условие не будет верно.

Но спасибо. Подумаю.

(Please log in or register to see this URL)

4

Re: Вопросы от hyppo

Мдаа...лохонулся я конечно  big_smile
Не знаю будет ли работать, но вот что в голову пришло

123456789012345667890 : UseObjects(); AttackMobs(); if(Math.random()>0.66) Walk("m1"); else if(Math.random()<0.5) Walk("rr") else Walk("rl");
У меня все работает, что я делаю не так ?

5

Re: Вопросы от hyppo

ZhEkA_BK после Walk("rr") поставил точку с запятой (чисто чутьём чую что она там нужна, а может нет?).

Проверил. Работает! smile

(Please log in or register to see this URL)

6

Re: Вопросы от hyppo

Более глубокие тесты показывают некорректную работу sad Нужно дополнительное условие, чтобы бот ждал когда будет готов сделать шаг и лишь потом выполнял рандомные условия. В противном случае прямо он никогда не шагнёт, точнее с очень малой вероятностью. Поскольку несколько тактов проскакивает при которых бот уже может повернуться влево или вправо, но ещё не готов шагнуть вперёд.

Теперь нужна либо пауза либо условие готовности сделать шаг smile

(Please log in or register to see this URL)

7

Re: Вопросы от hyppo

а оставить 2 условия "Шаг вперед" vs. "Шаг влево/вправо" не выход? или "Поворот влево" vs. "Поворот вправо". 10 таких развилок на карте дадут 1024 разных варианта прохождения оной, мне кажется более чем достаточно..

8

Re: Вопросы от hyppo

ужно дополнительное условие, чтобы бот ждал когда будет готов сделать шаг и лишь потом выполнял рандомные условия.

не знаю сработает ли, но вот такой быдло-способ:

while(!top.frames[тутэкстерналфреймавломискатькакпишется].is_accessible) {}

ну а дальше условия для шага\поворота

Оставь надежду всяк сюда входящий ©

9

Re: Вопросы от hyppo

а че while а не if ?

if(top.frames[external.mainFrameIndex].is_accessible)

в плагинах работает...в маршрутах теоретически тоже должно работать.
Хотя странно, что он у тебя пытается вперед пойти...в самом боте вроде как есть проверка.

У меня все работает, что я делаю не так ?

10

Re: Вопросы от hyppo

ZhEkA_BK пишет:

а че while а не if ?

if(top.frames[external.mainFrameIndex].is_accessible)

в плагинах работает...в маршрутах теоретически тоже должно работать.
Хотя странно, что он у тебя пытается вперед пойти...в самом боте вроде как есть проверка.

Может и if сработает. Я ж не знаю, как работает бот smile
Если по обновлению верхнего фрейма, то только через while, а если по таймеру - то тогда if-а должно быт достаточно

Оставь надежду всяк сюда входящий ©

11

Re: Вопросы от hyppo

ZhEkA_BK пишет:

Хотя странно, что он у тебя пытается вперед пойти...в самом боте вроде как есть проверка.

Ты не понял. Он как раз НЕ пытается вперёд пойти, а делает то что доступно сейчас - влево или вправо. А вперёд при ранее написанном условии не шагнёт, за время пока зелёная полоска растёт он несколько раз пройдётся по этому условию и тыркнется куда-нибудь ещё.

(Please log in or register to see this URL)

12

Re: Вопросы от hyppo

Ну вот теперь понял  big_smile
if(top.frames[external.mainFrameIndex].is_accessible) должно помочь перед walk(m1). Ну или в самом начале условия поставить, но тогда он будет ждать, когда полосочка заполнится и при поворотах.

У меня все работает, что я делаю не так ?

13

Re: Вопросы от hyppo

123456789012345667890 : UseObjects(); AttackMobs(); if(top.frames[external.mainFrameIndex].is_accessible) {if(Math.random()>0.66) Walk("m1"); else if(Math.random()<0.5) Walk("rr"); else Walk("rl");};

Строка в маршруте. Не работает. Что не так?  neutral

И так тоже молчит:

123456789012345667890 : UseObjects(); AttackMobs(); while(!top.frames[external.mainFrameIndex].is_accessible) {if(Math.random()>0.66) Walk("m1"); else if(Math.random()<0.5) Walk("rr"); else Walk("rl");}

А так шагает только вперёд:

123456789012345667890 : UseObjects(); AttackMobs(); if((Math.random()>0.66) && (top.frames[external.mainFrameIndex].is_accessible)) Walk("rl"); else if((Math.random()<0.5) && (top.frames[external.mainFrameIndex].is_accessible)) Walk("rr"); else Walk("m1");

То есть как я понимаю выражение (top.frames[external.mainFrameIndex].is_accessible) никогда не бывает true sad
Может этот экстернал закрыт?

Попробовал паузу соорудить, типа такой:

external.Stop(); setTimeout("external.Start();",15000);

Но тогда он на клетке стопорится на 15 секунд, а потом когда стартует опять по новой начинает строку выполнять, до рандомного шага не доходит sad

И вот так пробовал:

setTimeout(external.AddToChat("жду 15 секунд"),15000); Walk("m1");

Вперёд не шагает. Пишет в чат что ждёт с частотой заданной скоростью интервала действия бота.

(Please log in or register to see this URL)

14

Re: Вопросы от hyppo

В общем в итоге просто ввёл переменную, которую задал заранее, на предыдущей клетке маршрута smile Так надёжнее.

0000_предыдущая_клетка_0000 : AttackMobs(); hyppo = Math.random(); Walk("m1"); 
00000_клетка_развилки_00000 : AttackMobs(); if(hyppo>0.66) Walk("m1"); else if(hyppo<0.33) Walk("rr"); else Walk("rl");

Работает! smile

(Please log in or register to see this URL)

15

Re: Вопросы от hyppo

Всё работает хорошо. Пишу сложный маршрут одним файлом. Получается smile

Жаль только что вызов экстернала из строки маршрута прерывает выполнение этой строки sad Поэтому написать в чат и при этом шагнуть не получается. Но это мелочи.

Теперь возник дополнительный вопрос. Иногда, в результате перезагрузок, значение переменной исчезает. Но оно не равное 0 получается, а вообще неопределённое. Приведите пример условия по которому можно узнать задавалось ли вообще значение переменной? Как это выглядит? Любой пример дайте, я разберусь smile

Или проще говоря как создать условие вида: "если переменная не объявлена"?

(Please log in or register to see this URL)

16

Re: Вопросы от hyppo

Нашёл ответ smile Для переменной hyppo. Вот такой "тест" вписал в маршрут. Показывает выпавшее значение или же что его вообще нет.

if (typeof hyppo !== 'undefined') external.AddToChat("Rnd:" + hyppo); else external.AddToChat("Нифига такого нет");
(Please log in or register to see this URL)

17

Re: Вопросы от hyppo

Или проще говоря как создать условие вида: "если переменная не объявлена"?

if(your_variable == undefined)

фак, опоздал на минуту(

Отредактировано Exile (2011-09-27 18:30:35)

Оставь надежду всяк сюда входящий ©

18

Re: Вопросы от hyppo

Exile пишет:

Или проще говоря как создать условие вида: "если переменная не объявлена"?

if(your_variable == undefined)

фак, опоздал на минуту(

Так пробовал. Не работало. typeof надо было добавить  smile

(Please log in or register to see this URL)

19

Re: Вопросы от hyppo

В идеале хочу сделать "беспалевный" маршрут, где бот мог бы иногда делать случайные повороты, движения, мог случайно менять маршрут, и чтобы в одном файле было сразу несколько вариантов прохождения smile Получается.

(Please log in or register to see this URL)

20

Re: Вопросы от hyppo

hyppo пишет:

В идеале хочу сделать "беспалевный" маршрут, где бот мог бы иногда делать случайные повороты, движения, мог случайно менять маршрут, и чтобы в одном файле было сразу несколько вариантов прохождения smile Получается.

Супер! Могу морально поддержать)  big_smile