Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (3): [1] 2 3 »   

> Описание: Внесение функций в массив и их вызов. Визуальный редактор. Помощь
Mr.Pistol
Отправлено: 09 Июля, 2021 - 05:47:11
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2021  
Репутация: 0




Итак друзья...
В написании бота для мобильной игры Top War, после своих неудач я продвинулся глубже.
Разные действия, которые должны привести к результату в игре, я сгруппировал по функциям. Эти функции на данном этапе выполняются линейно (по порядку).
В боте я макасимально рандомизировал тайминги действий, к этому вопросов по логам, у разработчиков не возникнет, но этого не достаточно.
Линейность вызова функций на продолжительном времени очень выделит игровой аккаунт. т.к. игра завязана на интернете полностью (клик по любой кнопке отправляет запрос на сервер). Следовательно одинаковая последовательность запросов может привести к блокировке.
В Киборе присутствует анти- антикликер, но полагаю в данной игре он не поможет.
В связи с этим остановился на следующей задачи:
В визуальном редакторе необходимо вызывать функции в разной последовательности, но так, что бы не одна не была пропущена.
Решение есть в теории, а именно:
1) Создать трехмерный массив с внесением присвоенного номера для функции, название функции и переменную, которая при завершении функции будет вносится в массив.
(Номер|Название|Переменная)
2) Будет проверятся условие, вызывалась ли функция под номером N в массиве, а по завершению в Массив (Переменная) вносится информация о её вызове.
3) Тэгом rand(0,N), где N количество всех функций, будет вызывать случайную функцию, если она уже была, генерируем рандом дальше, иначе если нет вызываем её

попробую описать кодом недопрограммиста, надеюсь никого не запутал и не запутаю.

Есть Массив (а,б,с), функцияРаз, функцияТри. Помещаем их в массив.
(1, функцияРаз,0)
(2, функцияТри,1)
рандом (0,2)
Рандом выдал номер 2 и пошло условие:
Если Массив(с) = 1, значит пропускаем .
Складываем столбик массива (c) , если сума равна количеству переменных закончили, если нет, запускаем рандом опять.
Рандом выдал номер 1, проверяем
Если Массив(с) = 0 запускаем функцию и возвращаем в Массив(с) единицу. Так пока все функции не будут вызваны.
Напомню, действую в визуальном редакторе и нужна подсказка по внедрению кода в визуал, и сам код, либо другие решения которые проще моего.
Пожалуйста подскажите, благодарю.
 
 Top
Ilya001
Отправлено: 09 Июля, 2021 - 10:45:08
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 459
Дата рег-ции: Май 2020  
Репутация: 23




Если я правильно понял, то думаю можно и без массива такое реализовать.

Пример:
CODE:
int a=0, b=0, c=0; //переменные а,b,c

na4alo:; // поставил метку, чтобы зациклить код

if(a==0)
{
goto ablock;
}
else
{
if(b==0) //проверяем если "b" ровно 0, переход к bblock(аналогично и для "a" и "c"), иначе проверяем следующую переменную
{
goto bblock;
}
else
{
if(c==0) //проверяем если "c" ровно 0, иначе обнуление переменных
{
goto cblock;
}
else //если у всех переменных не 0, а 1, т.е если все функции уже выполнялись
{
a=0; //тут обнуляем всех переменных
b=0;
c=0;
messagebox("Все переменные успешно обнулены!");
pause(500); //пауза 500мс, можно убрать
}
}
}

ablock:; messagebox("A");
a++; // присваиваем единицу к переменную "a"
goto na4alo; //переходим к началу кода
bblock:; messagebox("B");
b++;
goto na4alo;
cblock:; messagebox("C");
c++;
goto na4alo;


Тут код работает как переключатель, если один переключатель выключен(0), то он его включает(+1), и так далее.

(Отредактировано автором: 09 Июля, 2021 - 10:54:53)

 
 Top
Zireael
Отправлено: 09 Июля, 2021 - 11:19:09
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017  
Репутация: 585




CODE:
int array[3]; // массив на 3 элемента
int i;
int size_array = sizearray(array); // записать в переменную размер массива
for(i=0; i<size_array; i++)array[i]=i; // заполнить массив числами 0,1,2...


loop() // цикл
{
for(i=0; i<size_array; i++) // перемешать массив
{
int random_num1 = rand(0, size_array);
int random_num2 = rand(0, size_array);
int temp = array[random_num1];
array[random_num1] = array[random_num2];
array[random_num2] = temp;
}

for(i=0; i<size_array; i++) // вызвать функции
{
if(array[i]==0)func0();
if(array[i]==1)func1();
if(array[i]==2)func2();
}
messagebox("Все функции вызваны");
}


function func0()
{
messagebox("Вызвана func0");
}

function func1()
{
messagebox("Вызвана func1");
}

function func2()
{
messagebox("Вызвана func2");
}
 
 Top
Mr.Pistol
Отправлено: 10 Июля, 2021 - 03:14:36
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2021  
Репутация: 0




 Zireael пишет:
int array[3]; // массив на 3 элемента
int i;
int size_array = sizearray(array); // записать в переменную размер массива
for(i=0; i<size_array; i++)array[i]=i; // заполнить массив числами 0,1,2...


Да,круто , то что нужно и гораздо легче в исполнени, чем я придумал! Превосходно

Пару вопросов :
1) int array[3] - одномерный массив, а int array[a,..,n]- многомерный так?
2) Верно ли интерпретирует программа следующий код: func(int a=22, string txt= good);?
Данный код вызовет функцию func с объявленными в ней переменными "a" и "txt"?

(Отредактировано автором: 10 Июля, 2021 - 03:15:11)

 
 Top
Zireael
Отправлено: 10 Июля, 2021 - 19:21:56
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
1) int array[3] - одномерный массив, а int array[a,..,n]- многомерный так?

CODE:
int array[3]; // одномерный массив
int arr[3][10]; // двухмерный
int c[3][5][2]; // трёхмерный

 Цитата:
2) Верно ли интерпретирует программа следующий код: func(int a=22, string txt= good);?

CODE:
func(22, "good");
func(12345, "hello");


function func(int a, string txt)
{
messagebox(a);
messagebox(txt);
}
 
 Top
Mr.Pistol
Отправлено: 11 Июля, 2021 - 01:02:29
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2021  
Репутация: 0




Превосходно Хорошо
 
 Top
Mr.Pistol
Отправлено: 11 Июля, 2021 - 09:20:09
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2021  
Репутация: 0




 Mr.Pistol пишет:
Превосходно Хорошо

На данный момент адаптирую код под своего бота. Когда приду к успеху, отпишу результаты и конечный вид кода.

(Отредактировано автором: 11 Июля, 2021 - 09:21:22)

 
 Top
Mr.Pistol
Отправлено: 14 Июля, 2021 - 21:51:13
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2021  
Репутация: 0




Поэксперементировал.
1) Помимо вызова функций рандомно, пытался сгруппировать несколько функций которые можно сделать в одном меню.
Те. несколько массивов. Первый содержит две функции, в которых вызываются другие группы функций. Получалось не получалось Улыбка . Оставил эту затею.
Выдвинул несколько предположений которые неохото проверять но доведу.
1) Условие в котором вызываются условия, в которых вызываются функции, в которых вложен вызов других функций, сделанные в виз. редакторе - это мягко говоря головная боль, окно отладки вытворяло виртуозные деяния, которые мне были непонятны.
Мог накодить и запутаться в скобках и прочем, наделать синтаксических ошибок.
2) Сократив код и использовав один массив с перемешанными функциями с циклом for не получалось, всё почему? Потому что, как я понял, цикл пропускает 0 и начинает запись с array[1] ,а адресный номер массива в свою очередь начинается с 0. сответственно for заканчивает действие попыткой записать array[5], когда сам масив длинной 5, но последний адрес массива 4. поменял на цикл While и всё заработало.

Потом опять программа сломалась полностью, посыпались и ошибки, и недостаточно памяти, и даже новые скрипты (которые точно без ошибок), запускал ооочень тяжко и с теми же ошибками.. почти каждый запуск скрипта, заканивался закрытием кибора через ctrl+alt+delete. переустановил кибор обновился, цэклинером почистил реестр и вроде помогло.. незнаю надолго ли.

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

Таймер.. Нормармальной реализации, я так понимаю тоже нет. Планировалось после всех команд запускать таймер, который будет начанать всё сначала, с рандомным интервалом( от 20 до 30 минут)

int t1, t2,r;
r = rand(1000000,1800000);
t1=gettime();
t2=time1;
while (t2-t1<r)
{
t2=gettime();
pause (20000);
}
StartGame();
t1=0;
t2=0;
r=0;
После одного цикла всё пошло на перекосяк. Объявленные переменные внутри блока, даже не функции- т.е. они нигде не повторяются в коде, а после обнуляются.

Вопрос: Как бы сделать так, что бы скомпилированный exe файл после отработанного кода закрывал сам себя?. Скажем имеется 2 Exe файла, один отрабатывает, предпоследняя команда запускает второй файл, а последняя команда закрывает первый?

(Отредактировано автором: 14 Июля, 2021 - 21:58:15)

 
 Top
Kibor
Отправлено: 14 Июля, 2021 - 21:59:28
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8203
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 Mr.Pistol пишет:
У меня кибор работает(в моём понимании) крайне не стабильно. По сути единственная прорамма на компьютере которая сыпет ошибки, и в таком количестве.
Естественно не без моих ошибок в коде. Но и Баги кибора уверен тоже присутствуют.

У вас много на компьютере программ в которых вы что то программируете? Тем более с ошибками?

Можете поставить другую среду программирования и записать в ней что то типа:
 Mr.Pistol пишет:
for заканчивает действие попыткой записать array[5], когда сам масив длинной 5, но последний адрес 4. поменял на цикл While и всё заработало.

И там тоже ошибки посыпятся.

Программа достаточно нормально работает (по крайне мере с моим кодом), если не допускать ошибки в коде.
 
 Top
Mr.Pistol
Отправлено: 14 Июля, 2021 - 22:10:17
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2021  
Репутация: 0




 Kibor пишет:
У вас много на компьютере программ в которых вы что то программируете? Тем более с ошибками?

Можете поставить другую среду программирования и записать в ней что то типа:


Нет не много, но активно использую только её.

Владимир к вам и к программе нет не каких притензий, несмотря на то что у она временами работает некорректно, она классная, действительно.
Надеюсь что и дальше она будет развиваться в лучшую сторону. Она мне интересна и я с удовольствием её исследую.
Я не программист, но имею такое убеждение и понимание, что написать интерпретатор команд на интерпертаторе команд, который будет без багов это невозможно,подзреваю, что на ассемблере кибор был бы более стабильнее. Но без багов не обойтись в любом случае. В моей ситуации конечно больше виноват я, чем программа.
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by