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 - cloudnine

Pages: [1] 2 3 ... 6
1
Scripting & Programming / Re: RequestSpecByKey (Client)
« on: Dec 12, 13, 07:29:24 AM »
Ok it works now.

I had added the addlistener() part because the EventRaised was never getting called
turns out I had to use the world_anchor here
Code: [Select]
wa as NodeRef of Class world_anchor = SYSTEM.INFO.WORLDANCHOR
      oracle as NodeRef of Class CombatEffectSpecOracle = wa.GetCombatEffectSpecOracle()
     
     //oracle as NodeRef of Class CombatEffectSpecOracle = $SPECORACLEUTILS.GetCombatEffectSpecOracle()
     
      var listener = oracle.CreateNodeListener( me, false )
      oracle.RequestSpecByKey(dd.SpecKey, listener)

2
Scripting & Programming / RequestSpecByKey (Client)
« on: Dec 11, 13, 12:05:14 PM »
When trying to read a spec on the client using RequestSpecByKey
my subject ends up being the specoracle and the data is an eventobject

not as this post shows data should be the spec and so should the subject?
https://community.heroengine.com/forums/index.php/topic,4279.msg23850.html#msg23850

I have
A method in Combatant Class with me being the E_PlayerCharacter
which is called when a replication field on the E_PlayerCharacter is updated
Code: [Select]
oracle as NodeRef of Class CombatEffectSpecOracle = $SPECORACLEUTILS.GetCombatEffectSpecOracle()
      println("requesting spec !!!!!!!!!!Oracle and key" +oracle + dd.SpecKey +"And the ME Node is" +me)
      //Two types of listeners
      //var listener = oracle.CreateScriptListener( SYSTEM.EXEC.THISSCRIPT, false )
      var listener = oracle.CreateNodeListener( me, false )
      oracle.addListener( listener )
      oracle.RequestSpecByKey(dd.SpecKey, listener)
In the Combatant Class I have these
Code: [Select]
shared function EventRaisedNotify(obsSubject as NodeRef of Class ObsSubject, listener as NodeRef of Class ObsListener, data as NodeRef )
  println("Combatant Event Raised Notify!!!!!!!!Subject:" +obsSubject +"Listener:" +listener +"Data:" +data)
 
obsSubject.removeListener( listener )
 
.

method isListenerInterested( data as NodeRef ) as Boolean
// Supports the idea that listeners may have specific interests
//
println("          Is the listener interested           !!!!!!!!!!!!!!!!!!!!!!!!!!!!")
  return true
.
method destroyListener()
 
.
method EventRaised( obs as NodeRef of Class ObsSubject, data as NodeRef )
  println("Event raised in Combatant class!!!ObsSubjectis:" +obs +"Data:" +data +"The ME Node is" +me)
datastring as String = data
 // Same as client CLI command 
//SendPersistedClientCLI( "qn " +data )
 
where obs is kindof CombatEffectSpecOracle
  println("Subject is a     CombatEffectSpecOracle     !")
  myfakeoracle as NodeRef of Class CombatEffectSpecOracle = $SPECORACLEUTILS.GetCombatEffectSpecOracle()
  var mydata = myfakeoracle.GetSpecByKey(1)
  //mydata as NodeRef of Class CombatEffectSpecOracle = myoracle.GetSpecByKey(1)
  println("My Data:" +mydata)
  println("My Fake Oracle   " +myfakeoracle)
  myfakespec as NodeRef = GetProtoType("CombatEffectSpecOracle")
  myfakespec = myfakeoracle.GetSpecByKey(1)
  println("My Fake Spec:" +myfakespec)
 
  worldAnchor as NodeRef of Class world_anchor = SYSTEM.INFO.WORLDANCHOR
  oracle as NodeRef of Class SpecOracle = worldAnchor.GetCombatEffectSpecOracle()
  fake2 as NodeRef of Class CombatEffectSpec= oracle.GetSpecByKey(1)
  println("Fake Spec 2   " +fake2 +"World Oracle" +oracle)
.

where obs is kindof CombatEffectSpec
  println("Subject is a     CombatEffectSpec     !")
.
where data is kindof  eventObject
  println("DATA is a  EVENTOBJECT   CombatEffectSpecOracle     !")
  if not (data is kindof CombatEffectSpec)
    GlomClass("CombatEffectSpec",data)
    println("Glommed a CombatEffectSpec Class onto DATA")
  .
.
And the Console Shows
Code: [Select]
11:42:26: SCRIPT:[CombatantClassMethods]:requesting spec !!!!!!!!!!Oracle and key10000051461And the me Node is9223372065196132748
11:42:26: SCRIPT:[CombatantClassMethods]:Event raised in Combatant Class!!!ObsSubjectis:1000005146Data:1000005150The me Node is9223372065196132748
11:42:26: SCRIPT:[CombatantClassMethods]:Subject is a     CombatEffectSpecOracle     !
11:42:26: SCRIPT:[CombatantClassMethods]:My Data:0
11:42:26: SCRIPT:[CombatantClassMethods]:My Fake Oracle   1000005151
11:42:26: SCRIPT:[CombatantClassMethods]:My Fake Spec:0
11:42:26: SCRIPT:[CombatantClassMethods]:Fake Spec 2   0World Oracle1000005154
11:42:26: SCRIPT:[CombatantClassMethods]:DATA is a  EVENTOBJECT   CombatEffectSpecOracle     !
11:42:26: SCRIPT:[CombatantClassMethods]:Glommed a CombatEffectSpec Class onto DATA
11:42:26: SCRIPT:[CombatantClassMethods]:The Data is a COMBATEFFECTSPEC           
11:42:26: SCRIPT:[CombatantClassMethods]:Combatant Event Raised Notify!!!!!!!!Subject:1000005146Listener:1000005147Data:1000005150
11:43:25: SCRIPT:[CombatantClassMethods]:COMBATANT REPLICATION FIELDUPDATED DisplayTracker!!!
11:43:25: SCRIPT:[CombatantClassMethods]:DiffForCombatEffects!!!!!
11:43:25: SCRIPT:[CombatantClassMethods]:found effectID:340
11:43:25: SCRIPT:[CombatantClassMethods]:total effect: 1
Any ideas?

3
Developer Job Board / Re: 3d modeler / HSL scripter
« on: Feb 23, 13, 02:09:13 PM »
nvm

4
Developer Hero Projects / Re: Solo Online - MMORPG
« on: Feb 22, 13, 12:17:41 PM »
yeah sorry, I'll redo it with camtasia

5
Scripting & Programming / Re: Spec Decorator Fields
« on: Feb 21, 13, 06:03:33 PM »
thanks TGSRofar, lol I don't know what I was thinking
I see it now in the stackable specdecorator
Code: [Select]
shared function OnInstantiationFromSpec( specDerivedObject as NodeRef )
  if not ( specDerivedObject is kindof stackable )
    GlomClass( "Stackable", specDerivedObject )
    where specDerivedObject is kindof stackable
      specDerivedObject.CurrentStackSize = 1
      mySpec as NodeRef of Class StackableSpecDecorator = specDerivedObject.getmyspec()
      specDerivedObject.MaxStackSize = mySpec.MaxStackSize
    .
  .
.

6
Developer Job Board / please delete
« on: Feb 21, 13, 05:22:07 PM »
delete

7
Developer Hero Projects / Re: Solo Online - MMORPG
« on: Feb 21, 13, 04:42:52 PM »
Solo Online - mmorpg - GAME UPDATE #1
Game Update 1 (Part 1) http://youtu.be/_nDQtZgxreE
                         (Part 2) http://youtu.be/cy1xhiJtrik

Game Update  #1 video http://youtu.be/rWcFfCxU7PA

Quests:   The quest system has solo, group, and raid sized quests.
          Single quests , chain quests, unlocked quests,
          class quests ,race quests. Rewards can vary from items, to fame,
          to extra inventory space, and even the ability to unlock new combat styles.


Level System: Experience points needed to level up,
              for levels 1-9 is 100 times the char level
              after level 10 its a flat 1,000 xp per level.
              The max level is 300
              When a player gains a level they will get stat boosts
              and an ability point, which is used to learn new
              abilities and passive traits.
              Higher level abilities require more ability points.
             
              When a player spends enough points in tier 1 abilities,
              they gain access to tier 2, and so on, up to legendary skills.
             
              If a player falls in combat they lose all of their xp
              for the current level but can not lose levels.
 
              Players can choose to return to a bind location,
              or wait for somebody to revive them.
               
 
         
Stats: HitPoints- Health, if a players health falls to zero they are incapacitated
       
       Action - Used to execute abilities, also
                when a player takes damage they gain action
                NPCs start with 0 action and, depending on
                how many players are attacking them,
                if they have enough action they unleash devastating attacks
                stronger then their normal attacks
       
       Energy - Also used to execute abilities but no energy is
                gained from taking damage
                support classes use this the most
       
       Strength
       Dexterity
       Vitality
       Agility
       Intelligence
       Affects weapon damage and damage taken
       
       Weapon Damage- Increased based on stats and the equipped weapon type
                      the final damage uses the players stats, item stats
                      the players skill with the weapon and
                      vs. targets stats and skills.
       Weapon Delay-  varies based on the equipped weapon type
                      Abilities have their own delay separate from the weapon
                      but also use a global cooldown

Shops: Players can buy and sell items from shops
       and depending on where the shop is
       prices can increase or decrease based on
       how much fame (gained from completing quests)
       the player has in that area.

Inventory: Players start with 30 inventory space
           but can gain more by completing quests and
           defeating certain monsters or other criteria.

Exploration: Exploring the world can unlock new quests

(All screenshots are not final game versions,
and are provided to show system functionality that is in game already)


8
Scripting & Programming / [Resolved] Spec Decorator Fields
« on: Feb 19, 13, 05:15:54 PM »
I have an ItemSpec With a HoldableSpecDecorator which has fields
istwohanded       - bool
heldatslot            - enum holdatslots
soloweapontype - enum soloweapontypes
wdam                  - integer
wdelay                - timeinterval
For editing the spec I use a class that inhherits from _GuiNodePropertyEditor
it builds a gui for each decorator, when I save it I use OnGUINodePropertyEditorSubmit
which saves the fields to the spec
I can requestspecbykey on the server then \sn and it all looks good.

Now after the item is instantiated and in the players inventory and equipped,
I want to use the field info for damage calculations.
I check the players inventory and equip slot for the item
Code: [Select]
var inv = actor.GetMyInventory()
        meleew as NodeRef of Class SpecDerivedObject = inv.GetEquipSlotContents("Melee")
        where meleew is kindof Holdable
          println("MELEEWEAPON IS:"+meleew)
        println("MeleeWeaponDamage:"+meleew.wDam+"Delay"+meleew.wDelay+"Type"+meleew.SoloWeaponType)
I can \sn for meleew and it's the wepon, but the damage delay and weapontype are all 0
Where would I make sure the wepon fields are the same as the spec.

I tried adding in the Holdable spec decorator
Code: [Select]
shared function OnInstantiationFromSpec( specDerivedObject as NodeRef )
  if not ( specDerivedObject is kindof Holdable )
    GlomClass( "Holdable", specDerivedObject )
  .
.

method IsItemTwoHanded() as Boolean
// Twohanded held items merely indicate that both hands are occupied
//   any special animation needs are of course handled by the behaves that are sent.
//
  return me.isTwoHanded
.

shared function OnMarshalClassSpecifiedFields( n as NodeRef, marshalString references String )
// Called by the MarshalNodeWithClassSpecifiedFields and MarshalPrototypeWithClassSpecifiedFields in the classMethods
//   scripts for the node n.  Your class method script should use marshalNode/PrototypeAppendField to add the specific
//   fields you want.
//
  MarshalAppendField( marshalString, n, "isTwoHanded" )
  MarshalAppendField( marshalString, n, "HoldAtSlot" )
  MarshalAppendField( marshalString, n, "SoloWeaponType" )
  MarshalAppendField( marshalString, n, "wdam" )
  MarshalAppendField( marshalString, n, "wdelay" )
.
I have getter methods on the client HoldableSpecDecorator
getweapontype, setweapontype. Do these need to be on the server also?
Both Holdable and HoldableSpecDecorator have the same fields.


Once I finish this then add the combo chains and exp chains the combat system will be complete

9
Scripting & Programming / Re: Change Area
« on: Feb 16, 13, 01:21:18 AM »
Right on, I got it to work.
I added two vector3 fields to the _playeraccount class
and before doing the changeAreaRequest set them to the exit path position and rotation.
Also set the arrivalpath on _playeraccount field to the exit path id
Then in DoPositioning() right before it teleports the char
check if the arrivalpath = 0
If it isn't 0, I use the two vector3 fields for the teleport.
Then in HE_PostCharacterActivated in E_Account,
set the arrivalpath back to 0.
New Triggerscript
Code: [Select]
function Travel_To_Test3_TriggerEnter( traveler as NodeRef )
  println( "Entered trigger..." )
  where traveler is kindof E_playerCharacter
    account as NodeRef of Class E_playerAccount = traveler.GetMyAccount()
    traveler.ArrivalPath = 9223372066297132959 //Test3 area exit cave
    traveler.SoloExitPos = (-0.3257331,0.08600255,-4.529782)
    traveler.SoloExitRot = (0,-107.6402,0)
    $Travel._ChangeAreaRequest( account, 9223372060865132781, "3" )//Test3 Area
  .
.
And the last part of DoPositioning()
Code: [Select]
default
          label notarget
          //added solo arrival
          if pc.ArrivalPath = 0
             path as NodeRef of Class PathNode = PathUtils:GetPathByName( "Arrival" )
         
            if path != None
              pos = GetPositionOnPath( path )
              Debug( "LoginProcess", name + " is moving between areas and I found an Arrival path (" + path + ").  Teleporting to " + pos + "." )
              account._TeleportPlayer( pos, rot )
            else
              Debug ( "LoginProcess", "No Arrival path found or target for " + name + " in area '" + GetAreaName( GetAreaNumber() ) + "', so positioning at origin." )
              account._TeleportPlayer( pos, rot )
            .
          else
            account._TeleportPlayer( pc.SoloExitPos, pc.SoloExitRot)//rot )

10
Scripting & Programming / [Resolved] Change Area
« on: Feb 15, 13, 12:19:07 PM »
Hey all,
I have a trigger that sends the character to another area
which works fine.
I set up an arrival path in the area the character is going to
and they arrive there fine.

Then I want to exit the new area and head back to the original area,
which also has an arrival path.
But I want the char to end up by the trigger not the arrival path.

Is there a way to ChangeAreaRequest and specify a path other than the arrival path?
Right now I use for the trigger script
Code: [Select]
function Travel_To_Test3_TriggerEnter( traveler as NodeRef )
  println( "Entered trigger..." )
  where traveler is kindof E_playerCharacter
    account as NodeRef of Class E_playerAccount = traveler.GetMyAccount()
    $Travel._ChangeAreaRequest( account, 9223372060865132781, "3" )//Test3 Area
  .
.

11
Design & World Building / Path System Problem
« on: Feb 15, 13, 12:07:48 PM »
I have an area set up as a cave area with inverted height maps used as the ceiling.
For some reason this area will not spawn mobs from the mob spawner.
Error says invalid point (0,0,0) in the region

And if I use command /henpc createfromspec (which places the mob at the character and sets its leash origin there)
It doesnt wander around.
I thought it may be because of the inverted height map so I set that to ignore npcs.
If I set the region to autosnap to ground it moves up to the ceiling
I tried changed the region height to 3 which looks like it intersects both heightmaps, but no affect.

It appears the inverted height map may not be the problem because,
I created another area ctrl+d copied the heightmap , moved it up and inverted it
Stitched the edges to make a cave with no exit
/henpc and the mobs wander around like normal.

One cool thing I found is if I lock the ceiling heightmap
I can edit the ground heightmap without affecting the ceiling which is nice.
But these are the agent debug messages
/henpc
Code: [Select]
Registered 9223372066249134807 with $AiMasterBrain standard system
---SoloAIAgent: Event received: UpdatePosition---
Initializing my agent
Wander Type: LEASHED
PriorityList initialized
Initializing my Tactical AI
evaluating 3
I am of the appropriate min level
I am of the appropriate max level...adding
evaluating 4
I am of the appropriate min level
I am of the appropriate max level...adding
Adding melee ability [3]; NPC STRIKE
Adding melee ability [4]; NPC OTHERSTRIKE
2 abilities in tactical list
My pursue type is LEASH
My pursue origin is (8.09834,-1.1173,0.0836295)
---SoloAIAgent: Event received: onAgentInitialized---
Post-Initializing Agent
Entities in awareness range: 0
-------------------------------
Evaluating goals [02/15/2013 17:45:38 UTC]
<SoloAiAgentClassMethods:LightweightEventRaised>
Wander type is LEASHED
[push SoloWanderGoal] Wander around a bit
Goal pushed successfully
---SoloAIAgent: Event received: PushGoal---
SoloWanderGoal received event "PushGoal"
[push SoloWanderState] I feel the need to roam
Waking up
Wander type is LEASHED
Already have a goal of type SoloWanderGoal
Got request 1754 back with invalid point
Path request 1754 failed, requesting new point
Got request 1755 back with invalid point
Path request 1755 failed, requesting new point
Got request 1756 back with invalid point
Path request 1756 failed, requesting new point
Got request 1757 back with invalid point
Path request 1757 failed, requesting new point
Got request 1758 back with invalid point
Path request 1758 failed, requesting new point
Got request 1759 back with invalid point
Path request 1759 failed, requesting new point
[pop SoloWanderState] Failed to get a valid point [Called by SoloWanderStateClassMethods:_PathSystem_PathFailed] [Called by SoloAiAgentClassMethods:_PopAgentState]
SO_entered informed of subject 9223372065196132748 (E_playerCharacter)
theNode is of type E_nonplayercharacter
Adding subject 9223372065196132748 to detectedPlayers list (1)
-------------------------------
Evaluating goals [02/15/2013 17:45:39 UTC]
<E_nonPlayerCharacterClassMethods:SO_entered>
Executing goal 1: (SoloWanderGoal)
[push SoloWanderState] I feel the need to roam
Entity 9223372065196132748 entered awareness range, but I'm already awake
Got request 1765 back with invalid point
Path request 1765 failed, requesting new point
Got request 1766 back with invalid point
Path request 1766 failed, requesting new point
Got request 1767 back with invalid point
Path request 1767 failed, requesting new point
Got request 1768 back with invalid point
Path request 1768 failed, requesting new point
Got request 1769 back with invalid point
Path request 1769 failed, requesting new point
Got request 1770 back with invalid point
Path request 1770 failed, requesting new point
[pop SoloWanderState] Failed to get a valid point [Called by SoloWanderStateClassMethods:_PathSystem_PathFailed] [Called by SoloAiAgentClassMethods:_PopAgentState]
and the mobspawn debug history
Code: [Select]
[02/15/2013 17:47:19 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:19 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:19 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:19 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:19 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:19 UTC] Profile "Entrance1" got request 2020 from territory 9223372065946133196
[02/15/2013 17:47:19 UTC] Profile "Entrance1" got request 2019 from territory 9223372065946133196
[02/15/2013 17:47:19 UTC] Profile "Entrance1" got request 2018 from territory 9223372065946133196
[02/15/2013 17:47:19 UTC] Profile "Entrance1" got request 2017 from territory 9223372065946133196
[02/15/2013 17:47:19 UTC] Profile "Entrance1" got request 2016 from territory 9223372065946133196
[02/15/2013 17:47:19 UTC] Profile "Entrance1" spawning 5 monsters
[02/15/2013 17:47:19 UTC] Profile "Entrance1" has spawn type "TERRITORY"
[02/15/2013 17:47:19 UTC] ---------------------------
[02/15/2013 17:47:19 UTC] Profile "Entrance1" handled event type "onProfileSpawn"
[02/15/2013 17:47:17 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:17 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:17 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:17 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:17 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:17 UTC] Profile "Entrance1" got request 2015 from territory 9223372065946133196
[02/15/2013 17:47:17 UTC] Profile "Entrance1" got request 2014 from territory 9223372065946133196
[02/15/2013 17:47:17 UTC] Profile "Entrance1" got request 2013 from territory 9223372065946133196
[02/15/2013 17:47:17 UTC] Profile "Entrance1" got request 2012 from territory 9223372065946133196
[02/15/2013 17:47:17 UTC] Profile "Entrance1" got request 2011 from territory 9223372065946133196
[02/15/2013 17:47:17 UTC] Profile "Entrance1" spawning 5 monsters
[02/15/2013 17:47:17 UTC] Profile "Entrance1" has spawn type "TERRITORY"
[02/15/2013 17:47:17 UTC] ---------------------------
[02/15/2013 17:47:17 UTC] Profile "Entrance1" handled event type "onProfileSpawn"
[02/15/2013 17:47:15 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:15 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:15 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:15 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:15 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:15 UTC] Profile "Entrance1" got request 2010 from territory 9223372065946133196
[02/15/2013 17:47:15 UTC] Profile "Entrance1" got request 2009 from territory 9223372065946133196
[02/15/2013 17:47:15 UTC] Profile "Entrance1" got request 2008 from territory 9223372065946133196
[02/15/2013 17:47:15 UTC] Profile "Entrance1" got request 2007 from territory 9223372065946133196
[02/15/2013 17:47:15 UTC] Profile "Entrance1" got request 2006 from territory 9223372065946133196
[02/15/2013 17:47:15 UTC] Profile "Entrance1" spawning 5 monsters
[02/15/2013 17:47:15 UTC] Profile "Entrance1" has spawn type "TERRITORY"
[02/15/2013 17:47:15 UTC] ---------------------------
[02/15/2013 17:47:15 UTC] Profile "Entrance1" handled event type "onProfileSpawn"
[02/15/2013 17:47:13 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:13 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:13 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:13 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:13 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:13 UTC] Profile "Entrance1" got request 2005 from territory 9223372065946133196
[02/15/2013 17:47:13 UTC] Profile "Entrance1" got request 2004 from territory 9223372065946133196
[02/15/2013 17:47:13 UTC] Profile "Entrance1" got request 2003 from territory 9223372065946133196
[02/15/2013 17:47:13 UTC] Profile "Entrance1" got request 2002 from territory 9223372065946133196
[02/15/2013 17:47:13 UTC] Profile "Entrance1" got request 2001 from territory 9223372065946133196
[02/15/2013 17:47:13 UTC] Profile "Entrance1" spawning 5 monsters
[02/15/2013 17:47:13 UTC] Profile "Entrance1" has spawn type "TERRITORY"
[02/15/2013 17:47:13 UTC] ---------------------------
[02/15/2013 17:47:13 UTC] Profile "Entrance1" handled event type "onProfileSpawn"
[02/15/2013 17:47:11 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:11 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:11 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:11 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:11 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:11 UTC] Profile "Entrance1" got request 2000 from territory 9223372065946133196
[02/15/2013 17:47:11 UTC] Profile "Entrance1" got request 1999 from territory 9223372065946133196
[02/15/2013 17:47:11 UTC] Profile "Entrance1" got request 1998 from territory 9223372065946133196
[02/15/2013 17:47:11 UTC] Profile "Entrance1" got request 1997 from territory 9223372065946133196
[02/15/2013 17:47:11 UTC] Profile "Entrance1" got request 1996 from territory 9223372065946133196
[02/15/2013 17:47:11 UTC] Profile "Entrance1" spawning 5 monsters
[02/15/2013 17:47:11 UTC] Profile "Entrance1" has spawn type "TERRITORY"
[02/15/2013 17:47:11 UTC] ---------------------------
[02/15/2013 17:47:11 UTC] Profile "Entrance1" handled event type "onProfileSpawn"
[02/15/2013 17:47:09 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:09 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:09 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:09 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:09 UTC] [9223372065950133300] Failed to get a valid point (0,0,0) from territory 9223372065946133196
[02/15/2013 17:47:09 UTC] Profile "Entrance1" got request 1995 from territory 9223372065946133196
[02/15/2013 17:47:09 UTC] Profile "Entrance1" got request 1994 from territory 9223372065946133196
[02/15/2013 17:47:09 UTC] Profile "Entrance1" got request 1993 from territory 9223372065946133196
[02/15/2013 17:47:09 UTC] Profile "Entrance1" got request 1992 from territory 9223372065946133196
[02/15/2013 17:47:09 UTC] Profile "Entrance1" got request 1991 from territory 9223372065946133196
[02/15/2013 17:47:09 UTC] Profile "Entrance1" spawning 5 monsters
[02/15/2013 17:47:09 UTC] Profile "Entrance1" has spawn type "TERRITORY"
Is this area just tainted from copying (ctrl+d) the original 32x32 heightmap
I've been doing that vs creating a large hieghtmap as that drops the fps down even with no textures applied
And I should just scrap the area

12
Looks like its finding the spec cache now.
I changed E_Ability to:
Code: [Select]
method getMySpecOracle() as NodeRef of Class SpecOracle
  //  #if debug
  //  println("[" + SYSTEM.HSL.LOCATION + "]--" + SYSTEM.EXEC.CALLEDBYSCRIPT + ":" + SYSTEM.EXEC.CALLEDBYFUNCTION)
  //  #endif
  // It is intended that each child class override this method
oracle as NodeRef of Class AbilitySpecOracle = $SPECORACLEUTILS._GetSpecOracleByClass( "AbilitySpecOracle" )
  return oracle

.
shared function EventRaisedNotify( obsSubject as NodeRef of Class ObsSubject, obsListener as NodeRef of Class ObsListener, data as NodeRef )
 
  // Data is a reference to the spec, do whatever you need now that it is ready.
 
  // ask the subject to remove the listener because we do not want any further events
  obsSubject.removeListener( obslistener )
.
method getMySpec() as NodeRef of Class baseSpec
  // May return none...always check

  oracle as NodeRef of Class AbilitySpecOracle = $SPECORACLEUTILS._GetSpecOracleByClass( "AbilitySpecOracle" )
  println("ORACLE IS (" +oracle +")")
  println("ORACLESPECByKEY IS (" +oracle.GetSpecByKey(me.SpecKey) +")")
 
 
  var listener = oracle.createScriptListener( SYSTEM.EXEC.THISSCRIPT, false )
  oracle.RequestSpecByKey( me.SpecKey, listener )


  return oracle.GetSpecByKey( me.SpecKey )
.

13
The Ability Specs are not being cached on the client or they are and get erased or aren't found.
the getspecbykey really just needs check the specs  _speckeymap???

I can do this for Gui and it works fine but not abilities

I presume I can anchor on the server to the character, area, or other
On the client I should use system.info.worldanchor
so on the client I have classes
E_Ability
AbilitySpec
AbilitySpecOracle
AbilityOracle
world_anchor
ClientDataSystem

In E_baseclient
Code: [Select]
wa as NodeRef of Class world_anchor = SYSTEM.INFO.WORLDANCHOR
  wa.getAbilityOracle()

In world_anchor there are two methods for ability
Code: [Select]
method GetAbilityOracle() as NodeRef of Class AbilityOracle
  oracles as List of ID = ClientDataSystem:GetDataForSystem( "OracleAnchor" )
  println("Worldanchor get ability oracle !!!" )
  abilityOracle as NodeRef of Class AbilityOracle
 
  oTest as NodeRef
  foreach o in oracles
    otest = o
    if otest is kindof AbilityOracle
      abilityOracle = otest
    .
  .
 
  if abilityOracle = None
    abilityOracle = CreateNodeFromClass( "AbilityOracle" )
    // add it to the oracleAnchor root of the clientDataSystem
    println("Worldanchor add data to system !!!")
    ClientDataSystem:AddDataToSystem( "OracleAnchor", abilityOracle )
   
    // Create a listener so that events come into the AbilityOracle class methods script
    me.addListener( me.createScriptListener( AbilityOracleClassMethods, false ) )
  .
 
  return abilityOracle
.

method GetAbilitySpecOracle() as NodeRef of Class AbilitySpecOracle
  abilitySpecOracle as NodeRef of Class AbilitySpecOracle = me.GetSpecOracleByClass( "abilitySpecOracle" ) //orig
 
  return abilitySpecOracle
.

I created a test script on the client for checking it has
Code: [Select]
public function findabilityspecoracle ()
  var oracle = $SPECORACLEUTILS.GetAbilitySpecOracle()
  println(Oracle +"!!!!")
  println("Oracle _speckeymap length is(" +oracle._SpecKeyMap.length)
.
public function findworldabilityspecoracle ()
  wa as NodeRef of Class world_anchor = SYSTEM.INFO.WORLDANCHOR
        abilityOracle as NodeRef of Class AbilityOracle = wa.getabilityspecoracle()
        var oracle = abilityoracle
        println(oracle +"!!!!")
        println("Oracle _speckeymap length is(" +oracle._SpecKeyMap.length)
.
Calling these functions using CLI , I get a new ID each time for findabilityspecoracle
And the same Id for findworldspecoracle

In E_Ability I have this but if I use the wa type of finder I can't edit the spec anymore
Code: [Select]
method getMySpecOracle() as NodeRef of Class SpecOracle
  //  #if debug
  //  println("[" + SYSTEM.HSL.LOCATION + "]--" + SYSTEM.EXEC.CALLEDBYSCRIPT + ":" + SYSTEM.EXEC.CALLEDBYFUNCTION)
  //  #endif
  // It is intended that each child class override this method
  return $SPECORACLEUTILS.GetAbilitySpecOracle()
.
method getMySpec() as NodeRef of Class baseSpec
  // May return none...always check
  oracle as NodeRef of Class SpecOracle = me.getMySpecOracle()
  return oracle.GetSpecByKey( me.SpecKey )
.
In AbilitySpec
Code: [Select]
method getMySpecOracle() as NodeRef of Class SpecOracle
// It is intended that each child class override this method
  wa as NodeRef of Class world_anchor = SYSTEM.INFO.WORLDANCHOR
  return wa.GetAbilitySpecOracle()
.
I also have the E_SpecOracleUtils which has methods for getabilityspecoracle

Using this I get println messages from SpecOracleClassMethods in _Requestspecbykeyinanystate
first with a  _speckeymap.length of 0
followed by println in the same method with a _speckeymap.length of 2

14
Developer Hero Projects / Re: Solo Online - MMORPG
« on: Jan 21, 13, 02:58:13 PM »
Mountain pass, Custom Characters and Beach:

15
Developer Hero Projects / Re: Solo Online - MMORPG
« on: Jan 21, 13, 02:50:27 PM »
Particle FX and just outside a starting city.

Pages: [1] 2 3 ... 6