Функции для макросов Freebitco.in и примеры циклов и условий выхода из них.

Давайте начнем с простого макроса, который ставит ставку. Эту строчку можно получить сделав запись макроса и вбив в ставку на сайте freebitco.in.
Сразу скажу, что выиграть на подобных сайтах практически не возможно, если только играть малыми ставками и не жадничать, не пытаться отыграться если проиграли и т.п. Как только вы будете пытаться отыграться, то начнете играть на удвоение и ставки быстро возрастут - и вы проиграете.
Теперь еще хотелось бы подчеркнуть про серию подряд идущих проигрышей. К примеру, мы поставили шанс выигрыша 50 на 50, то на фрибиткоине это WIN CHANCE=47,5%.
Ставим ставку на HI и играем. Какова вероятность выигрыша? - Правильно - 50%.
Теперь мы ставит 2 раза на HI и два раза проиграли. Если мы снова поставим на HI - какова вероятность выиграть? - Правильно - 50%.
Теперь мы 10 раз подряд проиграли на HI. И решили снова поставить на HI - какова вероятность выиграть после 10 подряд идущих проигрышей? - Правильно! - она не меняется - это все те же 50%. То есть не важно какова длина серии проигрышей - вероятность выиграть в следующей ставке не меняется. Это теория вероятности и с ней не поспорить. Поэтому мысль, что можно выиграть после серии проигрышей - она мифична, она ложна.

Это все к тому, что я против таких игр, - вероятность проиграть, кстати здесь больше, чем выиграть - об этом говорит заложенный на сайт WIN CHANCE=47.5%. Это не 50%. Проигрыш, как говорил ранее, заложен здесь изначально. Хоть и фрибиткоин не лохотрон, но ставлю ему ярлык лохотрона.

Если вы еще не передумали играть, то возвращаемся к нашей строчке макроса, которая ставит нам ставку.
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:stake CONTENT=0.00000005
Если мы эту строчку впишем в макрос iim и запустим ее на открытом сайте фрибиткоин мультиплее, то макрос впишет нам эту ставку.
Соответственно, чтобы эта строчка заработала в яваскрипт макросе, то нужно вписать ее в iimPlayCode():
iimPlayCode('TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:stake CONTENT=0.00000005');
Расширение макроса должно быть уже не iim, а js. Результат запуска будет тем же - то есть впишется ставка 0.00000005 и все.
Теперь из этого можно сделать функцию прописывания ставок:
function stavka(n) {
iimPlayCode('TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:stake CONTENT='+n);
}


Теперь можно пользоваться готовой функцией и легко прописывать нужные ставки, для этого достаточно вызвать ее с нужной ставкой:
stavka(0.00000007);//пропишет 7 сатош
То есть пользоваться удобно и вызывать ее можно сколько угодно. Мы ее будем использовать для следующих функций, которые уже будут ставить ставки и играть и проигрывать выигрывать.
Таким образом можно записывать макрос, брать с него код, переводить в ява скрипт и собирать его в готовый блок в видео функции.

Теперь перейдем к функции hi(n); которая прописывает ставку n и жмет на кнопку HI.
function hi(n) {//ставит n сатош, жмет на кнопку HI и возвращает результат
stavka(n);
iimPlayCode("TAG POS=1 TYPE=BUTTON ATTR=TXT:BET<SP>HI");
while (true) {
iimPlayCode('TAG POS=1 TYPE=BUTTON ATTR=TXT:BET<SP>HI EXTRACT=HTM');
if (iimGetLastExtract().indexOf('disabled')<0) break;iimPlayCode('WAIT SECONDS=1');}
iimPlayCode('SET !EXTRACT NULL\nTAG POS=2 TYPE=DIV ATTR=TXT:You<SP>BET<SP>* EXTRACT=TXT');return iimGetLastExtract().charAt(18);
}

Разберем подробнее, что делает функция hi(n); и как ей пользоваться.
В этой функции прописана функция ставки, которую мы описали ранее. Она как раз прописывает ставку n.
Далее строчка iimPlayCode("TAG POS=1 TYPE=BUTTON ATTR=TXT:BET<SP>HI");
жмет на кнопку HI на сайте фрибиткоин.
Далее идет цикл
while (true) {
iimPlayCode('TAG POS=1 TYPE=BUTTON ATTR=TXT:BET<SP>HI EXTRACT=HTM');
if (iimGetLastExtract().indexOf('disabled')<0) break;iimPlayCode('WAIT SECONDS=1');}
Для чего он нужен сейчас объясню. Когда мы нажимаем на кнопку игры HI, то она на некоторое время стает не активной - до тех пор, пока не выпадет число и не сыграет ставка. Бывают случаи, что во время игры происходит зависание и кнопка HI и LO становятся не активными (не нажимаются), и число, которое должно выпасть, долго крутится. Поэтому скрипт в таком случае будет ждать до тех пор, пока ставка не сыграет и кнопка HI станет снова активной. Это сделано для того, чтобы скрипт ждал результата поставленной ставки - выиграла она или нет. Ведь на основе сыгранной ставки нужно принимать решение, что делать дальше и поэтому нам нужно конкретно результат - выиграли мы или проиграли, чтобы не было ложных ставок.
Ниже на скриншоте активные кнопки, то есть ставка сыграла и сайт ожидает нажатие следующих ставок.
 А вот на этом скрине - ставка в работе, то есть число еще не выпало и кнопки до выпадения числа - Не активные.
Надеюсь понятно теперь, для чего этот код. По идее можно его заменить на задержку, например в 3 секунды, то есть использовать команду iimPlayCode('WAIT SECONDS=3');
и после каждой ставки скрипт будет ждать 3 секунды и лишь потом считывать информацию о результате - выиграли мы или проиграли. Но бывают часто случаи, что число долго крутится - больше 3 секунд, а иногда и зависает до тех пор пока не перезагрузить страницу, - редко но бывает. И в таком случае - скрипт после 3 секунд продолжит работу не дожидаясь завершения ставки и, если была предыдущая ставка проигрышная, а алгоритм написан на удвоение, то может случиться пропуск ставок, а размер ставки стать большим - и можно все слить. Поэтому этот код ждет завершения ставки и предотвращает от пропуска ходов.
Следующая строчка
iimPlayCode('SET !EXTRACT NULL\nTAG POS=2 TYPE=DIV ATTR=TXT:You<SP>BET<SP>* EXTRACT=TXT');
копирует текст о результате сыгранной ставки, смотрите скриншот.

А код
return iimGetLastExtract().charAt(18);
возвращает функции 18й символ с этой строки - на красной проигрышной кнопке - это буква l, а на зеленой выигрышной кнопке - это буква w.
Теперь можно пользоваться данной функцией и ставить любые ставки быстро и просто. Например поставим 5 сатош на  HI и выведем на экран результат сыгранной ставки.
var rez;
rez=hi(0.00000005); alert(rez);
На экран выведется буква l - если мы проиграли и буква w - если выиграли. За это можно цепляться и делать ставки на основе предыдущих.



Теперь функция, которая играет только на LO. Единственное ее отличие, что она жмет только на  LO, а в остальном код один и тот же и работает она так же как и функция HI и возвращает те же результаты.
function lo(n) {//ставит n сатош, жмет на кнопку LO и возвращает результат
stavka(n);
iimPlayCode("TAG POS=1 TYPE=BUTTON ATTR=TXT:BET<SP>LO");
while (true) {
iimPlayCode('TAG POS=1 TYPE=BUTTON ATTR=TXT:BET<SP>HI EXTRACT=HTM');
if (iimGetLastExtract().indexOf('disabled')<0) break;iimPlayCode('WAIT SECONDS=1');}
iimPlayCode('SET !EXTRACT NULL\nTAG POS=2 TYPE=DIV ATTR=TXT:You<SP>BET<SP>* EXTRACT=TXT');
return iimGetLastExtract().charAt(18);
}

Поэтому описывать подробно что она делает нет смысла.
Отличается она только одной строчкой
iimPlayCode("TAG POS=1 TYPE=BUTTON ATTR=TXT:BET<SP>LO");

Теперь реализовать функцию, которая случайно жмет на HI или LO реализовать с уже имеющимися функциями очень просто. Для этого генерируем случайное число от 0 до 1 и если выпало 1 то вызываем функцию hi(n); а если выпало 0 - то вызываем функцию lo(n); и все.

Для этого используем функцию генерации случайного числа из диапазона от минимального к максимальному. Ее нужно описать в самом начале всех функций.
function getrandom(min_random, max_random) {//возвращает случайное число от min до max
    var range = max_random - min_random + 1;
    return Math.floor(Math.random()*range) + min_random;
}


Теперь уже точно можно перейти к функции hilo(n);
function hilo(n) {
if (getrandom(0,1)==1) return hi(n); else return lo(n);
}


Работать с этой функцией ничем не отличается от остальных. Например,
alert(hilo(0.00000003));
нажмет на HI или LO случайно и выведет на экран заветную букву l или w.

Так же можно написать функцию, которая ставит BET ODDS, она просто записана на макросе и переведена на iimPlay.
function odds(n) {
iimPlayCode('EVENT TYPE=CLICK SELECTOR="#double_your_btc_payout_multiplier" BUTTON=0');
iimPlayCode('EVENTS TYPE=KEYPRESS SELECTOR="#double_your_btc_payout_multiplier" KEYS="[8,8,8,8,8,8]"');
iimPlayCode('EVENTS TYPE=KEYPRESS SELECTOR="#double_your_btc_payout_multiplier" CHARS='+n);
}

То есть если вызовем эту функцию, то она пропишет этот ODDS. Например поставим его 1.25
odds(1.25);
По сути все, хотя можно написать еще много полезных функций, но ставки ставить уже можно и можно писать свои алгоритмы. Получился вот такой вот набор функций

Теперь рассмотрим примеры простых алгоритмов с использованием циклов и условиями выхода из циклов.
Начнем с самого простого. Например мы хотим сделать 50 ставок 0.00000001 на HI. Конечно можно 50 раз написать функцию hi(0.00000001); но это не совсем удобно и будет занимать много места. А если нам нужно будет сделать 1000 ставок, то прописывать 10 раз функцию hi(0.00000001); будет еще сложнее. Тут можно воспользоваться функцией for от 1 до 50.
Код будет таким:
for (i=1;i<=50;i++) hi(0.00000001);
Эта одна строчка кода сделает 50 ставок на HI.
Цикл for удобен чаще всего в том случае, если нужно выполнить заданное количество повторений. Удобнее, для меня, использовать цикл while. Напишем тот же самый алгоритм с использованием цикла while. Для этого объявим переменную для счетчика повторов и для условия выхода и присвоим ему начальное значение 1.
var  k=1;
while (k<=50) {hi(0.00000001);k=k+1}
Это тоже самое, что и с циклом for - то есть 50 раз поставится ставка на HI. Фигурные скобки нужны для того чтобы включить в цикл не одно действие, а несколько - в нашем случае это 2 действия - поставить ставку и прибавить к счетчику 1.  Вместо k=k+1; сокращенно можно написать k++;
Изначально у нас k=1; Условие выхода из цикла является сравнение k<=50, то есть в первом проходе цикла k=1;  далее идет проверка k<=50? то есть 1<=50?
ДА. - Значит ставим ставку на HI и увеличиваем k на 1, то есть k стало равно 2.
Второй проход цикла: 2<=50? ДА - ставим на HI и  увеличиваем k на 1, то есть k стало равно 3.
и так далее ...
На 50 проходе цикла проверяем 50<=50? ДА. еще раз ставим на HI и k увеличивается на 1 - то есть k становится равным 51.
На следующий проход идет проверка 51<=50? - НЕТ. и на этом происходит выход из цикла.
Это для тех, кто не понимает как работает цикл.
Цикл while выполняется до тех пор, пока поставленное условие k<=50 истинно. И как только условие становится ложным, в нашем случае 51 не меньше 50, то происходит выход из цикла.
Можно задать бесконечный цикл - для этого в условии можно задать постоянно истинное значение или написать просто слово true.
while (true) hi(0.00000001);
Этот цикл будет выполняться до тех пор, пока вы сами его не остановите, то есть не нажмете на кнопку Стоп на панели аймакроса.
Тоже самое бесконечный цикл можно задать с постоянно истинным условием, например 1<2 (единица меньше двойки - истинно всегда)
while (1<2) hi(0.00000001);
ничем не отличается от предыдущего кода.

Теперь поставим конкретные условия и задачи для игры на фрибиткоин.
 1. Напишем алгоритм, который будет считать количество выигрышных сделок как только мы выиграем 3 ставки, не обязательно подряд идущие, то выходим из цикла.
Объявим счетчик k=0; Поставим условие: Пока k<3 ставим ставки, и если мы выиграли (то есть получили букву w), то увеличиваем счетчик на 1. Это все можно описать следующим образом:
var k=0; var rez;
while(k<3) {rez=hilo(0.00000001); if (rez=='w') k++;}
То есть счетчик k будет увеличиваться на 1 только в том случае, когда ставка выиграет. В переменной rez как раз хранится результат сыгранной ставки. Конечно можно напрямую сравнивать функцию без переменной rez. Получится вот так и это тоже самое:
var k=0;
while(k<3) {if (hilo(0.00000001)=='w') k++;}
Код немного сократился и не использует дополнительной переменной - но результат его работы тот же.

2. Напишем простой алгоритм, который играет до первого проигрыша. Если идут подряд выигрыши, то скрипт будет играть до тех пор пока не выпадет первый проигрыш. Если проигрыш выпал сразу, то скрипт сразу завершит работу.
var rez;
rez=hi(0.00000001);
while (rez=='w') rez=hi(0.00000001);//пока выигрываем - ставим ставку

3. Напишем алгоритм на удвоение ставок в случае проигрыша. Это тоже очень просто сделать.
Для этого зададим переменную st и запишем в нее начальную ставку 0.00000001.
Условие цикла зададим разными вариантами. Первым вариантом пусть будет бесконечный цикл - то есть чтобы остановить его - нужно нажать Стоп на панели аймакроса.
var st,rez;//объявили переменные
while (true) {
st =0.00000001;//начальная ставка
rez=hi(st);
while (rez=='l') {st=st*2;rez=hi(st);}//пока проигрываем, - умножаем ставку на 2 и снова играем
}

Можно поставить условие остановки цикла счетчик количества ставок, например, остановит цикл через 50 ставок. То есть задаем условие k<50 и получаем нужный результат.
var k,st,rez;//объявили переменные  
k=1;
while (k<50) {
k=k+1;
st =0.00000001;//начальная ставка
rez=hi(st);
while (rez=='l') {st=st*2;rez=hi(st);k=k+1;}//пока проигрываем, - умножаем ставку на 2 и снова играем
}
В этом случае подсчет ведется и начальной ставки и тех ставок, которые идут на удвоение - то есть считаются все ставки - в данном случае через 50 ставок, не важно выиграли или проиграли произойдет выход из цикла.

Как сделать так чтобы подсчет шел только сыгранных игр на удвоение, а не всех ставок? То есть допустим начальная ставка проиграла и запустился цикл на удвоение и дошла до выигрыша. Нужно считать количество таких циклов - выигрышей. Для этого нужно убрать счетчик из основного цикла, а из цикла на удвоение убрать его и поставить после цикла на удвоение. То есть будет вестись количество выходов из цикла на удвоение.
var k,st,rez;//объявили переменные  
k=1;
while (k<50) {
st =0.00000001;//начальная ставка
rez=hi(st);
while (rez=='l') {st=st*2;rez=hi(st);}//пока проигрываем, - умножаем ставку на 2 и снова играем
k=k+1;
}
Здесь ведутся подсчет серий на удвоение - точнее на отыгрыш. То есть 50 раз скрипт будет отыгрываться от проигрышной начальной ставки. Тут возможен вариант слива.

4. Теперь давайте напишем такой аглгоритм: играем 10 ставок и считаем сумму проигрышей, а после этого ставим ставк на эту сумму. Например, мы сыграли с 1 стошей 10 ставок и проиграли 6 раз, тогда скрипт долже будет поставить ставку с 6 сатошами и если проиграли то играем на удвоение до выигрыша.
var sum=0;//счетчик суммы проигрышей
var st=0.00000001;//начальная ставка
var k=1;
var rez;
while (k<=10) {rez=hi(st);if (rez=='l') sum=sum+st;k++;}
//в sum подсчитается сумма проигрышей
//теперь нужно поставит ставку, которая хранится в sum
rez=hi(sum);
//если ставка проиграло то запустится цикл на удвоение
//если ставка выиграла, то условие цикла на удвоение не выполнится
while (rez=='l') {sum=sum*2;rez=hi(sum);}

На этом пока все, если есть вопросы - пишите в комментах.


5 комментариев:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. Большое спасибо за подробное объяснение простых вещей. Недавно узнал об аймакросе и увлёкся применением автоматизации к сайту фрибиткойн.Это очень интересно.

    ОтветитьУдалить
    Ответы
    1. аймакрос очень полезная вещь, можно многое делать с ним.
      писал много скриптов для фрибиткоина, но забросил - это как бы бесполезно.
      если интересно, можете глянуть скрытые видео, доступные только по ссылке
      https://www.youtube.com/watch?v=p7BJKWyf9hE
      https://www.youtube.com/watch?v=JnBMGSgZSe8
      https://www.youtube.com/watch?v=JgMLV4iEUjE
      https://www.youtube.com/watch?v=T8uGyHZmVt0
      было много роликов, но я удалил.
      так же на этом же канале есть самые простые короткие уроки для начинающих.

      Удалить
    2. Благодарю за ответ. А я уже давно подписан на Ваш ютуб канал. Очень доступно даже для совсем новичков, вроде меня.
      Кстати, я не совсем согласен с тем, что аймакрос бесполезен для фрибиткойн. У меня есть задумка по разгону нулевого баланса за достаточно короткое время. Но нужна автоматизация, а мозгов не хватает. Если интересно могу рассказать подробно, а если нет, то могу ли я как то связаться с Вами, чтобы задать пару конкретных вопросов?

      Удалить
    3. вопросы сюда. посмотрим. идеи интересны, конечно. но мне кажется тут ничего не поможет, уже многое перепробовали.
      mingazetdinov85@gmail.com

      Удалить