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 4 ... 6
16
Developer Hero Projects / Solo Online - MMORPG
« on: Jan 21, 13, 10:40:04 AM »
Name: Solo Online
Genre: MMORPG (Massively Multi-player-Online-Role-Playing-Game)
Website: http://youtube.com/solommorpg
Game Update 1 (Part 1) http://youtu.be/_nDQtZgxreE
                         (Part 2) http://youtu.be/cy1xhiJtrik
Teaser Video: http://youtu.be/KpUBdTAtlr4
Game Update #1 Video: http://youtu.be/rWcFfCxU7PA

Key Features: Large Open World, Dungeons,  Battlefields,
                       Crafting, Gathering, Farming, PlayerHousing, Mounts, Vehicles,
                       Custom skill aquisition tailored to each CombatStyle,
                       Able to change classes on the same character
                       Questing, Missions, Warfronts, Fame, Unlockable Classes
                       Combo System

Races: Human , Mech Biotech, Vir, Dwarf, Elemental

Classes: 16 Classes
              Starting classes are: Warrior, Monk, Sniper, Commando, Cleric, Bard, Sorcerer, Magician
              Unlockable classes  : Assassin, Samurai, Infiltrator, Mercenary, Illusionist, Tempest, Engineer, Beastmaster
              Some classes can equip multiple weapon types (ex. sword , axe, staff )
Abilities:
              By spending Ability points that are gained each level,
              players can recieve stat bonuses
              as well as learn new abilities.

Skills:   There will be various activities
            crafting, harvesting,  mining.
            Materials are aquired through defeating enemies, completing Warfronts(PvP , PvE, PvPvE)
            completing Boss Battles, and completing missions and quests.

Quests:   Standard, Solo, Group, Epic

Missions: Players can join War Legions
               and undertake missions of increasing difficulty,
               to gain higher status with the Legion,
               and gain new unlocks, rare items, Custom Buffs, etc.
               Missions utilize the Warfront system.

WarFront: Upon reaching higher mission ranks players will be able to:
                assist NPC Battle groups in accomplishing various tasks
                (Ex. take a base, defend a base, escort, PVP etc.),
                enlist npcs to aid them and more.

Combos:   When using abilities on enemies,
          the correct combination of ability use
          between Players
          can create a "Combo Effect" that deals Increasing damage
          to the target based on the level of the "Combat Effect"
          Players can even continue the combo chain to trigger
          additional Combo Effects.

Level Cap: The level cap is 300


(All screenshots are for demonstration only,and are provided to show system functionality that is in game already)


Project Status  1/3/14:
-Systems In place and functional-

Inventory, Shops, Mobspawns, Npc  with stats and levels, Npc Townfolk and Quest Givers,,

Abilities, Quests, Time of Day, Seamless World, Instanced areas

Custom Dynamic Characters, Static Characters, Character Progression,

Skills, Stats, Stat mods, Groups, News

Character Creation (Select race, class, citizenship, starting area, racial trait bonus,
                        starting weapons and armor based on class
Items ( armor, weapons, basic items, usable items)
          visualize and add stat bonuses on equip, remove on unequip.

17
Design & World Building / Re: [] Area Character Displacement
« on: Jan 20, 13, 08:36:52 AM »
Do you have an arrival path set up in these areas?
And an open enough area that the character and camera have room to spawn.

18
Well I added another requestspecbykey in E_Ability class
Code: [Select]
method getMySpec() as NodeRef of Class baseSpec
  // May return none...always check
  println("SOMYSPECKEYIS (" +me.SpecKey +")")
  oracle as NodeRef of Class SpecOracle = me.getMySpecOracle()
  println("ORACLE IS (" +oracle +")")
  println("ORACLESPECKEY IS (" +oracle.GetSpecByKey(me.SpecKey) +")")
  oracle.requestSpecByKey(me.SpecKey, me)
  return oracle.GetSpecByKey( me.SpecKey )
.
And Uncommented the #debug in SpecOracle class
Code: [Select]
07:19:05: SCRIPT:[E_AbilityClassMethods]:ClientSaysAbilityCanBeActivated()
07:19:05: SCRIPT:[E_AbilityClassMethods]:9223372063887132860
07:19:05: SCRIPT:[E_AbilityClassMethods]:Clientsaysabilitycanbeactivated
07:19:05: SCRIPT:[E_AbilityClassMethods]:MYORACLEIS (1000003602)
07:19:05: SCRIPT:[E_AbilityClassMethods]:The GETSPECBYKEY is (0)
07:19:05: SCRIPT:[E_AbilityClassMethods]:The GETMYSPECKEY is (1)
07:19:05: SCRIPT:[E_AbilityClassMethods]:SOMYSPECKEYIS (1)
07:19:05: SCRIPT:[E_AbilityClassMethods]:ORACLE is (1000003604)
07:19:05: SCRIPT:[E_AbilityClassMethods]:ORACLESPECKEY is (0)
07:19:05: SCRIPT:[SpecOracleClassMethods]:requestSpecByKey specKey: 1 listener: 9223372063887132860
07:19:05: SCRIPT:[SpecOracleClassMethods]: new spec: 1000003607 created for key: 1
07:19:05: SCRIPT:[SpecOracleClassMethods]:theSpec: 1000003607 loadStatus: NOTREADY
07:19:05: SCRIPT:[E_AbilityClassMethods]:SO GETMYSPEC is (0)
07:19:05: SCRIPT:[E_AbilityClassMethods]:The Ability ID is(1)
07:19:05: SCRIPT:[E_AbilityClassMethods]:MYSPECIS (0)
07:19:05: SCRIPT:[E_AbilityClassMethods]:MYSPEC2IS (0)
07:19:05: !ERROR!HeroScript::HeroMachine::ScriptError:node ID 0 not found
07:19:05: !ERROR!System:SCRIPT ERROR: node ID 0 not found
01/17/2013 07:22:51
call trace:
  Script E_AbilityClassMethods line 149 me[ID=9223372063887132860 Class=E_Ability,PlayerAbility]
  Script E_AbilityClassMethods line 191 me[9223372063887132860]
  Script AbilityIconClassMethods line 26 me[1000003374]
  Script _GUIIconClassMethods line 104 me[1000003374]
starting method/function ONMOUSECLICK
starting me[ID=1000003374 Class=AbilityIcon]
07:19:05: SCRIPT:[SpecOracleClassMethods]:onRepositoryDataDownloaded() name: 1.abilitySpec requestTag: 1000991 successful: true
07:19:05: SCRIPT:[SpecOracleClassMethods]:Had to create new spec: 1000003614 for key: 1
07:19:05: SCRIPT:[SpecOracleClassMethods]:requestSpecByKey specKey: 1 listener: 1000003618
07:19:05: SCRIPT:[SpecOracleClassMethods]:theSpec: 1000001423 loadStatus: READY


Looks Like It redownloads the spec everytime I click on the Icon

19
Looking into it more I have a PersonalAccountReplicationGroup association which is a hard association
If I use that I get an error, can't hard associate a node which is indestructible
so I took that out.
What happens is when I learn the ability it Transmits a collection to the client
The client gets it and "unpacks" it then adds

AbilitiesClassMethods - client
Code: [Select]
method AddCollectionElement( element as NodeRef, addBack as Boolean )
  println("ADD a collection ELEMENT!")
  where element is kindof E_Ability
    var oracle = element.GetMySpecOracle()
    println("ELEMENT IS (" +element +")")                     //(9223372063826132827)
    println("ELEMENT KEY IS (" +element.getMySpecKey() +")")  //(1)
    println("ELEMENT SPECKEY IS (" +element.SpecKey +")")  //(1)
    oracle.RequestSpecByKey(element.SpecKey, None)
    println("LOL THE ORACLE SPEC KEY IS (" +oracle.GetSpecByKey(element.SpecKey +")")) //(0)
   
  .
  parentClass::AddCollectionElement(element, addBack)
.
It uses None as the listener, I also tried using element as the listener
If I open the repobrowser in scriptdata there is a 1.AbilitySpec there

20
E_Ability inherits from SpecDerivedObject, ObsListener, _IconSubjectInterface

Clicking on an abilityicon send a request to activate the ability.
But getspecBy key will not work even though the node has a speckey of 1
I can/sn and see  the oracle is AbilitySpecOracle
E_AbilityClassMethods-Client
Code: [Select]
method getMySpec() as NodeRef of Class baseSpec
  // May return none...always check
  println("SOMYSPECKEYIS (" +me.SpecKey +")")                          //(1)
  oracle as NodeRef of Class SpecOracle = me.getMySpecOracle()
  println("ORACLE IS (" +oracle +")")                                  // (1000000989)
  println("ORACLESPECKEY IS (" +oracle.GetSpecByKey(me.SpecKey) +")")  // (0)
  return oracle.GetSpecByKey( me.SpecKey )
.
I also have a privatereplicationgroup that does Requestspecbykey when a node is added.
but that doesnt seem do anything

21
\cpfc classname, CLASSNAME; description="Lowercase name is the domclass uppercase is the prototype name"

|cpfc (on the client)

There's other options also, if you search cli on the wiki.

22
Scriptname:FunctionName ()


23
Scripting & Programming / Re: Clear all collection elements
« on: Jan 09, 13, 05:48:32 PM »
I believe I cleared the collection out
 by opening the window with the two commented lines
uncommented.
Code: [Select]
method SoloCharacterAbilityListWindow_Populate()
  var clientarea = me.SoloCharacterAbilityListWindow_GetFlowContainer()
  clear clientarea.children destroy
  println("Populate the abilitylistwindow")
  var oracle = SYSTEM.INFO.WORLDANCHOR.GetAbilityOracle()
  var abilitiesNode = oracle.GetAbilitiesNode()
  oracle.addListener(me)
  println("Oracle node is (" +oracle+ ")" )
  println("Abilities node is (" +abilitiesnode+ ")" )
  abilities as List of NodeRef
 
  abilitiesNode.listCollectionElements(abilities)
  //SYSTEM.EXEC.CPULIMIT = 00:00:30
  c as NodeRef of Class ExpandedInfoAbilityContainer
  foreach a in abilities
    //abilitiesNode.RemoveCollectionElement( a,destroy )
    where a is kindof PlayerAbility
      c = me.SoloCharacterAbilityListWindow_CreateControlForAbility(a,a.AbilitySource)//(a)// a.AbilitySource)
      add back c to clientarea.children
    .
  .
.
Still not sure why the ability oracle is anchored to SYSTEM.INFO.WORLDANCHOR though.

24
Scripting & Programming / Clear all collection elements
« on: Jan 09, 13, 01:44:24 PM »
I have a GUI window button that calls the server and should clear all abilities from the character.
Code: [Select]
untrusted function RequestRemoveAll()
  account as NodeRef = SYSTEM.REMOTE.CLIENT
  var char = account.GetMyChar()
  var charAbilities = char.GetMyAbilities()
  println("PreQuickLookupLength (" +charabilities.AbilitiesQuicklookup.length +")")
  println("PreAbilityListLength (" +charabilities.AbilityList.length +")")
  // Clear Ability List
  clear charAbilities.AbilityList //destroy
  // Clear Quicklookup
  foreach key in charAbilities.AbilitiesQuicklookup
  //if (someCondition == true)
    remove key from charAbilities.AbilitiesQuicklookup destroy
  .
  // Reset the Skill and Ability Points
  mychar as NodeRef of Class E_playerCharacter = char
  mychar.AbilityPoints = mychar.E_level - 1
  if mychar.AbilityPoints <0
    mychar.AbilityPoints = 0
  .
  mychar.SkillPoints = 0
  mychar.Strength = (mychar.E_level * 1)
  mychar.Dexterity = (mychar.E_level * 1)
  mychar.Vitality = (mychar.E_level * 1)
  mychar.Agility = (mychar.E_level * 1)
  mychar.Intelligence = (mychar.E_level * 1)
  //Clear the skill history
  clear mychar.TrainedJobSkills
  println("PostQuickLookupLength (" +charabilities.AbilitiesQuicklookup.length +")")
  println("PostAbilityListLength (" +charabilities.AbilityList.length +")")
.
When I was removing a single ability i used
  me.RemoveCollectionElement( rability, destroy )       
   me.TransmitRemoveCollectionElementToClient( account, rability, destroy )
Is there a way to remove all elements from a collection
Or do I have to Iterate through a collection?

Also on the client AbilityListWindow it checks the AbilityOracle which is anchored to
System.Info.WorldAnchor
Should This Be System.Node.Prototypename?
Theres a 3 second screen freeze when opening the window.
Code: [Select]
method SoloCharacterAbilityListWindow_Populate()
  var clientarea = me.SoloCharacterAbilityListWindow_GetFlowContainer()
  clear clientarea.children destroy
  println("Populate the abilitylistwindow")
  var oracle = SYSTEM.INFO.WORLDANCHOR.GetAbilityOracle()
  var abilitiesNode = oracle.GetAbilitiesNode()
  oracle.addListener(me)
  println("Oracle node is (" +oracle+ ")" )
  println("Abilities node is (" +abilitiesnode+ ")" )
  abilities as List of NodeRef
  abilitiesNode.listCollectionElements(abilities)
 
  c as NodeRef of Class ExpandedInfoAbilityContainer
  foreach a in abilities
    where a is kindof PlayerAbility
      c = me.SoloCharacterAbilityListWindow_CreateControlForAbility(a, a.AbilitySource)
      add back c to clientarea.children
    .
  .
.
Because right now the problem is If I log off/log on
The ability list window is empty.
If I train One ability the AbilityListWindow has 10+ of the same ability.
Log off / on and its blank until I train an ability.

I don't have abilities that will have levels, instead the character stats affect the abilities damage.
Would It be better to use abilitylist(which is a list of id) to populate the window.

25
Scripting & Programming / Re: Lists vs LookupLists
« on: Jan 08, 13, 10:04:44 PM »
Thanks Scott, the listutils helped.
I changed back to using just a List
Now I can add
Code: [Select]
function CheckTrainedJobSkills (myskill as Enum JobSkillLevels)as Boolean
  println("Checktheskills")
  account as NodeRef of Class _PlayerAccount = SYSTEM.REMOTE.CLIENT
  player as NodeRef of Class _PlayerCharacter = account.GetMyChar()
  char as NodeRef of Class E_playerCharacter = player
  text1 as String = myskill
  println( text1 )
 
  A1 as String = "A1"
  A2 as String = "A2"
  A3 as String = "A3"
  A4 as String = "A4"
  when myskill
    is t1_I_I
        if listutils:ListOfStringHasString(char.TrainedJobSkills, A1)
        println("You have already trained this skill")
        return false
      .
      add back A1 to char.TrainedJobSkills
      println("Adding this Job Skill Training to the list")
      return true
    .
    is t1_I_II
      if listutils:ListOfStringHasString(char.TrainedJobSkills, A1)
        println("Char has first ability checking for second")
        if listutils:ListOfStringHasString(char.TrainedJobSkills, A2)
           println("You have already trained this skill")
           return false
        .
        add back A2 to char.TrainedJobSkills
        println("Adding this Job Skill Training to the list")
        return true
      .
      println("Didnt have the first ability to train the second")
      return false
    .
And Remove Talents
Code: [Select]
function CheckUnTrainedJobSkills (myskill as Enum JobSkillLevels)as Boolean
  println("Checktheuntrainskills")
  account as NodeRef of Class _PlayerAccount = SYSTEM.REMOTE.CLIENT
  player as NodeRef of Class _PlayerCharacter = account.GetMyChar()
  char as NodeRef of Class E_playerCharacter = player
  text1 as String = myskill
  println( text1 )
 
  A1 as String = "A1"
  A2 as String = "A2"
  A3 as String = "A3"
  A4 as String = "A4"
  T2 as String = "T2"
  when myskill
    is t1_I_I
        if listutils:ListOfStringHasString(char.TrainedJobSkills, A1)
        println("You have already trained this skill checking next skill")
        println( "List length is (" +char.TrainedJobSkills.length +")")
          if listutils:ListOfStringHasString(char.TrainedJobSkills, A2)
             println("You must remove the next skill first")
            return false
          .
        remove char.TrainedJobSkills at listutils:FindUniqueValuePositionInListOfString(char.TrainedJobSkills, A1)
        println("Removing this Job Skill Training from the list")
        return true
        .
        println("You dont have that ability to untrain!")
        return false
    .
    is t1_I_II
        if listutils:ListOfStringHasString(char.TrainedJobSkills, A2)
        println("You have already trained this skill checking next skill")
          if listutils:ListOfStringHasString(char.TrainedJobSkills, A3)
             println("You must remove the next skill first")
             return false
          .
        remove char.TrainedJobSkills at listutils:FindUniqueValuePositionInListOfString(char.TrainedJobSkills, A2)
        println("Removing this Job Skill Training from the list")
        return true
        .
        println("You dont have that ability to untrain!")
        return false
    .

26
Scripting & Programming / [Resolved] Lists vs LookupLists
« on: Jan 08, 13, 04:57:02 PM »
Still working on an ability system which is like a TalentTree


Say I have Talents 1,2,3,4
1, 2, and 3 adds a stat bonus to the character, 4 adds a new ability
The character
has to have trait 1 to get trait 2 and so on.

So I tried adding a new replicated field to the character
TrainedJobSkills - list of string

I want to check if the list has the string
if it doesn't and the character can learn it
add the string to the list

Well I can use HAS because its not a lookuplist.
So I change the field to
TrainedJobSkills - lookuplist indexed by string of string
Has works but trying to "Add back" a string says it must be a list.

SoloTrainingClassMethods on the server
Code: [Select]
function CheckTrainedJobSkills (myclass as Enum Classes,myskill as Enum JobSkillLevels)as Boolean
  println("Checktheskills")
  account as NodeRef of Class _PlayerAccount = SYSTEM.REMOTE.CLIENT
  player as NodeRef of Class _PlayerCharacter = account.GetMyChar()
  char as NodeRef of Class E_playerCharacter = player
  text1 as String = myclass
  text2 as String = myskill
  textstring as String = text1 +text2
  println( textstring )
 
 
  when myclass
    is WARRIOR
      when myskill
        is t1_I_I
          if char.TrainedJobSkills has textstring
            println("You have already trained this skill")
            return false
          .
          add back textstring to char.TrainedJobSkills
          println("Adding this Job Skill Traing to the list")
          return true
        .
        is t1_I_II
          if char.TrainedJobSkills has WARRIORt1_I_I
            println("Char has first ability checking for second")
            if char.TrainedJobSkills has textstring
               println("You have already trained this skill")
               return false
            .
            add back textstring to char.TrainedJobSkills
            println("Adding this Job Skill Traing to the list")
            return true
          .
          println("Didnt have the first ability to train the second")
          return false
Or should I look at the HJ Token stuff?
Also at some point I want to copy some character info like level and equipped items
And change level and equipped items based on the CLASS(warrior,cleric) the character currently has.

27
I had invalid script *none* come up before,
I just opened the xml and removed   script="*none*"

28
I'm trying to make a gui to add and remove abilities for a character
I can add an ability, but trying to remove
I get Exceeded $callStackLimit (99)
Edit: works now i had to comment out
 loop i from 1 to me.AbilityList.length
      //if me.AbilityList = rability
        remove me.AbilityList at i
        println("Abilitylistlength is now(" +me.AbilityList.length+")(" +rability+")" )
        break
      //.
So I have functions in a server class SoloTraining
Which eventually go to a method in Abilities class
Code: [Select]
[hsl_debug] 9223372063121132752,4: SCRIPT[SoloTrainingClassMethods]: The Character Already Has this ability time to remove it
[hsl_debug] 9223372063121132752,4: SCRIPT[AbilitiesClassMethods]: RemoveAnAbilityFromList ok
[hsl_debug] 9223372063121132752,4: SCRIPT[AbilitiesClassMethods]: 9223372063269132768THISISTHEABILITY
[hsl_debug] 9223372063121132752,4: SCRIPT[AbilitiesClassMethods]: Abilitylistlength is (2)(9223372063269132768)
[hsl_error] 9223372063121132752,4: [Summerfell_01] SCRIPT ERROR: Exceeded $callStackLimit (99)
01/07/2013 11:14:43 UTC
Call trace:
  Script ObsListenerClassMethods line 16 me[id=9223372063305133131 class=collectionIterator]
  Script ObsSubjectClassMethods line 28 me[id=9223372062222132879 class=Abilities]
  Script CollectionClassMethods line 401 me[9223372062222132879]
  Script AbilityBarSettings line 153 me[9223372062222132879]
  Script AbilityBarSettings line 33 me[9223372062222132879]
  Script AbilityBarSettings line 138 me[9223372062222132879]
  Script AbilityBarSettings line 164 me[9223372062222132879]
  Script AbilityBarSettings line 33 me[9223372062222132879]
  Script AbilityBarSettings line 138 me[9223372062222132879]
  Script AbilityBarSettings line 164 me[9223372062222132879]
  Script AbilityBarSettings line 33 me[9223372062222132879]
  Script AbilityBarSettings line 138 me[9223372062222132879]
  Script AbilityBarSettings line 164 me[9223372062222132879]
  ...
  Script AbilityBarSettings line 171 me[9223372062222132879]
  Script AbilitiesClassMethods line 74 me[9223372062222132879]
  Script AbilitiesClassMethods line 113 me[9223372062222132879]
  Script SoloTrainingClassMethods line 275 me[0]
  Script SoloTrainingClassMethods line 164 me[0]
  Script SoloTrainingClassMethods line 112 me[0]
  Script SoloTrainingClassMethods line 24 me[0]
starting method/function REQUESTREMOVEJOBSKILL
starting me[id=0 invalid]

remote call from originating script SoloTrainingWindowClassMethods function RequestRemoveJobSkill node 1000003489 client 9223372055763132658
The methods to remove the ability in Abilities class
Code: [Select]
method RemoveAnAbilityFromList(char as NodeRef,myskill as ID)
  println("RemoveAnAbilityFromList ok")
//  SYSTEM.EXEC.CPULIMIT = 00:00:30
//  account as NodeRef = SYSTEM.REMOTE.CLIENT
//  var char = account.GetMyChar()
//  var charAbilities = char.GetMyAbilities()
 
  //var abList = me.AbilitiesQuicklookup
  //foreach key in abList
//    if key = myskill
    var ability = me.AbilitiesQuicklookup[myskill]
    println( ability +"THISISTHEABILITY")
    me.RemoveAbilityFromList( ability )
//  .
//.

.
Code: [Select]
method RemoveAbilityFromList(rability as NodeRef of Class E_Ability)
  if rability = None
    return
  .
  key as ID = rability.SpecKey
  char as NodeRef = me.GetMyAbilitiesPossessor()
  if char is kindof _PlayerCharacter
    println("Abilitylistlength is (" +me.AbilityList.length+")(" +rability+")" )
    loop i from 1 to me.AbilityList.length
      if me.AbilityList[i] = rability
        remove me.AbilityList at i
        break
      .
    .
    AbilityBarSettings:removeSlotForSpec(char, ABILITY, key)
    AbilityBarSettings:SendAbilityBarSettingsToClient(char)
    account as NodeRef of Class E_playerAccount = char.GetMyAccount() 
    if me.HasAbility(key)
      me.RemoveCollectionElement( rability, destroy )
    .       
    me.TransmitRemoveCollectionElementToClient( account, rability, destroy )
  . 
  me.UnReplicateAbility(rability)
  me.UpdateAbilitiesQuickLookup()
  if rability != None
    DestroyNode(rability)
  .
.

29
Scripting & Programming / Re: Convert ID to noderef
« on: Dec 29, 12, 06:30:46 PM »
The Item has a specref
SN LISTELEMENT 1000002030 : "Field ID: 126072290281 Name: "_specRef" Value: "9223372062223133007""

I just changed the client script where it recieves the Item cache and have a recognizable server ID now

theShopItem = MarshalUtils:UnmarshalCreateNodeWithID( shopItemList[1] )   //UnmarshalCreateNode

30
Scripting & Programming / Re: Convert ID to noderef
« on: Dec 29, 12, 01:11:58 PM »
I guess this is where it loses its Server ID
Code: [Select]
method ShoppingMall_SendCacheToPlayer( theShop as NodeRef of Class Shop, accountID as ID )
 
  shopItems as LookupList indexed by Integer of List of String       // - List of marshalled shop items.

  msShopItems as String           // - Marshalled list of marshalled shop items.
  theShopItem as NodeRef         
  itemShop as Boolean
  println("MARSHALTHESHOPITEMS")
  // - Marshall all shop items
  foreach key_ in theShop.ShopItemSpecNodeLookup
    itemShop = true
    theShopItem = theShop.ShopItemSpecNodeLookup[key_]
    ShoppingMall_Msg( "Got shop item " + theShopItem )
    where theShopItem
      is kindof CollectionOrderedSet
        println("SHopitemCollection")
        add back theShopItem.marshalCollection(false) to shopItems[0]
      .
      default
        println("ShopItemDefault")
        println("SHOPITEM (" +theshopitem+ ") ")  //(9223372062683132938)
        add back MarshalUtils:MarshalNodeWithClass(theShopItem) to shopItems[1]
      .
    .
  .
The Client gets the shop items and creates a new id
Code: [Select]
remote method ShoppingMall_ReceiveCacheForShop( shopItemList as LookupList indexed by Integer of List of String, msShopNode as String, sortIt as Boolean )
 
  theShop as NodeRef = MarshalUtils:UnmarshalCreateNodeWithID( msShopNode )
  shopID as ID = theShop
  add back theShop to me.ShopNodeList
 
  // - Receive a list of items from the server side shopping mall.
  theShopItem as NodeRef
  theItemString as String

  noSortList as List of NodeRef     // - List of shop items that will be sorted if the sorable flag is set.
 
  // - Index zero is collections
  loop i from 1 to shopItemList[0].length
    theItemString = shopItemList[0][i]
    theShopItem = collectionMarshalClassMethods:GetCollectionFromString( theItemString )
    theShopItem.unmarshalCollectionNode( theItemString  )
    theShopItem.unmarshalCollectionElements( theItemString  )
   
    ShoppingMall_Msg("Received collection item " + theShopItem )
    if( sortIt )
   
    else
      add back theShopItem to noSortList
    .
  .
 
  // - Add the items
  if( sortIt )
    println("THESHOPITEMONCLIENTSORTIT (" +theshopitem+ ")")
    ShoppingMall_Msg("Sorting list.")
    loop i from 1 to HeadList.length
      me.ShopingMall_AddShopItemToShop( HeadList[i], shopID )
    loop i from 1 to OtherList.length
      me.ShopingMall_AddShopItemToShop( OtherList[i], shopID )
      println("THESHOPITEMONCLIENTOTHER (" +theshopitem+ ")")
    .
  else
    loop i from 1 to noSortList.length
      me.ShopingMall_AddShopItemToShop( noSortList[i], shopID )
      println("THESHOPITEMONCLIENTNOSORT (" +theshopitem+ ")")//(100000010552)
    .
  .

.

Pages: 1 [2] 3 4 ... 6