HeroEngine Forums
Welcome, Guest. Please login or Register for HeroCloud Account.

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - dhines

Pages: [1]
1
Hello,

It appears that our world is unavailable again :(.  Attached is a screenshot of our HeroBlade login screen.  Our region is US East 21 and our world is theaftermath.  Thank you.

Sincerely,

Daniel

2
Scripting & Programming / Re: Replicating Spec Derived Objects
« on: Dec 23, 15, 10:22:51 AM »
Hello,

Thank you for your help.  I chose to add fields to E_PlayerCharacter on the client and server.  These fields store the spec key of the chosen character type and statistic adjustments.  The base values are stored in the spec.  So, I can change the adjustment to change statistics.

On the previous topic, I tried to delete those classes again after letting the world spin down and I received the same error dialog as before.  I looked around on the forum, and I found this topic.

https://community.heroengine.com/forums/index.php/topic,4943.msg27803.html#msg27803

I'm having the same problem that AWW_Boss was having.  Currently, those classes aren't being used anymore.  Eventually, I would like to be able to remove them.

Thank you for all of your help.

3
Scripting & Programming / Re: Replicating Spec Derived Objects
« on: Dec 21, 15, 07:18:27 AM »
Hello,

Thank you for your response.  I will try again the next time I am able to get into the world from HeroBlade.  Now, back to the original topic ;)

This spec-derived object will contain immutable and mutable data that will be useful for the character.  For statistics, the immutable data would be initial values and the mutable data would be adjustments to the initial values.  The intent is to have this object replicate with the character and to persist with the character (login, logout, travel from one area to another, etc.).  What would be the best way to go about this?  This concept will probably come up again later in development for other systems; so, examples and explanations would be helpful.  Thank you for your patience, and I appreciate your help.

4
Scripting & Programming / Re: Replicating Spec Derived Objects
« on: Dec 19, 15, 04:52:51 PM »
Thank you for the advice.  Unfortunately, I had already deleted that character while debugging.  If that's the case, then I have an orphaned node (which I can't do anything about).  Any thoughts as how to proceed?

5
Scripting & Programming / Re: Replicating Spec Derived Objects
« on: Dec 19, 15, 12:29:38 PM »
I suspect that may be because of the hard association with the spec derived object (from earlier).  How could I verify that (or find the node that is preventing it)?  After finding it, how can I clean it up?

Thanks

6
Scripting & Programming / Re: Replicating Spec Derived Objects
« on: Dec 19, 15, 09:53:10 AM »
Hello,

Using a spec for player statistics was not the original idea.  Originally, I had fields on our player character class that replicated from server to client (which worked fine).  Now, I've removed SDO_Account from the account system node, and used E_Account instead.  Also, I removed SDO_PlayerAccount and am using E_PlayerAccount instead.  The same goes for SDO_PlayerCharacter and E_PlayerCharacter.  Originally, SDO_PlayerAccount did inherit from E_PlayerAccount and SDO_PlayerCharacter inherited from E_PlayerCharacter.  Instead of a field on the character, I could associate the spec-derived object with the character on the server and client, right?  Also, when I tried to delete the SDO_PlayerCharacter class and SDO_PlayerAccount class from the server DOM, I received the attached error message.  The idea for statistics as a spec came around because we have other systems that can modify statistics (items, abilities, etc.)

Thank you for your assistance.

7
Scripting & Programming / Replicating Spec Derived Objects
« on: Dec 17, 15, 09:52:23 PM »
Greetings,

I am running into an issue, and I would like some advice.  First, let me explain what I'm trying to do.  I've defined two spec oracles: SDO_PlayerCharacterSpecOracle (for character type definitions), and SDO_CharacterStatisticsSpecOracle (for statistics).  Also, I've defined a spec decorator (SDO_CharacterStatisticsSpecDecorator) that gloms a lookup list onto player character spec.  Our designers can use this system to define statistics, add statistics to a character type through a spec selector, and define initial values for these statistics.  I have verified that the spec system works.  In addition, I've created a player character class (SDO_PlayerCharacter) that inherits from E_PlayerCharacter, and I've added a noderef field for a player character spec-derived object on both the client and the server.  The field itself is not set to replicate, but the spec-derived object class is set to replicate from server to client.

To create the spec-derived object, our character creation system calls this code in response to a remote call request from a GUI:
Code: [Select]
// Method to request character spec from server
unique method CCSRequestCharacterSpec(account as NodeRef of Class _PlayerAccount, specKey as ID)
  // Get a reference to the player character spec oracle
  var oracle = $SPECORACLEUTILS._GetOracleFromType("SDO_PlayerCharacterSpecOracle")
 
  // Determine if the spec key is valid
  if oracle.DoesSpecKeyExist(specKey)
    // Retrieve spec from character
    var spec = oracle.GetSpecByKey(specKey)
   
    // Determine if the spec is valid
    if spec <> None
      // Create spec derived object
      derivedObject as NodeRef of Class SDO_PlayerCharacterSpecDerivedObject = spec.CreateFromSpec()
     
      // Add noderef of object to character
      var player = account.GetMyChar()
      where player
        is kindof SDO_PlayerCharacter
          player.sdoPlayerCharacterSpecDerivedObject = derivedObject
        .
      .
     
      // Create association between player character and derived object
      addAssociation(player, "base_hard_association", derivedObject)
     
      // Add derived object to account replication group
      account._GetReplicationGroup(false)._ReplicateNode(derivedObject)
       
      // Notify client of success
      $CHARACTERCREATIONSYSTEM.CCSNotifyClientOfCharacterSpecAcceptance(account, specKey)
    else
      println("Invaild character spec: " + specKey)
    .
 
  else
    // Notify the client of the error
    $CHARACTERCREATIONSYSTEM._CCSNotifyClientOfError( account, "CCSINVALIDSPECKEY" )
  .
.

The hard association is being created to ensure that the spec-derived object is persistent with the player character.  After creating a new character, I used the /heinfo chat command on the account.  On first glance, I noticed that the server field for the spec-derived object was valid, but the client was 0.  After looking around in the wiki and on the forums, I added the following code to our game-specific player account class (SDO_PlayerAccount), which inherits from E_PlayerAccount.
Code: [Select]
method _OnReplicationNodeAdded(addedNode as NodeRef)
  where addedNode
    is kindof SDO_PlayerCharacterSpecDerivedObject
      char as NodeRef of Class SDO_PlayerCharacter = me.GetMyCharacter()
      char.sdoPlayerCharacterSpecDerivedObject = addedNode
      AddAssociation(char, "base_hard_association", addedNode)
      println("Account: " + me + " Player: " + char + " Added Node: " + addedNode)
    .
  .
.

The print output was never given.  Upon further inspection of /heinfo, I saw that the account root node was of type E_PlayerCharacter.  This doesn't make any sense because I've glommed a game-specific account class (SDO_Account) onto the account system node on the server (and removed E_Account).  In our account class, I use the following method to set the account root node prototype:
Code: [Select]
method HE_UsePrototypeForAccountRootNode( prototypeName references String ) as Boolean
  prototypeName = "SDO_PlayerAccountPrototype"
 
  return true
.

To accommodate this disparity, I added the following code to E_PlayerAccount:
Code: [Select]
method HE_OnReplicationNodeAdded(addedNode as NodeRef) as Boolean
  where addedNode
    is kindof SDO_PlayerCharacterSpecDerivedObject
      if me = GetAccountID()
        char as NodeRef of Class SDO_PlayerCharacter = me.GetMyCharacter()
        char.sdoPlayerCharacterSpecDerivedObject = addedNode
        println("Account: " + me + " Player: " + char + " Added Node: " + addedNode)
      .
    .

    // Everything below this line is from clean engine
    is kindof E_playerCharacter
      if me = GetAccountID()
        if $BASECLIENT._AreaID = 93383990054
          return false
        .
        // Gonna check and build game GUIs here
        bar as NodeRef of Class GUIControl = FindGUIControlByName(0, "game.E_AbilityBar")
        if bar != None
          destroynode(bar)
        .
        bar = CreateNodeFromPrototype("E_AbilityBar")
        bar.build = true
       
       
        expbar as NodeRef of Class E_ExperienceBar = FindGUIControlByName(0, "game.E_ExperienceBar")
        if expbar != None
          destroynode(expbar)
        .
        expbar = CreateNodeFromPrototype("E_ExperienceBar")
        expbar.build = true
        expbar.position.x = 0
        expbar.position.y = 0
        expbar.setXP(addedNode, addedNode.E_experiencePoints)
        expbar.setLevel(addedNode.E_level)
        $LightweightEvents.addLightweightEventListener(addedNode, "xpUpdated", expbar)
        $LightweightEvents.addLightweightEventListener(addedNode, "levelUpdated", expbar)
       
       
        statusbar as NodeRef of Class E_StatusBar = FindGUIControlByName(0, "game.E_StatusBar")
        if statusbar != None
          destroynode(statusbar)
        .
        statusbar = CreateNodeFromPrototype("E_StatusBar")
        statusbar.build = true
        statusBar.position.x = 0
        statusBar.position.y = 19
        statusBar.SetName(addedNode.name)
        $LightweightEvents.addLightweightEventListener(addedNode, "nameUpdated", statusBar)
        $LightweightEvents.addLightweightEventListener(addedNode, "hpUpdated", statusBar)
       
        //  The chat window.
        chatWindow as NodeRef of Class E_ChatWindow = FindGUIControlByName( None, "E_ChatWindow" )
        if chatWindow != None
          DestroyNode( chatWindow )
        .
        chatWindow = CreateNodeFromPrototype( "E_ChatWindow" )
        chatWindow.build = true
      .
    .
  .
  return false
.


From the above print output, it appeared that the spec-derived object was replicating; however, upon looking at the spec-derived object fields with /heinfo again after the print output, the server was valid and the client was still 0.  It appears that something is overriding that field.  On another note, I had seen on the forum that associations would need to be remade on the client after replication.  When I tried that in the above method, a script error was thrown stating that the target node of a hard association can't be indestructible.  In this case, the target node would be the spec-derived object.

I realize that I've said a lot.  So, let me quickly summarize my questions.
  • Why is the client noderef field being overwritten?
  • Why is the game not using our player account system?
  • Why can't I make a hard association on the client in this case?[\li]
Thank you for your assistance.

8
Design & World Building / Re: importing
« on: Dec 02, 15, 11:44:40 AM »
The compile errors for your agent script can be fixed by changing a couple of lines in your "walk" action.  See below for code snippet.

Code: [Select]
action walk
{
  force(1) AnimAllBody
  {
    anim "walk"
    hold 1
    blend 0.1
    align false
    looping true
    change AlreadyTurning to false
    change CurrentMotion to Idle
  } 
}

The first error was caused by setting the AlreadyTurning variable to an invalid value, and the second error was caused by referring to a variable that doesn't exist.

9
General Discussion / World Unavailable in HeroBlade US East 21
« on: Nov 23, 15, 06:28:39 PM »
Greetings HeroEngine Community!  This is my first forum post.  I'm having issues accessing our world in region US East 21 through HeroBlade on a 64-bit Windows 10 machine.  Our version of HeroBlade is 2.6.6.25627:46.  This is the first time that I've been unable to access our world on this machine.  Other members of our team in different locations are also unable to access our world.  I'm not sure if this is the right place to put this, but I figured that it would be faster than contacting technical support.  Thanks.  For clarification, by "unable to access our world," I mean that our world "theaftermath" is not available for selection after logging in.

Pages: [1]