Jump to content
Endakin

AutoPatcher

Recommended Posts

Posted (edited)

Salutari pamanteni! Iata AutoPatcher, program facut de mine.

WARNING: MULT DE CITIT

v1.0 : Capture.PNG

v0.8

Versiunea curenta: 1.0

Changelog 0.8 to 1.0:

Programul a iesit din beta
Am reparat un bug la butonul play
Am adaugat un progressbar
Am rezolvat niste buguri mari in unealta TPAP RE/C

Sa explic ce face programul:

Verifica md5 checksum al fiecarui fisier al jocului, iar daca s-a schimbat, sterge fisierul corupt, si descarca unul nou; iar daca fisierul de verificat lipseste va fi descarcat

Si... asta e tot!? NU! Programul este fully costumizable!

Dar stai putin, ce face defapt programul, cum funtioneaza el?

Cand programul porneste, citeste un fisier numti patch.l (PATCH.L). Acesta contine 6 linii:


Linia1: adresa pentru descarcare fisierului files.hash
Linia2: adresa pentru descarcare fisierului files.path
Linia3: adresa pentru descarcare fisierului files.addr
Linia4: adresa pe care o acceseaza web browserul la pornire
Linia5: un nume la alegere al ferestrei
Linia6: path-ul catre executabilul rulat de butonul Play

Daca numele scris pe linia 5 nu este "default" (default face ca fereastra sa aiba numele ei original) numele ferestrei va fi tot textul de pe linia 5.

Daca executabilul de la linia 6 exista butonul Play poate fi folosit (adica Enabled = true, ma rog, intelegeti voi, e scris in vb.net ca toate programele facute in casa)

Daca fisierul patch.l a fost citit cu succes butonul Check poate fi folosit si el (adica devine "Click-abil" :)), ca la butonul Play)

Cand apasati butonul Check, incepe procesul de verificare al fisierului. In ce consta acesta:

Mai intai verifica daca fisierele files.hash files.path si files.addr exista (vom afla mai tarziu pentru ce sunt ele necesare) si nu au fos sterse din cauza inchiderii fortate a programului, iar daca ele exista deja le va sterge.

Apoi descarca unele noi de la adresele citite mai devreme din fisierul patch.l

files.hash contine hashurile md5 checksum de la fiecare fisier din files.path care contine fiecare path al fiecarui fisier al jocului iar files.addr contine adresele fiecarui fisier, pentru descarcare in caz ca e nevoie de vreunul. Evident, toate fisierele jocului sunt incarcate pe un server http.

Acum vom afla cu adevarat ce face butonul check:

files.hash files.path si files.addr sunt folosite asa: pe linia 1 din hash se afla hashul fisierului de pe linia 1 din path, adresa pentru a descarca fiserul de pe linia 1

Si programul incepe sa verific linie cu linie:

Ia primul path, ii calculeaza md5 checksum, daca se potriveste cu primul hash trece mai departe, daca nu se potriveste descarca un nou fisier de la prima adresa. Dar daca fisierul de la primul path nu exista, evident descarca unul nou de la prima adresa.

Dupa ce se termina acest proces, o ia de lacapat, cu urmatoarea linie. Si tot asa. Dar pana cand!? Pana cand numarul X = 0. Cum adica!? Pai de fiecare data cand se verifica un fisier x -= 1 iar x este egal cu numarul liniilor din files.hash (cate hashuri are atatea verificari face...)

Sunt genial nu?

Am adaptat programul sa mearga cu counter strike 1.6 dupa cum vedeti in poza, dar cum de am luat atatea hashuri, de la atatea fisiere, si apoi sa mai pun si adresa fiecaruia, si sa salvez toate astea in fisiere diferite? Simplu! Am mai facut un program care sa ma ajute sa gasesc fiecare fisier dintrun folder, si toate subfolderele lui. Apoi imi calcula hashul pentru fiecare fisier gasit (Ca sa nu uit, zic acum, hashul este criptat din md5 in base64), si cu adresele... replace in notepad++ \ cu / si C:\...\cstrike\blah blah cu http://.../cstrike/blah blah

Daca ceva nu va este clar intrebati! Daca gasiti un bug va rog sa imi trimiteti detalii la adresa de e-mail, e scrisa chiar sub butonul play :)).

Mica informatie pentru cei care CHIAR sunt interesati sa il foloseasca: NU dau sursa, si latimea web browser-ului este 434 px. Pentru update-uri, check my signature. Apropo, aveti nevoie de .net framework 2

Download:

Autopatcher 1.0 Current version

Autopatcher 0.8 Outdated

Scuze pentru otrografie, am scris in graba, ar putea fi cate o greseala la fiecare 3 cuvinte. Daca vede cineva vreo greseala, va rog sa imi dati PM.

Pareri?

Edited by Endakin
Releasing v1.0
  • Upvote 1
Posted

Interesant, totusi, nu cred ca toate cs16 aflate in circulatie au toate fisierele identice. In cazul asta ce face? S-ar putea ca fisierele pe care le-ai pus tu sa nu fie compatibile cu cs-ul pe care il are persoana care iti foloseste aplicatia. Sau jucatorul isi poate face un back-up undeva online si le descarca de acolo?

Other then that, bravo e scris in ce limbaj? C# sau VB?

Posted
Interesant, totusi, nu cred ca toate cs16 aflate in circulatie au toate fisierele identice. In cazul asta ce face? S-ar putea ca fisierele pe care le-ai pus tu sa nu fie compatibile cu cs-ul pe care il are persoana care iti foloseste aplicatia. Sau jucatorul isi poate face un back-up undeva online si le descarca de acolo?

Other then that, bravo e scris in ce limbaj? C# sau VB?

Nu ai inteles, asta nu e un peer 2 peer. Programul descarca fisierele originale daca ele au fost corupte(modificate) sau sterse.

fisierul patch.l este "capul", adica tuturor care au acelasi patch.l li se "autopatch-uiesc" :)) aceleasi fisiere. E complicat. citeste thread-ul in detaliu.

Este scris in vb.net (folosind Visual studio 2012 :X, cel mai tare feature la vs2012 este ca poti sa faci metro style app)

Posted

Ok, cred ca am inteles dupa ce am testat aplicatia. Iti perminte sa faci un fel de back-up al fisierelor din cs. Totusi sunt destul de sigur ca ai putea folosi aplicatia si pentru alte jocuri/fisiere.

The pro's auto patcher e scrisa tot de tine?

Pentru ca observ niste mici probleme.

Spre exemplu dupa ce selectezi folderul de unde sa isi ia path-urile - butonul brouse - si selectezi dupa top, se va adauga o linie in plus goala la finalul listei cu path-urile. Iar daca ii dai sa genereze numarul de linii = cu numarul de path-uri gasite la ultima linie va da eroare pentru ca este goala. Ai putea sa pui un if sa verifici daca path-ul e gol sau nu. Alta chestie, poate ar fi mai bine sa faci text boxul ne editabil.

De asemenea in casuta unde selectezi pentru cate linii sa genereze hash-urile mai bine verifici sa se introduca doar numere, pentru ca oricine poate introduce litere si iar iti da eroare.

De asemenea daca dai pe butonul "X" pentru a sterge toate hash-urile, ar fi bine sa actualizezi automat si "Total number of hash", la fel si cu "Total lines found paths", ar trebui sa il resetezi cand apesi pe x-ul de la path. In plus nu ar fi mai simplu/usor/corect sa nu trebuiasca sa introduca utilizatorul cate hash-uri sa genereze? Daca utilizatorul introduce un numar de hash-uri mai mare decat numarul de path-uri atunci iar o sa dea eroare. Zic ca e mai simplu sa salvezi numarul de path-uri gasite, si cand dai pe generate hash sa se foloseasca de acel numar.

Sper ca iti sunt utile sfaturile si "bug-urile" gasite. Astept versiunea 1.1 sau 2.0 :))

Mult succes cu aplicatia.

Posted (edited)

Da, unealta aia e buguita rau de tot, am facut-o la repezeala, doar asa, sa fie, dar apoi mi-am dat seama ca fara asa ceva programul ar fi un mare esec. Deci o sa lucrez mai mult la ea. Mersi de review.

Uite un pont, daca apesi backspace cand textul este gol, se reseteaza numarul ala.

Edited by Endakin
Posted

Da mi-am dat seama de chestia respectiva, ar fi trebuit sa o trec si pe aia :)). Astept versiunea mai noua, si mai mult de atat, sincer, poti utiliza unealta aia pentru altceva. Ea in sine e mai buna decat auto-patcherul. Gandeste-te, faci o lista cu hash-urile unui folder in care ai tu chestii mai importante si nu vrei sa le modifice nimeni. Folosesti unealta respectiva sa faci o lista cu hash-urile tuturor fisierelor, si folosesti auto patcherul in cazul in care cineva ti-a modificat fisierele. Sunt multe posibilitati de utilizare a uneltei respective. Poate o poti transforma direct intr-o unealta de back-up? :P

Posted (edited)

Pai, o folosesti cum vrei tu, chiar daca insist sa fie folosit ca autopatcher. De aceea o sa pun in versiunea 1.1 sau o versiune mai mare butonul play optional, daca pe linia 6 din patch.l va fi textul "none", atunci butonul play nu apare. De ce in versiunea 1.1? simplu, acum postez versiunea 1.0 :D

Edited by Endakin

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...