Endakin Posted June 26, 2012 Report Posted June 26, 2012 (edited) Salutari pamanteni! Iata AutoPatcher, program facut de mine. WARNING: MULT DE CITITv1.0 : v0.8Versiunea curenta: 1.0Changelog 0.8 to 1.0:Programul a iesit din betaAm reparat un bug la butonul playAm adaugat un progressbarAm rezolvat niste buguri mari in unealta TPAP RE/CSa 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 descarcatSi... 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.hashLinia2: adresa pentru descarcare fisierului files.pathLinia3: adresa pentru descarcare fisierului files.addrLinia4: adresa pe care o acceseaza web browserul la pornireLinia5: un nume la alegere al ferestreiLinia6: path-ul catre executabilul rulat de butonul PlayDaca 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.lfiles.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 1Si 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 blahDaca 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 2Download:Autopatcher 1.0 Current versionAutopatcher 0.8 OutdatedScuze 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 June 27, 2012 by Endakin Releasing v1.0 1 Quote
nedo Posted June 26, 2012 Report Posted June 26, 2012 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? Quote
Endakin Posted June 26, 2012 Author Report Posted June 26, 2012 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 , cel mai tare feature la vs2012 este ca poti sa faci metro style app) Quote
nedo Posted June 27, 2012 Report Posted June 27, 2012 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. Quote
Endakin Posted June 27, 2012 Author Report Posted June 27, 2012 (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 July 17, 2012 by Endakin Quote
nedo Posted June 27, 2012 Report Posted June 27, 2012 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? Quote
Endakin Posted June 27, 2012 Author Report Posted June 27, 2012 (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 Edited July 17, 2012 by Endakin Quote