Toribash
Original Post
.rpl file editing
Some have expressed interest as to how I accomplished shotputfinal.rpl and other hand-edited replays.

This is a quick overview on rpl files.

I'll use for my example the shotputfinal.rpl file, which is located in your <toribash install>\replay\ folder as of Toribash v2.2.

I suggest Notepad++ for editing, mostly for line numbers, but it also has some nice advanced search/replace functionality as well.

Line 1:
#!/usr/bin/toribash
Hashbang line. You don't need to know anything about this.

Line 2:
#made with toribash-2.1
Default comment generated by Toribash. Any line preceded with '#' is ignored by Toribash when rendering the replay.

Line 3:
VERSION 6
Version number. It's been 6 since at least 2.0. Haven't bothered mucking with it.

Line 4:
FIGHT 0; shotputfinal Skjef uke
<replay name> <tori's name> <uke's name>
Spaces are used for parsing, so make sure your <replay name> doesn't have any.
The number after FIGHT can be safely ignored.

Line 5:
AUTHOR 0; Skjef
Defines the author's name.
The number after AUTHOR can be safely ignored.

Line 6:
NEWGAME 0;550 10 0 0 0 2 1500 1 0 classic 0 0
<total replay frames> <frames per turn> <?> <?> <?> <dq> <engage distance> <self damage> <wrist/ankle dq> <mod file> <?> <dojo size> <dismemberment threshold>
<dq>: 2 = No DQ, 3 = DQ.
<wrist/ankle dq>: 0 = DQ, 1 = No DQ.
<?>: No idea.
You may notice that there is one more <*> option than there is on the example. <dismemberment threshold> was added in 2.2, so it didn't have a field when I made this replay with 2.1.
The number after the NEWGAME indicates whether it's an single- or a multi-player replay. 0 = single, 1 = multi.

Line 7:
FRAME 0; 0 0
<tori's score> <uke's score>
The number after FRAME indicates the frame that the following JOINT, POS, QAT, LINVEL, ANGVEL, GRIP and CRUSH commands apply to.

Line 8:
JOINT 0; 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 4 11 4 12 4 13 4 14 4 15 4 16 2 17 2 18 4 19 4
<joint number> <joint state> <joint number> <joint state> ... <joint number> <joint state>
The joint numbers are as follows:
0 = neck
1 = chest
2 = lumbar
3 = abs
4 = right pec
5 = right shoulder
6 = right elbow
7 = left pec
8 = left shoulder
9 = left elbow
10 = right wrist
11 = left wrist
12 = right glute
13 = left glute
14 = right hip
15 = left hip
16 = right knee
17 = left knee
18 = right ankle
19 = left ankle
The joint states are as follows:
If a joint isn't listed, it also counts as relax.
1 = extend/right rotate/right bend
2 = contract/left rotate/left bend
3 = hold
4 = relax
The number after JOINT means this command refers to either tori or uke. 0 = tori, 1 = uke.
JOINT is identical for tori and uke.

Line 9:
POS 0; 1.000000 7.400000 2.590000 1.000000 7.450000 2.140000 1.000000 7.450000 1.890000 1.000000 7.500000 1.690000 1.000000 7.550000 1.490000 0.750000 7.450000 2.090000 0.450000 7.450000 2.240000 0.050000 7.450000 2.240000 1.250000 7.450000 2.090000 1.550000 7.450000 2.240000 1.950000 7.450000 2.240000 -0.350000 7.400000 2.240000 2.350000 7.400000 2.240000 0.800000 7.550000 1.390000 1.200000 7.550000 1.390000 0.800000 7.550000 1.040000 1.200000 7.550000 1.040000 1.200000 7.550000 0.440000 0.800000 7.550000 0.440000 0.800000 7.450000 0.040000 1.200000 7.450000 0.040000
<x co-ordinate> <y co-ordinate> <z co-ordinate> <x co-ordinate> <y co-ordinate> <z co-ordinate> ... <x co-ordinate> <y co-ordinate> <z co-ordinate>
Each triplet of x,y,z co-ordinate refers to a different joint, using the same ordering scheme as the JOINT list above. So, the first triplet refers to the neck joint, the second triplet to the chest joint, etc..., and the last triplet refers to the left ankle joint.
The y axis is directly towards uke, as seen from tori. The x axis is perpendicular to the y axis, and the z axis is straight up and down.
The reason the numbers for the y co-ordinates are so high is because I used a 1500 engage distance for this replay. The regular value for y co-ordinates at an engage distance of 100 is about 0.4.
The number after the POS means this command refers to either tori or uke. 0 = tori, 1 = uke.
POS is identical for tori and uke.

Line 10:
QAT 0; 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000
<?> <x rotation> <y rotation> <z rotation> <?> <x rotation> <y rotation> <z rotation> ... <?> <x rotation> <y rotation> <z rotation>
This sets the current orientation of the joint in question. It uses the same ordering scheme as the JOINT list above.
<?>: No idea. Doesn't seem to affect anything.
The number after the QAT means this command refers to either tori or uke. 0 = tori, 1 = uke.
QAT is not the same for tori and uke.

Line 15:
QAT 1; 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000
<z rotation> <y rotation> <x rotation> <?> <z rotation> <y rotation> <x rotation> <?> ... <z rotation> <y rotation> <x rotation> <?>
Note that the implementation is backwards for uke. I have no idea why.
This sets the current orientation of the joint in question. It uses the same ordering scheme as the JOINT list above.
<?>: No idea. Doesn't seem to affect anything.
The number after the QAT means this command refers to either tori or uke. 0 = tori, 1 = uke.
QAT is not the same for tori and uke.

Line 11:
LINVEL 0; 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
<x velocity> <y velocity> <z velocity> <x velocity> <y velocity> <z velocity> ... <x velocity> <y velocity> <z velocity>
This sets the current linear (straight line) velocity for a given joint. From Tori's perspective, looking towards Uke, a negative y velocity is towards Uke, a positive is away. A negative x velocity is to the right, a positive is to the left. A positive z velocity is up, and a negative is down.
These triplets use the same ordering scheme as the JOINT list above.
The number after the LINVEL means this command refers to either tori or uke. 0 = tori, 1 = uke.
LINVEL is identical for tori and uke.

Line 12:
ANGVEL 0; 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
<x velocity> <y velocity> <z velocity> <x velocity> <y velocity> <z velocity> ... <x velocity> <y velocity> <z velocity>
This sets the current angular (rotational) velocity for a given joint. The axes for this is the same as for QAT.
These triplets use the same ordering scheme as the JOINT list above.
The number after the ANGVEL means this command refers to either tori or uke. 0 = tori, 1 = uke.
LINVEL is identical for tori and uke.

Line 30:
CRUSH 0; 0
<joint> <joint> ... <joint>
This command breaks the joint/body connection as listed below. Any number of joints may be listed in a single CRUSH command.
0 = neck/chest
1 = chest/lumbar
2 = lumbar/abs
3 = abs/glutes
4 = right pec/chest
5 = right shoulder/right pec
6 = right elbow/right bicep
7 = left pec/chest
8 = left shoulder/left pec
9 = left elbow/left bicep
10 = right wrist/right forearm
11 = left wrist/left forearm
12 = right glute/abs
13 = left glute/abs
14 = right hip/rglute
15 = left hip/lglute
16 = right knee/right calf
17 = left knee/right calf
18 = right ankle/right calf
19 = left ankle/right calf
The number after the CRUSH means this command refers to either tori or uke. 0 = tori, 1 = uke.
CRUSH is identical for tori and uke.

Additional command(s) not used in shotputfinal.rpl:
GRIP 0; 1 1
<left hand> <right hand>
<* hand>: 1 = grip, 2 = no grip.
The number after the GRIP means this command refers to either tori or uke. 0 = tori, 1 = uke.
GRIP is identical for tori and uke.

FRACT 0; 1
<joint> <joint> ... <joint>
Fractures a joint. It uses the same list as the JOINT command above, but functions more like CRUSH.
The number after the FRACT means this command refers to either tori or uke. 0 = tori, 1 = uke.
FRACT is identical for tori and uke.

EDIT: Updated JOINT as suggested by Qegola.
EDIT2: Added FRACT command.
Re: .rpl file editing
this is a good tutorial but...ummmm.... the last part i got silly.i could not understand the last part,but nice tutorial anyways!
Re: .rpl file editing
Originally Posted by Tombot
Not bieng mathematicaly minded I am not able to fully comprehend what is going on here. :o


I am
Attached Files
1Uppercut_Destruction.rpl (15.1 KB, 408 views)
Re: .rpl file editing
Very Nice Skjef

keep up the Good work.
Chuck Norris is in fact the most deadliest weapon on this planet, But then there's EmpreamKick
Re: .rpl file editing
Originally Posted by No_0ne
Originally Posted by Tombot
Not bieng mathematicaly minded I am not able to fully comprehend what is going on here. :o


I am

Beautiful, No_0ne.
Re: .rpl file editing
im sorry but i dont speak....that language :P
Don't take life too seriously, you never get out of it alive anyways.
Re: .rpl file editing
Originally Posted by Skjef
Originally Posted by No_0ne
Originally Posted by Tombot
Not bieng mathematicaly minded I am not able to fully comprehend what is going on here. :o


I am

Beautiful, No_0ne.


Also, how I make them spin, I've been trying to make Tori spin quickly toward Uke and rip him to shreds.
Re: .rpl file editing
Originally Posted by No_0ne
Also, how I make them spin, I've been trying to make Tori spin quickly toward Uke and rip him to shreds.

Use ANGVEL. You'll probably want to rotate on the Z axis.
Re: .rpl file editing
A very complete analysis of rpl. editting, and very useful. I find only one thing problematic, and that is the fact that the Chest and Lumbar rotate left and right rather than extend and contract - It might make more sense if you show the values that refer to these (i.e, which rotation is extending and which is contracting)
Q = QUAKER OATS
Three rules of Q - 1. Qegola and Quarantine both start with Q. 2. There is no U in Qegola. 3. Qegola is you new god.

So a man walks into a bar with a monkey. I forgot the rest of the joke but your mom is a whore.