# Trung tâm xử lý sự cố > Hỏi-Đáp Source Code >  Hỏi vê update mục auto target trong auto tự đánhh

## ykhoapasteur

tình hình là em rất muốn viết 1 cái auto target tghm =autoit. em mới tìm được trên mạng 1 cái source auto của minit nhưng dành cho phiên bản 39. và dĩ nhiên hiên nay em đang chơi phiên bản 1.3.6 của trung quốc nên không thể dùng auto được do có sự thay đổi về tọa độ và address của phiên bản.
anh chị nào biết thì chỉ em cách tìm address của mob trong phiên bản game 1.3.6 và cập nhật vào trong auto của minit. cám ơn.
file em đính kèm không được nên em post thẳng code vào đây luôn ( các anh chị chỉ cần giúp em phần auto target thôi, mục khác không cần đâu ^^)



```
#include <buttonconstants.au3>
#include <comboconstants.au3>
#include <editconstants.au3>
#include <guiconstantsex.au3>
#include <staticconstants.au3>
#include <tabconstants.au3>
#include <windowsconstants.au3>

func _filesavedialog ($stitle, $sinitdir, $sfilter = 'all (*.*)', $iopt = 0, $sdefaultfile = "", $sdefaultext = "", $maingui = 0)
    local $ifilelen = 65536 ; max chars in returned string
    ; api flags prepare
    local $iflag = bitor (bitshift (bitand ($iopt, 2),-10), bitshift (bitand ($iopt,16), 3 ))
    ; filter string to array convertion
    local $asflines = stringsplit ( $sfilter, '|'), $asfilter [$asflines [0] *2+1]
    local $i, $istart, $ifinal, $sufilter = ''
    $asfilter [0] = $asflines [0] *2
    for $i=1 to $asflines [0]
        $istart = stringinstr ($asflines [$i], '(', 0, 1)
        $ifinal = stringinstr ($asflines [$i], ')', 0,-1)
        $asfilter [$i*2-1] = stringstripws (stringleft ($asflines [$i], $istart-1), 3)
        $asfilter [$i*2] = stringstripws (stringtrimright (stringtrimleft ($asflines [$i], $istart), stringlen ($asflines [$i]) -$ifinal+1), 3)
        $sufilter = $sufilter & 'byte[' & stringlen ($asfilter [$i*2-1])+1 & '];byte[' & stringlen ($asfilter [$i*2])+1 & '];'
    next
    ; create api structures
    local $uofn = dllstructcreate ('dword;int;int;ptr;ptr;dword;dword;ptr;dword' & _
        ';ptr;int;ptr;ptr;dword;short;short;ptr;ptr;ptr;ptr;ptr;dword;dword' )
    local $ustitle  = dllstructcreate ('byte[' & stringlen ($stitle) +1 & ']')
    local $usinitdir= dllstructcreate ('byte[' & stringlen ($sinitdir) +1 & ']')
    local $usfilter = dllstructcreate ($sufilter & 'byte')
    local $usfile   = dllstructcreate ('char[' & $ifilelen & ']')
    local $usextn   = dllstructcreate ('byte[' & stringlen ($sdefaultext) +1 & ']')
    for $i=1 to $asfilter [0]
        dllstructsetdata ($usfilter, $i, $asfilter [$i])
    next
    ; set data of api structures
    dllstructsetdata ($ustitle, 1, $stitle)
    dllstructsetdata ($usinitdir, 1, $sinitdir)
    dllstructsetdata ($usfile, 1, $sdefaultfile)
    dllstructsetdata ($usextn, 1, $sdefaultext)
    dllstructsetdata ($uofn,  1, dllstructgetsize($uofn))
    dllstructsetdata ($uofn,  2, $maingui)
    dllstructsetdata ($uofn,  4, dllstructgetptr ($usfilter))
    dllstructsetdata ($uofn,  7, 1)
    dllstructsetdata ($uofn,  8, dllstructgetptr ($usfile))
    dllstructsetdata ($uofn,  9, $ifilelen)
    dllstructsetdata ($uofn, 12, dllstructgetptr ($usinitdir))
    dllstructsetdata ($uofn, 13, dllstructgetptr ($ustitle))
    dllstructsetdata ($uofn, 14, $iflag)
    dllstructsetdata ($uofn, 17, dllstructgetptr ($usextn))
    dllstructsetdata ($uofn, 23, bitshift (bitand ($iopt, 32), 5))
    ; call api function
    $ret = dllcall ('comdlg32.dll', 'int', 'getsavefilename', _
            'ptr', dllstructgetptr ($uofn) )
    if $ret [0] then
        return stringstripws(dllstructgetdata ($usfile, 1),3)
    else
        seterror (1)
        return ""
    endif
endfunc

func _memoryopen($iv_pid, $iv_desiredaccess = 2035711, $iv_inherithandle = 1)
    if not processexists($iv_pid) then
        seterror(1)
        return 0
    endif
    local $ah_handle[2] = [dllopen("kernel32.dll") ]
    if @error then
        seterror(2)
        return 0
    endif
    local $av_openprocess = dllcall($ah_handle[0], "int", "openprocess", "int", $iv_desiredaccess, "int", $iv_inherithandle, "int", $iv_pid)
    if @error then
        dllclose($ah_handle[0])
        seterror(3)
        return 0
    endif
    $ah_handle[1] = $av_openprocess[0]
    return $ah_handle
endfunc


func _memoryread($iv_address, $ah_handle, $sv_type = "dword")
    if not isarray($ah_handle) then
        seterror(1)
        return 0
    endif
    local $v_buffer = dllstructcreate($sv_type)
    if @error then
        seterror(@error + 1)
        return 0
    endif
    dllcall($ah_handle[0], "int", "readprocessmemory", "int", $ah_handle[1], "int", $iv_address, "ptr", dllstructgetptr($v_buffer), "int", dllstructgetsize($v_buffer), "int", "")
    if not @error then
        local $v_value = dllstructgetdata($v_buffer, 1)
        return $v_value
    else
        seterror(6)
        return 0
    endif
endfunc


func _memorywrite($iv_address, $ah_handle, $v_data, $sv_type = "dword")
    if not isarray($ah_handle) then
        seterror(1)
        return 0
    endif
    local $v_buffer = dllstructcreate($sv_type)
    if @error then
        seterror(@error + 1)
        return 0
    else
        dllstructsetdata($v_buffer, 1, $v_data)
        if @error then
            seterror(6)
            return 0
        endif
    endif
    dllcall($ah_handle[0], "int", "writeprocessmemory", "int", $ah_handle[1], "int", $iv_address, "ptr", dllstructgetptr($v_buffer), "int", dllstructgetsize($v_buffer), "int", "")
    if not @error then
        return 1
    else
        seterror(7)
        return 0
    endif
endfunc


func _memoryclose($ah_handle)
    if not isarray($ah_handle) then
        seterror(1)
        return 0
    endif
    dllcall($ah_handle[0], "int", "closehandle", "int", $ah_handle[1])
    if not @error then
        dllclose($ah_handle[0])
        return 1
    else
        dllclose($ah_handle[0])
        seterror(2)
        return 0
    endif
endfunc
global $baseadd = 9619820, $exp_array = 9622384
global $online_add_status = 9632960, $esi
dim $sendok = false, $memid, $curentskill, $mobbug, $pet_check, $pethp_min, $pethp_add, $timerpet, $timerpick
dim $title,$base_add, $pick_check, $skill1_repeat, $skill2_repeat, $timerstamp2, $hp_ok, $mp_ok, $hpstamp, $mpstamp, $boss3_lvl, $boss_check
dim $mobx[769], $moby[769], $mobz[769], $mobid[769], $moblvl[769], $mobdis[769], $mobhp[769], $mobhpm[769], $mobtype[769], $mob_add, $mob_id_add, $hp_add
dim $lvl_min, $lvl_max, $distance, $dis_x, $dis_y, $range, $point_check, $hp_check, $count, $timerstamp, $stoptarget, $stoppick
dim $skill1_check, $skill2_check, $autohp_check, $automp_check, $hp1, $mp1, $skill1_check, $skill2_check, $skill1_time, $skill2_time, $lastmob
dim $skill_list = "{f1}|{f2}|{f3}|{f4}|{f5}|{f6}|{f7}|{f8}|1|2|3|4|5|6"
dim $list_windows = "minit|the gioi hoan my|element client|vl|tit|tt|vm|ps|kk|shop|phamtin.co.cc|min-it.blogspot.com"
dim $jobid, $name_add, $exp_add, $lv_add, $target_check, $timerf, $timerweapon, $weapon_time, $weapon_check, $warning_check, $char_online_status
dim $info_check, $smart_tg_check, $imin, $imax
$minitauto = guicreate("auto tghm 1.33 - minit", 400, 286, 240, 185)
guiseticon("c:\documents and settings\administrator\desktop\icon\tit.ico")
guisetonevent($gui_event_close, "altq")
$tabs = guictrlcreatetab(2, 2, 395, 256)
guictrlsetresizing(-1, $gui_dockwidth+$gui_dockheight)
$main = guictrlcreatetabitem("main")
$info = guictrlcreategroup("char info", 10, 32, 161, 121)
$hp_id = guictrlcreatelabel("", 16, 70, 135, 82)
$job_id = guictrlcreatelabel("", 16, 49, 65, 18)
$lv_id = guictrlcreatelabel("", 90, 49, 65, 18)
$cor = guictrlcreatelabel("", 90, 129, 70, 18)
guictrlcreategroup("", -99, -99, 1, 1)
$target = guictrlcreategroup("target setting", 184, 32, 201, 177)
$mob = guictrlcreatelabel("mob level", 192, 56, 53, 18)
$lvl_min_id = guictrlcreateinput("", 249, 54, 41, 22)
guictrlsettip($lvl_min_id, "nhập vào cấp độ nhỏ nhất của quái cần target", "min mob level", 1, 1)
$lvl_max_id = guictrlcreateinput("", 294, 54, 41, 22)
guictrlsettip($lvl_max_id, "nhập vào cấp độ lớn nhất của quái cần target"& @crlf&"nếu muốn target quái cùng cấp thì nhập vào cấp min và max giống nhau nha", "max mob level", 1, 1)
$distance_id = guictrlcreateinput("", 249, 86, 41, 22)
guictrlsettip($distance_id, "nhập vào khoảng cách target quái"& @crlf&"nếu sử dụng use base point thì đây là phạm vi target quái ngẫu nhiên."&@crlf&"nếu trong phạm vi này có quái thì sẽ target con đầu tiên tìm thấy (tốc độ target rất nhanh, tránh bị ks)"&@crlf&"nếu không tìm thấy quái trong phạm vi này thì sẽ target con quái gần nhất (tốc độ target lâu hơn 1 chút, nhưng cũng khá nhanh)"&@crlf&"còn nếu không sử dụng use base point thì đây là cự ly target quái", "khoảng cách", 1, 1)
$range_id = guictrlcreateinput("", 249, 117, 41, 22)
guictrlsettip($range_id, "bán kính train"&@crlf&"khu vực train là 1 hình vuông có tâm là base point, cạnh bằng 2 lần bán kính", "range", 1, 1)
guictrlcreatelabel("distance ", 193, 88, 49, 18)
$range = guictrlcreatelabel("range", 193, 120, 35, 18)
$target_check_id = guictrlcreatecheckbox("auto target", 206, 184, 74, 17)
guictrlsetstate(-1, $gui_checked)
guictrlsettip($target_check_id, "cho phép auto tự động target quái","", 1, 1)
$cord = guictrlcreatelabel("base cord", 193, 155, 55, 18)
$dis_y_id = guictrlcreateinput("", 294, 152, 41, 22)
guictrlsettip($dis_y_id, "tọa độ y"," điểm train", 1, 1)
$dis_x_id = guictrlcreateinput("", 249, 152, 41, 22)
guictrlsettip($dis_x_id, "tọa độ x"," điểm train", 1, 1)
$dis_z_id = guictrlcreateinput("", 337, 152, 41, 22)
$smart_tg_check_id = guictrlcreatecheckbox("smart target", 294, 184, 80, 17)
guictrlsettip($smart_tg_check_id, "tính năng này sẽ giúp target quái nhanh hơn"&@crlf&"đồng thời tiết kiệm tài nguyên máy tính rất nhiều"&@crlf&"nhất là ở các máy có cpu tốc độ xử lý chậm","target thông minh", 1, 1)
guictrlsetstate(-1, $gui_checked)
$save_point_id = guictrlcreatebutton("set cord", 294, 118, 85, 18, 0)
guictrlsettip($save_point_id, "lưu tọa độ điểm train"," điểm train", 1, 1)
guictrlsetonevent($save_point_id, "save_point")
$point_check_id = guictrlcreatecheckbox("base point", 294, 88, 74, 17)
guictrlsettip($point_check_id, "sử dụng chế độ train theo khu vực"&@crlf&"nếu bị lure ra khỏi khu vực train thì sẽ hủy bỏ con quái đang target,"&@crlf&"ngưng nhặt đồ, target lại con quái khác trong khu vực train"&@crlf&"khi đã quay lại khu vực train lại nhặt đồ bình thường"&@crlf&"base point và range chỉ có tác dụng khi ô base point được đánh dấu","base point", 1, 1)
guictrlcreategroup("", -99, -99, 1, 1)
$recover = guictrlcreategroup("recover", 10, 160, 161, 90)
$hpkey = guictrlcreatecombo("", 120, 184, 45, 25)
guictrlsettip($hpkey, "chọn phím phục hồi máu","phục hồi", 1, 1)
guictrlsetdata(-1, $skill_list)
$mpkey = guictrlcreatecombo("", 120, 214, 45, 25)
guictrlsettip($mpkey, "chọn phím phục hồi mana","phục hồi", 1, 1)
guictrlsetdata(-1, $skill_list)
$hp1_id = guictrlcreateinput("", 77, 184, 38, 22)
guictrlsettip($hp1_id, "nhập vào lượng máu còn lại","phục hồi", 1, 1)
$mp1_id = guictrlcreateinput("", 77, 214, 38, 22)
guictrlsettip($mp1_id, "nhập vào lượng mana còn lại","phục hồi", 1, 1)
$autohp_check_id = guictrlcreatecheckbox("min hp", 15, 186, 58, 17)
guictrlsetstate(-1, $gui_checked)
$automp_check_id = guictrlcreatecheckbox("min mp", 15, 216, 58, 17)
guictrlsetstate(-1, $gui_checked)
guictrlcreategroup("", -99, -99, 1, 1)
$warning_check_id = guictrlcreatecheckbox("warning", 206, 220, 74, 17)
guictrlsetstate(-1, $gui_checked)
guictrlsettip($warning_check_id, "nếu chọn tính năng này thì khi nhân vật chết hoặc bị ngắt kết nối"&@crlf&"loa hệ thống sẽ phát ra một bản nhạc để cảnh báo"&@crlf&"cho đến khi nhân vật sống lại hoặc dừng auto", "tính năng cảnh báo", 1, 1)
$info_id = guictrlcreatecheckbox("show info", 293, 220, 74, 17)
guictrlsetstate(-1, $gui_checked)
guictrlsettip($info_id, "tùy chọn này sẽ giúp hiển thị thông tin của nhân vật trên auto"&@crlf&"nếu phần này không được chọn thì sẽ không hiện thông tin nhân vật "&@crlf&"nhưng cũng tiết kiệm được tài nguyên máy tính lắm đấy", "thông tin nhân vật", 1, 1)
$skill = guictrlcreatetabitem("skill")
$actack = guictrlcreategroup("actack", 8, 32, 201, 217)
$skill1_check_id = guictrlcreatecheckbox("skill 1", 13, 55, 47, 17)
guictrlsetstate(-1, $gui_checked)
$skill2_check_id = guictrlcreatecheckbox("skill 2", 13, 80, 47, 17)
guictrlsetstate(-1, $gui_checked)
$skill_1_key = guictrlcreatecombo("", 63, 52, 45, 25)
guictrlsettip($skill_1_key, "chọn phím tắt, có thể sài skill liên hoàn", "skill 1", 1, 1)
guictrlsetdata(-1, $skill_list)
$skill_2_key = guictrlcreatecombo("", 63, 77, 45, 25)
guictrlsettip($skill_2_key, "chọn phím tắt, có thể sài skill liên hoàn", "skill 2", 1, 1)
guictrlsetdata(-1, $skill_list)
$skill1_time_id = guictrlcreateinput("", 112, 52, 38, 22)
guictrlsettip($skill1_time_id, "delay = thời gian chuẩn bị + thời gian hồi skill"&@crlf&"nếu sài skill liên hoàn thì để thời gian bằng tổng thời gian skill liên hoàn", "delay", 1, 1)
$skill2_time_id = guictrlcreateinput("", 112, 77, 38, 22)
guictrlsettip($skill2_time_id, "delay = thời gian chuẩn bị + thời gian hồi skill"&@crlf&"nếu sài skill liên hoàn thì để thời gian bằng tổng thời gian skill liên hoàn", "delay", 1, 1)
$skill1_repeat_id = guictrlcreateinput("", 154, 52, 38, 22)
guictrlsettip($skill1_repeat_id, "số lần đánh", "loop", 1, 1)
$skill2_repeat_id = guictrlcreateinput("", 154, 77, 38, 22)
guictrlsettip($skill2_repeat_id, "số lần đánh", "loop", 1, 1)
guictrlcreategroup("", -99, -99, 1, 1)
$pet = guictrlcreategroup("", 214, 32, 177, 121)
$pet_check_id = guictrlcreatecheckbox("buft pet", 272, 32, 60, 17)
guictrlsettip($pet_check_id, "nếu lượng hp của pet nhỏ hơn pet min hp thì sẽ sử dụng skill để heal máu cho pet"&@crlf&"nếu hp=0 (pet chết) thì sẽ hồi sinh pet và rồi pet ra đánh tiếp", "sử dụng chức năng buff pet.", 1 , 1) 
$pethp_add_id = guictrlcreateinput("", 257, 56, 38, 22)
guictrlsettip($pethp_add_id, "là số máu hiện tại của pet đang sử dụng khi đang auto"&@crlf&" đồng thời cũng chính là số máu của pet mà bạn nhập vào để tìm pet", "pet hp", 1, 1)
$label1 = guictrlcreatelabel("hp pet", 219, 58, 35, 18)
$label2 = guictrlcreatelabel("id pet", 301, 58, 31, 18)
$petid_id = guictrlcreateinput("3", 338, 56, 38, 22)
$petminhp = guictrlcreatelabel("pet min hp", 219, 97, 54, 18)
$pethp_min_id = guictrlcreateinput("3821", 289, 95, 45, 22)
guictrlsettip($pethp_min_id, "chứa lượng máu tối thiểu của pet"&@crlf&"nếu máu pet nhỏ hơn giá trị này thì sẽ heal pet","pet min hp", 1, 1) 
$healpet_key = guictrlcreatecombo("{f6}", 338, 95, 45, 25)
guictrlsettip($healpet_key, "chọn phím để heal máu cho pet", "heal pet", 1, 1)
guictrlsetdata(-1, $skill_list)
$hspet_key = guictrlcreatecombo("{f5}", 289, 121, 45, 25)
guictrlsettip($hspet_key, "chọn phím để hồi sinh pet khi pet chết", "hồi sinh pet", 1, 1)
guictrlsetdata(-1, $skill_list)
$goipet_key = guictrlcreatecombo("{f4}", 338, 121, 45, 25)
guictrlsettip($goipet_key, "chọn phím gọi pet ra sau khi đã hồi sinh", "gọi pet", 1, 1)
guictrlsetdata(-1, $skill_list)
guictrlcreategroup("", -99, -99, 1, 1)
$more = guictrlcreategroup("", 214, 151, 177, 97)
$pick_check_id = guictrlcreatecheckbox("pick up", 219, 216, 57, 17)
guictrlsetstate(-1, $gui_checked)
guictrlsettip($pick_check_id, "chức năng nhặt đồ ở đây kết hợp 2 chế độ nhặt đồ theo time định kỳ 400ms"&@crlf&"và nhặt đồ trong khi đang tìm quái (bảo đảm không bao giờ bỏ sót đồ)."&@crlf&"không nên để skill time nhỏ hơn 400ms để tránh bị mất đồ", "nhặt đồ", 1, 1)
$pick_key = guictrlcreatecombo("", 289, 213, 45, 25)
guictrlsetdata(-1, $skill_list)
guictrlsettip($pick_key, "chọn phím nhặt đồ", "nhặt đồ", 1, 1)
$weapon_check_id = guictrlcreatecheckbox("weapon", 219, 177, 65, 17)
guictrlsettip($weapon_check_id, "tự động đổi vũ khí theo thời gian nhập vào","đổi vũ khí", 1, 1)
$weapon_key = guictrlcreatecombo("", 338, 175, 45, 25)
guictrlsetdata(-1, $skill_list)
guictrlsettip($weapon_key, "chọn phím chứa vũ khí cần đổi","đổi vũ khí", 1, 1)
$weapon_time_id = guictrlcreateinput("", 289, 175, 45, 22)
guictrlsettip($weapon_time_id, "thời gian để đổi vũ khí (s) tính từ lúc bắt đầu auto","đổi vũ khí", 1, 1)
$tools = guictrlcreatetabitem("tools")
$group2 = guictrlcreategroup("windows rename", 16, 32, 353, 105)
$title1 = guictrlcreatecombo("", 86, 62, 121, 25)
guictrlsetdata(-1, getlisttitle())
$title2 = guictrlcreatecombo("", 85, 93, 121, 25)
guictrlsetdata(-1, $list_windows)
$label3 = guictrlcreatelabel("curent name", 21, 64, 64, 17)
$label4 = guictrlcreatelabel("change to", 21, 94, 57, 17)
$hide_id = guictrlcreatebutton("hide", 225, 63, 58, 20, 0)
guictrlsetonevent($hide_id, "hide")
guictrlsettip($hide_id, "ẩn của sổ game", "ẩn game", 1 ,1)
$show_id = guictrlcreatebutton("show", 288, 63, 58, 20, 0)
guictrlsetonevent($show_id, "show")
guictrlsettip($show_id, "hiện cửa sổ game đã ẩn", "hiện game", 1 ,1)
$change_id = guictrlcreatebutton("change", 225, 94, 122, 20, 0)
guictrlsetonevent($change_id, "add_id")
guictrlsettip($change_id, "tên cửa sổ game được chọn ở phần current name sẽ được đổi sang tên ở phần change to"&@crlf&"đồng thời chương trình sẽ tự động cập nhật lại danh sách tên các của sổ game đang chạy", "đổi tên", 1 ,1)
guictrlcreategroup("", -99, -99, 1, 1)
$group3 = guictrlcreategroup("auto sell", 16, 142, 353, 105)
guictrlcreategroup("", -99, -99, 1, 1)
$tabsheet1 = guictrlcreatetabitem("about")
guictrlcreatetabitem("")
$load_id = guictrlcreatebutton("load", 345, 262, 50, 20, 0)
guictrlsettip($load_id, "nạp cấu hình", "load",1 , 1)
guictrlsetonevent($load_id, "openfile")
$save_id = guictrlcreatebutton("save", 281, 262, 50, 20, 0)
guictrlsettip($save_id, "lưu cấu hình", "save",1 , 1)
guictrlsetonevent($save_id, "savesetting")
$main_title = guictrlcreatecombo("", 82, 261, 121, 25)
guictrlsetdata($main_title, getlisttitle())
guictrlsettip($main_title, "chọn tên cửa sổ cần auto", "client name",1 , 1)
$send_id = guictrlcreatebutton("star", 216, 262, 50, 20, 0)
guictrlsetonevent($send_id, "sendmouseclick")
guictrlsettip($send_id, "bắt đầu auto - phím tắt là insert", "", 1 ,1)
$name = guictrlcreatelabel("client name", 14, 264, 61, 17)
guisetstate(@sw_show)
opt("guioneventmode", 1)
opt("sendkeydelay", 10)
opt("sendkeydowndelay", 10)
opt("sendcapslockmode", 0)
opt("wintitlematchmode", 3)
hotkeyset("{insert}", "sendmouseclick")

do    
    $msg = guigetmsg()
    if $sendok then
        $char_online_status = _memoryread($online_add_status, $memid)
        warning()
        if $char_online_status  = 1 then
            if $pet_check then
                guictrlsetdata($pethp_add_id, _memoryread($pethp_add, $memid))
                buffpet()
            endif
            if timerdiff($timerf) >=500 then
            getinfo()
            $timerf = timerinit()
            endif
            if (getcurentmobid() = 0) then
                if (not $stoppick) and ($pick_check) then
                controlsend($title, "", "", guictrlread($pick_key))
                endif
                $curentmobid = getmobinf()
                if (getcurentmobid() = 0) then
                setcurentmobid($curentmobid)
                $lastmob = $curentmobid
                $timerstamp2 = timerinit()
                sleep(10)
                $timerstamp1 = timerinit()
                $curentskill = 1
                endif
            endif
            if timerdiff($timerstamp2) > 300000 then
                $mobbug = getcurentmobid()
                setcurentmobid(0)
            endif
            if $pet_check then
                buffpet()
            endif
            if $skill1_check then
                skill1()
            endif
            if $skill2_check then
                skill2()
            endif
            if $autohp_check then
                skillhp()
            endif
            if $automp_check then
                skillmp()
            endif
            if $point_check then
                canceltarget()
            endif
            if (not $stoppick) and ($pick_check) and (timerdiff($timerpick) > 400) then
                controlsend($title, "", "", guictrlread($pick_key))
                sleep(100)
                $timerpick = timerinit()
            endif
            if ($weapon_check) and (timerdiff($timerweapon) >= $weapon_time) then
                controlsend($title, "", "", guictrlread($weapon_key))
                sleep(100)
                $timerweapon = timerinit()
            endif    
        endif    
    endif
    sleep(5)
until $msg = $gui_event_close

func add_id()
    winsettitle(guictrlread($title1), "", guictrlread($title2))
    guictrlsetdata($main_title, getlisttitle())
    guictrlsetdata($title1, getlisttitle())
endfunc

func getinfo()
    if $info_check then
        guictrlsetdata($lv_id, "cấp"&" "&getlv())
        guictrlsetdata($hp_id, "hp:"&" "&gethp()&"/"&gethpmax()&@crlf&@crlf&"mp:"&" "&getmp()&"/"&getmpmax()&@crlf&@crlf&"exp: "&round((getexp()*100)/getmaxexp(), 1)&"%")
        guictrlsetdata($cor, getpx()&", "&getpy()&"↑ "&getpz())
    endif    
endfunc    

func warning()
    if ($warning_check) and ((gethp() = 0) or ($char_online_status  <> 1))then    
    beep(495,500)
    beep(440,500)
    beep(392,500)
    beep(440,500)
    beep(495,500)
    sleep(100)
    beep(495,500)
    sleep(100)
    beep(495,1000)
    beep(440,500)
    sleep(100)
    beep(440,500)
    sleep(100)
    beep(440,1000)
    sleep(100)
    beep(495,500)
    beep(594,500)
    sleep(100)
    beep(594,1000)
    do
    until (gethp() <> 0) or ($char_online_status  <> 1) or ($sendok =false)
    endif
endfunc

func sendmouseclick()
    $sendok = not($sendok)
        if $sendok then
        guictrlsetdata($send_id, "stop")
        guictrlsettip($send_id, "dừng auto", "", 1 ,1)
        $char_online_status = _memoryread($online_add_status, $memid)
        $title = guictrlread($main_title)
        guictrlsetstate($main_title, $gui_disable)
        guictrlsetstate($petid_id, $gui_disable)
        guictrlsetstate($pethp_add_id, $gui_disable)
        guictrlsetstate($pethp_min_id, $gui_disable)
        guictrlsetstate($skill_1_key, $gui_disable)
        guictrlsetstate($skill_2_key, $gui_disable)
        guictrlsetstate($skill1_time_id, $gui_disable)
        guictrlsetstate($skill2_time_id, $gui_disable)
        guictrlsetstate($skill1_repeat_id, $gui_disable)
        guictrlsetstate($skill2_repeat_id, $gui_disable)
        guictrlsetstate($healpet_key, $gui_disable)
        guictrlsetstate($hspet_key, $gui_disable)
        guictrlsetstate($goipet_key, $gui_disable)
        guictrlsetstate($hpkey, $gui_disable)
        guictrlsetstate($mpkey, $gui_disable)
        guictrlsetstate($weapon_time_id, $gui_disable)
        guictrlsetstate($weapon_key, $gui_disable)
        guictrlsetstate($weapon_check_id, $gui_disable)
        guictrlsetstate($pick_key, $gui_disable)
        guictrlsetstate($autohp_check_id, $gui_disable)
        guictrlsetstate($automp_check_id, $gui_disable)
        guictrlsetstate($skill1_check_id, $gui_disable)
        guictrlsetstate($skill2_check_id, $gui_disable)
        guictrlsetstate($point_check_id, $gui_disable)
        guictrlsetstate($pick_check_id, $gui_disable)
        guictrlsetstate($pet_check_id, $gui_disable)
        guictrlsetstate($info_id, $gui_disable)
        guictrlsetstate($warning_check_id, $gui_disable)
        guictrlsetstate($target_check_id, $gui_disable)
        guictrlsetstate($smart_tg_check_id, $gui_disable)
        guictrlsetstate($title1, $gui_disable)
        guictrlsetstate($title2, $gui_disable)
        $pid = wingetprocess($title)
        $memid = _memoryopen($pid)
        $lvl_min = guictrlread($lvl_min_id)
        guictrlsetstate($lvl_min_id, $gui_disable)
        $lvl_max = guictrlread($lvl_max_id)
        guictrlsetstate($lvl_max_id, $gui_disable)
        $distance = guictrlread($distance_id)
        guictrlsetstate($distance_id, $gui_disable)
        $dis_x = guictrlread($dis_x_id)
        guictrlsetstate($dis_x_id, $gui_disable)
        $dis_y = guictrlread($dis_y_id)
        guictrlsetstate($dis_y_id, $gui_disable)
        guictrlsetstate($dis_z_id, $gui_disable)
        $range = guictrlread($range_id)
        guictrlsetstate($range_id, $gui_disable)
        $hp1 = guictrlread($hp1_id)
        guictrlsetstate($hp1_id, $gui_disable)
        $mp1 = guictrlread($mp1_id)
        guictrlsetstate($mp1_id, $gui_disable)
        $timerstamp = timerinit()
        $timerpet = timerinit()
        $timerpick = timerinit()
        $timerf = timerinit()
        $timerweapon = timerinit()
        $searched = false
        $stoptarget = false
        $stoppick = false
        $next = 0
        $next1 = 0
        $next2 = 0
        $count = 0
        $lastmob = 0
        $curentskill = 1
        $mobbug = 0
        $hp_ok = true
        $mp_ok = true
        $mob_add = _memoryread($baseadd, $memid)
        $mob_add = _memoryread($mob_add + 8, $memid)
        $mob_add = _memoryread($mob_add + 36, $memid)
        $mob_add = _memoryread($mob_add + 24, $memid)
        $esi = _memoryread(_memoryread($baseadd, $memid) + 32, $memid)
        $mob_id_add = $esi + 2596
        $hp_add = $esi + 1104
        $exp_add = $esi + 1112
        $lv_add = $esi + 1096
        $jobid = _memoryread($esi + 1504, $memid)
        if ($jobid = 0) and ($char_online_status  = 1) then
        guictrlsetdata($job_id, "kiếm khách")
        elseif $jobid = 1 then
        guictrlsetdata($job_id, "pháp sư")
        elseif $jobid = 4 then
        guictrlsetdata($job_id, "tiên thú")
        elseif $jobid = 5 then
        guictrlsetdata($job_id, "thần thú")
        elseif $jobid = 6 then
        guictrlsetdata($job_id, "vũ mang")
        elseif $jobid = 7 then
        guictrlsetdata($job_id, "vũ linh")
        endif
        $name_add = _memoryread(_memoryread($esi + 1496, $memid), $memid, "wchar[30]")
        guictrlsetdata($info, $name_add)
        if guictrlread($target_check_id) = $gui_unchecked then
            $target_check = false
        elseif guictrlread($target_check_id) = $gui_checked then
            $target_check = true
        endif
        if guictrlread($smart_tg_check_id) = $gui_unchecked then
            $smart_tg_check = false
        elseif guictrlread($smart_tg_check_id) = $gui_checked then
            $smart_tg_check = true
        endif
        if guictrlread($info_id) = $gui_unchecked then
            $info_check = false
        elseif guictrlread($info_id) = $gui_checked then
            $info_check = true
        endif
        if guictrlread($point_check_id) = $gui_unchecked then
            $point_check = false
        elseif guictrlread($point_check_id) = $gui_checked then
            $point_check = true
        endif
        if guictrlread($warning_check_id) = $gui_unchecked then
            $warning_check = false
        elseif guictrlread($warning_check_id) = $gui_checked then
            $warning_check= true
        endif
        if guictrlread($autohp_check_id) = $gui_unchecked then
            $autohp_check = false
        elseif guictrlread($autohp_check_id) = $gui_checked then
            $autohp_check = true
        endif
        if guictrlread($automp_check_id) = $gui_unchecked then
            $automp_check = false
        elseif guictrlread($automp_check_id) = $gui_checked then
            $automp_check = true
        endif
        if (guictrlread($skill1_check_id) = $gui_unchecked) or (guictrlread($skill1_time_id) = 0) then
            $skill1_check = false
            $skill1_time = 0
            $skill1_repeat = 0
        elseif guictrlread($skill1_check_id) = $gui_checked then
            $skill1_check = true
            $skill1_time = guictrlread($skill1_time_id)
            $skill1_repeat = guictrlread($skill1_repeat_id)
        endif
        if (guictrlread($skill2_check_id) = $gui_unchecked) or (guictrlread($skill2_time_id) = 0) then
            $skill2_check = false
            $skill2_time = 0
            $skill2_repeat = 0
        elseif guictrlread($skill2_check_id) = $gui_checked then
            $skill2_check = true
            $skill2_time = guictrlread($skill2_time_id)
            $skill2_repeat = guictrlread($skill2_repeat_id)
        endif
        if guictrlread($pick_check_id) = $gui_unchecked then
            $pick_check = false
            $pick_time = 0
        elseif guictrlread($pick_check_id) = $gui_checked then
            $pick_check = true
        endif
        if guictrlread($weapon_check_id) = $gui_unchecked then
            $weapon_check = false
            $weapon_time = 0
        elseif guictrlread($weapon_check_id) = $gui_checked then
            $weapon_check = true
            $weapon_time = (guictrlread($weapon_time_id)*1000)
        endif
        if guictrlread($pet_check_id) = $gui_unchecked then
            $pet_check = false
        elseif guictrlread($pet_check_id) = $gui_checked then
            $pet_check = true
            $pethp_min = guictrlread($pethp_min_id)
            if guictrlread($petid_id) = "" then
                for $i = 0 to 9
                    $petadd = _memoryread(_memoryread($esi + 3040, $memid) + $i * 4 + 16, $memid) + 56
                    if _memoryread($petadd, $memid) = guictrlread($pethp_add_id) then
                        $pethp_add = $petadd
                        guictrlsetdata($petid_id, $i)
                        exitloop 1
                    endif
                next
            else
                $pethp_add = _memoryread(_memoryread($esi + 3040, $memid) + guictrlread($petid_id) * 4 + 16, $memid) + 56
                guictrlsetdata($pethp_add_id, _memoryread($pethp_add, $memid))
            endif
        endif
        if     $smart_tg_check then
            for $i = 768 to 0 step -1
            $buffer2 = _memoryread($mob_add + 4 * $i, $memid)
                if $buffer2 <> 0 then
                    $buffer2 = _memoryread($buffer2 + 4, $memid)    
                    $mobid = _memoryread($buffer2 + 284, $memid)
                    if $mobid = getcurentmobid() then
                        $imin = $i - 80
                        $imax = $i + 80
                        exitloop 
                    endif
                endif
            next
        else    
            $imin = 0
            $imax = 768
        endif    
    else
        _memoryclose($memid)
        guictrlsetdata($info, "char info")
        guictrlsetdata($send_id, "star")
        guictrlsettip($send_id, "bắt đầu auto", "", 1 ,1)
        guictrlsetstate($main_title, $gui_enable)
        guictrlsetstate($lvl_min_id, $gui_enable)
        guictrlsetstate($lvl_max_id, $gui_enable)
        guictrlsetstate($distance_id, $gui_enable)
        guictrlsetstate($dis_x_id, $gui_enable)
        guictrlsetstate($dis_y_id, $gui_enable)
        guictrlsetstate($dis_z_id, $gui_enable)
        guictrlsetstate($range_id, $gui_enable)
        guictrlsetstate($hp1_id, $gui_enable)
        guictrlsetstate($mp1_id, $gui_enable)
        guictrlsetstate($petid_id, $gui_enable)
        guictrlsetstate($pethp_add_id, $gui_enable)
        guictrlsetstate($pethp_min_id, $gui_disable)
        guictrlsetstate($skill_1_key, $gui_enable)
        guictrlsetstate($skill_2_key, $gui_enable)
        guictrlsetstate($skill1_time_id, $gui_enable)
        guictrlsetstate($skill2_time_id, $gui_enable)
        guictrlsetstate($skill1_repeat_id, $gui_enable)
        guictrlsetstate($skill2_repeat_id, $gui_enable)
        guictrlsetstate($healpet_key, $gui_enable)
        guictrlsetstate($hspet_key, $gui_enable)
        guictrlsetstate($goipet_key, $gui_enable)
        guictrlsetstate($hpkey, $gui_enable)
        guictrlsetstate($mpkey, $gui_enable)
        guictrlsetstate($pick_key, $gui_enable)
        guictrlsetstate($weapon_time_id, $gui_enable)
        guictrlsetstate($weapon_key, $gui_enable)
        guictrlsetstate($weapon_check_id, $gui_enable)
        guictrlsetstate($autohp_check_id, $gui_enable)
        guictrlsetstate($automp_check_id, $gui_enable)
        guictrlsetstate($skill1_check_id, $gui_enable)
        guictrlsetstate($skill2_check_id, $gui_enable)
        guictrlsetstate($point_check_id, $gui_enable)
        guictrlsetstate($pick_check_id, $gui_enable)
        guictrlsetstate($pet_check_id, $gui_enable)
        guictrlsetstate($pethp_min_id, $gui_enable)
        guictrlsetstate($info_id, $gui_enable)
        guictrlsetstate($warning_check_id, $gui_enable)
        guictrlsetstate($target_check_id, $gui_enable)
        guictrlsetstate($smart_tg_check_id, $gui_enable)
        guictrlsetstate($title1, $gui_enable)
        guictrlsetstate($title2, $gui_enable)
    endif
endfunc

func getpx()
    return int(_memoryread($esi + 60, $memid, "float") / 10 + 401)
endfunc


func getpy()
    return int(_memoryread($esi + 68, $memid, "float") / 10 + 551)
endfunc


func getpz()
    return int(_memoryread($esi + 64, $memid, "float") / 10)
endfunc


func gethp()
    return _memoryread($hp_add, $memid)
endfunc


func gethpmax()
    return _memoryread($hp_add + 48, $memid)
endfunc


func getmp()
    return _memoryread($hp_add + 4, $memid)
endfunc


func getmpmax()
    return _memoryread($hp_add + 52, $memid)
endfunc
func getlv()
    return _memoryread($lv_add, $memid)
endfunc

func getexp()
    return _memoryread($exp_add, $memid)
endfunc    
func getmaxexp()
    return     _memoryread($exp_array + (getlv()*4), $memid)
endfunc    

func skillhp()
    if not $hp_ok then
        if (timerdiff($hpstamp) > 4000) then
            $hp_ok = true
        endif
    endif
    if (gethp() <= $hp1) and $hp_ok then
        controlsend($title, "", "", guictrlread($hpkey))
        $hpstamp = timerinit()
        $hp_ok = false
    endif
endfunc

func skillmp()
    if not $mp_ok then
        if (timerdiff($mpstamp) > 4000) then
            $mp_ok = true
        endif
    endif
    if (getmp() <= $mp1) and $mp_ok then
        controlsend($title, "", "", guictrlread($mpkey))
        $mpstamp = timerinit()
        $mp_ok = false
    endif
endfunc

func skill1()
    $num1 = int(timerdiff($timerstamp))
    $num2 = int($skill1_time * $skill1_repeat + $skill2_time * $skill2_repeat)
    if $curentskill <= $skill1_repeat then
        if (mod($num1, $num2) > ($skill1_time * ($curentskill - 1))) then
            controlsend($title, "", "", guictrlread($skill_1_key))
            sleep(100)
            $curentskill = $curentskill + 1
        endif
    endif
    if ($curentskill > ($skill1_repeat + $skill2_repeat)) and (mod($num1, $num2) < ($skill1_time * $skill1_repeat + $skill2_time * ($skill2_repeat - 1))) then
        $timerstamp = timerinit()
        $curentskill = 1
    endif
endfunc


func skill2()
    $num1 = int(timerdiff($timerstamp))
    $num2 = int($skill1_time * $skill1_repeat + $skill2_time * $skill2_repeat)
    if $curentskill > $skill1_repeat then
        if (mod($num1, $num2) > ($skill1_time * ($skill1_repeat) + $skill2_time * ($curentskill - 1 - $skill1_repeat))) then
            controlsend($title, "", "", guictrlread($skill_2_key))
            sleep(100)
            $curentskill = $curentskill + 1
        endif
    endif
    if ($curentskill > ($skill1_repeat + $skill2_repeat)) and (mod($num1, $num2) < ($skill1_time * $skill1_repeat + $skill2_time * ($skill2_repeat - 1))) then
        $timerstamp = timerinit()
        $curentskill = 1
    endif
endfunc

func getmobinf()
    if $target_check then
        $targetid = 0
        for $i = $imax to $imin step - 1
            $buffer2 = _memoryread($mob_add + 4 * $i, $memid)
            if $buffer2 <> 0 then
                $buffer2 = _memoryread($buffer2 + 4, $memid)
                $moblvl = _memoryread($buffer2 + 292, $memid, "short")
                if ($moblvl >= $lvl_min) and ($moblvl <= $lvl_max) then 
                    $mobid = _memoryread($buffer2 + 284, $memid)
                    $mobx = _memoryread($buffer2 + 60, $memid, "float") / 10 + 400
                    $moby = _memoryread($buffer2 + 68, $memid, "float") / 10 + 550
                    $mobz = _memoryread($buffer2 + 64, $memid, "float") / 10
                    $mobdis = _memoryread($buffer2 + 604, $memid, "float") / 10
                    $mobhp = _memoryread($buffer2 + 308, $memid)
                    $mobhpm = _memoryread($buffer2 + 348, $memid)
                    $mobtype = _memoryread($buffer2 + 180, $memid)
                else
                    $mobid = 0
                endif    
                if $mobtype <> 6 then
                    $mobid = 0
                    $petpos = $i
                endif
                if $mobid = $lastmob then
                    $mobid = 0
                endif
                if ($mobbug <> 0) and ($mobid = $mobbug) then
                    $mobid = 0
                    $mobbug = 0
                endif
                if $mobhp <> $mobhpm then
                    $mobid = 0
                endif
                if (($moblvl < $lvl_min) or ($moblvl > $lvl_max)) and (($lvl_min <> 150) and ($lvl_max <> 150)) then
                    $mobid = 0
                endif
                if $point_check and (($dis_x - $range > $mobx) or ($dis_x + $range < $mobx) or ($dis_y - $range > $moby) or ($dis_y + $range < $moby)) then
                    $mobid = 0
                endif
                if (not $point_check) and ($mobdis > $distance) then
                    $mobid = 0
                endif
            else
                $mobid = 0
            endif
            if ($mobid <> 0) and ($targetid = 0) then
                $targetid = $mobid
                $targetdis = $mobdis
            elseif ($mobid <> 0) and ($targetid <> 0) then
                if $mobdis < $targetdis then
                    $targetid = $mobid
                    $targetdis = $mobdis
                endif
            endif
            if $point_check and ($targetid <> 0) and ($targetdis <= $distance) then
                exitloop
            endif
            if (mod($i, 100) = 0) and (getcurentmobid() <> 0) then
                exitloop
            endif
        next
        return $targetid
    endif
endfunc

func getmobhpm($number)
    $buffer = _memoryread($mob_add + 4 * $number, $memid)
    $buffer = _memoryread($buffer + 4, $memid)
    return _memoryread($buffer + 340, $memid)
endfunc


func getcurentmobid()
    return _memoryread($mob_id_add, $memid)
endfunc


func setcurentmobid($id)
    _memorywrite($mob_id_add, $memid, $id)
endfunc


func save_point()
    $x = int(_memoryread($esi + 60, $memid, "float") / 10) + 400
    $y = int(_memoryread($esi + 68, $memid, "float") / 10) + 550
    $z = _memoryread($esi + 64, $memid, "float") / 10
    guictrlsetdata($dis_x_id, $x)
    guictrlsetdata($dis_y_id, $y)
    guictrlsetdata($dis_z_id, int($z))
    _memoryclose($memid)
    endfunc


func canceltarget()
    if (not $stoptarget) and (($dis_x - $range > getpx()) or ($dis_x + $range < getpx()) or ($dis_y - $range > getpy()) or ($dis_y + $range < getpy())) then
        $stoptarget = true
        $stoppick = true
    endif
    if ($stoptarget) and ($dis_x - $range <= getpx()) and ($dis_x + $range >= getpx()) and ($dis_y - $range <= getpy()) and ($dis_y + $range >= getpy()) then
        $stoptarget = false
        $stoppick = false
    endif
endfunc


func buffpet()
    if timerdiff($timerpet) > 1000000 then
        $timerpet = timerinit()
        controlsend($title, "", "", "!3", 0)
        sleep(1000)
        controlsend($title, "", "", "!5", 0)
        sleep(200)
    endif
    $pethp = _memoryread($pethp_add, $memid)
    if ($pethp <= $pethp_min) and ($pethp > 0) then
        controlsend($title, "", "", guictrlread($healpet_key))
        sleep(2500)
    endif
    if $pethp = 0 then
        controlsend($title, "", "", guictrlread($hspet_key))
        sleep(4500)
        controlsend($title, "", "", guictrlread($goipet_key))
        sleep(5000)
        controlsend($title, "", "", guictrlread($healpet_key))
        $timerpet = timerinit()
        controlsend($title, "", "", "!3", 0)
        sleep(1000)
        controlsend($title, "", "", "!5", 0)
    endif
endfunc

func openfile()
    $_open_name = fileopendialog("load setting", @workingdir & "\", "ini (*.ini)",1+2+8)
    guictrlsetdata($lvl_min_id, iniread($_open_name, "mobinfo", "minlv", ""))
    guictrlsetdata($lvl_max_id, iniread($_open_name, "mobinfo", "maxlv", ""))
    guictrlsetdata($distance_id, iniread($_open_name, "mobinfo", "dis", ""))
    guictrlsetdata($range_id, iniread($_open_name, "mobinfo", "range", ""))
    guictrlsetstate($point_check_id, iniread($_open_name, "checkbox", "base point", ""))
    guictrlsetstate($pick_check_id, iniread($_open_name, "checkbox", "pick", ""))
    guictrlsetdata($pick_key, iniread($_open_name, "pickup", "pickkey", $skill_list))
    guictrlsetstate($weapon_check_id, iniread($_open_name, "checkbox", "change weapon", ""))
    guictrlsetdata($weapon_key, iniread($_open_name, "changeweapon", "weapon key", $skill_list))
    guictrlsetdata($weapon_time_id, iniread($_open_name, "changeweapon", "weapon time", ""))
    guictrlsetstate($pet_check_id, iniread($_open_name, "checkbox", "buff pet", ""))
    guictrlsetstate($autohp_check_id, iniread($_open_name, "checkbox", "hp", ""))
    guictrlsetdata($hpkey, iniread($_open_name, "heal", "hp key", $skill_list))
    guictrlsetdata($hp1_id, iniread($_open_name, "heal", "min hp", ""))
    guictrlsetstate($automp_check_id, iniread($_open_name, "checkbox", "mp", ""))
    guictrlsetdata($mpkey, iniread($_open_name, "heal", "mp key", $skill_list))
    guictrlsetdata($mp1_id, iniread($_open_name, "heal", "min mp", ""))
    guictrlsetstate($skill1_check_id, iniread($_open_name, "checkbox", "skill1", ""))
    guictrlsetdata($skill_1_key, iniread($_open_name, "skill", "skill 1", $skill_list))
    guictrlsetdata($skill1_time_id, iniread($_open_name, "skill", "skill 1 time", ""))
    guictrlsetdata($skill1_repeat_id, iniread($_open_name, "skill", "skill 1 repeat", ""))
    guictrlsetstate($skill2_check_id, iniread($_open_name, "checkbox", "skill2", ""))
    guictrlsetdata($skill_2_key, iniread($_open_name, "skill", "skill 2", $skill_list))
    guictrlsetdata($skill2_time_id, iniread($_open_name, "skill", "skill 2 time", ""))
    guictrlsetdata($skill2_repeat_id, iniread($_open_name, "skill", "skill 2 repeat", ""))
    guictrlsetdata($healpet_key, iniread($_open_name, "pet", "heal pet key", ""))
    guictrlsetdata($pethp_min_id, iniread($_open_name, "pet", "min pet hp", ""))
    guictrlsetdata($pethp_add_id, iniread($_open_name, "pet", "input pet hp", ""))
    guictrlsetdata($petid_id, iniread($_open_name, "pet", "pet slot", ""))
    guictrlsetdata($hspet_key, iniread($_open_name, "pet", "hs pet key", ""))
    guictrlsetdata($goipet_key, iniread($_open_name, "pet", "goi pet key", ""))
    endfunc    
func savesetting()
    local $_save_name = _filesavedialog("save setting", @workingdir & "\", "ini(*.ini)", 2+16, "")
    if @error then
        msgbox(0,"error","cancel save")
    else
    iniwrite($_save_name, "client name", "title", guictrlread($title1))
    iniwrite($_save_name, "client name", "change to", guictrlread($title2))
    iniwrite($_save_name, "mobinfo", "minlv", guictrlread($lvl_min_id))
    iniwrite($_save_name, "mobinfo", "maxlv", guictrlread($lvl_max_id))
    iniwrite($_save_name, "mobinfo", "dis", guictrlread($distance_id))
    iniwrite($_save_name, "mobinfo", "range", guictrlread($range_id))
    iniwrite($_save_name, "heal", "hp key", guictrlread($hpkey))
    iniwrite($_save_name, "heal", "min hp", guictrlread($hp1_id))
    iniwrite($_save_name, "heal", "min mp", guictrlread($mp1_id))
    iniwrite($_save_name, "heal", "mp key", guictrlread($mpkey))
    iniwrite($_save_name, "skill", "skill 1", guictrlread($skill_1_key))
    iniwrite($_save_name, "skill", "skill 1 time", guictrlread($skill1_time_id))
    iniwrite($_save_name, "skill", "skill 1 repeat", guictrlread($skill1_repeat_id))
    iniwrite($_save_name, "skill", "skill 2", guictrlread($skill_2_key))
    iniwrite($_save_name, "skill", "skill 2 time", guictrlread($skill2_time_id))
    iniwrite($_save_name, "skill", "skill 2 repeat", guictrlread($skill2_repeat_id))
    iniwrite($_save_name, "pickup", "pickkey", guictrlread($pick_key))
    iniwrite($_save_name, "changeweapon", "weapon key", guictrlread($weapon_key))
    iniwrite($_save_name, "changeweapon", "weapon time", guictrlread($weapon_time_id))
    iniwrite($_save_name, "pet", "heal pet key", guictrlread($healpet_key))
    iniwrite($_save_name, "pet", "hs pet key", guictrlread($hspet_key))
    iniwrite($_save_name, "pet", "goi pet key", guictrlread($goipet_key))
    iniwrite($_save_name, "pet", "min pet hp", guictrlread($pethp_min_id))
    iniwrite($_save_name, "pet", "input pet hp", guictrlread($pethp_add_id))
    iniwrite($_save_name, "pet", "pet slot", guictrlread($petid_id))
    iniwrite($_save_name, "checkbox", "base point", guictrlread($point_check_id))
    iniwrite($_save_name, "checkbox", "pick", guictrlread($pick_check_id))
    iniwrite($_save_name, "checkbox", "change weapon", guictrlread($weapon_check_id))
    iniwrite($_save_name, "checkbox", "buff pet", guictrlread($pet_check_id))
    iniwrite($_save_name, "checkbox", "hp", guictrlread($autohp_check_id))
    iniwrite($_save_name, "checkbox", "mp", guictrlread($automp_check_id))
    iniwrite($_save_name, "checkbox", "skill1", guictrlread($skill1_check_id))
    iniwrite($_save_name, "checkbox", "skill2", guictrlread($skill2_check_id))
        msgbox(0, "finish save", "your setting save in"&" "& $_save_name)
    endif    
endfunc
func getlisttitle()
    local $awinlist = winlist("[;)
    local $sret_list = ""
    
    for $i = 1 to ubound($awinlist)-1
        $sret_list &= $awinlist[$i][0] & "|"
    next
    
    return stringstripws($sret_list, 3)
endfunc

func hide()
    winsetstate(guictrlread($title1), "", @sw_hide)
endfunc    

func show()
    winsetstate(guictrlread($title1), "", @sw_show)
endfunc    
func altq()
    _memoryclose($memid)
    exit
endfunc
```

----------

