Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Настройки в config.ini

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

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

Вопрос: какой код добавлять в старт чтобы считывать переменную с ini файла с 1 (условно) строки и добавления его в переменную, из которой уже будет браться значение секунд?
Если есть возможность то конкретно код с пояснениями) А не сделай "непонятное слово", потом "непонятное слово" и в самом конце "непонятное слово", ибо я знаком только с функциями поиска динамических изображений, пикселей, текста, чтения памяти и еще пары простейших.
2. Zireael - 17 Января, 2020 - 05:07:10 - перейти к сообщению
 Цитата:
считывать переменную с 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
3. DrDron - 17 Января, 2020 - 05:11:34 - перейти к сообщению
 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


Спасибо огромное, сейчас буду пробовать!
4. Zireael - 17 Января, 2020 - 05:49:40 - перейти к сообщению
 Цитата:
как правильно записать это в переменную?

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

int x=format(#c[0]); // число
messagebox(x);
5. DrDron - 17 Января, 2020 - 06:08:52 - перейти к сообщению
 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 не выводит
6. Kibor - 17 Января, 2020 - 06:37:39 - перейти к сообщению
 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);

}
7. DrDron - 17 Января, 2020 - 06:47:20 - перейти к сообщению
Понял, спасибо. Объясните пожалуйста за loop()sleep(10);, у меня вроде все таймеры до этого срабатывали без этого, в боте с более чем 40 функциями и 20 таймерами xD
(Добавление)
Это аналог зацикливания что-ли?)
8. Kibor - 17 Января, 2020 - 06:53:54 - перейти к сообщению
Это просто зацикливание что бы скрипт не дошел до конца.
CODE:
a:
sleep(10);
goto a;
9. DrDron - 17 Января, 2020 - 06:57:32 - перейти к сообщению
 Kibor пишет:
Это просто зацикливание что бы скрипт не дошел до конца.
CODE:
a:
sleep(10);
goto a;

Понял, вопрос не по теме:
Реализовал поиск лута с помощью findheapcolor, поиск идет по зоне, где нету никаких иконок и так далее, но периодически, может раз в 10 минут, может раз в 20 часов он все равно кликает на какую-то иконку которая ВНЕ зоны поиска. Как с этим бороться? Уже все что можно перепробовал, единственная идея - запретить нажатия вне этой зоны, но как это сделать?
(Добавление)
Причем я бы даже сказал, что временами эти иконки даже не близко к этой зоне)
10. Zireael - 17 Января, 2020 - 07:26:21 - перейти к сообщению
 Цитата:
string s=format(#c[0]);
sendtimer(1, s)

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

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

Значит где-то неверно указана зона поиска.

Powered by ExBB FM 1.0 Final