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

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

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

> Описание: Настройки в config.ini
DrDron
Отправлено: 17 Января, 2020 - 12:23:16
Post Id



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


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




Доброго времени суток всем. Потребовалось реализовать возможности бота, но в своем UI. В следствии чего я вижу путь только через запись файла конфигурации с моего приложения и загрузка его Кибором. Но так как я не очень опытный пользователь кибора прошу помощи на конкретном примере:
есть условно говоря таймер
CODE:
CREATE_TIMER(2, 360000)
{
//мой код
}

Вопрос: какой код добавлять в старт чтобы считывать переменную с ini файла с 1 (условно) строки и добавления его в переменную, из которой уже будет браться значение секунд?
Если есть возможность то конкретно код с пояснениями) А не сделай "непонятное слово", потом "непонятное слово" и в самом конце "непонятное слово", ибо я знаком только с функциями поиска динамических изображений, пикселей, текста, чтения памяти и еще пары простейших.
 
 Top
Zireael
Отправлено: 17 Января, 2020 - 13:07:10
Post Id



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


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




 Цитата:
считывать переменную с ini файла

CODE:
// подключение функций
external (INT, "GetPrivateProfileString", "GetPrivateProfileStringA", "kernel32.dll");
external (INT, "WritePrivateProfileString", "WritePrivateProfileStringA", "kernel32.dll");

string path="C:\config.ini"; // путь к ini
char c[256]; // массив, в который будет записываться значение ключа из ini файла


GetPrivateProfileString ("Section1", "var1", 0, address (#c[0]), sizearray(c), path); // получить значение
messagebox(format(#c[0]));

GetPrivateProfileString ("Section2", "MP", 0, address (#c[0]), sizearray(c), path); // получить значение
messagebox(format(#c[0]));


// WritePrivateProfileString ("Section1", "var1", "Новое значение", path); // записать значение

Содержимое ini:
 Цитата:
[Section1]
var1=значение1
var2=значение2

[Section2]
HP=1234
MP=6789
 
 Top
DrDron
Отправлено: 17 Января, 2020 - 13:11:34
Post Id



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


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




 Zireael пишет:
 Цитата:
считывать переменную с ini файла

CODE:
// подключение функций
external (INT, "GetPrivateProfileString", "GetPrivateProfileStringA", "kernel32.dll");
external (INT, "WritePrivateProfileString", "WritePrivateProfileStringA", "kernel32.dll");

string path="C:\config.ini"; // путь к ini
char c[256]; // массив, в который будет записываться значение ключа из ini файла


GetPrivateProfileString ("Section1", "var1", 0, address (#c[0]), sizearray(c), path); // получить значение
messagebox(format(#c[0]));

GetPrivateProfileString ("Section2", "MP", 0, address (#c[0]), sizearray(c), path); // получить значение
messagebox(format(#c[0]));


// WritePrivateProfileString ("Section1", "var1", "Новое значение", path); // записать значение

Содержимое ini:
 Цитата:
[Section1]
var1=значение1
var2=значение2

[Section2]
HP=1234
MP=6789


Спасибо огромное, сейчас буду пробовать!

(Отредактировано автором: 17 Января, 2020 - 13:29:01)

 
 Top
Zireael
Отправлено: 17 Января, 2020 - 13:49:40
Post Id



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


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




 Цитата:
как правильно записать это в переменную?

 Цитата:
// вместо messagebox(format(#c[0]));
string s=format(#c[0]); // строка
messagebox(s);

int x=format(#c[0]); // число
messagebox(x);
 
 Top
DrDron
Отправлено: 17 Января, 2020 - 14:08:52
Post Id



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


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




 Zireael пишет:
 Цитата:
как правильно записать это в переменную?

 Цитата:
// вместо messagebox(format(#c[0]));
string s=format(#c[0]); // строка
messagebox(s);

int x=format(#c[0]); // число
messagebox(x);


Да, только вот с таймером получается нельзя использовать переменные) Как же быть?

А, все, нашел sendtimer.
(Добавление)
CODE:

external (INT, "GetPrivateProfileString", "GetPrivateProfileStringA", "kernel32.dll");
string path= pathfolder()+"set.ini";
char c[256];
GetPrivateProfileString ("Settings", "farmtime", 0, address (#c[0]), sizearray(c), path);
string s=format(#c[0]);
sendtimer(1, s)

enabletimer (1);



CREATE_TIMER(1, 3000)
{

messagebox(s);

}

Где тут ошибка господа?) Закрывается и messagebox не выводит

(Отредактировано автором: 17 Января, 2020 - 14:12:17)

 
 Top
Kibor
Отправлено: 17 Января, 2020 - 14:37:39
Post Id



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


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




 DrDron пишет:
Закрывается и messagebox не выводит

И не должен. Скрипт просто отрабатывает и доходит до конца. 3 сек не проходит.

CODE:
external (INT, "GetPrivateProfileString", "GetPrivateProfileStringA", "kernel32.dll");
string path= pathfolder()+"set.ini";
char c[256];
GetPrivateProfileString ("Settings", "farmtime", 0, address (#c[0]), sizearray(c), path);
string s=format(#c[0]);
sendtimer(1, s)

enabletimer (1);

loop()sleep(10);

CREATE_TIMER(1, 3000)
{

messagebox(s);

}
 
 Top
DrDron
Отправлено: 17 Января, 2020 - 14:47:20
Post Id



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


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




Понял, спасибо. Объясните пожалуйста за loop()sleep(10);, у меня вроде все таймеры до этого срабатывали без этого, в боте с более чем 40 функциями и 20 таймерами xD
(Добавление)
Это аналог зацикливания что-ли?)

(Отредактировано автором: 17 Января, 2020 - 14:48:55)

 
 Top
Kibor
Отправлено: 17 Января, 2020 - 14:53:54
Post Id



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


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




Это просто зацикливание что бы скрипт не дошел до конца.
CODE:
a:
sleep(10);
goto a;
 
 Top
DrDron
Отправлено: 17 Января, 2020 - 14:57:32
Post Id



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


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




 Kibor пишет:
Это просто зацикливание что бы скрипт не дошел до конца.
CODE:
a:
sleep(10);
goto a;

Понял, вопрос не по теме:
Реализовал поиск лута с помощью findheapcolor, поиск идет по зоне, где нету никаких иконок и так далее, но периодически, может раз в 10 минут, может раз в 20 часов он все равно кликает на какую-то иконку которая ВНЕ зоны поиска. Как с этим бороться? Уже все что можно перепробовал, единственная идея - запретить нажатия вне этой зоны, но как это сделать?
(Добавление)
Причем я бы даже сказал, что временами эти иконки даже не близко к этой зоне)
 
 Top
Zireael
Отправлено: 17 Января, 2020 - 15:26:21
Post Id



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


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




 Цитата:
string s=format(#c[0]);
sendtimer(1, s)

Должно быть так:
CODE:
int s=formatsn(format(#c[0]));
sendtimer(1, s);

 Цитата:
все равно кликает на какую-то иконку которая ВНЕ зоны поиска.

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


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




Powered by