Skocz do zawartości

DRIVER3x2

Użytkownicy
  • Postów

    18
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez DRIVER3x2

  1. Dziękuje Konrad za odpowiedź lecz jak dla mnie jest ona zbyt ogólna.

    Szczeże mówiąc spodziewałem się że szybko ktoś mi pomożę bo na forum wiem że kilka osób korzysta z takich rozwiązań.

    Może żeby było prościej pokaże wam jak ja to robię i proszę o wskazanie błędów:

    Przykładowy kod źródłowy .dll (tworzenie kwadratu):

     

         #include "dll.h"
         #include <windows.h>     
         #include <gl\gl.h>           
         #include <gl\glu.h>           
         #include <gl\glaux.h>        
         #define export extern "C" __declspec(dllexport)
    
         export char *Fquads(void)                                    
         {
             glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);   
             glLoadIdentity();                                    
             glTranslatef(-1.5f,0.0f,-6.0f);
             
             glBegin(GL_QUADS);
                 glVertex3f(-1.0f, 1.0f, 0.0f);         // górny lewy
                 glVertex3f( 1.0f, 1.0f, 0.0f);         // górny prawy
                 glVertex3f( 1.0f,-1.0f, 0.0f);         // dolny prawy
                 glVertex3f(-1.0f,-1.0f, 0.0f);         // dolny lewy    
             glEnd();
         }

     

    Kod wywołania w Game Maker w "ciele" obiektu:

    GML
    Fquads = external_define( 'Projekt1.dll', 'Fquads', dll_stdcall, ty_string, 0);

    external_call(Fquads);

    external_free('Projekt1.dll')

    Proszę o szybką analize :)

  2. Witam serdecznie,

    Od jakiegoś czasu czę się OpenGL i przy okazji pomagam koledze przy tworzeniu gry w Game Makerze, chciałbym w tym wykorzystać wiedzę którą posiadam o OpenGL.

    Najchętniej bym to zrobił korzystając z bibliotek .dll (pisząc bibliotekę w c++ kompilować do .dll i używać funkcji z tej biblioteki z użyciem Game Makera)

    Ale niestety nie wiem jak się za to zabrać, potrafię tworzyć biblioteki .dll dla Game Maker bo już kilka zrobiłem, lecz nie używałem nigdy do tego OpenGL.

    Uprzejmie proszę Was żebyście mi pokazali jakiś malutki przykład np. wyświetlenie jakiegoś kwadratu 2D. Kod źródłowy biblioteki .dll i w którym miejscu użyć funkcji z biblioteki w Game Makerze.

     

    Pozdrawiam

  3. Ale o co ci chodzi?

    Gdzie ty masz tam błędy? U mnie się kompiluje elegancko i działa.

    Podstawowa zasada nie wiesz, nie znasz się.. to po prostu nie pisz.

    No właśnie tylko szkoda że sam się do tej zasady nie stosujesz :twisted:

  4. Nie wiem czy pomoc ci jeszcze potrzebna, ale napisze jakby co.

    A więc przykładowy zapis do pliku moim zdaniem powinien wyglądać tak:

     

     
    #include<fstream>
       
       int main()
       {
            int tab[3], A; //deklaracja zmiennych
       
            tab[0] = 1234; //przypisanie zmiennym wartości
            tab[1] = 6544;
            tab[2] = 8298;
            tab[3] = 2936;
       
            std::ofstream PLIK ("dane.txt"); //Otworzenie pliku do zapisania
            PLIK<<tab[0]<<"\n";
            PLIK<<tab[1]<<"\n";
            PLIK<<tab[2]<<"\n";
            PLIK<<tab[3]<<"\n";
            PLIK<<A<<"\n";
       }

     

     

    A przykładowy odczyt tak:

     

     #include<iostream>
       #include<fstream>
       #include<sstream>
    
       int ZA(std::string FOO)
       {
           int i;
           std::istringstream iss(FOO);
           iss >> i;
           return i;
       }
       
       int main()
       {
            int tab[3], A; //deklaracja zmiennych
            std::string foo, B;
       
            std::ifstream PLIK ("dane.txt"); //Otworzenie pliku do odczytu
            for(short p1=0; p1<4; ++p1)
            {
                      PLIK>>foo;
                      tab[p1] = ZA(foo); //zamiana stringu na int'a
            }
            PLIK>>B;
            A = ZA(B);
            for(short p2=0; p2<4; ++p2)
            {
                      std::cout<<tab[p2]><<"\n"; //wypisanie zmiennych na ekran
            }
            std::cout<<a;
            getchar();
       }

     

    Kod pisałem na szybko z głowy, ale nie powinno być żadnych błędów.

  5. I od razu wiadomo, jak liche jest Twoje szyfrowanie, skoro nie znasz tak prostej metody.

    Nie wiem jak nie znajomość metody xor może świadczyć o tym że moja metoda jest słaba :D

     

    bo widzisz, My tu lubimy dokładność w tym co sie robi i często możesz się spodkać z sytuacją gdzie większość się na Ciebie uweźmie

    No to aż za dobrze widać, prawie w każdym temacie ktoś się czegoś uczepi, ale po dłuższym zastanowienie to nie jest takie głupie, łatwiej doskonalić nasz projekt jeśli wiemy gdzie popełniliśmy błąd :)

  6. Nie, nie jest tak jak mówisz, w sumie to mało zrozumiałem z tego co napisałem :)

    Algorytm zapisania i szyfrowania zmiennej jest całkiem inny niż myślisz (o ile dobrze myślę co ty myślisz :D)

    Pobierz dll'a i zrób szybki teścik, a może zrozumiesz jak to działa :)

    edit //

    Zapoznałem się z tym xor'em o którym pisałeś, nie słyszałem o tym wcześniej i mogę cie zapewnić że to nie jest ta metoda szyfrowania :)

  7. czyli foo robi w tym przypadku za klucz/haslo?

    Tak można nazwać to kluczem do pliku w którym zapisana jest zmienna.

    mały przykład użycia dwóch kluczy:

    GML
    foo = "sym";

    foo2 = "abc";

    a = 15;

    b = 23;

     

    ZA = external_define( 'phAss.dll', 'ZA', dll_stdcall, ty_real, 2, ty_real, ty_string );

    OD = external_define( 'phAss.dll', 'OD', dll_stdcall, ty_real, 1, ty_string);

     

    external_call(ZA, a, foo2); //zapisanie zmiennej a do pliku z kluczem foo2

    external_call(ZA, b, foo); //zapisanie zmiennej b do pliku z kluczem foo

    show_message('Test odczytania: ' + string( external_call(OD, foo) ) ); // odczytanie zmiennej z pliku kojarzonym z kluczem foo

    show_message('Test odczytania: ' + string( external_call(OD, foo2) ) ); // odczytanie zmiennej z pliku kojarzonym z kluczem foo2

    external_free('phAss.dll');

  8. GML
    foo = "sym";

    a = 15;

     

    ZA = external_define( 'phAss.dll', 'ZA', dll_stdcall, ty_real, 2, ty_real, ty_string );

    OD = external_define( 'phAss.dll', 'OD', dll_stdcall, ty_real, 1, ty_string);

     

    external_call(ZA, a, foo);

    show_message('Test odczytania: ' + string( external_call(OD, foo) ) );

     

    external_free('phAss.dll');

    To jest całość kodu do użycia szyfratora, nie sądzę że jest on długi.

    Jak wspomniałem napisałem tego dll'a dla użytku własnego, żeby wrzucić go tutaj namówił mnie kolega, a może akurat komuś się przyda :)

    Kto nie chce korzystać to nie musi nic na silę :)

  9. Witam serdecznie :)

    Napisałem dla kolegi plik dll służący do szyfrowania i deszyfracji zmiennych i namówił mnie on żebym udostępnił go dla was :)

    Tym samym jest to mój pierwszy temat na waszym forum :)

    Przejdźmy do tematu...

    Mam nadzieje że macie jako takie pojęcia jak używać plików .dll w Game Maker.

    Najpierw przykład a później wyjaśnię :)

     

    GML
    foo = "sym";

    a = 15;

     

    ZA = external_define( 'phAss.dll', 'ZA', dll_stdcall, ty_real, 2, ty_real, ty_string );

    OD = external_define( 'phAss.dll', 'OD', dll_stdcall, ty_real, 1, ty_string);

     

    external_call(ZA, a, foo);

    show_message('Test odczytania: ' + string( external_call(OD, foo) ) );

     

    external_free('phAss.dll');

    Pierwsza linijka jest to zmienna pomocnicza musi się ona składać z trzech znaków, za pomocą tej zmiennej będziemy mogli się później odwołać do zmiennej zapisanej w pliku kojarzonym z tą zmienną :)

     

    Druga linijka jest to nasza zmienna którą chcemy zapisać w pliku.

     

    następne cztery linijki mam nadzieje że nie wymagają komentarza...

     

    Linijka nr 6

    GML
    external_call(ZA, a, foo);

    Jest to zapis naszej zmiennej a do pliku kojarzonym ze zmienną foo.

     

    GML
    show_message('Test odczytania: ' + string( external_call(OD, foo) ) );

    Ta linijka odpowiada za odszyfrowanie pliku kojarzonym ze zmienną foo i jej wyświetlenie, możemy ją zastąpić linijką:

    GML
    b = external_call(OD, foo);

    czyli przypisanie do zmiennej b wartości pliku kojarzonym ze zmienną foo.

     

    Linijka nr 10

    GML
    external_free('phAss.dll');

    zwalnia biblioteke z pamięci.

     

    Mam nadziej że jako tako jest to zrozumiałem, wiem że nie mam daru tłumaczenia, ale jakby co to pytajcie...

    Plik .dll możecie pobrać z mojego uploada https://gmclan.org/up5334_4_dll_phAss.html

×
×
  • Dodaj nową pozycję...