1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hỏi đáp Code auto MU này bị lỗi gì về vòng lặp ?

Thảo luận trong 'Thảo luận chung - Hỏi đáp' bắt đầu bởi anhducdnt, 24/2/17.

  1. anhducdnt

    anhducdnt Thành viên mới
    • 3/6

    Tham gia ngày:
    29/9/16
    Bài viết:
    26
    Đã được thích:
    9
    Chào các bạn!
    Mình đang làm Auto tự chơi và RS MU
    Kịch bản Auto dự tính
    Đánh 1 số vòng quanh các MAP (set giá trị ở $train_rs=2)
    Khi hết số vòng đã định trước thì đổi nhân vật và thoát game (set giá trị ở $train_rs=1)
    Khi thoát game thì active web để reset (set giá trị ở $train_rs=0)
    Sau khi Reset xong thì mở lại game và tiếp tục luyện cấp (set lại giá trị ở $train_rs=2)

    Code mình viết như sau:

    Mã (AutoIt):

    #include <AutoItConstants.au3>
    #include-once
    #RequireAdmin

    HotKeySet("{F8}","ExitApp")

    Func ExitApp()
    Exit
    EndFunc

    Global $loop_train = FileReadLine(@ScriptDir&'\loop_train.ini',1) ;số vòng bản đồ cần đi (giảm dần khi hết 1 vòng $char_in_map)
    Global $char_in_map = FileReadLine(@ScriptDir&'\char_in_map.ini',1) ; đang ở vị trí trên bản đồ
    Global $loop_number = FileReadLine(@ScriptDir&'\loop_number.ini',1) ; Tổng số vòng bản đồ cần đánh (được gán trước khi chạy auto)
    Global $train_rs = FileReadLine(@ScriptDir&'\train_rs.ini',1) ;Giá trị = 0 là reset, = 1 là đổi nhân vật, = 2 là luyện cấp

    ;========================================Start Game=======================================

    While 1

    If $train_rs =  0 Then ;Nếu = 0 là đã đổi nhân vật, active Web để reset
       MsgBox(0,0,"Dang RS")
       FileDelete(@ScriptDir&'\train_rs.ini')
       FileWrite(@ScriptDir&'\train_rs.ini',2)
       Sleep(100)
       FileDelete(@ScriptDir&'\loop_train.ini')
       FileWrite(@ScriptDir&'\loop_train.ini',$loop_number)
    ElseIf $train_rs = 1 Then    ; Nếu = 1 thì đổi nhân vật, thoát game, set giá trị 0 để reset
       MsgBox(0,0,"Dang doi nhan vat")
       FileDelete(@ScriptDir&'\train_rs.ini')
       FileWrite(@ScriptDir&'\train_rs.ini',0)
       MsgBox(0,0,"dang doi nhan vat")
    ElseIf $train_rs = 2 Then ; Nếu bằng 2 thì luyện cấp
       MsgBox(0,0,"dang luyen cap vong thu "&$loop_train)
       If $loop_number = 0 Then
         FileDelete(@ScriptDir&'\loop_train.ini')
         FileWrite(@ScriptDir&'\loop_train.ini',$loop_number) ;Sau khi đánh hết số vòng luyện cấp thì hoàn tác lại
         MsgBox(0,0,"luyen xong roi, hoi lai vong lap")
         Sleep(100)
         FileDelete(@ScriptDir&'\train_rs.ini')
         FileWrite(@ScriptDir&'\train_rs.ini',1) ; Sau khi đánh hết số vòng thì thay đổi nhân vật
         MsgBox(0,0,"hoi lai vong lap, thay doi nhan vat de rs day")
       Else
         If $char_in_map = 1 Then ;dang o atlans
            FileDelete(@ScriptDir&'\char_in_map.ini')
            FileWrite(@ScriptDir&'\char_in_map.ini',$char_in_map+1)
            MsgBox(0,0,"dang luyen cap o Atlans2")
         ElseIf $char_in_map = 2 Then ;dang o lost 2
            FileDelete(@ScriptDir&'\char_in_map.ini')
            FileWrite(@ScriptDir&'\char_in_map.ini',$char_in_map+1)
            MsgBox(0,0,"dang luyen cap o Lost2")
         ElseIf $char_in_map = 3 Then ;dang o lost 4
            FileDelete(@ScriptDir&'\char_in_map.ini')
            FileWrite(@ScriptDir&'\char_in_map.ini',$char_in_map+1)
            MsgBox(0,0,"dang luyen cap o Lost4")
         ElseIf $char_in_map = 4 Then ;dang o lost 5
            FileDelete(@ScriptDir&'\char_in_map.ini')
            FileWrite(@ScriptDir&'\char_in_map.ini',$char_in_map+1)
            MsgBox(0,0,"dang luyen cap o Lost5")
         ElseIf $char_in_map = 5 Then ;dang o lost 6
            FileDelete(@ScriptDir&'\char_in_map.ini')
            FileWrite(@ScriptDir&'\char_in_map.ini',$char_in_map+1)
            MsgBox(0,0,"dang luyen cap o Lost6")
            Sleep(100)
            FileDelete(@ScriptDir&'\loop_train.ini')
            FileWrite(@ScriptDir&'loop_train.ini',$loop_train-1)
            MsgBox(0,0,"dang giam 1 vong luyen cap")
         EndIf
       EndIf
    EndIf
    WEnd
     
    Không biết mình viết sai ở đâu, nhưng khi chạy auto thì giá trị đã đổi ở file ini mà auto ko đọc giá trị mới, vẫn tiếp tục dùng giá trị cũ (đã đọc lần đầu ở file ini) nên số vòng không giảm được.

    Rất mong các bạn giúp đỡ.

    Xin cảm ơn!
     
    kamsamita1 thích bài này.
  2. anhducdnt

    anhducdnt Thành viên mới
    • 3/6

    Tham gia ngày:
    29/9/16
    Bài viết:
    26
    Đã được thích:
    9
    File đính kèm đây ạ!
     

    Các file đính kèm:

    • Main.au3
      Kích thước:
      3.1 KB
      Đọc:
      8
    kamsamita1 thích bài này.
  3. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    Bạn phải đưa filereadline vào trong vòng lặp đọc lại file thì mới đọc được giá trị mới nhé.
     
    kamsamita1 and anhducdnt like this.
  4. anhducdnt

    anhducdnt Thành viên mới
    • 3/6

    Tham gia ngày:
    29/9/16
    Bài viết:
    26
    Đã được thích:
    9
    vẫn ko đc bạn ạ.
     
    kamsamita1 thích bài này.
  5. anhducdnt

    anhducdnt Thành viên mới
    • 3/6

    Tham gia ngày:
    29/9/16
    Bài viết:
    26
    Đã được thích:
    9
    mình sai ở chỗ này

    ElseIf $char_in_map = 5 Then ;dang o lost 6
    FileDelete(@ScriptDir&'\char_in_map.ini')
    FileWrite(@ScriptDir&'\char_in_map.ini',$char_in_map+1) <== phải set = 1 mới chạy đc
    MsgBox(0,0,"dang luyen cap o Lost6")
     
    kamsamita1 thích bài này.

Chia sẻ trang này

Đang tải...