Piotrek1910 Opublikowano 28 Stycznia 2013 Udostępnij Opublikowano 28 Stycznia 2013 Troche się ogarnąłem i gm też. Więc może tym razem mój auto-update bardziej wam się spodoba. Sądzę, że v2 jest lepsza i prostsza. Co jest potrzebne: -Game Maker 8.0 lub nowszy, -jakąś bibliotekę do pobierania plików np. 39dll.dll Auto-update dla pojedynczego pliku(np. jak twoja gra posiada jeden plik bez jakiś bibliotek, plików .dat itp.) 1.Tworzymy osobny plik game makera i wchodzimy do niego(można go nazwać autoupdate) 2.Dodajemy skrypty od danej biblioteki 39dll.dll lub innej. 3.Tworzymy dwa pliki .ini. Jeden nazywamy np. config.ini (w nim będzie wersja naszej gry) Do niego wklejamy: [Dane] Wersja=2,3 - wersja twojej gry. (możesz dać jaką chcesz) Drugi nazywamy update.ini (w nim będą potrzebne dane do aktualizacji) i do niego wklejamy: [Update] ver=2,4 - nowa wersja gry url=http://pho.ugu.pl/gra.exe - link do pliku do pobrania najnowszej wersji. Zapisujemy ten plik i wrzucamy na jakąś strone( można na gmclan.org lub na jakimś własnym hostingu, ja akurat użyje swojej strony.) 4.Tworzymy object. Do create dodajemy klocek z wpisywaniem kodu i otwieramy go. Do niego wpisujemy. create: GML dllinit( "39dll.dll", 1, 1 ); update=download_file("http://uploduj.ugu.pl/update.ini","update.ini"); //pobiera nasz plik update.ini</span> Step: GML download_file_step( update ); download_file_step( update2 ); if (file_exists("update.ini")) //sprawdza czy plik update.ini istnieje. { ini_open( 'config.ini' ) //otwiera plik .ini. myver = ini_read_real('Dane','Wersja',myver); //sprawdza twoją wersje gry. ini_close() //zamyka plik .ini. ini_open( 'update.ini' ) //otwiera nasz plik .ini. ver = ini_read_real( 'Update', 'ver', ver ); //sprawdza jaka jest najnowsza wersja. url = ini_read_string( 'Update', 'url', url ); //pobiera link najnowszej wersji. ini_close() //zamyka plik update.ini if ver>myver //porównuje naszą wersje z najnowszą. update2=download_file(url,"gra.exe"); /*jeżeli nasza wersja starsza pobiera najnowszą. Uwaga plik gra.exe można nazwać jak się chce lecz pamiętaj jeżeli chcesz aby aktualizacja była poprawna i nie było starszej wersji to nazwe gry dawaj zawsze taką samą. Aby nowa wersja zastąpiła starą wersje.*/ ini_open( 'config.ini' ) //otwiera nasz plik config.ini myver = ini_write_real( 'Dane','Wersja', ver ); //zmienia wersje gry na najnowszą. ini_close() //zamyka plik config.ini } Game End; GML file_delete("update.ini"); //usuwa plik update.ini</span></span></span></span></span></span> 5. W Global Game Settings (w gm 8.0 nie wiem czy w nowszych też trzeba) trzeba zaznaczyć "Treat unintialized varables as value 0" bo mi bez tego nie działa. Oczywiście że można dodać jakieś paski stanu pobierania czy coś. Jak robić aktualizacje? Kiedy skończysz tworzyć swoją gre zapisz do pliku .exe. Plik wrzuć na serwer (pamiętaj nazwa tego pliku musi mieć taką samą nazwe jak poprzednia aby gra ją wykryła pobrała i zastąpiła.) Potem przechodzisz do naszego pliku update.ini w wersji zmieniasz na wyższą np. z 2,4 na 2,5 Przykład: https://gmclan.org/up7589_4_Poradnik_1_01.html v1.01 - mała poprawka Mam nadzieje, że o niczym nie zapomniałem. Męczyłem się z tym Httpdownloader niestety nic nie wyszło to potem musiałem ogarnąć 39dll.dll troche mi to zajęło. O błędach proszę mi zgłaszać. Dla wielu plików: Jeszcze pracuje jak to ogarnąć. Może ktoś na forum mi pomoże? (bo wiem jak to zrobić ale jest jeden problem) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 28 Stycznia 2013 Udostępnij Opublikowano 28 Stycznia 2013 No nawet fajne widzę że bez użycia php więc, może to obczaje jak będę potrzebować. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 28 Stycznia 2013 Autor Udostępnij Opublikowano 28 Stycznia 2013 Przepraszam was, że jest aż tak szeroka strona nie wiem dlaczego. Spróbuje to ogarnąć. Add: Ja i php? No co ty HuderLord. Ja nie ogarniam php. Pomysł aby tak zrobić ten auto-update dał mi Utermiko w poprzednim nie udanym auto-update. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 28 Stycznia 2013 Udostępnij Opublikowano 28 Stycznia 2013 No fajnie, ale lepiej od tego alarmu jest chyba sprawdzać czy istnieje plik na dysku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 28 Stycznia 2013 Udostępnij Opublikowano 28 Stycznia 2013 Nie poddajesz się - tak trzymaj. Co do pobierania kilku plików to: 1) pakować aktualizację do zipa, pobrać i rozpakować. Bodajże ediepl napisał takiego dll'a (https://forum.gmclan.org/index.php?showtopic=26819) 2) listować pliki na serwerze przez php i wysłać tę listę do klienta który po kolei wszystko pobiera. BTW. Skoro poprzedni auto-updater się nie udał to wywal go z sygny :P @EDIT Jeśli już miałbym się uczepić: 1) liczby po przecinku nie poprzedza się czasem kropką a nie przecinkiem? 2) z tego co wiem w funkcjach ini_read_* trzeci argument to jest domyślna wartość (tzn. zwraca to jeśli nie ma takiego klucza w ini). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 28 Stycznia 2013 Autor Udostępnij Opublikowano 28 Stycznia 2013 Threef: jutro może coś takiego zrobie przy okazji ulepsze wygląd by to jakoś wyglądało. Utermiko: dzięki. Coś wykompinuje mam nadzieje, że ediepl się nie obrazi, że użyje jego .dll. Nie usune ponieważ potem ludzie będą się pytać: ,,a gdzie pierwsza wersja?" @EDIT: Utermiko: 1.To jest raczej obojentne. 2.Nie wiem co ci powiedzieć ;D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 28 Stycznia 2013 Udostępnij Opublikowano 28 Stycznia 2013 Przecież nie po to go wstawiał, żeby się obrażać za użycie :P Zaznacz po prostu, że to on napisał dll'a. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 28 Stycznia 2013 Autor Udostępnij Opublikowano 28 Stycznia 2013 Ok, ale to jutro bo teraz jestem na fonie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 29 Stycznia 2013 Administratorzy Udostępnij Opublikowano 29 Stycznia 2013 Pytanie, ile taki auto-updater zajmuje miejsca? Bo można by napisać go w czymś mniejszym < 1MB a działanie takie samo albo i lepsze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
FanXX Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 Ja na szczęście poradziłem sobie z tym sam, i mam swoje skrypty wyexportowane do GML jako mini silnik update. Zrobiłem to trochę zaawansowanie, ale plus leci za opisanie w miarę szczegółowo co i jak. Myślę że dla początkujących to będzie dobry wzór i jak najbardziej 4 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 29 Stycznia 2013 Autor Udostępnij Opublikowano 29 Stycznia 2013 gnysek: Wiem, że waży dużo ale to wina game maker. Chociaż jak się spakuje taki plik to waży < 1 mb. FanXX: dzięki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 29 Stycznia 2013 Autor Udostępnij Opublikowano 29 Stycznia 2013 Kurde, robiłem teraz troche ładniejszą wersje aby to jakoś wyglądało niestety coś jest nie teges z kodem. Zobaczcie: https://gmclan.org/up7589_4_Poradnik_v2_Problem.html Chodzi o to, że plik update.ini czyli update zaczyna pobierać się dopiero wtedy kiedy zaczyna wchodzić kod update2 czyli gra.exe. Przez to gra nie chce się zaktualizować. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 Zamiast robić to na alarmach to sprawdzaj czy plik (update.ini) istnieje (w stepie). Nie masz pewności jak długo będzie się ten plik u kogoś pobierać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 29 Stycznia 2013 Autor Udostępnij Opublikowano 29 Stycznia 2013 1. Nie wiem jaką komendą można sprawdzić czy dany plik istnieje. file_find_first i co dalej? 2.Chodzi o to, że plik update.ini (update) nie zacznie się pobierać zanim nie włączy się alarm[2] troche to dziwne i jakoś tego nie czeje. Przez to, że plik update.ini zaczyna pobierać się dopiero wtedy kiedy już porównuje najnowsżą wersje z naszą nie porówna tego ponieważ plik update.ini nie pobrał się jeszcze i też dlatego nie ma możliwość pobrania pliku gra.exe ze zwględu na to, że nie ma danych. (chyba zrozumiale napisałem :D) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 file_exists bodajże, wystarczy zajrzeć do dokumentacji. Ogólnie to nie możesz sprowadzać się do tego: działa na moim kompie to zadziała wszędzie. Ustawianie na sztywno, że plik pobierze się w ciągu 1,5 sekundy jest złym pomysłem - zdarzają się wyjątki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 file_exists(fname) Zwraca czy podany plik istnieje (true) czy też nie (false). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się