Difference between revisions of "Sims 2:Object Errors"
(12 intermediate revisions by 3 users not shown) | |||
Line 134: | Line 134: | ||
# Expression attempting to write in a read-only area. [http://www.sims2wiki.info/wiki.php?title=Object_Errors#116._Expression_attempting_to_write_in_a_read-only_area 116] | # Expression attempting to write in a read-only area. [http://www.sims2wiki.info/wiki.php?title=Object_Errors#116._Expression_attempting_to_write_in_a_read-only_area 116] | ||
# Zero distance in finding direction. | # Zero distance in finding direction. | ||
− | # Bad gosub tree number. | + | # [[#118. Bad gosub tree number|Bad gosub tree number]]. |
# Bad alert tree number. | # Bad alert tree number. | ||
# Reference to stack object out of range. [http://www.sims2wiki.info/wiki.php?title=Object_Errors#120.Reference_to_stack_object_out_of_range 120] | # Reference to stack object out of range. [http://www.sims2wiki.info/wiki.php?title=Object_Errors#120.Reference_to_stack_object_out_of_range 120] | ||
Line 149: | Line 149: | ||
# Random number range evaluated to zero. | # Random number range evaluated to zero. | ||
# Bad parameter to update primitive. | # Bad parameter to update primitive. | ||
− | # Temporary reference out of range. | + | # [[#133. Temporary reference out of range|Temporary reference out of range]]. |
# Bad operator. | # Bad operator. | ||
# Bad parameter in look towards primitive. | # Bad parameter in look towards primitive. | ||
Line 188: | Line 188: | ||
====7. '''Too many iterations'''==== | ====7. '''Too many iterations'''==== | ||
− | This occurs when a node in a BHAV is run more than 10,000 times. It often occurs when a node is linked to itself, or in [[0x001F|Set To Next]] that are too broad(resulting in more than 10,000 items), or if you zero out the variable you using in [[0x001F|Set To Next]] prior to each call (resulting in the same item being found 10,000 times). | + | This occurs when a node in a BHAV is run more than 10,000 times. It often occurs when a node is linked to itself, or in [[0x001F|Set To Next]] that are too broad(resulting in more than 10,000 items), or if you zero out the variable you using in [[0x001F|Set To Next]] prior to each call (resulting in the same item being found 10,000 times). In this case the error can be fixed by using concise searches, and by making sure that no nodes make loops that will cause them to be run 10,000 times. |
+ | |||
+ | At other times this error will occur even if there is no mistake in the coding, but simply because an object is running a long and complex section of code without giving the game time to service other functions. In this case the insertion of an [[Idle]] at some point in the code prior to where the error typically occurs will prevent the "Too many interations" error. The [[Idle]] call often only requires "1" tick as its parameter. | ||
====8. '''Undefined Transition'''==== | ====8. '''Undefined Transition'''==== | ||
− | This occurs when a node's true, or false branch lead it to error(a value of 0xFFFC), rather than another line, or ending the BHAV as true(0xFFFD) or false(0xFFFE). | + | This occurs when a node's true, or false branch lead it to error (a value of 0xFFFC), rather than another line, or ending the BHAV as true(0xFFFD) or false(0xFFFE). The intentional insertion of error(0xFFFC) tests during code development is a useful means of debugging, but ideally these should be removed from production code in favour of either silent error handling routines or the provision of user friendly error messages. |
====48. '''Inventory token propert index out of range'''==== | ====48. '''Inventory token propert index out of range'''==== | ||
Line 227: | Line 229: | ||
====108. '''Slot number out of range'''==== | ====108. '''Slot number out of range'''==== | ||
− | This means that there is no entry in the SLOT of the value requested in that node. | + | This means that there is no entry in the [[SLOT]] of the value requested in that node. |
====109.'''Motive number out of range or not an acceptable value'''==== | ====109.'''Motive number out of range or not an acceptable value'''==== | ||
Line 243: | Line 245: | ||
====116. '''Expression attempting to write in a read-only area'''==== | ====116. '''Expression attempting to write in a read-only area'''==== | ||
When an expression attempts to change a read-only value, such as "Time of Day". Most of the ''Global From Simulation'' data types are read-only. | When an expression attempts to change a read-only value, such as "Time of Day". Most of the ''Global From Simulation'' data types are read-only. | ||
+ | |||
+ | ====118.'''Bad gosub tree number'''==== | ||
+ | When you have a BHAV in a format for an EP you don't have. | ||
====120.'''Reference to stack object out of range'''==== | ====120.'''Reference to stack object out of range'''==== | ||
Line 254: | Line 259: | ||
====129. '''Attribute Number out of range'''==== | ====129. '''Attribute Number out of range'''==== | ||
− | If you see this error, the likelihood is that you have not allocated space for the number of attributes you are trying to use. Space must be allocated in the [[OBJD#Raw Data - Data Space|OBJD - Data Space]]. | + | If you see this error, the likelihood is that you have not allocated space for the number of attributes you are trying to use. Space must be allocated in the [[OBJD#Raw Data - Data Space|OBJD - Data Space]]. Eight attributes are preallocated by default, but if you need a bigger number than this, you will need to explicity define the quantity you require. |
====130. '''Illegal primitive code'''==== | ====130. '''Illegal primitive code'''==== | ||
Occurs when a non-existent Primitive is attempted to be called; Primitives being defined as an OpCode between 0x0000, and 0x00FF | Occurs when a non-existent Primitive is attempted to be called; Primitives being defined as an OpCode between 0x0000, and 0x00FF | ||
+ | |||
+ | ====133. '''Temporary reference out of range'''==== | ||
+ | One possible cause of this error is mistakenly using "Temp [Temp]" instead of "Temp". | ||
====136. '''Divide by zero'''==== | ====136. '''Divide by zero'''==== |
Latest revision as of 09:55, 5 August 2017
[edit] Object Errors
[edit] Description:
An object error, more commonly known as the "jump bug"(when not in debug mode, a sim resets when encountering an error, thus "jumping"), occurs usually when there are problems with a behaviour. Some object errors however, are harmless and would go un-noticed if you weren't in debug mode. Debug mode will inform the user that an error has occurred and log a stack trace. These logs are vital to solving bugs in both behaviour mods, and problems with the original game.
[edit] Obtaining an error log:
It is common when you have a problem with a behaviour Mod that the creator will request an Object Error log. Basically you will run your game in debug mode(often falsely referred to as boolpropping), this will tell your game to log errors when they occur.
- Run The Sims 2
- Load a lot where you can recreate the problem
- Press the key sequence Control+Shift+C
- Enter the command "boolprop testingcheatsenabled true"
- Recreate the problem, until you get a popup telling you that an error has occurred.
- A file named something similar to this ObjectError_N001_t23001.txt should appear in your logs folder(My Documents\EA Games\The Sims 2\Logs\")
[edit] Object Error Listing:
Here is a complete listing of possible object errors from the stack trace. Below, this list will be explanations of each of them, how they are caused, and fixed.
- Unrecognized error condition
- Stack underflow.
- Check tree primitive blocked completion.
- Transition to node that does not exist.
- Tree not found. Probably a reset() problem.
- Behavior not found. Probably a reset() problem.
- Too many iterations.
- Undefined Transition.
- Stack overflow.
- Bad family id.
- Cinematic camera does not have a choreo queue.
- Another cinematic already is active.
- Unknown cinematic error.
- Target object out of world.
- Attempted too many look_at requests in one simulator turn on this Sim
- Attempting to create object type that's been unlinked (ie is dead, and has had data removed from it's .package file).
- Attempting to Save UI Mode to mode it's already saved at.
- Attempt to change light on object that has no model.
- Last Find Best Action was Not Successful. Quit trying to run gosub.
- Trying to create instance of Template Object
- Trying to animate a cinematic actor that is not animatable
- Cinematic autoCreate actor is not 0
- Cinematic origin actor (for camera and light rig) has no 3D model
- Cinematic origin actor (for camera and light rig) is invalid
- Required cinematic actor has no 3D model
- Required cinematic actor is invalid
- Required cinematic actor is missing
- Cinematic animation not found
- Cinematic scene not found
- Person is not selectable.
- Hit data break point - Value Changed!
- Invalid Lot ID.
- Trying to run default effect - not supported anymore.
- Trying to route while in an post route callback.
- Trying to route while in an along route callback.
- Trying to route while in an pre route callback.
- Couldn't load memory icon
- Animation speed cannot be zero
- Bad or empty button or window GUID.
- Not enough local vars.
- Trying to route while out of world.
- You sent me a crappy GUID, please fix it.
- Could load the specified memory icon.
- Bad destination for a 32bit write.
- Temp0 does not point at a Sim ObjectID.
- Request for babies count out of range.
- Missing neighbor for data access.
- Inventory token propert index out of range.
- Inventory token index out of range.
- Invalid animation type specified in animation string
- Missing Job Title / Phone Services Table (table 147) in Object.
- Missing reach animation.
- Invalid number of loops
- Trying to push nested interaction on someone not in an 'allow nested' interaction
- Trying to access array element via iterator that does not exist.
- Bad Object Array
- Reach animation does not contain event 0.
- No Object for Reach to work on.
- Cant run Reach/Drop on non Sim object.
- The relationship matrix requested could not be found.
- Requesting a look_at operation that is already running on the object
- Trying to modify variable in const type tree
- IK target animation cannot find bone on self
- IK target animation cannot find bone on other object
- IK target animation requires 3D model on other object
- IK target animation requires other object
- Locomotion stack is too deep: check for imbalanced push/pops
- Invalid pop: locomotion stack is empty
- 3D object is not locomotable.
- Missing Action String in table.
- Missing (or empty) model bone name.
- Missing table for model bone names.
- Hit Break Point Primitive.
- Trying to perform an animation from the Social Interaction list against a non person.
- Bad paramater value set in Manage Inventory Primitive.
- Index passed to Manage Inventory out of bounds.
- Inventory doesn't exist for ID passed to Manage Inventory.
- Temporary token field out of range.
- Can't place in world for some reason
- No bone on model corresponding to name in routing slot on destination object
- Missing requested bone for slot
- Trying to change an effect on an object with too many Particle Emitters
- Turn rate must be positive
- Trying to change an effect on a non 3d Object
- Missing Effect Name
- Requesting to play an animation on an object for the third time
- Missing Light Name
- Trying to change a light on a non 3d Object
- Trying to look_at a non 3D object
- Trying to use a Global Animation on a non Edith Person object. Naughty naughty!
- Event Tree handler called on deleted object or invalid object ID
- Change graphic expression called on non 3D object
- Animation Primitive called on non Animating object - look at 3DObjectID in obj def.
- Missing Material / Mesh Group Name.
- Material Change on Non 3D object.
- IsGlobal flag not implemented yet.
- Animation name is empty string.
- 3D object is not a person.
- 3D object is not animatable.
- Local out of range.
- Invalid object id.
- Invalid constant.
- Unrecognized priority value.
- Tree table not found
- Search type is invalid. Types are 0: all motive, 1:mental motives, 2:physical motives.
- Balloon Type Is Invalid. Values are 0:thought, 1:scream, 2:speak.
- Object referred to must be a person.
- Slot number out of range.
- Motive number out of range or not an acceptable value.
- Weight number for a weight assignment is out of range.
- Standard number for a weight assignment is out of range.
- Could not find object reference.
- Reference to tree table entry that does not exist. 113
- No stack object present when required. 114
- Data value out of range.
- Expression attempting to write in a read-only area. 116
- Zero distance in finding direction.
- Bad gosub tree number.
- Bad alert tree number.
- Reference to stack object out of range. 120
- Undefined transition found.
- Flag reference is out of range. 122
- Reference to target object when none exists.
- Gosub??
- Reference to tree tree parameter when no parameter exists.
- Illegal owner field in data reference.
- Stack number out of range. 127
- Data number out of range.
- Attribute number out of range
- Illegal primitive code. 130
- Random number range evaluated to zero.
- Bad parameter to update primitive.
- Temporary reference out of range.
- Bad operator.
- Bad parameter in look towards primitive.
- Divide by zero. 136
- Invalid routing slot specified
- Invalid snapping mode specified
- Show hide parameter is out of expected range.
- Person data field is out of range.
- Bad target slot specified in routing slot.
- No Error
- Index into object definition out of range.
- Bad room id specified
- Bad room value requested.
- Invalid global sim call.
- Named tree does not exist.
- Bad parameter to call named tree.
- Invalid suit index.
- Invalid suit location.
- Invalid dynamic sprite index
- Object for routing either does not exist or is out of bounds.
- Invalid action in tutorial primitive.
- More than one passing value specified.
- Bad expense type specified.
- Job data not found.
- Career id not found.
- Invalid skin color.
- Neighborhood data index out of range.
- Start object required.
- Tree break encountered.
[edit] 3. Check tree primitive blocked completion
The cause of this error is attempting to execute code which require 'blocking' to perform (eg. animations, blocking dialog boxes ect) in immediate! mode (bypassing action queue). To avoid this - make sure to push such action's to action queue instead. Common reason for seeing this is a BHAV which issues a dialog but has the "immediately" box checked in the TTAB. Also seen for Run Tree by Name – when using "Run in x stack" – try with "Push in x stack" to avoid error. Also seen for calls to Sleep.
[edit] 4. Transition to Node That Does Not Exist
This occurs when a true or false branch of a BHAV node is non-existent. To fix this, change the node to refer to an existing node, or create the non-existing one.
[edit] 7. Too many iterations
This occurs when a node in a BHAV is run more than 10,000 times. It often occurs when a node is linked to itself, or in Set To Next that are too broad(resulting in more than 10,000 items), or if you zero out the variable you using in Set To Next prior to each call (resulting in the same item being found 10,000 times). In this case the error can be fixed by using concise searches, and by making sure that no nodes make loops that will cause them to be run 10,000 times.
At other times this error will occur even if there is no mistake in the coding, but simply because an object is running a long and complex section of code without giving the game time to service other functions. In this case the insertion of an Idle at some point in the code prior to where the error typically occurs will prevent the "Too many interations" error. The Idle call often only requires "1" tick as its parameter.
[edit] 8. Undefined Transition
This occurs when a node's true, or false branch lead it to error (a value of 0xFFFC), rather than another line, or ending the BHAV as true(0xFFFD) or false(0xFFFE). The intentional insertion of error(0xFFFC) tests during code development is a useful means of debugging, but ideally these should be removed from production code in favour of either silent error handling routines or the provision of user friendly error messages.
[edit] 48. Inventory token propert index out of range
The property of the inventory token you are referring to does not exist
[edit] 49 Inventory token index out of range
The Inventory token that you refer to does not exist.
[edit] 56. Bad Object Array
If you see this error, the likelihood is that you have not allocated space for the array you are trying to use. Space must be allocated in the OBJD - Data Space.
[edit] 63. IK target animation cannot find bone on self
This means that an animation played by the node that caused the error requires a specific cObjectGraphNode name to be defined in the CRES of the My Object.
[edit] 64. IK target animation cannot find bone on other object
This means that an animation played by the node that caused the error requires a specific cObjectGraphNode name to be defined in the CRES of the Stack Object.
[edit] 65. IK target animation requires 3D model on other object
This means the stack object is not defined as animateable, or 3D in 0x0063 of its OBJD
[edit] 66. IK target animation requires other object
This means that the requested animation requires a target object that is not present in the Stack Object
[edit] 73. Hit Break Point Primitive
This error occurs any time that the primitive 0x000F is called by a BHAV.
[edit] 99. 3D object is not animatable
This means that an animation was requested by this node to be played, but the object is not defined as animatable. This must be set in OBJD - Mesh & Graphics in "3D Object Type" (0x0063).
[edit] 100. Local out of range
This occurs when a Local Variable is either defined, or called when it has not been allocated by the header of the BHAV.
[edit] 102. Invalid constant
Check that a referred to BCON resource is present.
[edit] 108. Slot number out of range
This means that there is no entry in the SLOT of the value requested in that node.
[edit] 109.Motive number out of range or not an acceptable value
The motive that you refer to does not exist.
[edit] 112. Could not find object reference
Pretty much says it all. An object reference provided is probably not set.
[edit] 113. Reference to tree table entry that does not exist
When a node refers to a tree table entry that is not defined in the object. This is common(maybe exclusive) with Primitive 0x000D, Push Interaction
[edit] 114. No stack object present when required
This error occurs when a Primitive called in the node expects a Stack Object to be defined, and either there has been none defined, or it has been assigned to 0.
[edit] 116. Expression attempting to write in a read-only area
When an expression attempts to change a read-only value, such as "Time of Day". Most of the Global From Simulation data types are read-only.
[edit] 118.Bad gosub tree number
When you have a BHAV in a format for an EP you don't have.
[edit] 120.Reference to stack object out of range
Stack object data owner has a range of 0x0
[edit] 122.Flag reference is out of range
The flag you refer to is not defined.
[edit] 127.Stack Number out of range
Your parameter is out of the range defined in the BHAV's header(arg count).
[edit] 129. Attribute Number out of range
If you see this error, the likelihood is that you have not allocated space for the number of attributes you are trying to use. Space must be allocated in the OBJD - Data Space. Eight attributes are preallocated by default, but if you need a bigger number than this, you will need to explicity define the quantity you require.
[edit] 130. Illegal primitive code
Occurs when a non-existent Primitive is attempted to be called; Primitives being defined as an OpCode between 0x0000, and 0x00FF
[edit] 133. Temporary reference out of range
One possible cause of this error is mistakenly using "Temp [Temp]" instead of "Temp".
[edit] 136. Divide by zero
Dividing by zero in an expression in SimAntics and will result in an error just like everywhere else.
This article is imported from the old MTS2 wiki. It's original page, with comments, can be found at http://old_wiki.modthesims2.com/Sims 2:Object Errors