Kensi |
Отправлено: 24 Октября, 2018 - 11:40:15
|
Прохожий
Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2018
Репутация: 0
|
Zireael пишет: Цитата: Если надо кину код функции
Надо.
CODE:function фазаБоя2(){
m6: pause(1000);
readtext(NUM, #phaseNum, 23, 3, -1, -1, -1, -1, -1, 0, -1, 1321, 97, 1344, 132, -1);
if (phaseNum == '2'){
pause(200);
mouse(LEFT,106, 254);
pause(200);
int i = 0;
m10: readtext(MARK, #textMark, 20, 3, -1, -1, -1, -1, -1, 0, -1, winArrayTopX[i], winArrayTopY[i], winArrayBottomX[i], winArrayBottomY[i], -1);
if (textMark == '!')){
goto m13;
}else{
readtext (RU, #defeatWord, 40, 3, -1, -1, -1, #Color_Text_Defeat[0], #Color_Fon_Defeat[0], 5, -1, defeatArrayTopX[i], defeatArrayTopY[i], defeatArrayBottomX[i], defeatArrayBottomY[i], -1);
if(defeatWord == 'поражение'){
goto m13;
} else {
readtext (EN, #myName, 36, 3, -1, -1, -1, -1, -1, 0, 99, flagArrayTopX[i], flagArrayTopY[i], flagArrayBottomX[i], flagArrayBottomY[i], -1);
if(myName == 'Panteon'){
goto m8;
} else {
mouse(LEFT, enemiesArrayX[i]+rand(-50, 50), enemiesArrayY[i]+rand(-20, 20));
pause(1500);
readtext(NUM, #enemyPowerSTR, 40, 3, -1, -1, -1, #color_text_KIB_9[0], #color_fon_KIB_9[0], 5, -1, 1032, 451, 1261, 493, -1);
enemyPowerNUM = formatsn(del_space(enemyPowerSTR));
if (enemyPowerNUM + 30000 < записьМоейМощи()){
pause(200);
mouse(LEFT, 1345+rand(0, 50), 837+rand(0, 15));
pause(10000);
m7: readtext(RU, #homeBtn, 40, 3, -1, -1, -1, #color_text_KIB_13[0], #color_fon_KIB_13[0], 5, -1, 893, 893, 1000, 937, -1);
if(homeBtn == 'домо'){
mouse(LEFT, 957+rand(-10, 10), 912+rand(-10, 10));
} else {
pause(1000);
goto m7;
}
} else {
m13:;
i++;
mouse(LEFT, 106, 254);
goto m10;
}
}
}
}
m8: int j = 14;
m9: readtext(MARK, #textMark, 20, 3, -1, -1, -1, -1, -1, 0, -1, winArrayTopX[j], winArrayTopY[j], winArrayBottomX[j], winArrayBottomY[j], -1);
if (textMark == '!'){
goto m11;
}else{
readtext (RU, #defeatWord, 40, 3, -1, -1, -1, #Color_Text_Defeat[0], #Color_Fon_Defeat[0], 5, -1, defeatArrayTopX[j], defeatArrayTopY[j], defeatArrayBottomX[j], defeatArrayBottomY[j], -1);
if(defeatWord == 'поражение'){
goto m11;
} else {
readtext (EN, #myName, 36, 3, -1, -1, -1, -1, -1, 0, 99, flagArrayTopX[j], flagArrayTopY[j], flagArrayBottomX[j], flagArrayBottomY[j], -1);
if(myName == 'Panteon'){
goto m11;
} else {
mouse(LEFT, enemiesArrayX[i]+rand(-50, 50), enemiesArrayY[i]+rand(-20, 20));
pause(1500);
readtext(NUM, #enemyPowerSTR, 40, 3, -1, -1, -1, #color_text_KIB_9[0], #color_fon_KIB_9[0], 5, -1, 1032, 451, 1261, 493, -1);
enemyPowerNUM = formatsn(del_space(enemyPowerSTR));
if (enemyPowerNUM + 30000 < записьМоейМощи()){
pause(200);
mouse(LEFT, 1345+rand(0, 50), 837+rand(0, 15));
pause(10000);
m12: readtext(RU, #homeBtn, 40, 3, -1, -1, -1, #color_text_KIB_13[0], #color_fon_KIB_13[0], 5, -1, 893, 893, 1000, 937, -1);
if(homeBtn == 'домо'){
mouse(LEFT, 957+rand(-10, 10), 912+rand(-10, 10));
} else{
pause(1000);
goto m12;
}
} else {
m11:;
j--;
mouse(LEFT, 106, 254);
goto m9;
}
}
}
}
} else goto m6;
}
функции, которые используются в процессе работы
CODE:function записьМоейМощи(){
readtext(NUM, #myPowerSTR, 40, 3, -1, -1, -1, #color_text_KIB_10[0], #color_fon_KIB_10[0], 5, -1, 552, 451, 825, 493, -1);
myPowerNUM = formatsn(del_space(myPowerSTR));
return myPowerNUM;
}
CODE:function del_space(string t){
int aw=size(t);
char a[50];
strcpy(#a[0], t);
t="";
for (int n=0; n<aw; n++){
if (a[n]!=' ')t=t+a[n];
}
return t;
} |
|
|
Kibor |
Отправлено: 24 Октября, 2018 - 11:57:09
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Цитата: defeatWord == 'поражение'
CODE:defeatWord == "поражение" (для просмотра ссылки Вам необходимо авторизоваться) |
|
|
Kensi |
Отправлено: 24 Октября, 2018 - 12:09:09
|
Прохожий
Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2018
Репутация: 0
|
[quote=Kibor] Цитата: defeatWord == 'поражение'
CODE:defeatWord == "поражение" (для просмотра ссылки Вам необходимо авторизоваться) /quote]
нужно заменить одинарные на двойные во всем коде? потому что у меня везде до этого стоят одинарные в подобных условиях, а ошибка возникает тут.
Заменил, ошибка остается.
(Добавление)
[quote=Kensi] Kibor пишет: Цитата: defeatWord == 'поражение'
CODE:defeatWord == "поражение" (для просмотра ссылки Вам необходимо авторизоваться) /quote]
нужно заменить одинарные на двойные во всем коде? потому что у меня везде до этого стоят одинарные в подобных условиях, а ошибка возникает тут.
Заменил, ошибка остается.
также я правильно понял, что
в таких сеста надо сделать
?(Отредактировано автором: 24 Октября, 2018 - 12:23:07) |
|
|
Kensi |
Отправлено: 24 Октября, 2018 - 13:08:47
|
Прохожий
Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2018
Репутация: 0
|
Zireael пишет: Если сравнивается 1 символ, то можно в одинарных и двойных кавычках: '2' или "2"
Если несколько символов, то в двойных "123".
Выводите действия в textout или пишите в файл, тогда будет понятно в каком месте ошибка.
Строить логику на goto это не очень правильно. Трудно отследить что за чем выполнятется.
Цитата: winArrayTopX[i]
Переменная i++ увеличивается, при этом нигде нет проверки что не вышли за пределы массива.
спасибо, тоже решил так сделать, но я выводил messagebox. нашел проблемное место, щас буду разбираться с этим |
|
|
Zireael |
Отправлено: 25 Октября, 2018 - 02:11:47
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Можно заменить это:
CODE:function del_space(string t){
int aw=size(t);
char a[50];
strcpy(#a[0], t);
t="";
for (int n=0; n<aw; n++){
if (a[n]!=' ')t=t+a[n];
}
return t;
}
На это:
CODE:function del_space(string t)
{
regexreplace(-1, #t, t, " ", "");
return t;
}
Для примера:
CODE:string s="1 2 3";
messagebox(s); // с пробелами
s=del_space(s);
messagebox(s); // без пробелов
function del_space(string t)
{
regexreplace(-1, #t, t, " ", "");
return t;
} |
|
|
Kibor |
Отправлено: 25 Октября, 2018 - 02:22:50
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
out of memory в основном появляется если не правильно указана область в которой что то ищем или делаем.
Пример
CODE:int Image_0[5][5];
loadimage (#Image_0[0][0], "C:\Image_0.bmp");
int PosX_0[512];int PosY_0[512];
findimage(-1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 100, 50, 90, 200, -1);
100, 50, 90, 200 неправильная зона.
По x координата конца зоны меньше начала.
Скрипт выдаст out of memory
Проверяйте эти все
defeatArrayTopX[j], defeatArrayTopY[j], defeatArrayBottomX[j], defeatArrayBottomY[j]
и тд.
Что в них и не выходит ли j за массив не известно. |
|
|
|