Skocz do zawartości

Danielus

Użytkownicy
  • Postów

    391
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Danielus

  1. Danielus

    Anime

    To co zapodałem( Utawarerumono ) to ponoć na podstawie gry erotycznej, aczkolwiek w anime tego nie uświadczysz : f Fabuła idzie ekspresem do przodu, a opening jakiś taki nostalgiczny mi się wydał, nie wiem czemu. Z Monogatari to póki co widziałem tylko Bakemonogatari, reszta czeka na swój szczęśliwy traf : p Mam z 90 pozycji na "plan to watch"( w sensie takich które zakończyły już emisje ). Jak kończe jedno to biorę random generator żeby mi wybrał kolejną pozycję : )
  2. Funkcje których używasz nie są już wspierane. Musisz napisać ręcznie przy pomocy funkcji rysujących wszystko. Poczytaj w dokumentacji o funkcjach draw_*
  3. Danielus

    Anime

    http://myanimelist.net/anime/856/Utawarerumono Dobre.
  4. Jemu raczej chodzi o to żeby zapisać więcej screenów bo teraz mu się nadpisują. Zrób sobie licznik i sprawdzaj czy plik istnieje za pomocą file_exists() jeśli nie istnieje to wtedy zapisz. Pamiętaj że jak ten kod będziesz miał w step i cały czas -50 punktów to zapiszą Ci się tysiące screenów, zrób sobie jakiś przerywnik.
  5. Całkiem zabawne. Przyłączę się : D Threef nie polecam poprawiać innych. Nie wychodzi Ci to. [No hard feelings pls] PatrykPlayingPOLSKA podał na samy początku poprawną odpowiedź( chyba że gm już nie pozwala używac pojedyńczego porównania ) Dlaczego? Autor wątku w create global.punkty ustawia na 0 a wiec nie mozna użyć znaku >= bo przejdzie natychmiast dalej : ) Po za tym napisał że kiedy punkty zmienią się na -10 to ma się zmienić co sugeruje że jest to forma flagi i jest pewny że wartość tyle bedzie wynosić.
  6. Ludzie czy wy nie rozumiecie że on nie może użyć żadnej znanej metody hashowania? Przeczytajcie jeszcze raz o co się rozchodzi i dlaczego w tym przypadku to bardziej przypomina szyfrowanie niż hashowanie. Bo to już będzie drugi albo nawet i trzeci raz gdy dokładnie zaznaczam że znane i co ważniejsze popularne hashowania odpadają.
  7. Wow. Tego się nie spodziewałem : p Przestestuję jak wrócę z pracy
  8. To naprawdę zabawne. Wrzucić screena z wiadomością że logfile został wygenerowany zamiast załączyć owego logfila : ) Po tekście widać że gra mu to sama wywaliła, niech ci załączy podany folder to sie dowiesz co się stało( chyba że luncher to tez gm, wtedy z logfila dowiesz sie które to).
  9. Zmienna to pamięc do której zapisujesz wartości które chcesz sobie zapamiętać. W gmie wszystk orobi się automatycznie więc piszesz jakąs swoją nazwe i co ma w niej być np. mysz_x = mouse_x; mysz_y = mouse_y; Od tej pory jak gdzieś wstawisz mysz_x to bedzie taka wartość jaką miała pozycja x myszy gdy wywołał się ten kod. Pamiętaj by nie używać nazw istniejących już w gmie. Jak już masz to zapisane to możesz tego użyć do swojego skryptu poruszania np move_towards_point(mysz_x,mysz_y) czy co tam masz. np w evencie mouse pressed: GML move_towards_point(mouse_x,mouse_y, 2);
  10. Złamanie md5 nic nie wnosi do jego problemu, a tylko niepotrzebnie mu sugerujesz że może użyć sha. zauważ że on nie składa pospisu cyforwego, tylko chce potwierdzić autentyczność wyników. Najlepsze w tym wypadku byłoby własne szyfrowanie, ale hashe są po prostu prostsze do zrobienia. On choćby chciał to nie może użyć nawet sha, tylko musi napisać własną metodę. Mój kod w żadnen sposób nie ogranicza długości stringu, po prostu szybciej zaczną występować kolizje, on nie potrzebuje spędzić połowy życia analizaując działanie funkcji mieszających zahaczając po drodze o doktorat by zrobić proste zabezpieczenie do gry. Zresztą po co robić skomplikowane skoro zawsze dla atakującego jest pewna równowaga: robić dissasemblacje kodu czy skupić się na wynikach które wyrzuca program. Jak funkcja będzie zbyt trudna to zrobi dissamblacje i użyje twojego skomplikowanego hashowania ręcznie na swoich danych( w przypadku takiego użycia jak jest tutaj potrzebne )
  11. Hashe ogólnie zawsze powinny być tej samej długości(nie jest to konieczne, ale ważne jeśli chce się zwiększyć bezpieczeństwo). Możesz wybrać sobie jakąś liczbę startową np a = 9; potem robisz fora po połączonym stringu nazwy gracza i wyniku i przemnazasz: for( i=0; i<string_length(polaczonystring); ++i) a = a * (jakaś liczba pierwsza) + wartosc asci i-tej literki w połączonym stringu. Mogą szybko wychodzic duze liczby więc dodatkowo za każdym razem możesz robić modulo jakaś duża liczba pierwsza. W ten sposób dostaniesz liczbę powiązaną z tym słowem. Zastępowania jest raczej zlym pomysłem bo jeśli nie jest skomplikowane to można je rozgryźć w parę minut( i to bardziej szyfrowanie niż hashowanie choć nie do końca :) ). Do takiego czegoś musisz użyć swojego, osoby bawiące się takim czymś zazwyczaj znają wygląd sha1 czy md5 i na pewno spróbują czy tego nie użyłeś. Wtedy po prostu przepuszczą to co chcą wstawić i dostaną hash. To musi być coś czego inni nie będą znali.
  12. Dokładnie tak, tylko hashowanie samego nicku gracza nie ma sensu jesli chcesz opcje z nickiem to połącz nick z punktami do jednego stringu i hashuj całość. Pamiętaj że w tej wersji powinieneś sprawdzić czy dany użytkownik ma już wynik w bazie i jeśli tak to sprawdzasz czy obecny jest większy, jeśli ponownie odpowiedź to tak to wtedy aktualizujesz jego wynik na ten lepszy(jesli mniejszy to nie zapisujesz nic). Jeśli go jeszcze nie ma to oczywiście normalnie wpisujesz. Jeśli nie rozumiesz dlaczego tak to wygląda, mogę spróbować wytłumaczyć. EDIT: nie, moment musze na to spojrzeć jeszcze raz źle, za szybko popatrzyłem. Funkcja hashująca to jest coś co zna client i server ale nie osoba postronna. Mozna to traktować jak podpis, piszesz list do znajomego i ustalacie że na końcu aby miał on pewność że list jest od Ciebie, napiszesz 10 ostatnich samogłosek które użyłeś w liście. Teraz jak ktoś kto o tym nie wie spróbuje się podszyć i nie dopisze tych samogłosek to twój przyjaciel będzie wiedział że to fałszywka. Wiec uwzględniając co napisałem wyżej powinno być tak: GML //A serwer/strona czyta: user= gracz; score= 1000; hash = g1r0a0c0z0; //to wyszlo z hashowania tak samo jak linijka nizej tylko w cliencie h_hash = encode(string(user)+string(score)); //hashujesz polaczone // teraz sprawdzasz czy to co policzyl client to to samo co tobie wyszlo z hashowania danych na serwerze // porównując do przykładu z listem, jest to wzięcie 10 ostatnich liter z listu i sprawdzenie czy zgadzają się // z 10 ostatnimi samogłoskami(nie licząc samych ostatnich 10 oczywiscie, które sa podpisem: ) ) if( hash == h_hash){ //wyślij dane( spradź czy to najwzyszy wynik tego gracza) }else{ //zbanuj usera bo hacker :D } Teraz żeby wpisac coś do bazy wrogo nastawiona osoba musi podac jakiś nick, punkty które chce sobie zhakować i hash -> tylko skąd go wziąć bez ostrej dissasemblacji?( zakładając że masz mocna funkcję hashującą )
  13. No to jest bezpieczne. Oczywiście każdy może sobie dowolny wynik wpisać. I tu można tylko robić utrudnienia bo nie ma zabezpieczeń(pewnych) dla gier po stronie clienta, zdolna osoba zawsze znajdzie obejście. W związku z tym wszelkie wrażliwe rzeczy jak np naliczanie punktów musza się dziać po stronie serwera. Oczywiście jeśli to prosta gierka wystarczy nałożyć parę zabezpieczeń i liczyć na to że żaden geniusz nie weźmie tego za wyzwanie : ) Natomiast jakie zabezpieczenia zastosować to już w głównej mierze zależy od tego w czym robisz clienta. Jeśli to plik wykonywalny to możesz wbudowac funkcje hashującą która będzie hashowac wynik. czyli wysyłasz login + wynik + hash(wynik), serwer odbiera to i tez hashuje wynik. Sprawdza czy oba hashe są identyczne jeśli tak to ok i może wysłać do bazy. W ten sposób ktoś będzie musiał odbudować funkcję hashująca którą wymyśliłeś(co jest bardzo trudne) by wprowadzać własne wyniki(choć wciąż będzie mógł sklonować swój wynik wielokrotnie wysyłając to samo - rozwiązaniem może być przechowywanie tylko jednego najlepszego wyniku dla każdego gracza, wtedy hashujesz całość i wysyłasz login + wynik + hash(login+wynik))
  14. Co rozumiesz przez zdanie że sql jest bezpieczne? Jak się łączysz z bazą sql? przez server czy przez clienta( w sensie dajesz użytkownikowi dane do logowania do bazy? Jeśli tak to na jakich uprawnieniach? ) Zresztą dawanie jakichkolwiek uprawnień logowania do bazy jest bez sensu bo z łatwością można ją wtedy przyblokować.
  15. Jak masz kod to można znaleźć w czym jest błąd. Na klockach nie bardzo.
  16. A lokalnie znaczy, że nie wykorzystasz jej w innych skryptach, nawet w tym samym obiekcie. czyli jak dasz: zmienna = 0; To mozesz tego używac potem w step, draw wszędzie w obrębie obiektu. Natomiast: var zmienna = 0; Sprawi że tylko w tym skrypcie w którym piszesz bedzie ta zmienna dostepna. Nie ma to też nic wspólnego z var w C# bot tam jest to uproszczenie zrzucające na kompilator by domyślil się o jaki typ zmiennej nam chodzi zamiast pisać to wprost w kodzie.
  17. nawiązanie połączenia a pośredniczenie to dwie zupełnie odmienne rzeczy. Pierwsza jest spokojnie do zrobienia, ale wtedy jeden z graczy musi mieć publiczny adres ip albo nic z tego. Drugie podejście to już właśnie typ MMO a więc serwer pilnuje graczy żeby byli grzeczni i czy jest ich jeden, dwóch czy 30 tysięcy nie robi rożnicy : ) I tego drugiego nie zrobisz na gmowym networkingu. Jak chcesz pogdać to zapraszam, do dyspozycji mam Skype, Facebook albo Hangouts( pisz pm po szczegóły ) z tym że jeśli chodzi o sam game maker to już nie jestem jego aktywnym użytkownikiem, ale o grach multi i nie tylko zawsze chętnie podyskutuje : )
  18. Nie wiem czy coś się zmieniło(ale nie sądzę) ale głównym powodem dla którego ostatecznie porzuciłem gm'a na rzecz Unity jest fakt że jeśli server też postawisz w gmie to będziesz potrzebował serwera z kartą graficzną. A jeśli byś nie chciał robić serwera w gmie to raczej odpada też używanie wbudowanego networkingu. Jeśli nie potrzebujesz autorytatywnego serwera to pewnie jest to do zrobienia, ale jeśli chcesz mmo to szykuj się raczej na zewnętrzne rozwiązania jeśli idzie o networking. W związku z powyższym nie ma możliwości odpalenia gma w trybie headless. Co do ostatniego pytania - pytasz czy jest strona która za Ciebie wszystko zaprogramuje? : d
  19. powiem sprytnie żebyś niszczył ten który się styka z linią : f Jeśli coś Ci nie działa to wypadało by pokazać co i jak robisz
  20. zamiast image_index użyj własnej zmiennej np. kolor( ustawiaj ją wtedy kiedy tworzysz obiekty). Wtedy twój kod powinien zadziałać.
  21. Gdyby ktoś był zainteresowany to na packtpubie jest obecnie tydzień unity, codziennie nowa książka do pobrania za darmo :f https://www.packtpub.com/packt/offers/free-learning
  22. GML else if( c == '+' || c == '-') { if( c == '*' || c == '/' || a == 0) { stos[a++] = c; } wtf : d I coś strasznie długie : f
  23. Danielus

    Epizod 2 - 1vs1

    co jeśli żaden bot nie pokonuje drugiego? np. schowa się w tarczy i będzie się poruszał razem z nią nic innego nie robiąc.
  24. Danielus

    Pipes Ultimate Plumber

    wybacz, ale źle Ci się wydaje : f Mając do dyspozycji ułatwienie, w momencie gdy jesteś zmęczony, nie możesz przejść jakiegoś etapu, stwierdzasz, że ta mapka Ci nie podchodzi lub po prostu chcesz zobaczyć kolejną to korzystasz. Bo możesz. Sam tak mam z podobnymi grami i parę razy udało mi sie to też zauważyć u znajomych. Tu nie chodzi o to czy chcesz przejść grę czy nie, tylko o twój mózg, który czasem nie chce odpuścić, a z drugiej strony nie chce już się myśleć na tym samym. Jak nie ma podpowiedzi - nie ma problemu, po prostu wyłączasz grę i nic Cie nie kusi( Zawsze można mówić o sile woli czy coś, no ale nie będę się zastanawiał odpalając grę czy jestem dziś w nastroju do utrzymania postanowienia nie używania podpowiedzi : p dlatego stwierdziłem, że jeśli to nie casualowa gierka, to lepiej żeby nie było takiej możliwości ) E: classic medium level 5. Mam 6 sekund na przejście : f to tak ma być?
  25. Danielus

    Pipes Ultimate Plumber

    ludzie co wy macie z tymi podpowiedziami/przechodzeniami? Jak będziecie mieć ułatwienia to będziecie z nich korzystać tracąc część gry. Jeżeli to nie jest gra typowo dla casuali to bardzo dobrze że nie ma opcji darmowych ułatwień. Co do gry to bardzo przyjemnie się gra. To że mnie po tutorialu od razu do mediumów rzuciło to tak ma być? Na razie przeszedłem 13 poziomów z medium i te ostatnie były całkiem ciekawe, zwłaszcza 13, bo utknąłem, na chwile przez błędne założenie że środkowe rury muszą iść razem do góry : f
×
×
  • Dodaj nową pozycję...