Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: MacKlaud on August 25, 2019, 01:38:55 PM
-
Собственно приведу весь скрипт, может поможете его оптимизировать. Он нужен для упрощения создания скринов в игре. И должен прописывать координаты.
#name "Скриншот"
$h = hgetpid($_hwnd_self)
HSET($h,0)
$pos_x1 = 0
$pos_y1 = 0
$pos_x2 = 840
$pos_y2 = 0
$width = 840
$height = 610
$win_l = HGET (377, 200)
WNDPOS ($win_l, $pos_x1, $pos_y1)
WNDSIZE ($win_l, $width, $height)
HSET($win_l,1)
$no_line = 0
$file = inputbox("Введите название скриншота", "", 100)
$z = dialogbox("Наведите на левый верхний угол", 1, 100 )
if ($z = 2)
halt
end_if
$x1 = $_xmouse
$y1 = $_ymouse
$z = dialogbox("Наведите на нижний правый угол", 1, 100 )
$x2 = $_xmouse
$y2 = $_ymouse
sub(screen_1)
$z = dialogbox("Уберите мышку и нажмите ОК", 1, 5000)
MOVE (0,0)
GETSCREEN
SCREENSHOTFIX ($x1,$y1, $x2,$y2, StrConcat($file, ".bmp"))
end_sub
screen_1()
TFREADARR("var.cms", $arr)
print($arr[0])
FOR($a=0, $a < arrsize($arr))
IF(STRPOS($arr[$a], StrConcat("$",$file,"_x1")) != 0)
print("Замена")
INC($a)
TFDELETE("var.cms", $a)
TFWRITE("var.cms",StrConcat("$",$file,"_x1 = ",$x1),$a)
TFDELETE("var.cms", $a+1)
TFWRITE("var.cms",StrConcat("$",$file,"_y1 = ",$y1),$a+1)
TFDELETE("var.cms", $a+2)
TFWRITE("var.cms",StrConcat("$",$file,"_x2 = ",$x2),$a+2)
TFDELETE("var.cms", $a+3)
TFWRITE("var.cms",StrConcat("$",$file,"_y2 = ",$y2),$a+3)
$no_line = 1
//$a = arrsize($arr)+1
END_IF
INC($a)
END_CYC
IF($no_line = 0)
print("нет замены")
TFWrite("var.cms",StrConcat("$",$file,"_x1 = ",$x1))
TFWrite("var.cms",StrConcat("$",$file,"_y1 = ",$y1))
TFWrite("var.cms",StrConcat("$",$file,"_x2 = ",$x2))
TFWrite("var.cms",StrConcat("$",$file,"_y2 = ",$y2))
TFWrite("var.cms","")
END_IF
halt
А проблема главная в этом месте.
TFREADARR("var.cms", $arr)
print($arr[0])
FOR($a=0, $a < arrsize($arr))
IF(STRPOS($arr[$a], StrConcat("$",$file,"_x1")) != 0)
print("Замена")
INC($a)
TFDELETE("var.cms", $a)
TFWRITE("var.cms",StrConcat("$",$file,"_x1 = ",$x1),$a)
TFDELETE("var.cms", $a+1)
TFWRITE("var.cms",StrConcat("$",$file,"_y1 = ",$y1),$a+1)
TFDELETE("var.cms", $a+2)
TFWRITE("var.cms",StrConcat("$",$file,"_x2 = ",$x2),$a+2)
TFDELETE("var.cms", $a+3)
TFWRITE("var.cms",StrConcat("$",$file,"_y2 = ",$y2),$a+3)
$no_line = 1
//$a = arrsize($arr)+1
END_IF
INC($a)
END_CYC
Почему то не всегда находит строку в IF и соответственно дублирует координаты.
Для проверки писал имя 1, первый раз не нашел, последующие находил и заменял. При этом дубль уже сделался.
-
Зачем такие извраты?! Просто напиши в "var.cms" чтение всех необходимых параметров из INI файла.
В INI должны быть координаты и имя картинки, все что нужно.
В результате править нужно только этот INI файл.
-
Зачем такие извраты?! Просто напиши в "var.cms" чтение всех необходимых параметров из INI файла.
В INI должны быть координаты и имя картинки, все что нужно.
В результате править нужно только этот INI файл.
С INI еще не разбирался. А var.cms это просто выведеный из основного скрипта набор координат, которые я вводил до этого вручную, чтобы не мешался в основе. А этот скрипт написан для удобства обновления координат. Попробую с INI, где почитать про него?
И все же нет ответа на вопрос, почему IF работает через раз.
-
С INI еще не разбирался. А var.cms это просто выведеный из основного скрипта набор координат, которые я вводил до этого вручную, чтобы не мешался в основе. А этот скрипт написан для удобства обновления координат. Попробую с INI, где почитать про него?
И все же нет ответа на вопрос, почему IF работает через раз
Простое чтение из INI куда проще того что ты нагородил. Об INI как и об всем остальном написано в справке.
Нужно делать и смотреть записи в лог что он читает. Тебе там виднее что не так. Может дело в кодировке.
-
Простое чтение из INI куда проще того что ты нагородил. Об INI как и об всем остальном написано в справке.
Нужно делать и смотреть записи в лог что он читает. Тебе там виднее что не так. Может дело в кодировке.
Можно использовать #include "var.ini"?
Больше 200 параметров выводить по одному не очень.
-
Простое чтение из INI куда проще того что ты нагородил. Об INI как и об всем остальном написано в справке.
Нужно делать и смотреть записи в лог что он читает. Тебе там виднее что не так. Может дело в кодировке.
Можно использовать #include "var.ini"?
Больше 200 параметров выводить по одному не очень.
Конечно нет! INI это внешний файл параметров, он не может быть частью скрипта, у него совершенно другой синтаксис.
-
Конечно нет! INI это внешний файл параметров, он не может быть частью скрипта, у него совершенно другой синтаксис.
var.cms имел вид:
$hide_x1 = 515
$hide_y1 = 565
$hide_x2 = 640
$hide_y2 = 585
$present_x1 = 624
$present_y1 = 251
$present_x2 = 675
$present_y2 = 281
........
Скопировал его в var.ini. Проверил замену координат при новом скриншоте(там переделал скрипт для записи INI). И в основном скрипте вписал #include "var.ini". Все читается и координаты работают. Так как я не собираюсь туда кроме координат выносить ничего, то все нормально.
Если будет нужен именно конфиг, то он будет отдельным.
-
Ты сделал простой #include "var.cms" никакого ini здесь нет.
Переименуй чтоб никто не путался.
Так как и то и другое простой текстовый формат, а при импорте расширения не проверяются ты импортировал часть скрипта, хоть и простого.
-
Ты сделал простой #include "var.cms" никакого ini здесь нет.
Переименуй чтоб никто не путался.
Так как и то и другое простой текстовый формат, а при импорте расширения не проверяются ты импортировал часть скрипта, хоть и простого.
Я переименовал var.cms в var.ini. Туда и впрямь проще вставлять и менять значения переменных. Но вытаскивать параметры по одному или циклом не стал, а просто попробовал include. Все получилось, о чем и написал.
И спасибо Oraven`у за напоминание про ini. Теперь начал оптимизировать скрипт, вынося многие параметры в конфиг.
-
У тебя нет ini.
ini это определённая структура. Секции и т.д.
У тебя простой код кликера который ты заинклюдил. Расширение может быть любое, хоть txt оно его схавает. Но нормально если будет .cms, потому, что внутренности должны соответствовать синтаксису cms.
-
У тебя нет ini.
ini это определённая структура. Секции и т.д.
У тебя простой код кликера который ты заинклюдил. Расширение может быть любое, хоть txt оно его схавает. Но нормально если будет .cms, потому, что внутренности должны соответствовать синтаксису cms.
Ты читал мой первый пост про скрипт Скриншот? Я пытался работать именно с cms. Там возникла проблема с IF, не всегда мог найти строку и дублировал данные.
Oraven написал про ini. Я почитал по нему и проверил. INIWrite абсолютно заменил цикл с IF и помог мне именно обновлением данных без дублирования. А то что его запихал инклюдом и он работает, я уже понял.
А насчет синтаксиса, там всего одна секция дефолт и все данные это переменные, которых больше 200, из-за чего я их и вынес из основного кода.