Skocz do zawartości

gnysek

Administratorzy
  • Postów

    9 823
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    143

Treść opublikowana przez gnysek

  1. Ja też nie przypominam sobie takiej funkcji. Najszybszy sposób to zdecydowanie GML sekunda = string(current_second); if (current_second<10) sekunda = '0'+sekunda; // ew. string_lenght(sekunda)<2</span>
  2. to dodaj if variable_local_exists('color') przed execute :) A zmienne powinny być zawsze zdefiniowane w create :)
  3. w variable_local_set(); nazwa zmiennej jest w apostrofach z tego co wiem :) Do tego w kazdym obiekcie jest wykonywany kod create w momencie stworzenia, a nadane kodem zmienne są do odczytu dopiero od następnego stepa z tego co kojarzę, ew od End Step.
  4. gnysek

    Zakątek śmiechu

    To po co zakładasz temat? https://forum.gmclan.org/index.php?showtopic=8157 https://forum.gmclan.org/index.php?showtopic=10474
  5. gnysek

    Piękności

    I to chyba lepiej niż japonki, przynajmniej w filmach.
  6. Mejl nie mógł aktywować sam z siebie programu. Widocznie miałeś pirata, albo mylisz advanced mode z PRO.
  7. W tym mejlu musiał być klucz, oraz link do pliku EXE z game makerem, dodatkowo samego GMa trzeba zarejestrować do wersji pro - wynika więc, że miałeś ciągle LITE i nigdy nie skorzystałeś z klucza!
  8. jak to nie dostałeś klucza? To jak zarejestrowałeś go za pierwszym razem? trzeba było zapisać klucz wtedy :)
  9. gnysek

    Foto-galeria

    Oho, masz rogi jak diabeł jakiś!
  10. gnysek

    [C++] MD5 pliku, 39dll

    Tak, to "RB", bo znalazłem w sieci jakiś inny program który to robi, kod nieczytelny, ale samo fread wyłapałem :P void CalculateFileMD5(char *fname, char *checksum) { int i; MD5_CTX m_md5; unsigned char buffer[1024]; FILE *plik; int bytes=0; plik = fopen( fname , "rb"); if ( plik == NULL ) { return; } MD5Init(&m_md5, 0); while( ( bytes = fread( buffer, 1, 1024, plik ) ) ) { MD5Update(&m_md5, buffer, bytes); } MD5Final(&m_md5); for (i = 0; i < 16; i++) sprintf(checksum+i*2,"%02x", m_md5.digest[i]); fclose( plik ); }
  11. gnysek

    [C++] MD5 pliku, 39dll

    Modyfikuję sobie źródło 39Dlla, zeby sobie policzyć MD5 pliku. W delphi miałem kod na sumę kontrolną, to sobie przerobiłem pod C++: (dla małych plików jest OK (np. 200B), problem jest chyba po drugim przejściu przez pętlę While). void CalculateFileMD5(char *fname, char *checksum) { int i; MD5_CTX m_md5; char buffer[1024]; FILE *plik; int bytes=0, totalBytes = 0,size = 0; plik = fopen( fname , "r"); fseek (plik , 0 , SEEK_END); size = ftell (plik); rewind (plik); MD5Init(&m_md5, 0); while( ( bytes = fread( buffer, sizeof( char ), sizeof( buffer ) - 1, plik ) ) > 0 && totalBytes<size ) { totalBytes+=bytes; MD5Update(&m_md5, (unsigned char*)buffer, bytes); } //MD5Update(&m_md5, (unsigned char*)buffer, length); MD5Final(&m_md5); for (i = 0; i < 16; i++) sprintf(checksum+i*2,"%02x", m_md5.digest[i]); fclose( plik ); } Oryginał delphi: function MD5Stream(const Stream: TStream): TMD5Digest; var Context: TMD5Context; Buffer: array[0..4095] of Byte; Size: Integer; ReadBytes : Integer; TotalBytes : Integer; SavePos: Integer; begin MD5Init(Context); Size:=Stream.Size; SavePos:=Stream.Position; TotalBytes:=0; try Stream.Seek(0, soFromBeginning); repeat ReadBytes:=Stream.Read(Buffer, SizeOf(Buffer)); Inc(TotalBytes, ReadBytes); MD5Update(Context, @Buffer, ReadBytes); until (ReadBytes = 0) or (TotalBytes = Size); finally Stream.Seek(SavePos, soFromBeginning); end; MD5Final(Result, Context); end;
  12. gnysek

    Random

    ojej, jak chcesz 30 - 400 to piszesz: zmienna := 30 + Losuj(370); jak chcesz 100 - 150 to piszesz: zmienna := 100 + Losuj(50);
  13. gnysek

    Random

    Wracając do pierwszego postu: function Losuj(liczba: integer): integer; begin randomize; result := Random( round(liczba / 10) + 1 )*10; end; dla 270 losuje 0,10,20,...,260,270 :) Edit: tu kolejna wada, bo C,C++ czy Java zaokrągli w dół Inta gdy wyjdzie ułamek.
  14. gnysek

    Random

    Widocznie źle coś napisałeś.
  15. gnysek

    Random

    Wiem, wiem :P Losuje to samo :)
  16. gnysek

    Random

    Z tego co pamiętam rand()%28 losuje z zakresu 0- 27 (tak działa modulo), dla tego upieram się przy ++zakres lub zakres+1. A ze zmiennymi to racja, nie mówia o tym, że musisz pisać integer zamiast int :P
  17. gnysek

    Random

    C++ jest lepsze, piszę w Delphi czasem i naprawdę to jest kiepski język (ot chociażby begin i end zamiast { }, konieczność pisania then, słowo result które nie działa jak return i owszem, zwraca wartość, ale nie przerywa działania funkcji, trzeba pisać naprawdę sporo niepotrzebnego kodu, do tego nadawanie wartości poprzez :=, zamiast =, a przyrównywanie poprzez = zamiast ==, problemy z logicznym AND dla ifów (trzeba dać w nawiasie, albo są problemy) i setki takich pierdół, które na dłuższą metę są denerwujące, jak się zna chociaż jeden inny język). Ten kod w C: #include <time.h> // zapomniales int losuj(int zakres) { zakres /= 10; srand(time(NULL)); return (rand()%++zakres) * 10; // jednak preinkrementacja musi byc aby wylosowal z pelnego zakresu, sorki gnysku;p } i dla np. losuj (270) losuje nam jedną z liczb: 0,10,20,30,...,260,270. zes na szybko pisal ;p ΨΧΞ
  18. Nie, wygodniej jest napisać tak: GML draw_set_color($FFCC00); GM przyjmuje wartości szesnastkowo, można więc normalnie kolory jak w HTMLu podawać :) Ew. z painta, do tego wystarczy kalkulator windowsa który zamienia Dec na Hex :) Jak napisałem, GM obsługuje szesnastkowe liczby, z prefixem $ :)
  19. gnysek

    GMclan-owe cytaty

    https://forum.gmclan.org/index.php?s=&s...st&p=274158
  20. czyli tak w skrócie GML if siedze_w_samochodzie = false { // losuje gdzie jedzie samochod } else { // kod odpowiedzialny za jazdę samochodem przez gracza }
  21. if nick=nicki zamień na if nick=nickpo co do sejva, to poczytaj w helpie, że jak testujesz grę, program directory jest w tempie, zatem zamień zmienną na working directiory i wtedy zawsze będzie ok :)
  22. chociażby... GML nickpo=odszyfruj(nicki) show_message(nickpo); i już wiesz.
  23. To sprawdź co zwraca skrypt i będziesz wiedział jakie hasło odczytał.
×
×
  • Dodaj nową pozycję...