Skocz do zawartości

Compi

Użytkownicy
  • Postów

    490
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Compi

  1. Compi

    R1NG

    Żebym chociaż miał złotówkę :P
  2. Wyjaśnie ci to w ten sposób. Wyobraź sobie ze strzelasz pociskiem. Pewnie masz ten kod w tym przykładzie. Jeżeli kula będzie kolidować z tym ludkiem to wtedy nastąpi akcja. Rozumiesz?
  3. Compi

    S-TRIP

    Obsługa OpenGL dodana! Z wersją 2.0 zostanie dodane IDE + obsługa WinAPI i OpenGL. Na razie pracuję nad minimalizacją kodu, tak, aby funckję były jak GMLu. Zastanawiam się jeszcze nad możliwością sprzedawania tego programu, oczywiście w późniejszych wersjach. Kod na wyrenderowanie białego kwadrata w S-TRIPIE: GML #OPENGL# STAŁA #%%ext%%#WND_TITLE = 'S-TRIP OpenGL'; #%%ext%%#FPS_TIMER = 1; #%%ext%%#FPS_INTERVAL = 1000; ZMIENNE #%%ext%%#h_Wnd : HWND; #%%ext%%#h_DC : HDC; #%%ext%%#h_RC : HGLRC; keys : #TABLICA[0..255] >> #LOGICZNA; FPSCount : #LICZBA = 0; ElapsedTime : #LICZBA; FUNKCJA_EXT IntToStr(Num : #LICZBA) : #ZNAKI; { Str(Num, ZWRÓĆ); }; FUNKCJA glDraw(); { glClearColor(0.0, 0.0, 0.0, 0.0); glLoadIdentity(); glClear(GL_COLOR_BUFFER_BIT); glTranslatef(0.0,0.0,-3.0); glColor3f(1.0, 1.0, 1.0); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); gl{(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); }; FUNKCJA glInit(); { glClearColor(0.0, 0.0, 0.0, 0.0); }; FUNKCJA glResizeWnd(Width, Height : #LICZBA); { JEŻELI (Height = 0) WTEDY Height -> 1; glViewport(0, 0, Width, Height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0, Width/Height, 1.0, 100.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }; FUNKCJA ProcessKeys; { }; FUNKCJA_EXT WndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LZWRÓĆ; stdcall; { PRZYPADEK (Msg) >> WM_CREATE: { }; WM_CLOSE: { PostQuitMessage(0); ZWRÓĆ -> 0 }; WM_KEYDOWN: { keys[wParam] -> PRAWDA; ZWRÓĆ -> 0; }; WM_KEYUP: { keys[wParam] -> FAŁSZ; ZWRÓĆ -> 0; }; WM_SIZE: { glResizeWnd(LOWORD(lParam),HIWORD(lParam)); ZWRÓĆ -> 0; }; WM_TIMER : { JEŻELI wParam = FPS_TIMER WTEDY { FPSCount ->Round(FPSCount * 1000/FPS_INTERVAL); SetwindowText(h_Wnd, PChar(WND_TITLE + ' [' + intToStr(FPSCount) + ' FPS]')); FPSCount -> 0; ZWRÓĆ -> 0; }; }; ALBO ZWRÓĆ -> DefwindowProc(hWnd, Msg, wParam, lParam); }; }; FUNKCJA glKillWnd(Fullscreen : #LOGICZNA); { JEŻELI Fullscreen WTEDY { ChangeDisplaySettings(devmode(nil^), 0); ShowCursor(PRAWDA); }; JEŻELI (NIE wglMakeCurrent(h_DC, 0)) WTEDY MessageBox(0, 'Release of DC and RC failed!', 'Error', MB_OK LUB MB_ICONERROR); JEŻELI (NIE wglDeleteContext(h_RC)) WTEDY { MessageBox(0, 'Release of rendering context failed!', 'Error', MB_OK LUB MB_ICONERROR); h_RC -> 0; }; JEŻELI ((h_DC > 0) and (ReleaseDC(h_Wnd, h_DC) = 0)) WTEDY { MessageBox(0, 'Release >> device context failed!', 'Error', MB_OK LUB MB_ICONERROR); h_DC -> 0; }; JEŻELI ((h_Wnd <> 0) and (NIE Destroywindow(h_Wnd))) WTEDY { MessageBox(0, 'Unable to destroy window!', 'Error', MB_OK LUB MB_ICONERROR); h_Wnd -> 0; }; JEŻELI (NIE UnRegisterClass('OpenGL', hInstance)) WTEDY { MessageBox(0, 'Unable to unregister window class!', 'Error', MB_OK LUB MB_ICONERROR); hInstance -> 0; }; }; FUNKCJA_EXT glCreateWnd(Width, Height : #LICZBA; Fullscreen : #LOGICZNA; PixelDepth : #LICZBA) : #LOGICZNA; ZMIENNE wndClass : TWndClass; dwStyle : ##dword##; dwExStyle : ##dword##; dmScreenSettings : DEVMODE; PixelFormat : GLuint; h_Instance : HINST; pfd : TPIXELFORMATDESCRIPTOR; { h_Instance -> GetModuleHandle(nil); ZeroMemory(@wndClass, SizeOf(wndClass)); RAZEM Z wndClass RÓB { style -> CS_HREDRAW LUB CS_VREDRAW LUB CS_OWNDC; lpfnWndProc -> @WndProc; hInstance -> h_Instance; hCursor -> LoadCursor(0, IDC_ARROW); lpszClassName -> 'OpenGL'; }; JEŻELI (RegisterClass(wndClass) = 0) WTEDY { MessageBox(0, 'Failed to register the window class!', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; JEŻELI Fullscreen WTEDY { ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings)); RAZEM Z dmScreenSettings RÓB { dmSize -> SizeOf(dmScreenSettings); dmPelsWidth -> Width; dmPelsHeight -> Height; dmBitsPerPel -> PixelDepth; dmFields -> DM_PELSWIDTH LUB DM_PELSHEIGHT LUB DM_BITSPERPEL; }; JEŻELI (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) = DISP_CHANGE_FAILED) WTEDY { MessageBox(0, 'Unable to switch to fullscreen!', 'Error', MB_OK LUB MB_ICONERROR); Fullscreen -> FAŁSZ; }; }; JEŻELI (Fullscreen) WTEDY { dwStyle -> WS_POPUP LUB WS_CLIPCHILDREN LUB WS_CLIPSIBLINGS; dwExStyle -> WS_EX_APPwindow; ShowCursor(FAŁSZ); } ALBO { dwStyle -> WS_OVERLAPPEDwindow LUB WS_CLIPCHILDREN LUB WS_CLIPSIBLINGS; dwExStyle -> WS_EX_APPwindow LUB WS_EX_windowEDGE; }; h_Wnd -> CreateWindowEx(dwExStyle, 'OpenGL', WND_TITLE, dwStyle, 0, 0, Width, Height, 0, 0, h_Instance, nil); JEŻELI h_Wnd = 0 WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to create window!', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; h_DC -> GetDC(h_Wnd); JEŻELI (h_DC = 0) WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to get a device context!', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; RAZEM Z pfd RÓB { nSize -> SizeOf(TPIXELFORMATDESCRIPTOR); nVersion -> 1; dwFlags -> PFD_DRAW_TO_window LUB PFD_SUPPORT_OPENGL LUB PFD_RÓBUBLEBUFFER; iPixelType -> PFD_TYPE_RGBA; cColorBits -> PixelDepth; cRedBits -> 0; cRedShJEŻELIt -> 0; cGreenBits -> 0; cGreenShJEŻELIt -> 0; cBlueBits -> 0; cBlueShJEŻELIt -> 0; cAlphaBits -> 0; cAlphaShJEŻELIt -> 0; cAccumBits -> 0; cAccumRedBits -> 0; cAccumGreenBits -> 0; cAccumBlueBits -> 0; cAccumAlphaBits -> 0; cDepthBits -> 16; cStencilBits -> 0; cAuxBuffers -> 0; iLayerType -> PFD_MAIN_PLANE; bReserved -> 0; dwLayerMask -> 0; dwVisibleMask -> 0; dwDamageMask -> 0; }; PixelFormat -> ChoosePixelFormat(h_DC, @pfd); JEŻELI (PixelFormat = 0) WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to find a suitable pixel format', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; JEŻELI (NIE SetPixelFormat(h_DC, PixelFormat, @pfd)) WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to set the pixel format', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; h_RC -> wglCreateContext(h_DC); JEŻELI (h_RC = 0) WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to create an OpenGL r}ering context', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; JEŻELI (NIE wglMakeCurrent(h_DC, h_RC)) WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to activate OpenGL rendering context', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; SetTimer(h_Wnd, FPS_TIMER, FPS_INTERVAL, nil); ShowWindow(h_Wnd, SW_SHOW); SetForegroundwindow(h_Wnd); SetFocus(h_Wnd); glResizeWnd(Width, Height); glInit(); ZWRÓĆ -> PRAWDA; }; FUNKCJA_EXT #$$WinAPI$$S-TRIP$$# : #LICZBA; stdcall; ZMIENNE msg : ##msg##; finished : #LOGICZNA; DemoStart, LastTime : ##dword##; { finished -> FAŁSZ; JEŻELI NIE glCreateWnd(800, 600, FAŁSZ, 32) WTEDY { ZWRÓĆ -> 0; STOP; }; DemoStart -> DAJ CZAS(); PÓKI NIE finished RÓB { JEŻELI (PeekMessage(msg, 0, 0, 0, PM_REMOVE)) WTEDY { JEŻELI (msg.message = WM_QUIT) WTEDY finished -> PRAWDA ALBO { TranslateMessage(msg); DispatchMessage(msg); }; } ALBO { Inc(FPSCount); LastTime ->ElapsedTime; ElapsedTime ->DAJ CZAS() - DemoStart; ElapsedTime ->(LastTime + ElapsedTime) DIV 2; glDraw(); SwapBuffers(h_DC); JEŻELI (keys[KL_ESC]) WTEDY finished -> PRAWDA ALBO ProcessKeys; }; }; glKillWnd(FAŁSZ); ZWRÓĆ -> msg.wParam; }; #START# #%%ext%%#WinMain( hInstance, hPrevInst, CmdLine, CmdShow ); #STOP#
  4. Compi

    Przygarnięta Nienzjoma

    W Orphanie mała dziewczynka miała ~30 lat. Więc dlaczegóż to nie może być pornstarką?
  5. Compi

    Przygarnięta Nienzjoma

    KOCHAM GMCLAN! Zrób tę nienzjomą w stylu gwiazdy porno i cienkim głosikiem. W ostatniej scenie odgryzie penisa bohatera, tym on samym zginie od wykrwawienia ;) KOCHAM GMCLAN!
  6. Compi

    Mysz optyczna

    Daj fote bebechów i wyjaśnij dokładnie, o co chodzi @EDIT: Wylutuj przyciski i w ich miejsce daj przewody, które będą prowadzić do przycisków w innej części. Dasz radę?
  7. Compi

    Compo 48h (13-15.01)

    ANtY tam jest adminem więc pewnie bana niedługo dostanę :(
  8. Od teraz, budować możemy tylko te klocki, na które nam starczy punktów. Zdobywamy je przez fragowanie. W HUDzie, po lewej stronie widać miniaturki dostępnych bloczków:
  9. To ze zmiennymi to zły pomysł. Nie wiem, czy GML ma taki bajer, ale zmienną liczbową trzymaj w pamięci, a wyświetlaj jako string. Ofc, ten string możesz sformatować, że co czwarty znak możesz dodać '.', lub coś w ten deseń
  10. Bardzo ładnie znalazłeś, ale dlaczego mi tu offtopujesz?
  11. A spróbujcie może Load Map tmp
  12. Wersja 0.1.2 Alpha Poprawione bugi: -Wyłączanie pod Windowsem -Crash przy strzale w beczke -Poprawiona ilość fpsów Znane bugi: -Dziwne zamazywanie za mgłą (OpenGL Bug) -Resp w ścianach Dodano -Poziom 'HELL' -Moby (Szkielety i Kwadraty) DOWNLOAD: http://www.gmclan.org/up3899_3_fortress0_1_2_alpha.html (5 MB) IndieDB
  13. UWAGA! Tego patcha należy wkleić tam gdzie jest fortress.exe i nadpisać i nie powinno już wam crashować! Bynajmniej u mnie już się nie sypie :P PATCH JEŚLI POBRAŁEŚ PATCHA PRZED POJAWIENIEM SIĘ TEJ WIADOMOŚCI, TO MUSISZ TO ZROBIĆ JESZCZE RAZ! Sorry, za usterki, archiwa mi się pomyliły.
  14. To jest po lewej stronie Kod w CSS: #social { position: fixed; top: 200px; left: 0px; width: 69px; z-index: 999; } Daj to w diva o nazwie social i go ładnie zformatuj ;)
  15. Compi

    Binder exe jpg

    Lol. A co jeśli ktoś widzi rozszerzenie plików? klik Takie bindery służą złu.... @EDIT2: 1. Tworzymy archiwum *rar, do którego wkładamy wszystkie pliki, które chcemy ukryć. 2. Wrzucamy zdjęcie oraz plik rar do folderu np. na dysku c: 3. Uruchamiamy konsolę start/uruchom i wpisujemy cd c:\nazwa_folderu. 4. Następnie w konsoli (cmd) wpisujemy copy /B nazwa_zdjecia.jpg + nazwa_folderu.rar gotowy.jpg To z ukrywaniem ale motym podobny
  16. Compi

    Nasze strony

    Widziałem tam na stronce jakiś Edytor Terenu. Nie możesz po prostu zapisać tego do plików jpg i w grze je odczytać (np. 1024x1024 i kolejny part)?
  17. @Edit: Pracuję nad tym na razie, aby pod Windowsem nie kraszowało. Ale jaskinie są już robione ;)
  18. HELL Budowanie fortec tu jest bardzo trudne z powodu szkieletów i podnoszącej się czasem magmy ;)
  19. ? Jaki miałeś nick wcześniej? Nie, C++ SDL
×
×
  • Dodaj nową pozycję...