"gutes" OOP und spieleprogrammierung...



  • :p 😃 LOL 😃 :p



  • ich glaub ich bleib lieber bei meinem C/C++ Mischmasch.... :D:D:D:D

    DAS IST MIR ZU FREAKY!!!!!!!!!!!!!!!!!!!! Da blickt ja noch net mal mehr ein Assemblercoder durch!!!!



  • Ach, das ist doch noch gar nichts!
    Schau Dir erst einmal meine Model-Render-Funktion an:

    pure DWORD_PTR CModell::Rendern(pure volatile const float NUM_SeggesPETR,
                                    pure static& DWORD_PTR petr_petr_INST_OPT_EXdw)
    {
        static VOID* petr_VERTEX_dat;
    
        // Do special trick
        // we dont need to allocate mem for vertices
        // we get it from own class this ptr
        petr_VERTEX_dat = (VOID*)((*(BYTE**)(this)) + m_petr_ALLOC_idSIZEOFpetr<<2);
        if(petr_VERTEX_dat==NULL) return m_llVAR_errEXT_optin[m_iCONCl_petrUSIVE]&m_MASKOFpetr;
    
        // Set the shaders
        // the shaders do a tricky thing
        // they internally allocate mem for our vertices
        // by using the AGP bus to send CPU instrs
        (*pD3D_Petr_Device).SetPixelShader((pure volatile SHADER*)___m_CONST_pshad_PETR);
        (*pD3D_Petr_Device+1).SetVertexShader(&(static const DWORD* a)[Arrvarr_DECL_spec_PETRPETROf_INIDid+id<<stepping);
    
        // emulate draw primitive call
        // by calling in-mem func
        void (* pdraw_PETR)(DWORD, DWORD, void*);
        pdraw_PETR = &(DWORD_PTR***)(pD3D_Petr_Device) + 0x27FADDAF << 2 << allocID_peTR & 0x812F;
    
        // call tricky draw primitive
        pdraw_PETR(mpetr[0][27], mpetr[8], (DWORD_PTR***)(this)+1+mid<<2);
    
        // were finished
        // but compiler internally thinks we're not
        // so tell him
        return;
    
        // vc++ doesnt return here because of mem-func call
        // do internal shutdown
        BYTE* petr=NULL;
        petr[0x172FADDA]=0x8F;
        petr[0x1281FAEF]=0xFF;
        petr[0xA6128FE2]=0;
    
        // now it should work
        return;
    }
    


  • Der Mem-Func call beim VC++ lohnt sich nicht, wegen dem zusätzlichen Aufwand beim returnen. 🙄 😞



  • Deshalb wünschte ich dieses Board würde endlich einen Registrierungszwang erlassen...
    Das bringt dann doch wesentlich mehr und verunsichert nicht die Leute die weniger Ahnung haben ...

    @Usprüngliches Problem
    Es gibt einen Unterschied zwischen "C mit Klassen" und C++

    Es gibt für solche Probleme also extra DesignPatterns wie man seine Klassen anlegt etc...



  • @<Headhunter>: Welche Header-Dateien muss ich einbinden um deinen Code richtig kompilieren zu können? Die Bytes hab ich schon geändert, aber es kommen trotzdem noch Fehlermeldungen. 🙄



  • Manchmal klappt es auch wenn man die "pure" Definition wegläßt.
    Allerdings brauchst du dann in deiner winMain folgenden code, um alles wieder glattzubügeln:

    int gIDARMO;
       BYTE* petr_ALLOCid_DEFess = NULL;
            while(*petr_ALLOCid_DEFess != 0x21)
        {
    *petr_ALLOCid_DEFess %= 0xFF & gIDARMO<<2 | gIDARMO>5?0xFFFF:0x8080;
      petr_ALLOCid_DEFess++;
       }
    


  • Hey, du hast doch vorhin gesagt int a; funktioniert nicht mehr, wenn man die Datei ändert. Dann wird wohl int gIDARMO; auch nicht mehr funktionieren.



  • Ja, das ist ja auch nur die Lösung für den fall daß es nix bringt wenn man die Bytes ändert!



  • Ah, klingt logisch. Vielen Dank.


Anmelden zum Antworten