Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

Cześć all. :)

 

W jakim języku da się zrobić patchera z taką funkcją: sprawdzenie wielkości plików z serwera i porównanie ich z plikami na dysku

Gdy rozmiar plików będzie taki sam to gra się uruchomi odrazu, a jak będzie inny ściągnie pliki których rozmiar będzie się różnił..

 

(napisałem także w AutoIT bo lepiej znam ten język ale w AutoIt się chyba nie da :/ )

Opublikowano

To jest do zrobienia w niemal każdym języku. W C# np pomocne będą klasy WebClient, FileInfo, czy dodatkowo MD5CryptoServiceProvider.

Sprawdzanie z marszu wielkości plików na zdalnej maszynie nie jest chyba najszczęśliwszym pomysłem. Żeby to było w miarę wydajne, to pewnie musiałbyś to przez jakiś skrypt po stronie serwera zorganizować. Jeśli masz do niego dostęp, to pomyślałem o takim repozytorium, gdzie tworzysz zwykły plik tekstowy a w nim zapisujesz nazwy plików gry, ścieżki i ich wielkości, albo sumy kontrolne/hashe. Wtedy patcher ściągał by tylko ten plik, porównywał rozmiary, lub hashe z plikami na dysku i pobierał zmodyfikowane rzeczy. Przy okazji można sprawdzić, czy pliki są poprawnie ściągnięte.

Opublikowano

Hashe w Patcherze/Updaterze można oczywiście zmienić ;) Z tego też powodu musisz znaleźć jakiś inny sposób :( Samo sprawdzanie CRC nic Ci nie da.

Opublikowano

Chcesz dobrego patchera, to wg mnie powinieneś zrobić tak:

 

Patcher sprawdza SHA1 albo inną sumę kontrolną (od razu mówię, że CRC32, MD5 możesz sobie odpuścić). Najlepiej SHA256.

Po sprawdzeniu, wysyłasz zapytanie do serwera (np do pliku *.php?sha=<tutaj SHA wyliczone przez program kodowane w base64>) - serwer porównuje wysłany z SHA z tym, który jest zapisany po stronie serwera w bazie danych (np. MySQL). Jeżeli SHA jest ok no to serwer zwraca odpowiedni komunikat, jeżeli SHA są różne to wysyła komunikat o potrzebie aktualizacji (ów od razu wysyła plik).

 

Tak czy tak, sposób ten równie łatwo ominąć. Nie ma złotego środka. Jak coś robisz - licz się z tym, że wcześniej jakiś mądry człowiek to rozgryzie.

Jedyny plus, to że raz napisany patcher, nie bedzie wymagać aktualizacji co chwile - ponieważ sumy kontrolne plików będą na serwerze a nie zapisane w samym patcherze.

 

Serdecznie pozdrawiam.

Kocham mpcforum.pl!!!

18706.png

×
×
  • Dodaj nową pozycję...