Home Risen Risen2 Risen3 Forum English Russian

Registrieren Hilfe Kalender Heutige Beiträge
Seite 11 von 11 « Erste ... 47891011
Ergebnis 201 bis 217 von 217
  1. #201 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.409
    Zitat Zitat von Awakened Beitrag anzeigen
    This is my small contribution of missing classes.
    Many thanks for the contribution, added with revision 447.
    "Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
    NicoDE ist offline

  2. #202 Zitieren
    Rookie
    Registriert seit
    Jan 2017
    Beiträge
    5
    Some part of GUI classes of the engine:
    • eCGuiBaseBitmap2
    • eCGuiBitmap2
    • eCGuiDevice2
    • eCGuiEdit2
    • eCGuiFrame2
    • eCGuiImage2
    • eCGuiListCtrl2
    • eCGuiModule2
    • eCGuiWindow2
    • eCTipLocString


    I'm researching GUI system now. One of my unsuccessful attempts showing up a custom frame on the screen:
    Code:
    eCGuiFrame2* pFrame = dynamic_cast<eCGuiFrame2*>(eCGuiFrame2::CreateObject());
    if (pFrame)
    {
        GEBool bCreated = pFrame->Create("FRAME", bCPoint(20, 200), 0);
        if (bCreated)
        {
            pFrame->SetImgBackground("Con_Background");
            pFrame->SetSize(bCPoint(400, 400));
            pFrame->SetVisible(GETrue);
            //crashes:
            pFrame->PerformLayout();
            ConArgs.m_strResult = "Frame visible!";
        }
    
    
    }
    If someone ever managed to create their own frames, windows, edits, lists it would be great if you could explain a bit.
    I used mkclass and enums posted somewhere on this forums, order of virtual methods and sizes should be correct.
    Download: https://drive.google.com/file/d/0B1Y...ew?usp=sharing
    Awakened ist offline Geändert von Awakened (20.01.2017 um 00:26 Uhr)

  3. #203 Zitieren
    Rookie
    Registriert seit
    Jan 2017
    Beiträge
    5
    it doesnt work... i cant make my own frames 20 fu***** hours for nothing. This should work without a call to perform layout. But it displays nothing. I don't understand. If you willing to test maybe you will be more lucky than me here are the files that I use https://drive.google.com/file/d/0B1Y...ew?usp=sharing

    just paste this simple script and check. I spent like 2 nights on it ...
    Awakened ist offline Geändert von Awakened (21.01.2017 um 09:30 Uhr)

  4. #204 Zitieren
    Moderator Avatar von George
    Registriert seit
    Sep 2010
    Beiträge
    678
    I have some experience with gui in Gothic 3, maybe there are similarities to Risen. I will look into it.

    Zitat Zitat von Awakened Beitrag anzeigen
    just paste this simple script and check. I spent like 2 nights on it ...
    Have you forgotten to post your script or did you refer to the one in your previous post?
    George ist offline

  5. #205 Zitieren
    Rookie
    Registriert seit
    Jan 2017
    Beiträge
    5
    Zitat Zitat von George Beitrag anzeigen
    I have some experience with gui in Gothic 3, maybe there are similarities to Risen. I will look into it.


    Have you forgotten to post your script or did you refer to the one in your previous post?
    I refered to the one in my previous post. I think gothic 3 uses completely different system hence the name GUI2 instead of GUI. I don't think I have to register the window in some map or manager I think it should show it just like it is from what I reversed.
    Awakened ist offline

  6. #206 Zitieren
    Moderator Avatar von George
    Registriert seit
    Sep 2010
    Beiträge
    678
    Well, it works now...
    [Bild: Risen_2017_01_21_17_41_56_14.png]

    There were (and probably still are) several problems with the vtables of your reversed classes.
    Your code example failed, because the vtable generated for eCGuiWindow2 by the compiler differs from the one in Engine.dll. I have marked the differnece in red.
    So your code actually didn't call the Create() function (at index 40 in the "wrong" vtable) but instead PreCreateWindowW() (at index 40 in the "real" vtable).

    Code:
    Vtable for eCGuiWindow2 like it is Engine.dll
    
    0  eCGuiWindow2::GetObjectType(void)
    1  bCObjectRefBase::GetVersion(void)
    2  bCObjectRefBase::IsValid(void)
    3  eCGuiWindow2::Deserialize(bCXMLParserNode *)
    4  eCGuiWindow2::Serialize(bCXMLParserNode *)
    5  eCGuiWindow2::Read(bCIStream &)
    6  bCObjectBase::Write(bCOStream &)
    7  eCGuiWindow2::OnDeserialize(bCXMLParserNode *)
    8  bCObjectBase::OnSerialize(bCXMLParserNode *)
    9  eCGuiWindow2::OnRead(bCIStream &)
    10 eCGuiWindow2::OnWrite(bCOStream &)
    11 bCObjectRefBase::Create(void)
    12 bCObjectRefBase::Destroy(void)
    13 bCObjectBase::CopyFrom(bCObjectBase const &,bool)
    14 bCObjectBase::OnCopyFrom(bCObjectBase const &)
    15 bCObjectBase::OnCopyPatchableOnly(bCObjectBase const &)
    16 eCGuiResource2::AddReference(void)
    17 eCGuiResource2::ReleaseReference(void)
    18 eCGuiResource2::GetReferenceCount(void)
    19 bCObjectBase::BindPOType(void)
    20 eCGuiWindow2::PostInitializeProperties(void)
    21 bCObjectBase::HandleDeprecatedProperty(bCString const &,bCString const &,bCIStream &)
    22 bCObjectBase::NotifyPropertyValueChangedEnterEx(char const *,bool)
    23 bCObjectBase::NotifyPropertyValueChangedExitEx(char const *,bool)
    24 bCObjectBase::OnNotifyPropertyValueChangedEnterEx(char const *,bool)
    25 eCGuiWindow2::OnNotifyPropertyValueChangedExitEx(char const *,bool)
    26 eCGuiWindow2::GetNativePropertyCount(void)
    27 eCGuiWindow2::GetNativePropertyAt(int)
    28 sub_30024F9B // Destructor
    29 eCGuiWindow2::GetRawExt(void)
    30 eCGuiWindow2::GetRawPath(void)
    31 eCDocObject::GetFileKey(void)
    32 eCDocObject::GetFileTitleA(void)
    33 eCDocObject::SetFileTitleA(bCString const &)
    34 eCDocObject::PostLoad(void)
    35 eCGuiResource2::OnFinalRelease(void)
    36 eCGuiWindow2::SetFont(IFFGuiFont2 *)
    37 eCGuiWindow2::InitElements(void)
    38 eCGuiWindow2::Create(bCString const &,bCPoint const &,IFFGuiWnd2 *)
    39 eCGuiWindow2::GetWindowClass(void)
    40 eCGuiWindow2::PreCreateWindowW(tagUI_CREATESTRUCTW &)
    41 eCGuiWindow2::OnInitialize(void)
    42 eCGuiWindow2::OnDrop(IFFGuiDataObject2 *,ulong,tagPOINT,ulong *)
    43 eCGuiWindow2::OnDragEnter(IFFGuiDataObject2 *,ulong,tagPOINT,ulong *)
    44 eCGuiWindow2::OnDragOver(ulong,tagPOINT,ulong *)
    45 eCGuiWindow2::OnDragLeave(void)
    46 eCGuiWindow2::OnGiveFeedback(eCGuiDropSource2 *,ulong)
    47 eCGuiWindow2::OnQueryContinueDrag(bool,ulong)
    48 eCGuiWindow2::OnDragResult(IFFGuiDataObject2 *,ulong)
    49 eCGuiWindow2::CreateDragCursor(int,int)
    50 eCGuiWindow2::CreateDragData(void)
    51 eCGuiWindow2::OnEdit(bool)
    52 eCGuiWindow2::IsChildInsertAllowed(void)
    53 eCGuiWindow2::OnEnterModal(void)
    54 eCGuiWindow2::OnWndMsg(uint,uint,long,long &)
    55 eCGuiWindow2::OnWndCmd(ushort)
    56 eCGuiWindow2::OnWndNotify(tagUI_NMHDR *)
    57 eCGuiWindow2::OnGameMessage(int,int,int)
    58 eCGuiWindow2::OnScriptEvent(eCScriptEventArgs *,int)
    59 eCGuiWindow2::GenerateEventArgs(void)
    60 eCGuiWindow2::OnPopulate(void)
    61 eCGuiWindow2::Deserialize(bCXMLParserNode *,eCGuiWindow2 *)
    62 eCGuiWindow2::OnAttachToolTip(eCGuiToolTipCtrl2 *)
    63 eCGuiWindow2::OnTrackToolTip(eCGuiToolTipCtrl2 *,bool &)
    64 eCGuiWindow2::CreateToolTipData(void)
    Code:
    Vtable for eCGuiWindow2 generated by the compiler (dumped with msvc compiler using an undocumented switch)
    
     0 &eCGuiWindow2::GetObjectType
     1 &bCObjectRefBase::GetVersion
     2 &bCObjectRefBase::IsValid
     3 &eCGuiWindow2::Deserialize
     4 &eCGuiWindow2::Serialize
     5 &eCGuiWindow2::Read
     6 &bCObjectBase::Write
     7 &eCGuiWindow2::OnDeserialize
     8 &bCObjectBase::OnSerialize
     9 &eCGuiWindow2::OnRead
    10 &eCGuiWindow2::OnWrite
    11 &bCObjectRefBase::Create
    12 &bCObjectRefBase::Destroy
    13 &bCObjectBase::CopyFrom
    14 &bCObjectBase::OnCopyFrom
    15 &bCObjectBase::OnCopyPatchableOnly
    16 &eCGuiResource2::AddReference
    17 &eCGuiResource2::ReleaseReference
    18 &eCGuiResource2::GetReferenceCount
    19 &bCObjectBase::BindPOType
    20 &eCGuiWindow2::PostInitializeProperties
    21 &bCObjectBase::HandleDeprecatedProperty
    22 &bCObjectBase::NotifyPropertyValueChangedEnterEx
    23 &bCObjectBase::NotifyPropertyValueChangedExitEx
    24 &bCObjectBase::OnNotifyPropertyValueChangedEnterEx
    25 &eCGuiWindow2::OnNotifyPropertyValueChangedExitEx
    26 &eCGuiWindow2::GetNativePropertyCount
    27 &eCGuiWindow2::GetNativePropertyAt
    28 &eCGuiWindow2::{dtor}
    29 &eCGuiWindow2::GetRawExt
    30 &eCGuiWindow2::GetRawPath
    31 &eCDocObject::GetFileKey
    32 &eCDocObject::GetFileTitleA
    33 &eCDocObject::SetFileTitleA
    34 &eCDocObject::PostLoad
    35 &eCGuiResource2::OnFinalRelease
    36 &eCGuiWindow2::MsgProcW // should be in eCGuiWindows2's vtable for IFFGuiMsgProc2
    37 &eCGuiWindow2::Deserialize // should be at position 61
    38 &eCGuiWindow2::SetFont
    39 &eCGuiWindow2::InitElements
    40 &eCGuiWindow2::Create
    41 &eCGuiWindow2::GetWindowClass
    42 &eCGuiWindow2::PreCreateWindowW
    43 &eCGuiWindow2::OnInitialize
    44 &eCGuiWindow2::OnDrop
    45 &eCGuiWindow2::OnDragEnter
    46 &eCGuiWindow2::OnDragOver
    47 &eCGuiWindow2::OnDragLeave
    48 &eCGuiWindow2::OnGiveFeedback
    49 &eCGuiWindow2::OnQueryContinueDrag
    50 &eCGuiWindow2::OnDragResult
    51 &eCGuiWindow2::CreateDragCursor
    52 &eCGuiWindow2::CreateDragData
    53 &eCGuiWindow2::OnEdit
    54 &eCGuiWindow2::IsChildInsertAllowed
    55 &eCGuiWindow2::OnEnterModal
    56 &eCGuiWindow2::OnWndMsg
    57 &eCGuiWindow2::OnWndCmd
    58 &eCGuiWindow2::OnWndNotify
    59 &eCGuiWindow2::OnGameMessage
    60 &eCGuiWindow2::OnScriptEvent
    61 &eCGuiWindow2::GenerateEventArgs
    62 &eCGuiWindow2::OnPopulate
    63 &eCGuiWindow2::OnAttachToolTip
    64 &eCGuiWindow2::OnTrackToolTip
    65 &eCGuiWindow2::CreateToolTipData
    To fix the entry (36 eCGuiWindow2::MsgProcW) eCGuiWindow2 has to inherit from the interface IFFGuiMsgProc2, which declares the MsgProcW() function. Now the compiler generates an additional vtable for eCGuiWindow2, which contains the overridden functions from IFFGuiMsgProc2.

    The wrong placement of eCGuiWindow2:eserialize(bCXMLParserNode *,eCGuiWindow2 *), which is an overload of eCGuiWindow2:eserialize(bCXMLParserNode *), can be fixed by moving all "newly" declared (not inherited) virtual functions at the very beginning. For a detailed explanation look here, here, here and here.

    Here are my modified files (I also fixed some compiler warnings).
    RisenGuiFixed.7z
    George ist offline Geändert von George (21.01.2017 um 22:37 Uhr)

  7. #207 Zitieren
    Rookie
    Registriert seit
    Jan 2017
    Beiträge
    5
    Zitat Zitat von George Beitrag anzeigen
    Well, it works now...
    I wouldn't suppose this hahaha. You did it . I was looking for problems in my code and it was the order and vtable stuff... Thank you very much.

    Btw. How did u generate this vtable dump for Engine.dll ? Did you use slightly modified version of vtablerec.idc script by Sirmabus? Nice switch though. I didn't know about this one

    From what I see in the engine in order to take advantage of gui classes like edits, lists I would have to inherit them and use my inherited versions instead and define functionality in my own inherited virtual methods like OnEdit. Unfortunately it doesn't seem to work - it crashes when I use/create my edit class. Do you think it could be vtable problem too but with eCGuiEdit2 this time?

    EDIT: it's not vtable problem this time, just checked it with the switch.
    Problem solved see edit below

    Code:
    mCMyEdit* myEdit = dynamic_cast<mCMyEdit*>(mCMyEdit::CreateObject());
    Code:
    mCMyEdit* myEdit = dynamic_cast<mCMyEdit*>(eCGuiEdit2::CreateObject());
    Side note: I have solved the problem with not working GE_NEW it was caused by macro defined in windows header commdlg.h. In order to fix this you have to add:

    Code:
    
    #ifdef GetFileTitleA
    #undef GetFileTitleA
    ISOLATION_AWARE_INLINE short IsolationAwarePrivatenCv GetFileTitleA(LPCSTR unnamed1, _Out_writes_(cchSize) LPSTR Buf, _In_ WORD cchSize)
    {
        return IsolationAwareGetFileTitleA(unnamed1, Buf, cchSize);
    }
    #endif
    At the beginning of ge_docobject.h file.

    EDIT2: Using GE_NEW on my own edit worked..Just have to figure out now how to manage it next. Like when I press enter etc.

    Another problem: my windows /edits etc. are not clickable. I don't know how it's handled though. I couldn't find aynthing like that. They just create it and show it and have their own MsgProcW function. This however is not called when I override this. There must be some way..

    also when you create gui stuff last parameter of Create is parent and it's GetSafeHandle() of window.
    Awakened ist offline Geändert von Awakened (22.01.2017 um 05:44 Uhr)

  8. #208 Zitieren
    Abenteurer Avatar von Ildorion
    Registriert seit
    Jun 2004
    Beiträge
    92
    Is it still possible to checkout the repository? I tried it but the connection gets closed by the remote host. HTTP link works though...

    Edit: Nevermind, it worked. I was behind a firewall that apparently blocked it.
    Ich alleine gegen alle Orks? Ein bisschen unfair!

    Vielleicht sollte ich mit links kämpfen...
    Ildorion ist offline Geändert von Ildorion (26.08.2020 um 21:41 Uhr)

  9. #209 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.409
    I'm still moving the old files to the new server (in chunks, as time allows). But the subversion repositories/services were one of the first. Please note that Baltram's branch is much more recent then the trunk.
    Code:
    svn checkout svn://nicode.net/risensdk/branches/baltram risensdk
    "Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
    NicoDE ist offline

  10. #210 Zitieren
    Abenteurer Avatar von Ildorion
    Registriert seit
    Jun 2004
    Beiträge
    92
    Zitat Zitat von NicoDE Beitrag anzeigen
    I'm still moving the old files to the new server (in chunks, as time allows). But the subversion repositories/services were one of the first. Please note that Baltram's branch is much more recent then the trunk.
    Code:
    svn checkout svn://nicode.net/risensdk/branches/baltram risensdk
    Thanks for the hint!
    Ich alleine gegen alle Orks? Ein bisschen unfair!

    Vielleicht sollte ich mit links kämpfen...
    Ildorion ist offline

  11. #211 Zitieren
    Lehrling Avatar von Denislaurge
    Registriert seit
    Jun 2017
    Ort
    England
    Beiträge
    13
    Anyone tryed to return ZS_Pee script in R1 like in very old game versions, in the game files have a animations, templates, freepoints, only absent a script, was a good if this was in the game, and also I can say what Piranha Bytes deleted in R1 Rim Light effect, which was also in G3, could be try to port him from G3 right on R1, in G3 Engine.dll file Rim Light registered, I think and we can get him from there in R1.
    I making a Demo Edition mod for the Risen and help very need, over to return a Rim Light and ZS_Pee and I can publish it on Nexus Mods.
    Denislaurge ist offline

  12. #212 Zitieren
    Lehrling
    Registriert seit
    Jan 2020
    Ort
    Midland
    Beiträge
    16
    Can someone tell me a little (in detail, preferably) how the world structure of the Genome engine works? I need to find out the dependencies of data like .node / .wrldatasc / .lrentdat / .secdat
    This is the information needed for an ongoing project to rewrite the Genome engine.
    Here is a link to my current project https://github.com/AdanosGotoman/GenomeSDK3
    Adanos Gotoman ist offline

  13. #213 Zitieren
    Ritter
    Registriert seit
    May 2009
    Beiträge
    1.688
    With the risk of missing the mark entirely and/or only stating the obvious...

    .node, doesn't ring a bell
    .wrldatasc, lists all .sec, it's plain text*
    .secdat**, .sec group .lrent into logical units(most of the time it's 1:1) and control whether they are "active"(at game start and at the current moment ingame)
    .lrentdat**, contains where stuff is in the game world

    **I assume .secdat/.lrentdat is interchangeable with .sec/.lrent or one is just the serialized stuff while the other is the object in memory

    *Don't remember what the bool is for, if it has any purpose at all.
    Code:
    [Common]
    ;Insert here all available sectors
    [Sector.List]
    SysDyn_{3A1EE7DA-0966-419A-8D7D-4A7D63C7C099}=true
    _Intern_kusch_tutorial=true
    Don_Camp_Dyn=true
    Don_Camp_Dyn_Deco1=true
    Don_Camp_Vegetation=true
    Dungeon_Caves_Dyn_Deco1=true
    Dungeon_Caves_Dyn_Lights=true
    Dungeon_Caves_Events=true
    Dungeon_Caves_Items=true
    (...)
    [Bild: dtc_sig.jpg]

    Harald Iken: Überhaupt sollte man als Spieleentwickler das Wort "einfach" oder noch besser "mal eben" aus seinem Wortschatz streichen.
    Kuchenschlachter ist offline

  14. #214 Zitieren
    Lehrling
    Registriert seit
    Jan 2020
    Ort
    Midland
    Beiträge
    16
    Zitat Zitat von Kuchenschlachter Beitrag anzeigen
    With the risk of missing the mark entirely and/or only stating the obvious...

    .node, doesn't ring a bell
    .wrldatasc, lists all .sec, it's plain text*
    .secdat**, .sec group .lrent into logical units(most of the time it's 1:1) and control whether they are "active"(at game start and at the current moment ingame)
    .lrentdat**, contains where stuff is in the game world

    **I assume .secdat/.lrentdat is interchangeable with .sec/.lrent or one is just the serialized stuff while the other is the object in memory

    *Don't remember what the bool is for, if it has any purpose at all.
    Code:
    [Common]
    ;Insert here all available sectors
    [Sector.List]
    SysDyn_{3A1EE7DA-0966-419A-8D7D-4A7D63C7C099}=true
    _Intern_kusch_tutorial=true
    Don_Camp_Dyn=true
    Don_Camp_Dyn_Deco1=true
    Don_Camp_Vegetation=true
    Dungeon_Caves_Dyn_Deco1=true
    Dungeon_Caves_Dyn_Lights=true
    Dungeon_Caves_Events=true
    Dungeon_Caves_Items=true
    (...)
    Is such a system of world structure generally considered normal? Or is it better to look towards the previous games (g1, g2)? In them, loading the world seems to me both easier and better.
    What do you think?
    Adanos Gotoman ist offline

  15. #215 Zitieren
    Lehrling
    Registriert seit
    Jan 2020
    Ort
    Midland
    Beiträge
    16
    Can someone tell me if anyone has already familiarized themselves with the engine's entity system? Does anyone already have examples of implementation or is it better to use a ready-made third-party framework?
    Adanos Gotoman ist offline

  16. #216 Zitieren
    Ritter
    Registriert seit
    May 2009
    Beiträge
    1.688
    I'm an incredibly poor choice to answer those questions since I only know somewhat how one single game works and that game is Risen. I don't even have a clue about zengine.

    I highly doubt that anyone has ever had a deeper look into reemplemnting Risens version of the Genome-Engine. However there might be some value in one or another modding tool that has popped up in the early years.

    https://forum.worldofplayers.de/foru...fficial-thread
    https://github.com/hhergeth/RisenEditor

    https://www.worldofrisen.de/english/download_63.htm
    I do not know of the code of this one ever being published.
    [Bild: dtc_sig.jpg]

    Harald Iken: Überhaupt sollte man als Spieleentwickler das Wort "einfach" oder noch besser "mal eben" aus seinem Wortschatz streichen.
    Kuchenschlachter ist offline

  17. #217 Zitieren
    Lehrling
    Registriert seit
    Jan 2020
    Ort
    Midland
    Beiträge
    16
    Zitat Zitat von Kuchenschlachter Beitrag anzeigen
    I'm an incredibly poor choice to answer those questions since I only know somewhat how one single game works and that game is Risen. I don't even have a clue about zengine.

    I highly doubt that anyone has ever had a deeper look into reemplemnting Risens version of the Genome-Engine. However there might be some value in one or another modding tool that has popped up in the early years.

    https://forum.worldofplayers.de/foru...fficial-thread
    https://github.com/hhergeth/RisenEditor

    https://www.worldofrisen.de/english/download_63.htm
    I do not know of the code of this one ever being published.
    Yes, I have studied these tools carefully before. Risen Editor will be fully included in GenomeSDK, I will rewrite it in C ++
    In fact, it will be a success that all the developments that are on the network can be combined into one program, which is what I am doing. Slowly and steadily, I'm pushing the new SDK to look like this:


    Spoiler:(zum lesen bitte Text markieren)
    Adanos Gotoman ist offline Geändert von Adanos Gotoman (16.02.2021 um 16:07 Uhr)

Seite 11 von 11 « Erste ... 47891011

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •