Home Risen Risen2 Risen3 Forum English Russian

Registrieren Hilfe Kalender Heutige Beiträge
Seite 3 von 11 « Erste 123456710 ... Letzte »
Ergebnis 41 bis 60 von 217
  1. #41 Zitieren
    Ranger
    Registriert seit
    Aug 2008
    Beiträge
    174
    Zitat Zitat von NicoDE Beitrag anzeigen
    I added the missing classes to re-implement GiveXP.
    This is awesome (and quick), thank you so much!

    I already implemented a simple workaround I initially suggested and it is working fine. I tryed to implement a better workaround that takes into account several consequent level-ups but that would require access to gCSkills_PS class (in particular gCSkills_PS::GetSkillMaxValue function, I tryed using PSSkills::GetMaximum(gESkill_Stat_XP) instead but it seems to have a different purpose and always returns -1).
    PowerGamer ist offline

  2. #42 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.409
    gCSkills_PS has been added to the repository.

    I added reference accessor templates for Entity-based PropertySet and their Property classes.
    This allows you to get rid of the reinterpret_cast operator in your code.
    Code:
    gui2.PrintGameLogF( gELogMessageType_Lime, "Voice: %s",
        Entity::GetPlayer().
        PropertySet< PSNpc >().
        Property< PSNpc::PropertyVoice >().
        operator bCString const()
        );
    "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 Geändert von NicoDE (23.03.2011 um 14:45 Uhr)

  3. #43 Zitieren
    Ranger
    Registriert seit
    Aug 2008
    Beiträge
    174
    I finished my work on recreating GiveXP() script function and fixing the following bugs:
    • experience is no longer lost if player receives more experience than needed to reach next level;
    • received experience is no longer lost while player is transformed into another creature (such as Nautilus or Ashbeast).

    Very special thanks goes to NicoDE for creating amazing RisenSDK and providing help with my work along the way.
    Also, I would like to thank the players who actually found these bugs and reported them on these forums: Tolknaz (for reporting the first bug) and ElderGamer (for reporting the second bug). I first learned about these bugs from your posts!

    Installation: copy Script_Mod_Fixes.dll into bin\scripts folder under the main game folder.
    Download links: source code, binaries.

    P.S. To NicoDE: The fix is tested and is working fine. If you like please feel free to include it into RisenSDK (and modify the code as you wish) - should make another fine example of what RisenSDK is capable of.
    PowerGamer ist offline

  4. #44 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.409
    Zitat Zitat von PowerGamer Beitrag anzeigen
    • received experience is no longer lost while player is transformed into another creature (such as Nautilus or Ashbeast).
    We already had this discussion for Gothic - you can level-up the creature but not the player.
    This could be considered as an intend handicap of the transformation.
    Zitat Zitat von PowerGamer Beitrag anzeigen
    If you like please feel free to include it into RisenSDK
    GiveXP has been added to the Script_Mod_Fixes in the 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 Geändert von NicoDE (24.03.2011 um 03:42 Uhr)

  5. #45 Zitieren
    Ranger
    Registriert seit
    Aug 2008
    Beiträge
    174
    Zitat Zitat von NicoDE Beitrag anzeigen
    We already had this discussion for Gothic - you can level-up the creature but not the player.
    This could be considered as an intend handicap of the transformation.
    I am pretty sure this is a bug and here is why.

    It is practically impossible to level up in creature form because you can't kill things in Nautilus form (leveling up Nautilus is completely pointless anyway) and because you start with 0 XP and level 30 after transforming into an Ashbeast form (so to level up in Ashbeast form you need to accumulate 248000 XP in that form). This clearly shows that leveling up the creature was not intended by developers because it has no practical use. And as such giving XP to creature was not intended either.
    (Also, if developers wanted for creature to level up we would have seen some special cases in game scripts, in reality the same script that level-ups hero is called to level up creature - adding only 12 HP and 10 LP to creature, which clearly was intended only for player).

    Now, if developers wanted a handicap for transformed player (so that player don't receive XP for killing in Ashbeast form), they wouldn't print all the "Experience +XXX" messages on the screen. This allows us to conclude, that player was meant to receive XP when in Ashbeast form.

    Also, yet another argument: in some situations player receives XP for reaching some areas in the game. For example, in Chapter 3 there is a place when NPC makes a small breach in the wall. To get through, player must transform into Nautilus. Once on the other side the quest "Player_EnterCrypt.xqst" completes. And passing through the breach in Nautilus form is the only possible way to complete this quest. So without doubt in this case player should receive XP for completing this quest even if he is in Nautilus form.
    PowerGamer ist offline

  6. #46 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.409
    I became aware of the arguments some time after my comment.
    GiveXP has been extended and committed.
    Notice: I used Entity::GetOriginalPlayer() instead of the hard-coded "PC_Hero".

    Best regards,
    Nico

    ps: please have a look at the proposal for the RQMS-fix that has been committed some minutes ago, thanks.
    "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 Geändert von NicoDE (24.03.2011 um 15:08 Uhr)

  7. #47 Zitieren
    Ranger
    Registriert seit
    Aug 2008
    Beiträge
    174
    Zitat Zitat von NicoDE Beitrag anzeigen
    I got aware of the arguments some time after my comment.
    GiveXP has been extended and committed.
    Notice: I used Entity::GetOriginalPlayer() instead of the hard-coded "PC_Hero".
    I have just studied the changes you made to GiveXP. With your changes GiveXP awards XP not only to the player, but also to the creature. As I explained above, awarding XP to the creature was not intended and should be removed because it will have the following side-effect (hard to achieve in the original game but possible, surely possible in some mod): player is almost at the level-up point, transforms into Nautilus and crawls somewhere getting XP enough to level up both player and Nautilus - two "LEVEL UP" messages will be displayed, very confusing for the gamer.

    I did not use Entity::GetOriginalPlayer() because it returns invalid entity when player is NOT transformed. Entity::GetPlayer("PC_Hero") returns proper Entity in all situations.

    Also, I wonder if it would give us any benefits to try and keep recreated parts of code as close as possible to the original (such as that "if" statement that will never be executed: "if( iAmount < 10 ) iAmount = 10;", and, yes, I know why it was there in the first place: at some point in the development "10" might have been "15" or something else)?

    Zitat Zitat von NicoDE Beitrag anzeigen
    ps: please have a look at the proposal for the RQMS-fix that has been committed some minutes ago, thanks.
    I will reply by PM.
    PowerGamer ist offline

  8. #48 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.409
    I updated the Script_Mod_Fixes with your recommendations.

    <ModifySkillsSuccess> has not been used in the original quests, but here is an example:
    Code:
    [...]
    	<ModifySkillsSuccess>
    		<Item>
    			<Value
    				Amount="5"
    				ClassName="gCModifySkill"
    				Modifier="gESkillModifier_AddValue"
    				Skill="gESkill_Stat_LV"
    			>
    			</Value>
    		</Item>
    	</ModifySkillsSuccess>
    [...]
    On quest success this raises the level up by 5.
    "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

  9. #49 Zitieren
    Ranger
    Registriert seit
    Aug 2008
    Beiträge
    174
    Yet another bug is fixed: Kalib (Bruno) now successfully hides from the Lizardmen invading the Monastery at the start of Chapter 3. (Originally it was practically impossible to reach and save him before he was killed by Lizardmen; as a result of his death "Secure the gate!" quest became unaccessible).

    Download links: source code of the workaround (have some hacks for currently missing wrapper classes, etc, but is working), savegame before the start of Chapter 3 for testing (in case someone desides to look at the second bug, see below).

    There is another bug present in the game, related to the same quest. Upon completing of this quest, Kalib's routine is changed to "GateGuard" and he is supposed to go outside the Monastery main gates and stand guard there. Unfortunately, it seems for some reason the game cannot calculate a path for Kalib through the Monastery gates (when teleporting Kalib somewhere outside the Monastery and setting the same routine he successfully finds his way to his guard point outside the Monastery gates). I provide those details here in hope that someone with more knowledge behind Risen game content might have a look at this problem (because it is obviously not a problem in Script_Game.dll or .xinf files).
    PowerGamer ist offline

  10. #50 Zitieren
    Ritter
    Registriert seit
    May 2005
    Beiträge
    1.238
    I do not feel involved to Risen (1) modding any more due to some reason, but this is what I can say: afaik noone did investigate in Risen navigation so far so there's no way to fix this properly.

    But there should be a workaround; the info you spoke about is FILLERX2_00002.xinf; the command is

    Code:
    	<Command
    		ClassName="gCInfoCommandSetRoutine"
    		Entity1="Bruno"
    		RoutineName="GateGuard"
    	>
    	</Command>
    So -as you stated- there has to be inserted something like

    Code:
         <Command
    		ClassName="gCInfoCommandTeleportNPC"
    		NPC="Bruno"
    		Target="Hlp_Story_Teleport_CityGate_Front"
    	>
    	</Command>
    before the previous command.

    I do have the Risen demo only so I don't now what would be the best fitting FreePoint (Target).

    And "yes", after you spoke to Brune (Kalib) he would vanish because of the teleport. So it might be better, to move BOTH commands into an info with another owner.
    Shak-otay ist offline Geändert von Shak-otay (26.03.2011 um 20:01 Uhr)

  11. #51 Zitieren
    Ranger
    Registriert seit
    Aug 2008
    Beiträge
    174
    Zitat Zitat von Shak-otay Beitrag anzeigen
    And "yes", after you spoke to Brune (Kalib) he would vanish because of the teleport. So it might be better, to move BOTH commands into an info with another owner.
    Bruno vanishing is as bad as not moving at all, no point doing that. What I thought is maybe some property of the Monastery gates prevent NPCs from moving through? I tryed to find it but I am not even sure console "edit" command actually allows to modify entity properties (changes have no effect and they seem to revert to original values). Even if that is the case, afterwards it would be required to modify game world to change that property for the gates (or maybe modify it with C++ script upon game start).
    PowerGamer ist offline

  12. #52 Zitieren
    Ritter
    Registriert seit
    May 2005
    Beiträge
    1.238
    Zitat Zitat von PowerGamer Beitrag anzeigen
    Bruno vanishing is as bad as not moving at all, no point doing that. [...]
    That's the reason why I spoke of another owner's info to be used.

    I don't know the context of this quest but from my experience with G3 modding there is always a possibility of speaking to NPC1 while the NPC2 to be teleported is not in players field of vision.

    Maybe you'll have to create a new xinf-File and perhaps you''ll have to introduce a new GameEvent variable but I'm sure it's possible.

    What I thought is maybe some property of the Monastery gates prevent NPCs from moving through?
    Ok,
    path finding with the genome engine is organized via Nav_Zones/Nav_Paths.

    I don't think that it has anything to do with (other) object's properties (but who really knows?).

    edit: ok, PowerGamer knows... Seems that Risen doors actually do have a property that can prevent NPCs from moving through. (I didn't know this.)

    So the following does not apply to doors and similar objects...

    (The property you might think of are the CollisionShapes. But in genome engine they are mainly used for the player's collision. Only the CS of small objects like stools, chests etc. are also used for NPCs' collisions.)

    To examine the current problem one had to look for the Nav thingies.
    You could use Galrath's LrentViewer to make them visible. (Maybe you'll have to contact him to get the actual version.)

    (The debug key OnDebugToggleNavigation="CTRL_L+N" in the ConfigUser.xml did not work for me.)
    Shak-otay ist offline Geändert von Shak-otay (28.03.2011 um 21:12 Uhr)

  13. #53 Zitieren
    Ranger
    Registriert seit
    Aug 2008
    Beiträge
    174
    Zitat Zitat von Shak-otay Beitrag anzeigen
    That's the reason why I spoke of another owner's info to be used.

    I don't know the context of this quest but from my experience with G3 modding there is always a possibility of speaking to NPC1 while the NPC2 to be teleported is not in players field of vision.

    Maybe you'll have to create a new xinf-File and perhaps you''ll have to introduce a new GameEvent variable but I'm sure it's possible.
    Here is the contex:
    Spoiler:(zum lesen bitte Text markieren)
    Code:
    <Document
    	ClassName="gCInfo"
    	ClearChildren="False"
    	ConditionType="gEInfoCondType_Delivery"
    	CurrentInfoCommandIndex="-1"
    	Folder=""
    	GoldCost="0"
    	InfoGiven="False"
    	InfoIsRunnig="False"
    	LearnPointCost="0"
    	MainSortID="0"
    	Name="FILLERX2_00002"
    	Owner="Bruno"
    	Parent=""
    	Permanent="False"
    	Quest="Santiago_GetBruno"
    	SortID="4460"
    	StartChapter="3"
    	Type="gEInfoType_Info"
    	EndChapter="-1"
    	>
    	<Command
    		ClassName="gCInfoCommandSay"
    		Listener=""
    		Speaker="player"
    		Text="INFO_FILLERX2_00006312" <!-- Santiago needs your help at the gate!  -->
    		Gesture="gEInfoGesture_Ambient"
    	>
    	</Command>
    	<Command
    		ClassName="gCInfoCommandSay"
    		Listener=""
    		Speaker="Bruno"
    		Text="INFO_FILLERX2_00006313" <!-- But if I get jumped by these lizards on the way, I won't be able to help anyone! -->
    		Gesture="gEInfoGesture_Ambient"
    	>
    	</Command>
    	<Command
    		ClassName="gCInfoCommandSay"
    		Listener=""
    		Speaker="Player"
    		Text="INFO_FILLERX2_00006314" <!-- You should easily be able to make it as far as the gate. -->
    		Gesture="gEInfoGesture_Ambient"
    	>
    	</Command>
    	<Command
    		ClassName="gCInfoCommandSay"
    		Listener=""
    		Speaker="Bruno"
    		Text="INFO_FILLERX2_00006315" <!-- No, no, it's too dangerous. -->
    		Gesture="gEInfoGesture_Ambient"
    	>
    	</Command>
    	<Command
    		ClassName="gCInfoCommandSay"
    		Listener=""
    		Speaker="Player"
    		Text="INFO_FILLERX2_00006363" <!-- Get down there before I kick you down there! -->
    		Gesture="gEInfoGesture_Ambient"
    	>
    	</Command>
    	<Command
    		ClassName="gCInfoCommandSay"
    		Listener=""
    		Speaker="Bruno"
    		Text="INFO_FILLERX2_00006364" <!-- You're worse than the lizards. Okay, okay! I'm going, I'm going. -->
    		Gesture="gEInfoGesture_Ambient"
    	>
    	</Command>
    	<Command
    		ClassName="gCInfoCommandSetRoutine"
    		Entity1="Bruno"
    		RoutineName="GateGuard"
    	>
    	</Command>
    	<Condition
    		ClassName="gCInfoConditionPlayerKnows"
    		PlayerKnows="Santiago_SentBruno"
    	>
    	</Condition>
    </Document>

    So as you can see teleporting Bruno while speaking with another NPC is of course possible but pointless.

    Zitat Zitat von Shak-otay Beitrag anzeigen
    You could use Galrath's LrentViewer to make them visible.
    Hopefully he can check this issue himself - as an author of that program he would have more insight into what may have caused the issue and how to fix it than I could possibly have (waving at Galrath434 ).

    Zitat Zitat von Shak-otay Beitrag anzeigen
    (The debug key OnDebugToggleNavigation="CTRL_L+N" in the ConfigUser.xml did not work for me.)
    Hm, would be really nice to know how to enable all those keys in keyboard_and_console.txt ...
    PowerGamer ist offline

  14. #54 Zitieren
    Ritter
    Registriert seit
    May 2005
    Beiträge
    1.238
    Zitat Zitat von PowerGamer Beitrag anzeigen
    [...]
    So as you can see teleporting Bruno while speaking with another NPC is of course possible but pointless.
    I see. (Thanks!)

    Interesting problem (and funny dialogs); too bad that I abandoned Risen (1) modding...
    Shak-otay ist offline

  15. #55 Zitieren
    Abenteurer
    Registriert seit
    Aug 2009
    Ort
    NRW
    Beiträge
    81
    Hopefully he can check this issue himself - as an author of that program he would have more insight into what may have caused the issue and how to fix it than I could possibly have (waving at Galrath434 ).
    °Waving back °
    Well I don't really know how I could help you right now because I don't really know what the Problem is. But maybe the Viewer can help you, here is what you can do with it:
    -open the nav lrent
    -look for the right nav path, thats going to be hard I guess
    -change it by adjusting the little "sticks"(don't know how to call them)

    Maybe the nav path has some error in it, you should be able to fix this.
    Honestly I don't really know how the navigation system works I just made all the properties in the files "visible"/editable.

    But if you know what the excat problem with the nav path is(if there is one) feel free to contact me I would be glad to help you.
    Galrath434 ist offline

  16. #56 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.409
    Zitat Zitat von PowerGamer Beitrag anzeigen
    source code of the workaround (have some hacks for currently missing wrapper classes, etc, but is working), [...]
    You should have write access to the SDK, shouldn’t you?

    Be careful when "hooking" original functions. Your library might be loaded before the Script_Game.dll. In this case you should load the Script_Game.dll in your module (and do not unload it, to make sure the image base doesn’t change), call "_ScriptInit@0" and scan the result for the pointer you need.

    The gCNavigation_PS is full of local structures (that results in more research work). If you do not have other classes in mind, I will care about gCNavigation_PS/PSNavigation next.
    "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

  17. #57 Zitieren
    Ranger
    Registriert seit
    Aug 2008
    Beiträge
    174
    Zitat Zitat von NicoDE Beitrag anzeigen
    You should have write access to the SDK, shouldn’t you?
    Well, I am not sure, I never worked with svn before (atm I know only a single command "svn.exe export"), I could wreck a havok in the repository. You can of course give me access but I can't promise I will use it (might continue just to post my code here).
    Zitat Zitat von NicoDE Beitrag anzeigen
    Be careful when "hooking" original functions. Your library might be loaded before the Script_Game.dll. In this case you should load the Script_Game.dll in your module (and do not unload it, to make sure the image base doesn’t change), call "_ScriptInit@0" and scan the result for the pointer you need.
    Yep, that is a problem, thanks for reminding. What you suggested should work (by "scan the result for the pointer you need" you mean use GetProcAddress() function, correct?). But I have also tryed a somewhat different solution (had to study script DLLs loading and script function registration in details this morning ):
    Code:
    class GE_DLLIMPORT eCModuleAdmin
    {
    public: static eCModuleAdmin & GetInstance(void);
    public: eCEngineComponentBase * FindModule(bCGuid const &)const;
    };
    
    extern "C" __declspec( dllexport ) gSScriptInit const * GE_STDCALL ScriptInit( void )
    {
    	eCEngineComponentBase * p1 = eCModuleAdmin::GetInstance().FindModule(bCGuid("{49A024BA-970A-41a6-993C-458A39DF1B61}"));
    	gCScriptAdmin* p = dynamic_cast< gCScriptAdmin * > (p1);
    	p->LoadScriptDLL("scripts\\Script_Game.dll"); // won't be loaded twice, there is a check inside LoadScriptDLL()
    
    // the rest of the code remains the same
    What do you think about this ugly hack? It actually works.
    Zitat Zitat von NicoDE Beitrag anzeigen
    The gCNavigation_PS is full of local structures (that results in more research work). If you do not have other classes in mind, I will care about gCNavigation_PS/PSNavigation next.
    I think I am going to need the InfoSystem class next. Will try to create a wrapper with needed methods myself, I'll let you know if it won't work.
    PowerGamer ist offline

  18. #58 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.409
    Zitat Zitat von PowerGamer Beitrag anzeigen
    Well, I am not sure, I never worked with svn before (atm I know only a single command "svn.exe export"), I could wreck a havok in the repository.
    You should have a look at TortoiseSVN.
    There are some diff-tools that directly support the integration into TortoiseSVN (e.g. KDiff3).

    You can create your own branch - and if all is well, you can merge it back into the trunk.
    Zitat Zitat von PowerGamer Beitrag anzeigen
    You can of course give me access but I can't promise I will use it
    All I need is a PN with an unix-style user name (characters only, all lowercase) that would like to have.

    Zitat Zitat von PowerGamer Beitrag anzeigen
    I think I am going to need the InfoSystem class next.
    OK, I’ll have a look at it.
    "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

  19. #59 Zitieren
    Ranger
    Registriert seit
    Aug 2008
    Beiträge
    174
    Zitat Zitat von NicoDE Beitrag anzeigen
    You should have a look at TortoiseSVN.
    There are some diff-tools that directly support the integration into TortoiseSVN (e.g. KDiff3).
    Oh no, not TortoiseSVN - I really hate the programs bloating OS shell, registry, etc without really good reason. I think I'll manage (hopefully) with command line console svn binaries that came without any installers nicely packaged into a zip archive. Also, for the file comparison I use SourceGear DiffMerge - simple and freeware.

    Also, how in your opinion a situation when original version of overriden function must be called is best handled: using your suggestion or the code I posted above?

    And here is my attempt of recreation of PSDialog class - it is working and should be complete. I used #define for properties - seemed like shorter, more readable and certanly requiring less typing, what do you think?
    Spoiler:(zum lesen bitte Text markieren)
    Code:
    #define PROPERTY(name, type) class name \
    	{ \
    	protected: \
    		eCEntity * m_pEntity; \
    	public: \
    		operator type const (void)const; \
    		name & operator=(name const &); \
    		name & operator=(type const &); \
    	}
    
    #define PROPERTY_ACCESSOR(owner, name) \
    	GE_ASSERT_SIZEOF( owner::name, sizeof(owner) ) \
    	template<> owner::name & owner::Property() { return *reinterpret_cast < owner::name* > (this); } \
    	template<> owner::name const & owner::Property() const { return *reinterpret_cast < owner::name const*> (this); }
    
    class gCDialog_PS;
    
    class GE_DLLIMPORT PSDialog
    {
    protected:
    	eCEntity * m_pEntity;
    
    protected:
    	operator gCDialog_PS *();
    	operator gCDialog_PS const *() const;
    	gCDialog_PS * operator->();
    
    public:
    	gCDialog_PS const * operator->() const;
    	//PSDialog & operator=(PSDialog const &);
    
    public:
    	void BeginTalkedToBy(Entity const &);
    	void BeginTalkingTo(Entity const &);
    	void EndTalkedToBy(Entity const &);
    	void EndTalkingTo(Entity const &);
    	bool IsBeingTalkedTo() const;
    	bool IsTalking() const;
    	bool IsValid() const;
    
    public:
    	template< typename T > T & Property();
    	template< typename T > T const & Property() const;
    
    public:
    	PROPERTY( PropertyEndDialogTimestamp, GEFloat );
    	PROPERTY( PropertyMobEnabled, GEBool );
    	PROPERTY( PropertyPartyEnabled, GEBool );
    	PROPERTY( PropertyPickedPocket, GEBool );
    	PROPERTY( PropertyPurchaseModifier, GEFloat );
    	PROPERTY( PropertySaleModifier, GEFloat );
    	PROPERTY( PropertySlaveryEnabled, GEBool );
    	PROPERTY( PropertyTalkedToPlayer, GEBool );
    	PROPERTY( PropertyTeachEnabled, GEBool );
    	PROPERTY( PropertyTradeEnabled, GEBool );
    };
    
    PROPERTY_ACCESSOR( PSDialog, PropertyEndDialogTimestamp )
    PROPERTY_ACCESSOR( PSDialog, PropertyMobEnabled )
    PROPERTY_ACCESSOR( PSDialog, PropertyPartyEnabled )
    PROPERTY_ACCESSOR( PSDialog, PropertyPickedPocket )
    PROPERTY_ACCESSOR( PSDialog, PropertyPurchaseModifier )
    PROPERTY_ACCESSOR( PSDialog, PropertySaleModifier )
    PROPERTY_ACCESSOR( PSDialog, PropertySlaveryEnabled )
    PROPERTY_ACCESSOR( PSDialog, PropertyTalkedToPlayer )
    PROPERTY_ACCESSOR( PSDialog, PropertyTeachEnabled )
    PROPERTY_ACCESSOR( PSDialog, PropertyTradeEnabled )
    
    GE_ASSERT_SIZEOF( PSDialog, sizeof(Entity) )
    
    template<> PSDialog &       Entity::PropertySet( void )       { return *reinterpret_cast< PSDialog *       >( this ); }
    template<> PSDialog const & Entity::PropertySet( void ) const { return *reinterpret_cast< PSDialog const * >( this ); }
    PowerGamer ist offline

  20. #60 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.409
    Zitat Zitat von PowerGamer Beitrag anzeigen
    Also, how in your opinion a situation when original version of overriden function must be called is best handled: using your suggestion or the code I posted above?
    Currently I would prefer the solution that uses the module admin (because we do not have to manually care about the location of the scripts directory).

    ps: I don’t like local macros to save typing, but your PS wrapper should work, yes.
    "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

Seite 3 von 11 « Erste 123456710 ... Letzte »

Berechtigungen

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