s13n1 wrote:
I had no trouble duplicating objects, and I had the town looking pretty darn good, but I think when I started duplicating things like raptors and other non static objects it didn’t like it.
You can't go around cloning dinosaurs just like that. And I don't mean in real life, I mean in TresEd.
You see, the big problem is the skeleton. When you clone (CTRL+C) a dinosaur, the skeleton its base dinosaur uses becomes linked to the clone. And when you move the clone around, the skeleton follows. And thus it's no longer properly aligned with the base dinosaur... and chaos ensues.
The proper way to do it:
- cut the t-scripts of the dinosaur you're going to clone,
- paste them on the notepad temporarily,
- clone the dinosaur,
- place the clone wherever you want,
- paste the t-scripts back on the dinosaur you cut them from,
- edit the t-scripts of the base dinosaur and hit "update" so that the skeleton is linked back to it.
The base dinosaur is the one refered by the "string Physics = " and "string Mesh = " parameters. Don't clone those, BTW. If you want to make a new dinosaur based on the base one, you need to use the "Copy mesh" option in the "Hacking" menu, in a similar way as described in the previous process, but you need to give the copy (not called a clone this time) its own name (ending in "-00") and its own t-scripts (using the "string Physics = " and "string Mesh = " parameters to point at the base dinosaur).
In other words, it would be like this:
- cut the t-scripts of the base dinosaur you're going to copy,
- paste them on the notepad temporarily,
- make a copy the dinosaur with a new name ended in "-00",
- place the copy wherever you want,
- paste the t-scripts back on the base dinosaur you cut them from,
- paste the t-scripts on the copy and add the proper "string Physics = " and "string Mesh = " parameters pointing to the base dinosaur,
- edit the t-scripts of the base dinosaur and hit "update" so that the skeleton is linked back to it.
To give an example from the raptors in TestScene...
Here's the base raptor:
Code:
ValueTable for instance 316 "RaptorB" :
group RaptorB = {
int Archetype = 0
int Team = 15
bool ActMoveBy = true
bool ActGlare = true
bool ActBite = true
bool ActEat = true
bool ActDrink = true
bool ActLookAround = true
bool ActNothing = true
float Width = 0.750000
float HeadReach = 2.620000
float TailReach = 3.700000
float JumpDistance = 2.000000
float JumpUp = 1.000000
float JumpDown = 3.000000
float WalkUnder = 1.000000
float WalkOver = -1.000000
float JumpOver = 0.750000
float CrouchUnder = 1.000000
float MoveableMass = 0.530000
float HitPoints = 75.000000
float ReallyDie = -30.000000
float Regeneration = 1.000000
float CriticalHit = 35.000000
string Class = "CAnimal"
int PVA = -2
int NumJoints = 21
int NumDoubleJoints = 6
bool Curved = true
string Type = "Raptor"
string Head = "$RaptorBHead-00"
string Body = "$RaptorBBody-00"
string Tail = "$RaptorBTail-00"
float Diffuse = 0.900000
float Specular = 1.250000
float SpecularAngle = 16.000000
string SoundMaterial = "RAPTOR-FOOT"
float BiteTargetDistance = 1.250000
bool ActOuch = true
bool ActSnarl = true
bool ActCroon = true
bool ActDie = true
string DetailShadow = "$RaptorBSh"
}
And here's the copy:
Code:
ValueTable for instance 454 "RaptorB300-00" :
group RaptorB300-00 = {
string Class = "CAnimal"
string Physics = "RaptorB"
string Mesh = "RaptorB"
int Archetype = 0
int Team = 15
bool ActMoveBy = true
bool ActGlare = true
bool ActBite = true
bool ActEat = true
bool ActDrink = true
bool ActLookAround = true
bool ActNothing = true
float Width = 0.750000
float HeadReach = 2.620000
float TailReach = 3.700000
float JumpDistance = 2.000000
float JumpUp = 1.000000
float JumpDown = 3.000000
float WalkUnder = 1.000000
float WalkOver = -1.000000
float JumpOver = 0.750000
float CrouchUnder = 1.000000
float MoveableMass = 0.530000
float HitPoints = 75.000000
float ReallyDie = -30.000000
float Regeneration = 1.000000
float CriticalHit = 35.000000
string Class = "CAnimal"
int PVA = -2
int NumJoints = 21
int NumDoubleJoints = 6
bool Curved = true
string Type = "Raptor"
string Head = "$RaptorBHead-00"
string Body = "$RaptorBBody-00"
string Tail = "$RaptorBTail-00"
float Diffuse = 0.900000
float Specular = 1.250000
float SpecularAngle = 16.000000
string SoundMaterial = "RAPTOR-FOOT"
float BiteTargetDistance = 1.250000
bool ActOuch = true
bool ActSnarl = true
bool ActCroon = true
bool ActDie = true
bool ActWander = true
bool ActPursue = true
bool ActMoveBy = true
bool ActGetOut = true
bool ActSniffTarget = true
float Bravery = 0.500000
float Anger = 0.000000
float DamageAnger = 10.000000
float Hunger = 0.000000
float DamageHunger = 10.000000
}
Further copies of the base dinosaur might be called RaptorB100-00, RaptorB200-00, RaptorB400-00, etc. (assuming that's the explanation for having chosen RaptorB300-00 as the name for the current copy), while further clones of the copied dinosaur might be called (automatically) RaptorB300-01, RaptorB300-02, RaptorB300-03, etc.
_________________
Visit
The Carnivores Saga - a forum devoted to modding Action Forms'
Carnivores,
Carnivores 2 and
Carnivores: Ice Age games
Tres WIP: updated
T-Script Reference and
File Formats documents
Sound name listings for the
Demo (build 117),
Retail (build 116),
Beta 103,
Beta 99,
Beta 97,
Beta 96,
Build 55,
PC Gamer Alpha (build 32) and
E3 1998 Alpha (build 22) TPA files