Skocz do zawartości

Bedi

Użytkownicy
  • Postów

    501
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Bedi

  1. 1 i 2 myślnik - da się zrobić. 3 nie zrozumiałem, a z 4 pewno będzie problem, ale zobaczymy. Default też dodam. Nie wiem o co chodzi z tym tabem.
  2. Ja nie wiem czy było pod taką nazwą, nie sprawdzałem nigdzie indziej. A to sam wymyśliłem. E: Dajcie może jakieś propozycje co dodać etc.
  3. Bedi

    Zmienna

    GML zmienna = get_string("Podaj zmienną:", ""); execute_string('variable_local_set("' + string(zmienna) + '", 0);</span></span></span></span></span></span> Chyba tak. E: Sorki, chyba trochę nie zrozumiałem. Jak byś mógł, to sprecyzuj bardziej swoją wypowiedź (nie rozumiem jej zbytnio) ;) Chodzi Ci o to, że wyświetla się okienko, i jak wpiszesz w nim: "create zycie" to tworzy zmienną życie? Jeśli tak to: GML _var = ""; _get = get_string("Co chcesz zrobić?", ""); _akcja = string_copy(_get, 0, string_pos(" ", _get) - 1); _get = string_copy(_get, string_pos(" ", _get) + 1, string_length(_get)); if (_akcja == "create") { variable_local_set(string(_get), ""); } A używasz tego właśnie wpisując w get_string: "create zycie".
  4. Może ktoś wie, bo nie mogę na YT znaleźć, ani nigdzie w necie. Jak jest na TVN nie raz reklama filmu "Lepiej późno niż później", to leci taka piosenka, zapamiętałem tylko coś takiego: "Come my lady, come come my lady. Sugar (sugar)". Może ktoś wie o jaką piosenkę mi chodzi :)
  5. Bedi

    Zmienna

    GML variable_local_set(name, value); ?
  6. Ok, wszystko jest poprawione, link w 1 poście. E: W zasadzie oni podali mi pewne rozwiązania, więc nie wiem, jak uważacie :D E2: Jest nowszy build. Dodana funkcja symulująca wciśnięcie przycisku w menu (Box_MenuBar_Click( przycisk )). Download - 1 post. Dokumentację uzupełnię przy okazji.
  7. Tytuł: GMBox Gatunek: Biblioteka umożliwiająca obsługę paska narzędzi Opis: Library for Game Maker by Bedi GMBox to biblioteka do Game Makera, umożliwiająca dodanie do okna paska narzędzi. Dzięki tej bibliotece, użytkownik aplikacji ma dużo łatwiejszy dostęp do aplikacji. Tworzenie i zarządzanie paskiem narzędzi jest bardzo łatwe, dlatego wszelkie wprowadzanie zmian nie sprawia większych problemów. Biblioteka umożliwia obsługę zdarzeń, czyli wykonywanie akcji w zależności od wybranego przycisku. Mała liczba funkcji umożliwia utrzymanie spójności i przejrzystości kodu. Wszystkie akcje wykonywane są w bibliotece, dlatego oprócz pliku DLL nie potrzeba żadnych innych aplikacji czy bibliotek. Taka krótka notka, jak do jakiegoś super programu =) Autorzy: - Bedi Szczególne podziękowania dla: - PsichiX - Snake Download: Click! Rozmiar pliku: 127 kb Dokumentacja jest w Game Information, a jeśli chcecie ją w pliku, to: kliknij tutaj Testujcie, oceniajcie ;) Na razie przykład nie jest extra, ale udoskonalę to. Enjoy! E: To może dam jakiś przykład, w jaki sposób tego używać (dokładne wyjaśnienie) ;) 1. Zamiana procedury Przed użyciem wszystkich funkcji (w zasadzie tylko przed sprawdzającymi, ale najlepiej dać to od razu po załadowaniu biblioteki) trzeba wywołać funkcję: Box_TransferProc( window_handle() ) Koniecznością jest wpisanie window_handle(). Jeżeli tego nie umieścimy, to wtedy reszta nie będzie działać (żadne funkcje). Funkcja ta (chyba wiadomo) podmienia procedurę okna, co umożliwia obsługę zdarzeń. Funkcja zwraca ten uchwyt, który podaliśmy w pierwszym arg. 2. Tworzenia paska narzędzi Po załadowaniu biblioteki i zamianie procedury, należy wywołać funkcję: Box_MenuBar_Create(); Spowoduje to utworzenie pustego paska, na którym możemy umieszczać elementy. Funkcja zwraca uchwyt do menu, dlatego używam tej funkcji w ten sposób: hMenu = Box_MenuBar_Create(); 3. Dodawanie popupów (zjeżdżających list) Po wykonaniu 1 i 2 punktu, jeśli chcemy umieścić przycisk w pasku narzędzi, na którym po kliknięciu wyjeżdża lista, wywołujemy funkcję: Box_MenuBar_CreatePopup(); Tworzy to listę, i zwraca jej uchwyt. Dlatego: Przykład przycisku Plik: hListPlik = Box_MenuBar_CreatePopup(); Po wykonaniu tej czynności, dodajemy przycisk do paska, który będzie otwierał listę (AddStatic). Box_MenuBar_AddStatic(hMenu, hListPlik, "Plik"); Pierwszy argument to uchwyt paska narzędzi, drugi - uchwyt listy, a trzeci - treść przycisku. Potem wystarczy aby dodawać przyciski do listy: przycisk = Box_MenuBar_AddListItem( hListPlik, "Treść" ); Natomiast jeżeli chcemy tworzyć przycisk, który nie wyświetla listy, lecz po prostu można na niego kliknąć, to dodajemy przycisk do głównego paska funkcją: przycisk = Box_MenuBar_AddListItem( [b]hMenu[/b], "Treść" ); Jeśli chcemy dodać kolejne przyciski z listami, to wykonujemy od nowa #3 punkt. 4. Podpinanie menu do okna Aby podpiąć menu do okna, wystarczy użyć funkcji: Box_MenuBar_SetMenu( hMenu ); Której argumentem jest uchwyt menu. I wtedy menu z wszystkimi przyciskami zostaje dodane do okna. 5. Obsługa kliknięć Aby sprawdzić, jaki przycisk został wciśnięty, wystarczy postawić warunek: if (Box_MenuBar_Clicked( <id_przycisku, zmienna> ) == 1) { // akcja, czy co tam chcecie xd } Prosty przykład wszystkiego: CREATE: Box_LibraryLoad("GMBox.dll"); Box_TransferProc( window_handle() ); hMenu = Box_MenuBar_Create(); hListPlik = Box_MenuBar_CreatePopup(); Box_MenuBar_AddStatic(hMenu, hListPlik, "Plik"); nowy = Box_MenuBar_AddListItem(hListPlik, "Nowy"); Box_MenuBar_SetMenu( hMenu ); STEP: if (Box_MenuBar_Clicked(nowy) == 1) { game_restart(); } No i to na razie wszystko :)
  8. Potwierdzam. Ja mam stronę na CBA i tam upload jest włączony.
  9. A, no dzięki wielkie ;) Temat jeszcze zostawię. E: A w jaki sposób wyświetlić w MessageBox wartość zmiennej ClickedItem, jeśli jest ona liczbą?
  10. Chodzi mi o dodanie tego stylu.
  11. A to mam umieścić w DLL_PROCESS_ATTACH? Tak jak w aplikacji EXE się to umieszcza w WinMain.
  12. A SetMenu nie podpina ? Co dziwne, WM_COMMAND obsługuje. E: No to w jaki sposób podpiąć to menu?
  13. Dzięki Snake, Twoim sposobem podmieniła się procedura. Ale zauważyłem, że w ogóle nie działa WM_MENUCOMMAND. Kiedy dam: switch (uMsg) { case WM_MENUCOMMAND: MessageBox(hWnd, "test", "test", 0); break; } To zero reakcji.
  14. Może mi nie działa, bo ja używam uchwytu, który pobieram funkcją z DLLki. Mam funkcję Box_Handle(double gmhWnd) i ona ustawia m_hWnd. Potem w tych callbackach używam m_hWnd (w oby dwóch, w moim i tym głównym).
  15. Ok, już sprawdzam, skutki dam w edicie. E: A ja czytając dokładnie opis funkcji SetWindowLong, doczytałem, że funkcja ta zwraca POPRZEDNIĄ wymaganą wartość (czyli u mnie GWL_WNDPROC). I w ten sposób ustawiłem wpOrig :) E2: Po użyciu SetClassLong jest tak samo - nie działa :<
  16. Bedi

    Galeria Grafik

    No ja myślałem, że modele w grze Lineage 2 są fajne, szczególnie potworów, ale Exigo - jakbym zobaczył grę z całością tak udetalowaną, to bym się chyba zapłakał :D
  17. Witam :) Ostatnio po konwersacji z YXE, doszedł on do wniosku (i ja w sumie trochę też :D) że okno GMa - to w którym robimy gry - ma rodzica. Czy jest to prawda? Ponieważ po utworzeniu własnej procedury, przypisaniu jej do okna GMa, ono nadal nie obsługuje zdarzeń (a przecież powinno). Więc jeśli jest ten rodzic, to w jaki sposób pobrać jego uchwyt, aby to w nim podmienić procedurę? Dodam, że pracuję w C++ i ta cała podmiana etc. dzieje się w DLLce. Pozdrawiam. E: Tu akurat Snake by się mógł wypowiedzieć : )
  18. Jest sobie tak luzem w kodzie, bez funkcji. gnysek: Przy używaniu innych funkcji, jeśli nie pobieram zwróconej wartości, nie dopisuje typu jaki zwraca. Czyli void jest domyślny? Ok, w takim razie moja wiedza na temat tego problemu się tutaj konczy. gnysek
  19. Tylko zacznijmy od tego, że ja tutaj wrzuciłem tylko jedną grę (full) + jedno demo. Tamta gra była na początku nauki, a ta druga z nudów.

  20. Narysuj sprita na przeźroczystej warstwie. (np. w GIMPie). Lub użyj funkcji sprite_set_alpha_from_sprite (chociaż nie wiem czy w tej wersji jest jeszcze).
  21. #include <Windows.h> #define exportdll extern "C" __declspec(dllexport) HWND m_hWnd; UINT m_uMsg; WPARAM m_wParam; LPARAM m_lParam; double ClickedHandle; double ClickedItem; /* Tutaj funkcje. exportdll Funkcja(...) - nie podaje tych funkcji bo to jest chyba niepotrzebne. m_hWnd - wartość tej zmiennej jest definowana przez funkcje, także wszystko ok. */ GetWindowLong(m_hWnd, GWL_WNDPROC); Coś więcej? E: Nie powinienem czasem od razu wywołać funkcji CallWindowProc? Jednak nie. E2: Na końcu dopisałem: LRESULT WINAPI CallWindowProc(WNDPROC lpPrevWndFunc, HWND m_hWnd, UINT m_uMsg, WPARAM m_wParam, LPARAM m_lParam) { if (m_uMsg == WM_MENUCOMMAND) { ClickedItem = (double)m_wParam; ClickedHandle = (double)m_lParam; } return 0; }
  22. Witam. Skoro przenieśliście mnie na forum, to tutaj piszę. Mam projekt DLL. Mam tam exportowane funkcje, i samo to działa. Ale kiedy uzywam funkcji GetWindowLong, podkreśla się ona i jest napisane: Funkcja jest w samej DLLce, bez żadnej exportowanej funkcji (tak jakbym sobie ją luzem wrzucił). Mam zaincludowane Windows.h . Uzywam Visual C++ 2010 Express Edition. Z góry dzięki za pomoc :) Pozdrawiam. E: Jeżeli potrzeba jeszcze jakichś informacji, to napiszcie jakich.
  23. Bedi

    Zrobię sygnaturę

    Jak dla mnie, to to wygląda jak flash ;)
  24. Ja bym to jednak zrobił na dezaktywacji obiektów, i poprostu narysował to menu co tam chciałeś. Tak jak Ci właśnie powiedzieli - screen, deaktywacja.
×
×
  • Dodaj nową pozycję...