Many thanks for the contribution, added with revision 447.
Ergebnis 201 bis 217 von 217
-
"Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
-
- 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!"; } }
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=sharingGeändert von Awakened (19.01.2017 um 23:26 Uhr)
-
- 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 ...Geändert von Awakened (21.01.2017 um 08:30 Uhr)
-
-
- Registriert seit
- Jan 2017
- Beiträge
- 5
-
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
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.7zGeändert von George (21.01.2017 um 21:37 Uhr)
-
- Registriert seit
- Jan 2017
- Beiträge
- 5
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());
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
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.Geändert von Awakened (22.01.2017 um 04:44 Uhr)
-
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...Geändert von Ildorion (26.08.2020 um 20:41 Uhr)
-
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
-
-
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.
-
- 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
-
- 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.
-
- Registriert seit
- Jan 2020
- Ort
- Midland
- Beiträge
- 16
-
- 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?
-
- 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.
-
- Registriert seit
- Jan 2020
- Ort
- Midland
- Beiträge
- 16
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)Geändert von Adanos Gotoman (16.02.2021 um 15:07 Uhr)