[JX] [SHARE] Cách làm một Autoupdate bằng Autoit
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Kết quả 1 đến 10 của 10
  1. #1
    Thành Viên thinkiem's Avatar
    Ngày tham gia
    Jun 2012
    Bài viết
    49
    Thanks
    39
    Thanked 14 Times in 4 Posts

    Icon1 [SHARE] Cách làm một Autoupdate bằng Autoit

    Cái này mình cũng sưu tâm nên k rõ tường tận !! mình có chú thích bên trong code những thứ hiểu được !! nêu nếu ai thấy có thể lấy đc thì lấy ! không tiếp gạch đá nhé

    Yêu cầu :

    + Phận mềm Autoit
    + Photoshop

    Chỉ tưng đó thôi !! trong hình mình cũng có từng này file thôi :

    [Only registered and activated users can see links. ]

    còn đây là code :
    PHP Code:
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <ProgressConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <InetConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <IE.au3>
    ;    Mấy dòng trên là khai báo thư viện ^_không nói chắc cũng biết
    Opt
    ("TrayAutoPause"0)    ; Tắt chế độ auto pause khi nhấn chuột vào icon ở chỗ dồng hồ
    Opt
    ("TrayMenuMode"1)    ; Tắt menu chuột phải ở icon
    Khai báo và khở động giao diện
    Global $hGUI$hImage$hGraphic$hImage
    Global Const $SC_DRAGMOVE 0xF012
    _GDIPlus_Startup
    ()
    Load PNG image chỗ này là lấy cái hình làm giao diện nè
    $hImage 
    _GDIPlus_ImageLoadFromFile("gui.dat")
    $iWidth _GDIPlus_ImageGetWidth($hImage)
    $iHeight _GDIPlus_ImageGetHeight($hImage)



    Create GUI -> lệnh tạo giao diệnnút thoát
    $hGUI 
    GUICreate("VLCA"$iWidth$iHeight, -1, -1$WS_POPUP$WS_EX_LAYERED $WS_EX_TOPMOST)
    $hGUI_child GUICreate(""$iWidth$iHeight00$WS_POPUP$WS_EX_LAYERED $WS_EX_TOPMOST $WS_EX_MDICHILD$hGUI)
    $hButton GUICtrlCreateButton("Thoát"$iWidth 15$iHeight 307025)
    GUISetBkColor(0xFFFFFF$hGUI_child)

    GUISetState(@SW_SHOW$hGUI)
    GUISetState(@SW_SHOW$hGUI_child)
    SetTransparentBitmap($hGUI$hImage)
    _WinAPI_SetLayeredWindowAttributes($hGUI_child0xFFFFFF0xff)

    $hGraphic _GDIPlus_GraphicsCreateFromHWND($hGUI_child)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphic2)

    GUIRegisterMsg($WM_LBUTTONDOWN"_WM_LBUTTONDOWN")
    ;----------------------------------------------------------------------------------------------------------------------------------------
    ;
    Show Processbar khai báo 2 cái thanh tiến trình
       
    ;ProgressOn("Võ Lâm ...""Kiểm tra cập nhật...""0%")

       
    Local $processbar1     GUICtrlCreateProgress(20$iHeight 3024010)  ;thanh thứ 1 -> thanh này là tiến trình của 1 file
       Local $processbar     
    GUICtrlCreateProgress(20$iHeight 1524010)  ;thanh thứ 2 -> tiến trình của tất cả các file
       Local $idLabel         
    GUICtrlCreateLabel("Đang kiểm tra cập nhật..."20,  $iHeight 45240) ; khai báo dòng chữ ngay trên thanh tiến trình tạm gọi là status
        GUICtrlSetColor
    ($idLabel0xFFFFFF0)
       
    Local $oIE _IECreateEmbedded ()    ; Chỗ này là khai báo chèn trang web vào
       Local $GUIActiveX 
    GUICtrlCreateObj($oIE16124230328)    ; định vị trí với kích thước cho cái khung
          _IENavigate 
    ($oIE"launcher.php")        ; địa chỉ web sẽ load trong cái khung
          _IEHeadInsertEventScript 
    ($oIE"document""oncontextmenu""return false")    ; chèn nội dung web
       $oIE
    .document.body.scroll "no"    bỏ qua thanh cuộn web
       $oIE
    .document.body.style.border "0px"    bỏ qua viền của web

        
    Save the downloaded file to the temporary folder. -. chỗ này là khai báo đường dẫn thư mục sẽ download về và đọc nhưng file trên mạng để download
        Local $ServerListPath     
    "Settings\ServerList.ini"
        
    Local $VersionPath         "Settings\Version.ini"
        
    Local $ServerListURL     "http://itstore.tv/Server.php"
        
    Local $VersionURL         "http://itstore.tv/Version.php"
        
    Local $UpdateURL         "http://itstore.tv/UpdateURL.php"
        
    Local $UpdateDIR         "http://itstore.tv/UpdateDIR.php"
        
    Download the file by waiting for it to completeThe option of 'get the file from the local cache' has been selected.
        
    Local $iBytesSize InetGet($ServerListURL$ServerListPath$INET_FORCERELOAD)    ; lệnh download file ServerList.ini để cập nhật ip của server

       
    ;///////////////////////////////////////////////////////////////////////////
       
    Read Version File -> đọc file version.ini để kiểm tra phiên bản hiện tại
        Local $aInput
       
    If not FileExists($VersionPaththen
          Local $iBytesSize 
    InetGet($ServerListURL,$VersionPath $INET_FORCERELOAD)
       EndIf
       
    _FileReadToArray($VersionPath$aInput)
        ; 
    Read Version Server -> đọc file version trên mạng để xem phiên bản mới nhất
       Local $SV 
    BinaryToString(InetRead($VersionURL))
       ; 
    Check new version -> kiểm tra xem 2 file đó có giống nhau ko nếu giống thì bỏ qua
       
    if $aInput[1]<>$SV then    Nếu khác nhau thì bắt đầu đọc những file cần cập nhật từ link đã khai báo ở trên
       
    Get list file to download
          Local  $Listupdate 
    BinaryToString(InetRead($UpdateURL))
          
    Local  $Savedir BinaryToString(InetRead($UpdateDIR))
          
    Local  $aUpdate StringSplit($Listupdate"|")
          
    Local  $aSave StringSplit($Savedir"|")
          
    Local  $oneprocess Round(99/$aUpdate[0]-1)
       ; 
    Begin download file -. bắt đầu download các file mới nằm trong thư mục update trên host
          
    For $i 1 To UBound($aUpdate)-2
              GUICtrlSetData 
    ($idLabel,"Tải file: "&$aSave[$i])    ;Hiển thị đang tải file tên gì lên status
              GUICtrlSetData
    ($processbar$oneprocess)    ;thanh tiến trình về 0
                   Local $iBytesSize 
    InetGet($aUpdate[$i],$aSave[$i] , 1,1)    ; chỗ này là lệnh download
              $oneprocess 
    $oneprocess $oneprocess    phần trăm cho thanh tiến trình
              Local $FileSize 
    InetGetSize($aUpdate[$i]) ;Get file size -> lấy dung lượng file để tính toán phần trăm đưa lên thanh tiến trình
                
    While Not InetGetInfo($iBytesSize2) ;Loop until download is finished
                    Sleep
    (500) ;Sleep for half a second to avoid flicker in the progress bar
                    Local $BytesReceived 
    InetGetInfo($iBytesSize0) ;Get bytes received    -> dung lượng đã download
                    Local $Pct 
    Int($BytesReceived $FileSize 100) ;Calculate percentage -> chia lấy phần trăm
                    
    ;ProgressSet($Pct$Pct "%") ;Set progress bar
                     GUICtrlSetData
    ($processbar1$Pct)    ; đặt phần trăm lên thanh tiến trình
                WEnd
          Next

       
    EndIf

       ;
    ///////////////////////////////////////////////////////////////////////////

       
    Update file version. -> sau khi download hết thì down luôn file version trên mạng về để lần sau kiểm tra sẽ là ản mới nhất -> không download lại
        Local $iBytesSize 
    InetGet($VersionURL,$VersionPath $INET_FORCERELOAD)
       
    GUICtrlSetData($processbar1100) ;-> thanh tiến trình 100%
       
    GUICtrlSetData($processbar100)    ;-> như trên (2 thành mà)
       
    GUICtrlSetData ($idLabel,"Hoàn thành. Nhấn nút bắt đầu để chơi game.")     ;Status thành dòng thông báo Hoàn thành
       Local $idButton 
    GUICtrlCreateButton("Bắt đầu"$iWidth -65$iHeight 307025)    ; Hiển thị nút "Bắt đầu"
       
    Run program Game.exe.
       ;
    Local $iPID Run("Game.exe""", @SW_SHOWMAXIMIZED)
       ;
    Close Processbar
       Sleep
    (1000)    ; Nghĩ 1s để kịp xem load mọi thứ
       ProgressOff
    ()    ; Kết thúc thanh tiến trình
    ;----------------------------------------------------------------------------------------------------------------------------------------
    While 
    1
        $nMsg 
    GUIGetMsg()
        Switch 
    $nMsg
            
    Case $GUI_EVENT_CLOSE$hButton    Lệnh khi nhấn nút thoát
                GUIRegisterMsg
    ($WM_LBUTTONDOWN"")
                
    _GDIPlus_ImageDispose($hImage)
                
    _GDIPlus_GraphicsDispose($hGraphic)
                
    _GDIPlus_Shutdown()
                
    GUIDelete($hGUI)
                
    ExitLoop
            
    Case $GUI_EVENT_CLOSE$idButton    Lệnh khi nhấn nút bắt đầu
                GUIRegisterMsg
    ($WM_LBUTTONDOWN"")
                
    Local $iPID Run("Game.exe""", @SW_SHOWMAXIMIZED)    ; câu lệnh này để chạy file Game.exe còn mấy dòng khác là để đóng giao diện file autoupdate
                _GDIPlus_ImageDispose
    ($hImage)
                
    _GDIPlus_GraphicsDispose($hGraphic)
                
    _GDIPlus_Shutdown()
                
    GUIDelete($hGUI)
                
    ExitLoop
        
    EndSwitch
    WEnd
          
    Mấy cái dòng dưới này là để chỉnh sửa giao diện ví dụ như trong suốtcanh giữa màn hình... không quan tâm đến nữa!
    Func _WM_LBUTTONDOWN($hWnd$iMsg$wParam$lParam)
        
    _SendMessage($hGUI$WM_SYSCOMMAND$SC_DRAGMOVE0)
    EndFunc   ;==>_WM_LBUTTONDOWN

    Func SetTransparentBitmap
    ($hGUI$hImage$iOpacity 0xFF)
        
    Local $hScrDC$hMemDC$hBitmap$hOld$pSize$tSize$pSource$tSource$pBlend$tBlend
        $hScrDC 
    _WinAPI_GetDC(0)
        
    $hMemDC _WinAPI_CreateCompatibleDC($hScrDC)
        
    $hBitmap _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
        
    $hOld _WinAPI_SelectObject($hMemDC$hBitmap)
        
    $tSize DllStructCreate($tagSIZE)
        
    $pSize DllStructGetPtr($tSize)
        
    DllStructSetData($tSize"X"_GDIPlus_ImageGetWidth($hImage))
        
    DllStructSetData($tSize"Y"_GDIPlus_ImageGetHeight($hImage))
        
    $tSource DllStructCreate($tagPOINT)
        
    $pSource DllStructGetPtr($tSource)
        
    $tBlend DllStructCreate($tagBLENDFUNCTION)
        
    $pBlend DllStructGetPtr($tBlend)
        
    DllStructSetData($tBlend"Alpha"$iOpacity)
        
    DllStructSetData($tBlend"Format"1)
        
    _WinAPI_UpdateLayeredWindow($hGUI,  $hMemDC0$pSize$hMemDC$pSource0$pBlend$ULW_ALPHA)
        
    _WinAPI_ReleaseDC(0$hScrDC)
        
    _WinAPI_SelectObject($hMemDC$hOld)
        
    _WinAPI_DeleteObject($hBitmap)
        
    _WinAPI_DeleteDC($hMemDC)
     
    EndFunc   ;==>SetTransparentBitmap 
    Lưu ý là trong thư mục Settings các bạn tạo 2 file ServerList.ini Version.ini để auto kiểm tra nhé

    VD :

    Version.ini :

    1.1

    ServerList.ini :

    [List]
    RegionCount=2
    Region_0=M¸y Chñ Vâ L©m
    Region_1=TruyÒn Kú B¾c Nam

    [Region_1]
    Count=1
    0_Title=D­îc S¬n
    0_Address=192.168.1.123



    PS: Thiếu 2 file PHPUpdateURL.php và UpdateDIR.php ở trên host nữa ! mình sẽ Update sau !!
    Lần sửa cuối bởi thinkiem, ngày 03-09-16 lúc 05:36 PM.
    Khách viếng thăm hãy cùng thinkiem xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. The Following 11 Users Say Thank You to thinkiem For This Useful Post:

    cuongvh93 (02-09-16), dovietthai (03-09-16), hungnha18 (02-09-16), kenlucky2000 (03-09-16), khainqps01237 (03-09-16), longkandy (09-10-16), minhkhanh109 (02-09-16), onetheside123 (13-09-18), togashi007 (02-09-16), vinhthamthao (03-09-16), vuduymanh (02-09-16)

  3. #2
    Thành Viên
    Ngày tham gia
    Mar 2013
    Bài viết
    217
    Thanks
    81
    Thanked 27 Times in 14 Posts

    Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit

    Ngon, up cho mau có file php nè
    Khách viếng thăm hãy cùng khainqps01237 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  4. #3
    Thành Viên
    Ngày tham gia
    May 2015
    Bài viết
    197
    Thanks
    2
    Thanked 19 Times in 10 Posts

    Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit

    bác cho em hỏi thử làm sao để lấy lưu lượng file trên host vs

    em dùng hàm của bác mà get lưu lượng nó trả về 0
    Khách viếng thăm hãy cùng chihochoi xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  5. Các thành viên gởi lời cảm ơn đến chihochoi vì bài viết này !

    thinkiem (04-09-16)

  6. #4
    Thành Viên thinkiem's Avatar
    Ngày tham gia
    Jun 2012
    Bài viết
    49
    Thanks
    39
    Thanked 14 Times in 4 Posts

    Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit

    Trích dẫn Gửi bởi chihochoi [Only registered and activated users can see links. ]
    bác cho em hỏi thử làm sao để lấy lưu lượng file trên host vs

    em dùng hàm của bác mà get lưu lượng nó trả về 0
    mình có chú thích rồi đó !! mình chạy thấy vẫn bình thường mà ! bạn kiểm tra lại xem nhé !!

    PHP Code:
    Begin download file -. bắt đầu download các file mới nằm trong thư mục update trên host
          
    For $i 1 To UBound($aUpdate)-2
              GUICtrlSetData 
    ($idLabel,"Tải file: "&$aSave[$i])    ;Hiển thị đang tải file tên gì lên status
              GUICtrlSetData
    ($processbar$oneprocess)    ;thanh tiến trình về 0
                   Local $iBytesSize 
    InetGet($aUpdate[$i],$aSave[$i] , 1,1)    ; chỗ này là lệnh download
              $oneprocess 
    $oneprocess $oneprocess    phần trăm cho thanh tiến trình
              Local $FileSize 
    InetGetSize($aUpdate[$i]) ;Get file size -> lấy dung lượng file để tính toán phần trăm đưa lên thanh tiến trình
                
    While Not InetGetInfo($iBytesSize2) ;Loop until download is finished
                    Sleep
    (500) ;Sleep for half a second to avoid flicker in the progress bar
                    Local $BytesReceived 
    InetGetInfo($iBytesSize0) ;Get bytes received    -> dung lượng đã download
                    Local $Pct 
    Int($BytesReceived $FileSize 100) ;Calculate percentage -> chia lấy phần trăm
                    
    ;ProgressSet($Pct$Pct "%") ;Set progress bar
                     GUICtrlSetData
    ($processbar1$Pct)    ; đặt phần trăm lên thanh tiến trình
                WEnd 
    Khách viếng thăm hãy cùng thinkiem xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #5
    Thành Viên vinhthamthao's Avatar
    Ngày tham gia
    Aug 2014
    Đang ở
    Hà Nội
    Bài viết
    944
    Thanks
    145
    Thanked 524 Times in 335 Posts

    Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit

    Trích dẫn Gửi bởi thinkiem [Only registered and activated users can see links. ]
    Cái này mình cũng sưu tâm nên k rõ tường tận !! mình có chú thích bên trong code những thứ hiểu được !! nêu nếu ai thấy có thể lấy đc thì lấy ! không tiếp gạch đá nhé
    Hóng bạn share mấy file php kia . like để hóng
    Khách viếng thăm hãy cùng vinhthamthao xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  8. Các thành viên gởi lời cảm ơn đến vinhthamthao vì bài viết này !

    thinkiem (04-09-16)

  9. #6
    Thành Viên
    Ngày tham gia
    Oct 2008
    Bài viết
    456
    Thanks
    58
    Thanked 114 Times in 96 Posts

    Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit

    Trích dẫn Gửi bởi vinhthamthao [Only registered and activated users can see links. ]
    Hóng bạn share mấy file php kia . like để hóng
    Định làm cái autoupdate cho TLBB hả vinhthamthao. Có cái launcher + autoupdate tự viết nè
    Khách viếng thăm hãy cùng vocweb xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  10. #7
    Thành Viên bualolu's Avatar
    Ngày tham gia
    May 2012
    Bài viết
    441
    Thanks
    82
    Thanked 54 Times in 25 Posts

    Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit

    Share file php đi bạn................
    Khách viếng thăm hãy cùng bualolu xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  11. #8
    Thành Viên vinhthamthao's Avatar
    Ngày tham gia
    Aug 2014
    Đang ở
    Hà Nội
    Bài viết
    944
    Thanks
    145
    Thanked 524 Times in 335 Posts

    Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit

    mình chạy được nhưng không hiện % trên thanh ai giúp mình cho nó hiện % với
    Khách viếng thăm hãy cùng vinhthamthao xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  12. #9
    Thành Viên Dark.Hades's Avatar
    Ngày tham gia
    Apr 2014
    Đang ở
    cd /tmp/
    Bài viết
    646
    Thanks
    205
    Thanked 628 Times in 146 Posts

    Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit

    Trích dẫn Gửi bởi vocweb [Only registered and activated users can see links. ]
    Định làm cái autoupdate cho TLBB hả vinhthamthao. Có cái launcher + autoupdate tự viết nè
    Update đc axp ko bác?
    dùng kiểu thay thế file hay là pack file vào client v bác?
    Khách viếng thăm hãy cùng Dark.Hades xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  13. #10
    Thành Viên vinhthamthao's Avatar
    Ngày tham gia
    Aug 2014
    Đang ở
    Hà Nội
    Bài viết
    944
    Thanks
    145
    Thanked 524 Times in 335 Posts

    Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit

    [/COLOR]
    Trích dẫn Gửi bởi vocweb [Only registered and activated users can see links. ]
    Định làm cái autoupdate cho TLBB hả vinhthamthao. Có cái launcher + autoupdate tự viết nè
    Up được và vào game luôn được . đang muốn .cho 2 cái thanh chạy nó hiện % mà chưa được
    Lần sửa cuối bởi vinhthamthao, ngày 15-10-16 lúc 07:28 PM.
    Khách viếng thăm hãy cùng vinhthamthao xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 

Các Chủ đề tương tự

  1. [JX] Share Autoupdate
    Bởi bacnam7287 trong diễn đàn Võ Lâm Truyền Kỳ (Jx Server)
    Trả lời: 25
    Bài viết cuối: 28-08-20, 07:50 AM
  2. [JX] Share Auto Update Play Game bằng Autoit, hướng dẫn AutoIt
    Bởi thachlong78 trong diễn đàn Releases
    Trả lời: 49
    Bài viết cuối: 18-02-16, 12:18 AM
  3. [JX] cần xin code auto backup của PTTk bác nào có code autoit đó share giúp thanks
    Bởi Olala trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 0
    Bài viết cuối: 18-10-14, 12:49 AM
  4. Share autoupdate cùi em xài
    Bởi TNMars trong diễn đàn Releases
    Trả lời: 6
    Bài viết cuối: 27-06-11, 10:42 AM
  5. share bản autoupdate
    Bởi thanhhue trong diễn đàn Các Server Không Nằm Trong Box
    Trả lời: 1
    Bài viết cuối: 30-11-08, 03:47 PM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 06:53 AM.
vBulletin®, Copyright ©2000-2011, Jelsoft Enterprises Ltd.
CLBGamesVN không chịu trách nhiệm về Luật Bản Quyền của các tài liệu, bài viết v.v...được đăng tải trên diễn đàn này.
Diễn đàn phát triển dưới sự đóng góp của tất cả thành viên. BQT chỉ là những người thành lập ra sân chơi, quản lý và duy trì về mặt kỹ thuật, nội dung khi hợp lệ.